diff --git a/Cargo.lock b/Cargo.lock index 2932526f83..02ed331cc2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6604,6 +6604,7 @@ name = "katana-primitives" version = "0.5.1-alpha.5" dependencies = [ "anyhow", + "base64 0.21.7", "blockifier", "cairo-lang-starknet", "cairo-vm", diff --git a/bin/katana/src/utils.rs b/bin/katana/src/utils.rs index b348f0a1cb..f05f5a7634 100644 --- a/bin/katana/src/utils.rs +++ b/bin/katana/src/utils.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use katana_primitives::genesis::json::GenesisJsonWithBasePath; +use katana_primitives::genesis::json::GenesisJson; use katana_primitives::genesis::Genesis; pub fn parse_seed(seed: &str) -> [u8; 32] { @@ -15,8 +15,20 @@ pub fn parse_seed(seed: &str) -> [u8; 32] { } } -pub fn parse_genesis(path: &str) -> Result { - let path = PathBuf::from(shellexpand::full(path)?.into_owned()); - let genesis = Genesis::try_from(GenesisJsonWithBasePath::new(path)?)?; +/// Used as clap value parser for [Genesis]. +pub fn parse_genesis(value: &str) -> Result { + let path = PathBuf::from(shellexpand::full(value)?.into_owned()); + let genesis = Genesis::try_from(GenesisJson::load(path)?)?; Ok(genesis) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn parse_genesis_file() { + let path = "./tests/test-data/genesis.json"; + parse_genesis(path).unwrap(); + } +} diff --git a/bin/katana/tests/test-data/genesis.json b/bin/katana/tests/test-data/genesis.json new file mode 100644 index 0000000000..51436f4832 --- /dev/null +++ b/bin/katana/tests/test-data/genesis.json @@ -0,0 +1,42 @@ +{ + "number": 0, + "parentHash": "0x999", + "timestamp": 5123512314, + "stateRoot": "0x99", + "sequencerAddress": "0x100", + "gasPrices": { + "ETH": 1111, + "STRK": 2222 + }, + "feeToken": { + "address": "0x55", + "name": "ETHER", + "symbol": "ETH", + "decimals": 18, + "storage": { + "0x111": "0x1", + "0x222": "0x2" + } + }, + "universalDeployer": { + "address": "0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf", + "storage": { + "0x10": "0x100" + } + }, + "accounts": { + "0x66efb28ac62686966ae85095ff3a772e014e7fbf56d4c5f6fac5606d4dde23a": { + "publicKey": "0x1", + "balance": "0xD3C21BCECCEDA1000000", + "nonce": "0x1", + "storage": { + "0x1": "0x1", + "0x2": "0x2" + } + } + }, + "contracts": { + }, + "classes": [ + ] +} diff --git a/crates/katana/primitives/Cargo.toml b/crates/katana/primitives/Cargo.toml index e4aa50217b..1d36529078 100644 --- a/crates/katana/primitives/Cargo.toml +++ b/crates/katana/primitives/Cargo.toml @@ -8,6 +8,7 @@ version.workspace = true [dependencies] anyhow.workspace = true +base64.workspace = true cairo-vm.workspace = true derive_more.workspace = true lazy_static = "1.4.0" diff --git a/crates/katana/primitives/src/genesis/allocation.rs b/crates/katana/primitives/src/genesis/allocation.rs index b44d985aa9..fe3ef715d3 100644 --- a/crates/katana/primitives/src/genesis/allocation.rs +++ b/crates/katana/primitives/src/genesis/allocation.rs @@ -5,7 +5,7 @@ use derive_more::{Deref, DerefMut}; use ethers::types::U256; use rand::rngs::SmallRng; use rand::{RngCore, SeedableRng}; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use starknet::core::serde::unsigned_field_element::UfeHex; use starknet::core::utils::get_contract_address; use starknet::signers::SigningKey; @@ -15,7 +15,7 @@ use crate::contract::{ClassHash, ContractAddress, StorageKey, StorageValue}; use crate::FieldElement; /// Represents a contract allocation in the genesis block. -#[derive(Debug, Clone, Serialize, PartialEq, Eq)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(untagged)] pub enum GenesisAllocation { /// Account contract @@ -67,7 +67,7 @@ impl GenesisAllocation { } /// Genesis allocation for account contract. -#[derive(Debug, Clone, Serialize, PartialEq, Eq)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(untagged)] pub enum GenesisAccountAlloc { /// Account contract with hidden private key. @@ -123,7 +123,7 @@ impl GenesisAccountAlloc { /// A generic non-account contract. #[serde_with::serde_as] -#[derive(Debug, Default, Clone, Serialize, PartialEq, Eq)] +#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct GenesisContractAlloc { /// The class hash of the contract. #[serde_as(as = "UfeHex")] @@ -141,7 +141,7 @@ pub struct GenesisContractAlloc { /// Used mainly for development purposes where the account info including the /// private key is printed to the console. #[serde_with::serde_as] -#[derive(Debug, Default, Clone, Serialize, PartialEq, Eq, Deref, DerefMut)] +#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq, Deref, DerefMut)] pub struct DevGenesisAccount { /// The private key associated with the public key of the account. #[serde_as(as = "UfeHex")] @@ -175,7 +175,7 @@ impl DevGenesisAccount { /// Account contract allocated in the genesis block. #[serde_with::serde_as] -#[derive(Debug, Default, Clone, Serialize, PartialEq, Eq)] +#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct GenesisAccount { /// The public key associated with the account for validation. #[serde_as(as = "UfeHex")] diff --git a/crates/katana/primitives/src/genesis/json.rs b/crates/katana/primitives/src/genesis/json.rs index 4d16227634..193af90b41 100644 --- a/crates/katana/primitives/src/genesis/json.rs +++ b/crates/katana/primitives/src/genesis/json.rs @@ -2,16 +2,24 @@ //! from a JSON file. use std::collections::{hash_map, BTreeMap, HashMap}; +use std::fs::File; +use std::io::{ + BufReader, {self}, +}; use std::path::{Path, PathBuf}; +use std::str::FromStr; use std::sync::Arc; -use std::{fs, io}; +use base64::prelude::*; use cairo_lang_starknet::casm_contract_class::{CasmContractClass, StarknetSierraCompilationError}; use cairo_lang_starknet::contract_class::ContractClass; use cairo_vm::types::errors::program_errors::ProgramError; use ethers::types::U256; -use rayon::iter::{IntoParallelIterator, ParallelIterator}; -use serde::Deserialize; +use rayon::prelude::*; +use serde::de::value::MapAccessDeserializer; +use serde::de::Visitor; +use serde::{Deserialize, Serialize}; +use serde_json::{Map, Value}; use starknet::core::types::contract::legacy::LegacyContractClass; use starknet::core::types::contract::{ComputeClassHashError, JsonError}; use starknet::core::types::FromByteArrayError; @@ -28,23 +36,70 @@ use super::constant::{ use super::{FeeTokenConfig, Genesis, GenesisAllocation, UniversalDeployerConfig}; use crate::block::{BlockHash, BlockNumber, GasPrices}; use crate::contract::{ - ClassHash, CompiledContractClass, CompiledContractClassV1, ContractAddress, StorageKey, - StorageValue, + ClassHash, CompiledContractClass, CompiledContractClassV0, CompiledContractClassV1, + ContractAddress, SierraClass, StorageKey, StorageValue, }; use crate::genesis::GenesisClass; -use crate::utils::class::{parse_compiled_class_v0, parse_sierra_class}; use crate::FieldElement; -#[derive(Debug, Clone, PartialEq, Eq, Deserialize)] +type Object = Map; + +/// Represents the path to the class artifact or the full JSON artifact itself. +#[derive(Debug, Clone, Serialize, PartialEq, Eq, derive_more::From)] +#[serde(untagged)] +pub enum PathOrFullArtifact { + /// A path to the file. + Path(PathBuf), + /// The full JSON artifact. + Artifact(Value), +} + +impl<'de> Deserialize<'de> for PathOrFullArtifact { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + struct _Visitor; + + impl<'de> Visitor<'de> for _Visitor { + type Value = PathOrFullArtifact; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("a path to a file or the full json artifact") + } + + fn visit_str(self, v: &str) -> Result + where + E: serde::de::Error, + { + Ok(PathOrFullArtifact::Path(PathBuf::from(v))) + } + + fn visit_map(self, map: A) -> Result + where + A: serde::de::MapAccess<'de>, + { + Ok(PathOrFullArtifact::Artifact(Value::Object(Object::deserialize( + MapAccessDeserializer::new(map), + )?))) + } + } + + deserializer.deserialize_any(_Visitor) + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct GenesisClassJson { - pub path: PathBuf, + // pub class: PathBuf, + pub class: PathOrFullArtifact, /// The class hash of the contract. If not provided, the class hash is computed from the /// class at `path`. pub class_hash: Option, } -#[derive(Debug, Clone, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct FeeTokenConfigJson { pub name: String, @@ -58,7 +113,7 @@ pub struct FeeTokenConfigJson { pub storage: Option>, } -#[derive(Debug, Clone, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct UniversalDeployerConfigJson { /// The address of the universal deployer contract. /// If not provided, the default UD address is used. @@ -70,7 +125,7 @@ pub struct UniversalDeployerConfigJson { pub storage: Option>, } -#[derive(Debug, Clone, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct GenesisContractJson { pub class: ClassHash, @@ -79,7 +134,7 @@ pub struct GenesisContractJson { pub storage: Option>, } -#[derive(Debug, Clone, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct GenesisAccountJson { /// The public key of the account. @@ -91,48 +146,59 @@ pub struct GenesisAccountJson { pub storage: Option>, } -/// A wrapper around [GenesisJson] that also contains the path to the JSON file. The `base_path` is -/// needed to calculate the paths of the class files, which are relative to the JSON file. -#[derive(Debug, Clone)] -pub struct GenesisJsonWithBasePath { - pub base_path: PathBuf, - pub content: GenesisJson, -} +#[derive(Debug, thiserror::Error)] +pub enum GenesisJsonError { + #[error("Failed to read class file at path {path}: {source}")] + FileNotFound { source: io::Error, path: PathBuf }, -impl GenesisJsonWithBasePath { - /// Loads the genesis configuration from a JSON file at `path`. - pub fn new>(path: P) -> Result { - let content = fs::read_to_string(path.as_ref())?; - let content: GenesisJson = serde_json::from_str(&content)?; + #[error(transparent)] + ParsingError(#[from] serde_json::Error), - let mut base_path = path.as_ref().to_path_buf(); - base_path.pop(); + #[error(transparent)] + ComputeClassHash(#[from] ComputeClassHashError), - Ok(Self { content, base_path }) - } + #[error(transparent)] + ConversionError(#[from] FromByteArrayError), - /// Creates a new instance of [GenesisJsonWithBasePath] with the given `base_path` and - /// `content`. If `base_path` is a path to a file, the parent directory is used as the base - /// path. - pub fn new_with_content_and_base_path(base_path: PathBuf, content: GenesisJson) -> Self { - let base_path = if !base_path.is_dir() { - let mut base_path = base_path; - base_path.pop(); - base_path - } else { - base_path - }; - Self { content, base_path } - } + #[error(transparent)] + SierraCompilation(#[from] StarknetSierraCompilationError), + + #[error(transparent)] + ProgramError(#[from] ProgramError), + + #[error("Missing class entry for class hash {0}")] + MissingClass(ClassHash), + + #[error("Failed to flatten Sierra contract: {0}")] + FlattenSierraClass(#[from] JsonError), + + #[error("Unresolved class artifact path {0}")] + UnresolvedClassPath(PathBuf), + + #[error(transparent)] + Encode(#[from] base64::EncodeSliceError), + + #[error(transparent)] + Decode(#[from] base64::DecodeError), + + #[error(transparent)] + Other(#[from] anyhow::Error), } -/// The JSON representation of the [Genesis] configuration. This `struct` is used to deserialize +// The JSON representation of the [Genesis] configuration. This `struct` is used to deserialize /// the genesis configuration from a JSON file before being converted to a [Genesis] instance. -/// However, this type alone is inadequate for creating the [Genesis] type, for that you have to -/// load the JSON file using [GenesisJsonWithBasePath] and then convert it to [Genesis] using -/// [`Genesis::try_from`]. This is because the `classes` field of this type contains -/// paths to the class files, which are set to be relative to the JSON file. -#[derive(Debug, Clone, Deserialize)] +/// +/// The JSON format allows specifying either the path to the class artifact or the full artifact +/// embedded directly inside the JSON file. As such, it is required that all paths must be resolved +/// first before converting to [Genesis] using [`Genesis::try_from`], otherwise the +/// conversion will fail. +/// +/// It is recommended to use [GenesisJson::load] for loading the JSON file as it will resolve +/// the class paths into their actual class artifacts, instead of deserializing it manually +/// (eg, using `serde_json`). +/// +/// The path of the class artifact are computed **relative** to the JSON file. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct GenesisJson { pub parent_hash: BlockHash, @@ -151,92 +217,106 @@ pub struct GenesisJson { pub contracts: HashMap, } -#[derive(Debug, thiserror::Error)] -pub enum GenesisTryFromJsonError { - #[error("Failed to read class file at path {path}: {source}")] - FileNotFound { source: io::Error, path: PathBuf }, - #[error(transparent)] - ParsingError(#[from] serde_json::Error), - #[error(transparent)] - ComputeClassHash(#[from] ComputeClassHashError), - #[error(transparent)] - ConversionError(#[from] FromByteArrayError), - #[error(transparent)] - SierraCompilation(#[from] StarknetSierraCompilationError), - #[error(transparent)] - ProgramError(#[from] ProgramError), - #[error("Missing class entry for class hash {0}")] - MissingClass(ClassHash), - #[error("Failed to flatten Sierra contract: {0}")] - FlattenSierraClass(#[from] JsonError), - #[error(transparent)] - Other(#[from] anyhow::Error), -} +impl GenesisJson { + /// Load the genesis configuration from a JSON file at the given `path` and resolve all the + /// class paths to their corresponding class definitions. The paths will be resolved relative + /// to the JSON file itself. + pub fn load>(path: P) -> Result { + let mut path = path.as_ref().to_path_buf(); + + let file = File::open(&path) + .map_err(|source| GenesisJsonError::FileNotFound { path: path.clone(), source })?; -impl TryFrom for Genesis { - type Error = GenesisTryFromJsonError; + // Remove the file name from the path to get the base path. + path.pop(); - fn try_from(value: GenesisJsonWithBasePath) -> Result { - let GenesisJsonWithBasePath { content: value, base_path } = value; + let mut genesis: Self = serde_json::from_reader(BufReader::new(file))?; + // resolves the class paths, if any + genesis.resolve_class_artifacts(path)?; + Ok(genesis) + } + + /// Resolves the paths of the class files to their corresponding class definitions. The + /// `base_path` is used to calculate the paths of the class files, which are relative to the + /// JSON file itself. + /// + /// This needs to be called if the [GenesisJson] is instantiated without using the + /// [GenesisJson::load] before converting to [Genesis]. + pub fn resolve_class_artifacts( + &mut self, + base_path: impl AsRef, + ) -> Result<(), GenesisJsonError> { + for entry in &mut self.classes { + if let PathOrFullArtifact::Path(rel_path) = &entry.class { + let base_path = base_path.as_ref().to_path_buf(); + let artifact = class_artifact_at_path(base_path, rel_path)?; + entry.class = PathOrFullArtifact::Artifact(artifact); + } + } + Ok(()) + } +} + +impl TryFrom for Genesis { + type Error = GenesisJsonError; + + fn try_from(value: GenesisJson) -> Result { let mut classes: HashMap = value .classes .into_par_iter() .map(|entry| { - let mut path = base_path.clone(); - path.push(&entry.path); - - let path = path - .canonicalize() - .map_err(|e| GenesisTryFromJsonError::FileNotFound { source: e, path })?; - - // read the file at the path - let content = fs::read_to_string(&path) - .map_err(|e| GenesisTryFromJsonError::FileNotFound { source: e, path })?; - - let (class_hash, compiled_class_hash, sierra, casm) = - match parse_sierra_class(&content) { - Ok(sierra) => { - let casm: ContractClass = serde_json::from_str(&content)?; - let casm = CasmContractClass::from_contract_class(casm, true)?; - - // check if the class hash is provided, otherwise compute it form the - // artifacts - let class_hash = entry.class_hash.unwrap_or(sierra.class_hash()?); - let compiled_hash = casm.compiled_class_hash().to_be_bytes(); - - ( - class_hash, - FieldElement::from_bytes_be(&compiled_hash)?, - Some(Arc::new(sierra.flatten()?)), - Arc::new(CompiledContractClass::V1( - CompiledContractClassV1::try_from(casm)?, - )), - ) - } - - Err(_) => { - let casm = parse_compiled_class_v0(&content)?; - - let class_hash = if let Some(class_hash) = entry.class_hash { - class_hash - } else { - let casm = serde_json::from_str::(&content)?; - casm.class_hash()? - }; - - ( - class_hash, - class_hash, - None, - Arc::new(CompiledContractClass::V0(casm)), - ) - } - }; + let GenesisClassJson { class, class_hash } = entry; + + let artifact = match class { + PathOrFullArtifact::Artifact(artifact) => artifact, + PathOrFullArtifact::Path(path) => { + return Err(GenesisJsonError::UnresolvedClassPath(path)); + } + }; + + let sierra = serde_json::from_value::(artifact.clone()); + + let (class_hash, compiled_class_hash, sierra, casm) = match sierra { + Ok(sierra) => { + let casm: ContractClass = serde_json::from_value(artifact)?; + let casm = CasmContractClass::from_contract_class(casm, true)?; + + // check if the class hash is provided, otherwise compute it from the + // artifacts + let class_hash = class_hash.unwrap_or(sierra.class_hash()?); + let compiled_hash = casm.compiled_class_hash().to_be_bytes(); + + ( + class_hash, + FieldElement::from_bytes_be(&compiled_hash)?, + Some(Arc::new(sierra.flatten()?)), + Arc::new(CompiledContractClass::V1(CompiledContractClassV1::try_from( + casm, + )?)), + ) + } + + // if the artifact is not a sierra contract, we check if it's a legacy contract + Err(_) => { + let casm: CompiledContractClassV0 = + serde_json::from_value(artifact.clone())?; + + let class_hash = if let Some(class_hash) = class_hash { + class_hash + } else { + let casm: LegacyContractClass = + serde_json::from_value(artifact.clone())?; + casm.class_hash()? + }; + + (class_hash, class_hash, None, Arc::new(CompiledContractClass::V0(casm))) + } + }; Ok((class_hash, GenesisClass { compiled_class_hash, sierra, casm })) }) - .collect::>()?; + .collect::>()?; let mut fee_token = FeeTokenConfig { name: value.fee_token.name, @@ -251,7 +331,7 @@ impl TryFrom for Genesis { match value.fee_token.class { Some(hash) => { if !classes.contains_key(&hash) { - return Err(GenesisTryFromJsonError::MissingClass(hash)); + return Err(GenesisJsonError::MissingClass(hash)); } } @@ -272,7 +352,7 @@ impl TryFrom for Genesis { match config.class { Some(hash) => { if !classes.contains_key(&hash) { - return Err(GenesisTryFromJsonError::MissingClass(hash)); + return Err(GenesisJsonError::MissingClass(hash)); } Some(UniversalDeployerConfig { @@ -311,7 +391,7 @@ impl TryFrom for Genesis { let class_hash = match account.class { Some(hash) => { if !classes.contains_key(&hash) { - return Err(GenesisTryFromJsonError::MissingClass(hash)); + return Err(GenesisJsonError::MissingClass(hash)); } else { hash } @@ -357,7 +437,7 @@ impl TryFrom for Genesis { // check that the class hash exists in the classes field let class_hash = contract.class; if !classes.contains_key(&contract.class) { - return Err(GenesisTryFromJsonError::MissingClass(class_hash)); + return Err(GenesisJsonError::MissingClass(class_hash)); } let balance = contract.balance.unwrap_or_default(); @@ -375,7 +455,7 @@ impl TryFrom for Genesis { ); } - Ok(Self { + Ok(Genesis { classes, fee_token, allocations, @@ -390,16 +470,85 @@ impl TryFrom for Genesis { } } +impl FromStr for GenesisJson { + type Err = GenesisJsonError; + fn from_str(s: &str) -> Result { + serde_json::from_str(s).map_err(GenesisJsonError::from) + } +} + +/// A helper function to conveniently resolve the artifacts in the genesis json if they +/// weren't already resolved and then serialize it to base64 encoding. +/// +/// # Arguments +/// * `genesis` - The [GenesisJson] to resolve and serialize. +/// * `base_path` - The base path of the JSON file used to resolve the class artifacts +pub fn resolve_artifacts_and_to_base64>( + mut genesis: GenesisJson, + base_path: P, +) -> Result, GenesisJsonError> { + genesis.resolve_class_artifacts(base_path)?; + to_base64(genesis) +} + +/// Serialize the [GenesisJson] into base64 encoding. +pub fn to_base64(genesis: GenesisJson) -> Result, GenesisJsonError> { + let data = serde_json::to_vec(&genesis)?; + + let mut buf = vec![b'b', b'a', b's', b'e', b'6', b'4', b':']; + // make sure we'll have a slice big enough for base64 + padding + buf.resize((4 * data.len() / 3 + 4) + buf.len(), 0); + + let bytes_written = BASE64_STANDARD.encode_slice(data, &mut buf[7..])?; + // shorten the buffer to the actual length written + buf.truncate(bytes_written + 7); + + Ok(buf) +} + +/// Deserialize the [GenesisJson] from base64 encoded bytes. +pub fn from_base64(data: &[u8]) -> Result { + match data { + [b'b', b'a', b's', b'e', b'6', b'4', b':', rest @ ..] => { + let decoded = BASE64_STANDARD.decode(rest)?; + Ok(serde_json::from_slice::(&decoded)?) + } + + _ => { + let decoded = BASE64_STANDARD.decode(data)?; + Ok(serde_json::from_slice::(&decoded)?) + } + } +} + +fn class_artifact_at_path( + base_path: PathBuf, + relative_path: &PathBuf, +) -> Result { + let mut path = base_path; + path.push(relative_path); + + let path = + path.canonicalize().map_err(|e| GenesisJsonError::FileNotFound { source: e, path })?; + + let file = File::open(&path).map_err(|e| GenesisJsonError::FileNotFound { source: e, path })?; + let content: Value = serde_json::from_reader(BufReader::new(file))?; + + Ok(content) +} + #[cfg(test)] mod tests { use std::collections::{BTreeMap, HashMap}; + use std::fs::File; + use std::io::BufReader; use std::path::PathBuf; use std::str::FromStr; use ethers::types::U256; use starknet::macros::felt; - use super::{GenesisClassJson, GenesisJson}; + use super::{from_base64, GenesisClassJson, GenesisJson}; use crate::block::GasPrices; use crate::genesis::allocation::{GenesisAccount, GenesisAccountAlloc, GenesisContractAlloc}; use crate::genesis::constant::{ @@ -411,19 +560,16 @@ mod tests { DEFAULT_OZ_ACCOUNT_CONTRACT_CLASS_HASH, DEFAULT_OZ_ACCOUNT_CONTRACT_COMPILED_CLASS_HASH, DEFAULT_UDC_ADDRESS, }; - use crate::genesis::json::GenesisJsonWithBasePath; + use crate::genesis::json::to_base64; use crate::genesis::{ ContractAddress, FeeTokenConfig, Genesis, GenesisAllocation, GenesisClass, UniversalDeployerConfig, }; - fn genesis_json() -> GenesisJsonWithBasePath { - GenesisJsonWithBasePath::new("./src/genesis/test-genesis.json").unwrap() - } - #[test] fn deserialize_from_json() { - let genesis: GenesisJson = genesis_json().content; + let file = File::open("./src/genesis/test-genesis.json").unwrap(); + let genesis: GenesisJson = serde_json::from_reader(file).unwrap(); assert_eq!(genesis.number, 0); assert_eq!(genesis.parent_hash, felt!("0x999")); @@ -508,24 +654,52 @@ mod tests { vec![ GenesisClassJson { class_hash: Some(felt!("0x8")), - path: PathBuf::from("../../contracts/compiled/erc20.json"), + class: PathBuf::from("../../contracts/compiled/erc20.json").into(), + }, + GenesisClassJson { + class_hash: Some(felt!("0x80085")), + class: PathBuf::from("../../contracts/compiled/universal_deployer.json").into(), + }, + GenesisClassJson { + class_hash: Some(felt!("0xa55")), + class: PathBuf::from("../../contracts/compiled/oz_account_080.json").into(), + }, + ] + ); + } + + #[test] + fn deserialize_from_json_with_class() { + let file = File::open("./src/genesis/test-genesis-with-class.json").unwrap(); + let genesis: GenesisJson = serde_json::from_reader(BufReader::new(file)).unwrap(); + + assert_eq!( + genesis.classes, + vec![ + GenesisClassJson { + class_hash: Some(felt!("0x8")), + class: PathBuf::from("../../contracts/compiled/erc20.json").into(), }, GenesisClassJson { class_hash: Some(felt!("0x80085")), - path: PathBuf::from("../../contracts/compiled/universal_deployer.json"), + class: PathBuf::from("../../contracts/compiled/universal_deployer.json").into(), }, GenesisClassJson { class_hash: Some(felt!("0xa55")), - path: PathBuf::from("../../contracts/compiled/oz_account_080.json"), + class: serde_json::to_value(DEFAULT_OZ_ACCOUNT_CONTRACT.clone()) + .unwrap() + .into(), }, ] ); } #[test] - fn genesis_try_from_json() { - let genesis = genesis_json(); - let actual_genesis = Genesis::try_from(genesis).unwrap(); + fn genesis_load_from_json() { + let path = PathBuf::from("./src/genesis/test-genesis.json"); + + let json = GenesisJson::load(path).unwrap(); + let actual_genesis = Genesis::try_from(json).unwrap(); let classes = HashMap::from([ ( @@ -726,12 +900,7 @@ mod tests { } "#; - let content: GenesisJson = serde_json::from_str(json).unwrap(); - - let base_path = PathBuf::from_str("../").unwrap().canonicalize().unwrap(); - let genesis_json = - GenesisJsonWithBasePath::new_with_content_and_base_path(base_path, content); - + let genesis_json: GenesisJson = GenesisJson::from_str(json).unwrap(); let actual_genesis = Genesis::try_from(genesis_json).unwrap(); let classes = HashMap::from([ @@ -820,4 +989,29 @@ mod tests { assert_eq!(class.sierra, expected_class.sierra.clone()); } } + + #[test] + fn genesis_from_json_with_unresolved_paths() { + let file = File::open("./src/genesis/test-genesis.json").unwrap(); + let json: GenesisJson = serde_json::from_reader(file).unwrap(); + assert!( + Genesis::try_from(json) + .unwrap_err() + .to_string() + .contains("Unresolved class artifact path") + ); + } + + #[test] + fn encode_decode_genesis_file_to_base64() { + let path = PathBuf::from("./src/genesis/test-genesis.json"); + + let genesis = GenesisJson::load(path).unwrap(); + let genesis_clone = genesis.clone(); + + let encoded = to_base64(genesis_clone).unwrap(); + let decoded = from_base64(encoded.as_slice()).unwrap(); + + assert_eq!(genesis, decoded); + } } diff --git a/crates/katana/primitives/src/genesis/mod.rs b/crates/katana/primitives/src/genesis/mod.rs index c1ddd58a4d..9f11df4fce 100644 --- a/crates/katana/primitives/src/genesis/mod.rs +++ b/crates/katana/primitives/src/genesis/mod.rs @@ -7,7 +7,7 @@ use std::fmt::Debug; use std::sync::Arc; use ethers::types::U256; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use starknet::core::serde::unsigned_field_element::UfeHex; use starknet::core::utils::cairo_short_string_to_felt; @@ -34,7 +34,7 @@ use crate::version::CURRENT_STARKNET_VERSION; use crate::FieldElement; #[serde_with::serde_as] -#[derive(Debug, Clone, Serialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct FeeTokenConfig { /// The name of the fee token. pub name: String, @@ -68,7 +68,7 @@ pub struct GenesisClass { } /// The configuration of the universal deployer contract. -#[derive(Debug, Clone, Serialize, PartialEq, Eq)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct UniversalDeployerConfig { /// The class hash of the universal deployer contract. pub class_hash: ClassHash, diff --git a/crates/katana/primitives/src/genesis/test-genesis-with-class.json b/crates/katana/primitives/src/genesis/test-genesis-with-class.json new file mode 100644 index 0000000000..5a6f151d6e --- /dev/null +++ b/crates/katana/primitives/src/genesis/test-genesis-with-class.json @@ -0,0 +1,4660 @@ +{ + "number": 0, + "parentHash": "0x999", + "timestamp": 5123512314, + "stateRoot": "0x99", + "sequencerAddress": "0x100", + "gasPrices": { + "ETH": 1111, + "STRK": 2222 + }, + "feeToken": { + "address": "0x55", + "name": "ETHER", + "symbol": "ETH", + "decimals": 18, + "class": "0x8", + "storage": { + "0x111": "0x1", + "0x222": "0x2" + } + }, + "universalDeployer": { + "address": "0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf", + "storage": { + "0x10": "0x100" + } + }, + "accounts": { + "0x66efb28ac62686966ae85095ff3a772e014e7fbf56d4c5f6fac5606d4dde23a": { + "publicKey": "0x1", + "balance": "0xD3C21BCECCEDA1000000", + "nonce": "0x1", + "class": "0x80085", + "storage": { + "0x1": "0x1", + "0x2": "0x2" + } + }, + "0x6b86e40118f29ebe393a75469b4d926c7a44c2e2681b6d319520b7c1156d114": { + "publicKey": "0x2", + "balance": "0xD3C21BCECCEDA1000000" + } + }, + "contracts": { + "0x29873c310fbefde666dc32a1554fea6bb45eecc84f680f8a2b0a8fbb8cb89af": { + "balance": "0xD3C21BCECCEDA1000000", + "class": "0x8", + "storage": { + "0x1": "0x1", + "0x2": "0x2" + } + }, + "0xe29882a1fcba1e7e10cad46212257fea5c752a4f9b1b1ec683c503a2cf5c8a": { + "class": "0x8", + "balance": "0xD3C21BCECCEDA1000000" + } + }, + "classes": [ + { + "class": "../../contracts/compiled/erc20.json", + "classHash": "0x8" + }, + { + "class": "../../contracts/compiled/universal_deployer.json", + "classHash": "0x80085" + }, + { + "class": { + "sierra_program": [ + "0x1", + "0x3", + "0x0", + "0x2", + "0x3", + "0x1", + "0x38d", + "0x73", + "0x67", + "0x53797374656d", + "0x800000000000000100000000000000000000000000000000", + "0x556e696e697469616c697a6564", + "0x800000000000000200000000000000000000000000000001", + "0x1", + "0x0", + "0x456e756d", + "0x800000000000000700000000000000000000000000000001", + "0x4abc19acf2110f55bbd81ec736d91bfa4d6bab076c94cfdf3127449061193d", + "0x45635374617465", + "0x800000000000000700000000000000000000000000000000", + "0x4172726179", + "0x800000000000000300000000000000000000000000000001", + "0x8", + "0x536e617073686f74", + "0x4", + "0x537472756374", + "0x800000000000000700000000000000000000000000000002", + "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", + "0x5", + "0x800000000000000300000000000000000000000000000003", + "0x161ee0e6962e56453b5d68e09d1cabe5633858c1ba3a7e73fee8c70867eced0", + "0x6", + "0x66656c74323532", + "0x1166fe35572d4e7764dac0caf1fd7fc591901fd01156db2561a07b68ab8dca2", + "0x800000000000000f00000000000000000000000000000001", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99", + "0xa", + "0x4563506f696e74", + "0x4e6f6e5a65726f", + "0xc", + "0x426f78", + "0x42", + "0x2c", + "0x2c7badf5cd070e89531ef781330a9554b04ce4ea21304b67a30ac3d43df84a2", + "0xf", + "0x381e8d33523eda2efdaa30d501b6dfe83db6bdd909086fb338103738444ec23", + "0x800000000000000f00000000000000000000000000000003", + "0x11", + "0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672", + "0x13", + "0x3cca7a30d12b22cfcf3842f0061708aabfc598c01f49a4529e51e7916aa5784", + "0x12", + "0x14", + "0x800000000000000700000000000000000000000000000003", + "0x3288d594b9a45d15bb2fcb7903f06cdb06b27f0ba88186ec4cfaa98307cb972", + "0x248e8fae2f16a35027771ffd74d6a6f3c379424b55843563a18f566bba3d905", + "0x16", + "0x28266f0414c0de3e9d181ad39a5c73a16c7514519fab3e64e293fe4c79a9fbe", + "0x14be226ed4a8370e9a1024f06dd500f119e3e7f909013eaaf51e63d2eca6712", + "0x19", + "0x34fbf7999a7a80ee576a7639d4a2ab5eff961e5aae01064a147a4e7193b88f7", + "0x1a", + "0x39d1bb6485850462fcfa1e5c499cd211a145258949ebe8aadd304a999165dc6", + "0x231d4965fc11a34a5dbf5760a6aa96609aa0166be90582301f5102b7f7eae9d", + "0x18", + "0x1c", + "0x32f0b6749e5a61f7f6bc38eae942ce592ae56233e8349466b243151ab3b637", + "0x1d", + "0x2", + "0x90d0203c41ad646d024845257a6eceb2f8b59b29ce7420dd518053d2edeedc", + "0x53746f7261676541646472657373", + "0x53746f726167654261736541646472657373", + "0x22", + "0x3ae40d407f8074730e48241717c3dd78b7128d346cf81094e31806a3a5bdf", + "0x23", + "0x800000000000000300000000000000000000000000000004", + "0x25", + "0x26", + "0x32cb17bdb0d0d053909169ec443a25462b7e27237007511f772a7d957ce924c", + "0x27", + "0x2e", + "0x3d", + "0x436f6e747261637441646472657373", + "0x800000000000000700000000000000000000000000000006", + "0x19367431bdedfe09ea99eed9ade3de00f195dd97087ed511b8942ebb45dbc5a", + "0x29", + "0x2a", + "0x2b", + "0x753634", + "0x800000000000000700000000000000000000000000000004", + "0x3808c701a5d13e100ab11b6c02f91f752ecae7e420d21b56c90ec0a475cc7e5", + "0x2d", + "0x38f4af6e44b2e0a6ad228a4874672855e693db590abc7105a5a9819dbbf5ba6", + "0x2f", + "0x3d37ad6eafb32512d2dd95a2917f6bf14858de22c27a1114392429f2e5c15d7", + "0x800000000000000f00000000000000000000000000000002", + "0x2c92579c09cc1c79d950a243b853521e6cc14629970e7763fb138c03a479139", + "0x33", + "0x220d0098370bbaab338f4e82fb69720a761536f00e15d656ddc9d3385b16e3", + "0x34", + "0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5", + "0x36", + "0x1f5d91ca543c7f9a0585a1c8beffc7a207d4af73ee640223a154b1da196a40d", + "0x38", + "0x3a", + "0x75313238", + "0x800000000000000700000000000000000000000000000008", + "0x2e655a7513158873ca2e5e659a9e175d23bf69a2325cdd0397ca3b8d864b967", + "0x3c", + "0x3508bb43f8880f8a37030d78eb1ac52d3a1abcccd991bf0258bdf64f81014ed", + "0x3e", + "0x3e1934b18d91949ab9afdbdd1866a30ccca06c2b1e6581582c6b27f8b4f6555", + "0x40", + "0x3693aea200ee3080885d21614d01b9532a8670f69e658a94addaadd72e9aca", + "0x18508a22cd4cf1437b721f596cd2277fc0a5e4dcd247b107ef2ef5fd2752cf7", + "0x43", + "0x8416421239ce8805ed9d27e6ddae62a97ab5d01883bb8f5246b4742a44b429", + "0x44", + "0x215692769bef4dad4fa84993f233ef2b9084a6d947d83521a5e257dae5d5e1b", + "0x47", + "0x3ce5192f5a34fd44f3cea940ff0f4e47518da9ada5aede3b732eb001439f046", + "0x48", + "0x28f8d296e28032baef1f420f78ea9d933102ba47a50b1c5f80fc8a3a1041da", + "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", + "0xa853c166304d20fb0711becf2cbdf482dee3cac4e9717d040b7a7ab1df7eec", + "0x4c", + "0x506564657273656e", + "0x265bdceca7ea9a7f2bd04272ca0fae2a6498e935c71d3ef73237e17187023ec", + "0x4f", + "0xe12da67791025850b8b89abc616bc4269dff27cfc5aa224bf8f0762470ea51", + "0x50", + "0x17b6ecc31946835b0d9d92c2dd7a9c14f29af0371571ae74a1b228828b2242", + "0x52", + "0x34f9bd7c6cb2dd4263175964ad75f1ff1461ddc332fbfb274e0fb2a5d7ab968", + "0x53", + "0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511", + "0x10203be321c62a7bd4c060d69539c1fbe065baa9e253c74d2cc48be163e259", + "0x57", + "0x45634f70", + "0x74584e9f10ffb1a40aa5a3582e203f6758defc4a497d1a2d5a89f274a320e9", + "0x5b", + "0x800000000000000300000000000000000000000000000002", + "0x25abf8fd76a01c7e2544d26b0a2e29212b05a36781e0330b46d878e43b307d1", + "0x5d", + "0x4275696c74696e436f737473", + "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", + "0x5a", + "0x753332", + "0x28f184fd9e4406cc4475e4faaa80e83b54a57026386ee7d5fc4fa8f347e327d", + "0x62", + "0xc1f0cb41289e2f6a79051e9af1ead07112b46ff17a492a90b3944dc53a51c8", + "0x63", + "0x4761734275696c74696e", + "0x52616e6765436865636b", + "0x1c0", + "0x616c6c6f635f6c6f63616c", + "0x66696e616c697a655f6c6f63616c73", + "0x7265766f6b655f61705f747261636b696e67", + "0x77697468647261775f676173", + "0x6272616e63685f616c69676e", + "0x73746f72655f74656d70", + "0x66", + "0x65", + "0x66756e6374696f6e5f63616c6c", + "0x3", + "0x656e756d5f6d61746368", + "0x64", + "0x7374727563745f6465636f6e737472756374", + "0x61727261795f6c656e", + "0x736e617073686f745f74616b65", + "0x61", + "0x64726f70", + "0x7533325f636f6e7374", + "0x72656e616d65", + "0x7533325f6571", + "0x61727261795f6e6577", + "0x66656c743235325f636f6e7374", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x61727261795f617070656e64", + "0x7374727563745f636f6e737472756374", + "0x656e756d5f696e6974", + "0x60", + "0x6765745f6275696c74696e5f636f737473", + "0x5f", + "0x77697468647261775f6761735f616c6c", + "0xd", + "0x73746f72655f6c6f63616c", + "0x5e", + "0xe", + "0x5c", + "0x4f7574206f6620676173", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x59", + "0x58", + "0x10", + "0x55", + "0x54", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x56", + "0x15", + "0x51", + "0x17", + "0x4661696c656420746f20646573657269616c697a6520706172616d202333", + "0x4e", + "0x1b", + "0x4d", + "0x64697361626c655f61705f747261636b696e67", + "0x61727261795f736e617073686f745f706f705f66726f6e74", + "0x4b", + "0x6a756d70", + "0x756e626f78", + "0x1e", + "0x1f", + "0x20", + "0x647570", + "0x7533325f746f5f66656c74323532", + "0x4a", + "0x21", + "0x24", + "0x49", + "0x28", + "0x66656c743235325f69735f7a65726f", + "0x46", + "0x45", + "0x66656c743235325f737562", + "0x41", + "0x636f6e74726163745f616464726573735f746f5f66656c74323532", + "0x3f", + "0x656e61626c655f61705f747261636b696e67", + "0x100000000000000000000000000000001", + "0x4163636f756e743a20696e76616c69642074782076657273696f6e", + "0x4163636f756e743a20696e76616c69642063616c6c6572", + "0x39", + "0x30", + "0x3b", + "0x31", + "0x4163636f756e743a20696e76616c6964207369676e6174757265", + "0x56414c4944", + "0x32", + "0x37", + "0x35", + "0x3f918d17e5ee77373b56385708f855659a07f75997f365cf87748628532a055", + "0x2ceccef7f994940b3962a6c67e0ba4fcd37df7d131417c604f91e03caecc1cd", + "0x73746f726167655f626173655f616464726573735f636f6e7374", + "0x1379ac0624b939ceb9dede92211d7db5ee174fe28be72245b0a1a2abd81c98f", + "0x73746f726167655f616464726573735f66726f6d5f62617365", + "0x73746f726167655f726561645f73797363616c6c", + "0x4163636f756e743a20756e617574686f72697a6564", + "0x21adb5788e32c84f69a1863d85ef9394b7bf761a0ce1190f826984e5075c371", + "0x6765745f657865637574696f6e5f696e666f5f73797363616c6c", + "0x61727261795f706f705f66726f6e74", + "0x61727261795f676574", + "0x496e646578206f7574206f6620626f756e6473", + "0x800000000000010ffffffffffffffffb781126dcae7b2321e66a241adc64d2f", + "0x65635f706f696e745f66726f6d5f785f6e7a", + "0x756e777261705f6e6f6e5f7a65726f", + "0x1ef15c18599971b7beced415a40f0c7deacfd9b0d1819e03d723d8bc943cfca", + "0x5668060aa49730b7be4801df46ec62de53ecd11abe43a32873000c36e8dc1f", + "0x65635f706f696e745f7472795f6e65775f6e7a", + "0x65635f706f696e745f69735f7a65726f", + "0x65635f706f696e745f756e77726170", + "0x656d69745f6576656e745f73797363616c6c", + "0xb", + "0x73746f726167655f77726974655f73797363616c6c", + "0x10e5fcd68658d0cf6ed280e34d0d0da9a510b7a6779230c9912806a2c939b9", + "0x9", + "0x706564657273656e", + "0xad292db4ff05a993c318438c1b6c8a8303266af2da151aa28ccece6726f1f1", + "0x626f6f6c5f6e6f745f696d706c", + "0x63616c6c5f636f6e74726163745f73797363616c6c", + "0x7", + "0x65635f73746174655f696e6974", + "0x65635f73746174655f6164645f6d756c", + "0x65635f73746174655f7472795f66696e616c697a655f6e7a", + "0x65635f706f696e745f7a65726f", + "0x65635f73746174655f616464", + "0x65635f6e6567", + "0x526573756c743a3a756e77726170206661696c65642e", + "0x38f6a5b87c23cee6e7294bcc3302e95019f70f81586ff3cac38581f5ca96381", + "0xca58956845fecb30a8cb3efe23582630dbe8b80cc1fb8fd5d5e866b1356ad", + "0x10d9", + "0xffffffffffffffff", + "0x89", + "0x81", + "0x71", + "0x68", + "0x69", + "0x6a", + "0x6b", + "0x6c", + "0x6d", + "0x6e", + "0x6f", + "0x70", + "0x72", + "0x73", + "0x74", + "0x75", + "0x76", + "0x77", + "0x78", + "0x79", + "0x7a", + "0x7b", + "0x7c", + "0x7d", + "0x7e", + "0x7f", + "0x80", + "0x82", + "0x83", + "0x115", + "0x10d", + "0xfd", + "0xbe", + "0xee", + "0xe6", + "0x1bf", + "0x1ae", + "0x1a5", + "0x194", + "0x153", + "0x184", + "0x17c", + "0x84", + "0x85", + "0x86", + "0x87", + "0x88", + "0x8a", + "0x8b", + "0x8c", + "0x8d", + "0x8e", + "0x8f", + "0x90", + "0x91", + "0x92", + "0x26a", + "0x259", + "0x250", + "0x23f", + "0x1fe", + "0x22f", + "0x227", + "0x2cf", + "0x296", + "0x2c2", + "0x2bb", + "0x340", + "0x331", + "0x2fe", + "0x323", + "0x31c", + "0x3a3", + "0x36a", + "0x396", + "0x38f", + "0x414", + "0x405", + "0x3d2", + "0x3f7", + "0x3f0", + "0x493", + "0x483", + "0x444", + "0x474", + "0x46c", + "0x544", + "0x534", + "0x523", + "0x511", + "0x4ce", + "0x500", + "0x4f8", + "0x93", + "0x94", + "0x95", + "0x5c4", + "0x5b4", + "0x575", + "0x5a5", + "0x59d", + "0x63c", + "0x62c", + "0x5f5", + "0x61d", + "0x615", + "0x653", + "0x658", + "0x674", + "0x66e", + "0x691", + "0x6b2", + "0x6cc", + "0x6e1", + "0x6e6", + "0x6f0", + "0x6ff", + "0x704", + "0x720", + "0x71a", + "0x96", + "0x73f", + "0x75c", + "0x97", + "0x773", + "0x98", + "0x99", + "0x78a", + "0x9a", + "0x9b", + "0x9c", + "0x9d", + "0x9e", + "0x9f", + "0xa0", + "0x7a0", + "0xa1", + "0x7b7", + "0x7d2", + "0x7f0", + "0xa2", + "0xa3", + "0xa4", + "0x80c", + "0xa5", + "0xa6", + "0xa7", + "0xa8", + "0xa9", + "0xaa", + "0x81b", + "0xab", + "0x81f", + "0xac", + "0xad", + "0xae", + "0x83f", + "0xaf", + "0x88e", + "0xb0", + "0xb1", + "0x859", + "0xb2", + "0xb3", + "0xb4", + "0xb5", + "0x886", + "0xb6", + "0xb7", + "0x87c", + "0xb8", + "0xb9", + "0x876", + "0xba", + "0xbb", + "0x923", + "0xbc", + "0xbd", + "0x914", + "0xbf", + "0x90c", + "0xc0", + "0xc1", + "0xc2", + "0xc3", + "0xc4", + "0xc5", + "0x8d8", + "0x8e5", + "0xc6", + "0x8fc", + "0xc7", + "0x8f5", + "0xc8", + "0xc9", + "0xca", + "0x977", + "0xcb", + "0xcc", + "0x93b", + "0xcd", + "0xce", + "0x940", + "0xcf", + "0xd0", + "0xd1", + "0x969", + "0xd2", + "0xd3", + "0x962", + "0x95c", + "0x970", + "0xd4", + "0xd5", + "0xd6", + "0x9c1", + "0xd7", + "0x9b9", + "0x9ae", + "0xd8", + "0xd9", + "0xa03", + "0x9db", + "0xda", + "0x9f9", + "0x9f3", + "0xa32", + "0xa26", + "0xa2a", + "0xdb", + "0xdc", + "0xdd", + "0xa48", + "0xde", + "0xdf", + "0xe0", + "0xa8f", + "0xe1", + "0xe2", + "0xa87", + "0xe3", + "0xe4", + "0xe5", + "0xa80", + "0xa7a", + "0xe7", + "0xe8", + "0xe9", + "0xea", + "0xeb", + "0xaa5", + "0xabb", + "0xec", + "0xad7", + "0xed", + "0xef", + "0xf0", + "0xaec", + "0xf1", + "0xf2", + "0xf3", + "0xb1b", + "0xf4", + "0xb13", + "0xf5", + "0xf6", + "0xf7", + "0xb61", + "0xf8", + "0xb57", + "0xb4f", + "0xb45", + "0xf9", + "0xfa", + "0xfb", + "0xfc", + "0xfe", + "0xff", + "0x100", + "0x101", + "0x102", + "0xb7d", + "0x103", + "0x104", + "0x105", + "0x106", + "0x107", + "0x108", + "0x109", + "0x10a", + "0x10b", + "0xb95", + "0x10c", + "0x10e", + "0x10f", + "0x110", + "0x111", + "0x112", + "0x113", + "0xbaf", + "0x114", + "0x116", + "0x117", + "0xbd0", + "0x118", + "0xbee", + "0x119", + "0xc1b", + "0xc39", + "0x11a", + "0x11b", + "0xc2e", + "0x11c", + "0x11d", + "0xc23", + "0x11e", + "0x11f", + "0x120", + "0x121", + "0x122", + "0x123", + "0xc50", + "0x124", + "0x125", + "0xc55", + "0x126", + "0x127", + "0x128", + "0xc60", + "0xca0", + "0x129", + "0xc99", + "0x12a", + "0x12b", + "0xc8c", + "0x12c", + "0x12d", + "0x12e", + "0x12f", + "0x130", + "0x131", + "0x132", + "0x133", + "0x134", + "0x135", + "0xcbd", + "0x136", + "0x137", + "0xce7", + "0x138", + "0x139", + "0x13a", + "0x13b", + "0xce1", + "0x13c", + "0x13d", + "0x13e", + "0x13f", + "0x140", + "0xd06", + "0x141", + "0x142", + "0xd27", + "0x143", + "0x144", + "0x145", + "0x146", + "0x147", + "0xd41", + "0x148", + "0xd3a", + "0x149", + "0x14a", + "0x14b", + "0x14c", + "0xd4e", + "0x14d", + "0x14e", + "0xd53", + "0x14f", + "0x150", + "0x151", + "0xd5e", + "0x152", + "0x154", + "0x155", + "0xdae", + "0x156", + "0xd72", + "0x157", + "0x158", + "0xd77", + "0xda3", + "0x159", + "0x15a", + "0x15b", + "0xd99", + "0x15c", + "0x15d", + "0xd92", + "0x15e", + "0x15f", + "0x160", + "0x161", + "0xdfa", + "0xdcb", + "0xdd0", + "0xdec", + "0xde6", + "0xdf3", + "0x162", + "0x163", + "0xe0f", + "0x164", + "0x165", + "0x166", + "0x167", + "0x168", + "0xe27", + "0x169", + "0xe39", + "0xe4b", + "0x16a", + "0xec8", + "0x16b", + "0x16c", + "0xebd", + "0x16d", + "0x16e", + "0x16f", + "0xeb1", + "0x170", + "0x171", + "0x172", + "0xe6f", + "0x173", + "0x174", + "0x175", + "0x176", + "0xe82", + "0xe95", + "0xe93", + "0x177", + "0xe9c", + "0xeab", + "0xea9", + "0x178", + "0xed8", + "0xef0", + "0x179", + "0x17a", + "0x17b", + "0x17d", + "0x17e", + "0x17f", + "0xf14", + "0x180", + "0x181", + "0xf19", + "0x182", + "0x183", + "0xf24", + "0x185", + "0x186", + "0xf3a", + "0xf3f", + "0xf4a", + "0x187", + "0x188", + "0x189", + "0x18a", + "0x18b", + "0xf68", + "0x18c", + "0x18d", + "0x18e", + "0x18f", + "0x190", + "0x191", + "0xfa3", + "0xf98", + "0xf9d", + "0x192", + "0x193", + "0x195", + "0x196", + "0xfaf", + "0x197", + "0xfc2", + "0xfc6", + "0xfd0", + "0xfd5", + "0xfe2", + "0x198", + "0x199", + "0x19a", + "0x19b", + "0x19c", + "0xff1", + "0x19d", + "0x19e", + "0x1003", + "0x19f", + "0x1a0", + "0x1008", + "0x1a1", + "0x1a2", + "0x1a3", + "0x1013", + "0x1020", + "0x1030", + "0x1a4", + "0x1a6", + "0x1a7", + "0x102b", + "0x102e", + "0x1a8", + "0x1a9", + "0x1aa", + "0x1039", + "0x103f", + "0x1ab", + "0x1ac", + "0x104b", + "0x104e", + "0x1056", + "0x1ad", + "0x106a", + "0x1af", + "0x1072", + "0x1b0", + "0x1b1", + "0x1b2", + "0x1b3", + "0x107d", + "0x1b4", + "0x1b5", + "0x1b6", + "0x1091", + "0x1b7", + "0x10a2", + "0x1b8", + "0x1b9", + "0x10ad", + "0x1ba", + "0x1bb", + "0x1bc", + "0x1bd", + "0x10bc", + "0x1be", + "0x1cf", + "0x27a", + "0x2dd", + "0x34e", + "0x3b1", + "0x422", + "0x4a2", + "0x553", + "0x5d3", + "0x64b", + "0x67e", + "0x698", + "0x6b8", + "0x6d4", + "0x6da", + "0x6f7", + "0x72a", + "0x747", + "0x764", + "0x779", + "0x791", + "0x7a6", + "0x7be", + "0x7da", + "0x7f8", + "0x814", + "0x829", + "0x848", + "0x89d", + "0x8a1", + "0x92b", + "0x986", + "0x9ca", + "0xa12", + "0xa3a", + "0xa4e", + "0xa97", + "0xaab", + "0xac1", + "0xac5", + "0xaf4", + "0xb25", + "0xb6b", + "0xb83", + "0xb9b", + "0xbb6", + "0xbd6", + "0xc43", + "0xc66", + "0xca6", + "0xcc4", + "0xcee", + "0xd0e", + "0xd2f", + "0xd47", + "0xd64", + "0xdbd", + "0xe08", + "0xe1a", + "0xed2", + "0xede", + "0xef6", + "0xef9", + "0xf2b", + "0xf51", + "0xf6f", + "0xf7d", + "0xfa9", + "0xfb5", + "0xfeb", + "0xff7", + "0x1019", + "0x1033", + "0x1050", + "0x105e", + "0x1060", + "0x1077", + "0x1083", + "0x1086", + "0x1095", + "0x10b2", + "0x10b5", + "0x10c5", + "0x10cf", + "0x92a4", + "0x1301812044100140803c0e0140d0300b028090180801c060140400c0200400", + "0x60540706c060681103805064060481102c180400505c05058060540705005", + "0x25014240181501c2301408084220140d084200140807c0b078100141d0141c", + "0x50a80506c06054110a40606811074050a00506c0609c11098060681104005", + "0x1001431014300181501c1d0141d0142f0182e01c2d0142c0142b0181501c10", + "0x50d8050d40605407074050d00506c0609c110cc0606811038050c80604811", + "0x1501c3d0143c0143b0182e01c3a01439014380182e01c0e01437018120442d", + "0x510806054071040506c0604811038050202102c4002c3f04005038050f806", + "0x470181501c1d01446014450141b01844044170140d030220140d0302d01443", + "0x51400513c0513805134061301102c4b128050202112405020210b40512005", + "0x550181501c250141b0181204450014540145401453018520440b1440e01450", + "0x609c110a00516406160111400501003074051400515c060b8070b40515805", + "0x5e0145d0181501c1d0141b018580442d0145c0145b0181501c1d0145a0141b", + "0x1102c621840501003118050200f074051800517c060b80705c05020210b405", + "0x1501c4f0141b018120440e0140e0140e0141701465014500140e0146401863", + "0x51a806110110b4051a4051a006054071400506c06048110b40519c0519806", + "0x6d0181501c6c014170141b018150441d014220146b0181501c100140e01450", + "0x605407074051c00506c0609c110d0051bc0616011038050201f0b4051b805", + "0x310141b018120441d01441014740182e01c6101473018120442d0147201471", + "0x51e40506c0609c11168051c0051e00609c11008770b4051d8051d40605407", + "0x7d014170141b018150441d014100147c0181501c2d0147b0147a0181501c1d", + "0x506c060481103805010030740503805200060b8070b4051fc051f80605407", + "0x1d014100141b01815044170141b018120440220c2d01482014810181501c0e", + "0x702c890b4052200521c06054071180506c06218110b405214052100605407", + "0x8e014170141b018150441d014450148d0181501c0b2302d0148b0148a01815", + "0x62600625c062580625406014052509300892008910b4052400523c0605407", + "0x9e24005014a027c050149e0809d0149c05c050149926c05014992680501499", + "0x5298060f405294a301405290a3014052880e0140528417014052808e01405", + "0x992a83d014a903805014a811405014a401405014a4018a728c050149928c05", + "0x601405264050f4ae0143d2b42d014052b02a014052b00e014052ac0e01405", + "0xac0a005014ac1c005014ac0d005014ac018b12c00501499018af2b80501499", + "0x5270450140526479014052647901405290790140528879014052b05a01405", + "0x50149911805014a411805014a222005014a02d0050149e01805014b32c89d", + "0x10014052881d014052908501405280b601405278b527405270100140526461", + "0x5014a42dc3d014a90183d2b8050f4ad22c05014ac05c05014ac04005014a4", + "0xe014052888201405280ba014052782527405270b901405264b80f4052a417", + "0x9c03805014b32f0050149e0a09d0149c03805014942ec9d0149c03805014a4", + "0x5290be0f4052a42a274052707d014052787f01405280bd014052782c27405", + "0x9d0149c1ec05014a4304050149e0c49d0149c3009d0149c0b49d0149c2fc05", + "0xc527405270c401405264c30f4052a4362740527034274052703927405270c2", + "0x9c0e89d0149c0c405014990c405014a40c405014a21d805014a0318050149e", + "0x6328c9014052641401405264060f4c90143d2b40e014053200631c3c27405", + "0x5014a608805014a803805014cb324050149e0143d324050f4ad07405014ac", + "0x50f49f0143d2b49f01405264060f49f0143d2b490014052b0cc274052700e", + "0x50f4ad22005014ac3389d0149c1c005014993349d0149c0143d238050f4ad", + "0x52b0063401701405284610140533c050f4b40143d2b4b401405264060f4b4", + "0xad2d805014990183d2d8050f4ad21405014ac3489d0149c344050149934405", + "0x3d2b4ba01405264060f4ba0143d2b482014052b04127405270050f4b60143d", + "0x9c0143d2f0050f4ad2f005014990183d2f0050f4ad07405014990143d2e805", + "0x3d2b4050f4bd0143d2b4bd01405264060f4bd0143d2b47f014052b04327405", + "0xa41c805014a0350050149e1189d0149c1149d0149c34c9d0149c0143d1f405", + "0x5270050f4c10143d2b4c101405264060f4c10143d2b47b014052b07001405", + "0x50f4ad1d805014ac13c9d0149c16805014991389d0149c3549d0149c1209d", + "0x60f4052a431014052783101405298050f4c60143d2b4c601405264060f4c6", + "0x50f4ad018d603805014cf16805014a41409d0149c1e405014a00143d014a9", + "0x52ac6c014052786e01405280d8014052782327405270d701405290060f48e", + "0x50149e1249d0149c018db1a405014a0368050149e1509d0149c018d908805", + "0x52a406374650140529050014052904a014052804a0140532c6701405280dc", + "0x5014c834405014a018405014943803d014a937c3d014a91589d0149c3783d", + "0xe10140527861014052cc050f4e10143d2b4e101405264060f4e10143d2b417", + "0xa93909d0149c34405014a438c05014a418405014a43889d0149c05c05014cb", + "0xe72740527034014052647001405280060f47d0143d2b4e60f4052a4e50f405", + "0x990e805014ac0d005014a217805014a43a0050149e1689d0149c1c005014a2", + "0xd401405264060f4d40143d2b472014052b0e9274052705c274052703a01405", + "0x9916805014a00143d0c4050f4ad3a83d014a90d005014a40143d350050f4ad", + "0x52505c01405290e901405278e827405270eb0f4052a45e274052702801405", + "0xac0183d1b0050f4ad08805014ac14005014b3390050149e1809d0149c14005", + "0x50f4d80143d2b4050f46c0143d2b4d801405264060f4d80143d2b46e01405", + "0xa408c05014a008c05014cb15805014a0388050149e3849d0149c39c05014a4", + "0xda0143d2b4da01405264060f4da0143d2b469014052b04f014052904e01405", + "0x5014a80143d370050f4ad37005014990183d370050f4ad19c05014ac0143d", + "0x1701405298170140533c4801405280d5014052786127405270460140526417", + "0x5014a034c050149e1949d0149c0183d0c4050f4ad0f43d014a538c9d0149c", + "0x63bcce01405264063b8ed0f4053b082014052904a27405270050f40529443", + "0x9c19c9d0149c33405014a60143d334050f4ad33405014990183d334050f4ad", + "0xe801405264060f4e80143d2b45e014052b050014052985001405288dc27405", + "0x990183d330050f4ad1a49d0149c1a405014a40143d3a0050f4ad3c03d014a9", + "0x526439014052b03601405280c5014052782227405270da27405270cc01405", + "0x9d0149c30805014a63609d0149c34805014991b89d0149c1b09d0149c0e405", + "0x5264060f4e90143d2b45c014052b02c01405280c0014052787027405270d7", + "0x3d390050f4ad39005014990183d390050f4ad018f10143d3a4050f4ad3a405", + "0x5270bb01405298050f4bb0143d2b4bb01405264060f4bb0143d2b4063c805", + "0x5014f30143d388050f4ad38805014990183d388050f4ad15805014ac1c89d", + "0x8b01405280ae01405278d42740527022014052646c01405264220140532c22", + "0xa40143d354050f4ad35405014990183d354050f4ad12005014ac05c05014ab", + "0xf50f4052a4d301405264060f4d30143d2b443014052b00e014053d01401405", + "0xa93e43d014a908005014f82c80501499018f73d83d014a90143d34c050f4ad", + "0x200140533c063f42001405290063f0d1274052702001405264063ecfa0f405", + "0x9d0149c0f005014990143d0f0050f4ad334050149e1d89d0149c3249d0149c", + "0xff01405264060f4ff0143d2b4063f8c427405270cc01405290cc01405288c6", + "0xad0d805014ac0190017805014a01e49d0149c3fc05014a60143d3fc050f4ad", + "0x52a428014052907b27405270050f4c50143d2b4c501405264060f4c50143d", + "0x5014990183d308050f4ad01905019040190340805014a040805014ac4043d", + "0x60f4c00143d2b42c014052b02801405288c201405278050f4c20143d2b4c2", + "0x3d41c050f4ad0190608805014a02ec050149e0143d300050f4ad3000501499", + "0x52640642406420c1274052710701405298050f5070143d2b5070140526406", + "0x50149e0190d0190c2c805014a408005014a62e405014a60190b0190a27405", + "0x3c0143d2b4ff0140527810014052987f274052703d014052647d27405270cc", + "0x3d014a92f09d0149c43c3d014a90f0050149e2f49d0149c4383d014a90183d", + "0x6018064443a01405280390140528107014052783d01405278bf2740527110", + "0x170f5120f4050183d2740601912014060f4060191201406014060500544805", + "0x1120150701417018b2015120141701414018064480501810019020383d44d07", + "0x540806080ff0749d44805094b52c89d0380609405448052740541c062d405", + "0xff0182a0b03d448052ec05074060191201406040060a005450bb015120f420", + "0xb201831015120142c01420018064480501810018c0015150b4054483d0a805", + "0x62ec06019120143901425018340e43d44805308052d40630805448050c405", + "0x50d0050a00601912014c5014250183a3143d448050d8052d4060d80544805", + "0x3d3303c0f42a0183c015120143c0142c018cc015120143a014280183c01512", + "0x6019120142d014c00180644805050050b406019120140604006018d501912", + "0xcd0f434018ce01512014ce01439018ce015120140630806334054480501831", + "0x430143a0184301512014d21043d31406104054480501836018d201512014ce", + "0x50f4050f00611805448053fc0505c061140544805074050500634c0544805", + "0xcd018064480501810018d51204611410014d501512014d3014cc0184801512", + "0x8e1404f0f5120f44e3fc1d274d20184e015120144e014ce0184e0151201406", + "0x615805448051240510c061240544805018410180644805018100185408c3d", + "0x48018e701512014e41583d11806390054480538805114063880544805018d3", + "0x505c06180054480513c0505006019120145a014d50185c1683d4480539c05", + "0x2d0144f018e3015120145c0144e01861015120143d0143c018e10151201450", + "0x5040140f423018e80405e3a41044805194e3184e118014140061940544805", + "0x112014060c40601912014060400619c052144a015120f4e8014540181001512", + "0x112014da014e2018223683d448051a405158061a40544805128051240637005", + "0x720151201422014e401870015120145e01417018d701512014e90141401806", + "0xd80145c018d81b86c27512014d41c87035c101680635005448053700539c06", + "0x517806318760f512014d1014e9018064480501810018c9014bd344054483d", + "0x51e4053840601912014c401460018793103d448051d8053a00601912014c6", + "0x1120146c014140187d01512014c1014e3018c1015120147b014610187b01512", + "0x5448051f405330062f00544805040050f0062f405448051b80505c061fc05", + "0x6c014140188201512014c90143a018064480501810018bf2f0bd1fc10014bf", + "0x5208053300622c0544805040050f0062e405448051b80505c062e80544805", + "0x14018b601512014670143a0180644805018100188522cb92e8100148501512", + "0x5330062c00544805040050f0062d005448051780505c0622005448053a405", + "0x601912014140142d018064480501810018ae2c0b422010014ae01512014b6", + "0x5238050e406238054480501865018a301512014060c406019120142d014c0", + "0x52409f0f4c50189f01512014060d8062400544805238a30f4340188e01512", + "0x1120145401417018000151201423014140189a015120149b0143a0189b01512", + "0x64611745800040054600544805268053300645c05448050f4050f00645805", + "0x1120142c0144a0180644805050050b40601912014c00145e018064480501810", + "0x340191a015120151a014390191a015120140619c0646405448050183101806", + "0x3a0191d015120151b4703d314064700544805018360191b015120151a4643d", + "0x50f00647c05448053fc0505c0645405448050740505006478054480547405", + "0x64480501810019214811f4541001521015120151e014cc01920015120143d", + "0x1701923015120141d014140192201512014280143a0180644805050050b406", + "0x123040054980544805488053300649405448050f4050f00649005448053fc05", + "0x310180644805274051280601912014140142d0180644805018100192649524", + "0x12849c3d0d0064a005448054a0050e4064a0054480501865019270151201406", + "0x54ac050e8064ac05448054a52a0f4c50192a01512014060d8064a40544805", + "0x1120143d0143c019140151201502014170192d015120140e014140192c01512", + "0x3d2740601912014060f4064bd2e4512d040054bc05448054b005330064b805", + "0x200151201414014140180644805018100180e41c3d4c0170503d4483d0f406", + "0x9d448052d4b20809d038062d405448050400541c062c8054480505c0505c06", + "0x509405074060191201406040062ec054c425015120f4ff01502018ff07502", + "0x28014200180644805018100182d015320a8054483d0b0053fc060b0280f512", + "0xc201425018393083d448050c4052d4060c40544805300052c8063000544805", + "0x1120143601425018c50d83d448050d0052d4060d00544805018bb0180644805", + "0x3a015120143a0142c0183c01512014c5014280183a01512014390142801806", + "0x3101806448050a8053000601912014060400601933019120f43c0e83d0a806", + "0xcd3303d0d0063340544805334050e4063340544805018c2018cc0151201406", + "0x5104050e8061040544805338d20f4c5018d201512014060d8063380544805", + "0x1120141d01417018450151201405014dc018d30151201502014140184301512", + "0xd512046114d305005354054480510c05330061200544805274050f00611805", + "0x102274d20184e015120144e014ce0184e015120140633406019120140604006", + "0x61240544805018410180644805018100185408c3d4d05013c3d4483d1381d", + "0x3d11806390054480538805114063880544805018d301856015120144901443", + "0x505006019120145a014d50185c1683d4480539c051200639c054480539056", + "0x9d0143c01865015120145001417018e30151201405014dc01861015120144f", + "0xe3184171a40637005448050a80513c0619c054480517005138061280544805", + "0x10018da015351a4054483d3840536806384603a05e3a414448053706712865", + "0x1120146c0146c0186c0151201469014220182201512014060c4060191201406", + "0x5448050880539c061c80544805360050e406019120146e0146e018d81b83d", + "0x3d4480535c053a00601912014700145e0187035c3d44805350720f4d8018d4", + "0xc60151201476014610187601512014c9014e101806448053440518006324d1", + "0x61ec054480517805370061e405448053a4050500631005448053180538c06", + "0x140147f01512014c4014cc0187d01512014600143c018c101512014e801417", + "0x112014e901414018bd01512014da0143a0180644805018100187f1f4c11ec79", + "0x544805180050f00620805448053a00505c062fc054480517805370062f005", + "0x5300060191201406040062e4ba208bf2f014014b901512014bd014cc018ba", + "0x544805214050e4062140544805018650188b01512014060c406019120142a", + "0x5448052d8880f4c50188801512014060d8062d805448052148b0f43401885", + "0xa30151201405014dc018ae015120142301414018b001512014b40143a018b4", + "0x527c05448052c005330062400544805274050f00623805448051500505c06", + "0x112014280144a01806448050b4051780601912014060400627c90238a32b814", + "0x340189a015120149a014390189a015120140619c0626c05448050183101806", + "0x3a0191701512014004583d3140645805448050183601800015120149a26c3d", + "0x505c064680544805014053700646405448054080505006460054480545c05", + "0x11a464140151d0151201518014cc0191c015120149d0143c0191b015120141d", + "0x1150151201502014140191e01512014bb0143a0180644805018100191d4711b", + "0x64840544805274050f00648005448050740505c0647c05448050140537006", + "0x50400512806019120140604006489214811f4541401522015120151e014cc", + "0x64900544805490050e4064900544805018650192301512014060c40601912", + "0x649c0544805495260f4c50192601512014060d8064940544805491230f434", + "0x170192a0151201405014dc019290151201507014140192801512015270143a", + "0x129050054b405448054a005330064b00544805274050f0064ac054480503805", + "0x9d01806448050183d01806448050180501817015120140635c064b52c4ad2a", + "0x5448050400541c06019120140604006075020f536039070f5120f43d0183d", + "0x54483d080051c80641c054480541c0505006080ff0f512014b201470018b2", + "0x5448050380505c060b0054480541c05050060191201406040062d4054dc14", + "0x50b42a0b09d344060500544805050170f4d40182d01512014ff015070182a", + "0x51d8060191201406040060c4054e0c0015120f428014c9018282ec2527512", + "0x2001806448050181001836015390d0054483d0e405318060e4c20f512014c0", + "0x25018cc0f03d448050e8052d4060e80544805314052c806314054480530805", + "0xce01425018d23383d44805334052d4063340544805018bb01806448050f005", + "0x112014410142c0184301512014d2014280184101512014cc014280180644805", + "0x6448050d005180060191201406040060193a019120f4431043d0a80610405", + "0x45014390184501512014063080634c0544805018310180644805050051b806", + "0x461203d3140612005448050183601846015120144534c3d0d0061140544805", + "0x5014053700613c054480509405050061380544805354050e8063540544805", + "0x1120144e014cc01854015120149d0143c0182301512014bb014170185001512", + "0x5338061580544805018cd01806448050181001849150231404f0500512405", + "0x1120140604006168e70f53b390e20f5120f4562ec25274d2018560151201456", + "0x450185e015120140634c063a405448051700510c0617005448050184101806", + "0x6184e10f51201460014480186001512014e83a43d118063a0054480517805", + "0x505c06368054480501405370061a40544805388050500601912014e1014d5", + "0x14014390186e01512014610144e0186c015120149d0143c0182201512014e4", + "0x144480535cd81b86c088da1a5073100635c05448050d00539c063600544805", + "0x60c4060191201406040061c8054f070015120f4dc014da018dc19c4a194e3", + "0xc90146e018763243d44805344051b00634405448051c005088063500544805", + "0x51ec790f4d80187b01512014d4014e7018790151201476014390180644805", + "0x530405180061f4c10f512014c6014e801806448053100517806310c60f512", + "0x5448052f40538c062f405448051fc05184061fc05448051f4053840601912", + "0xba015120144a01417018820151201465014dc018bf01512014e301414018bc", + "0x100188b2e4ba208bf0500522c05448052f005330062e4054480519c050f006", + "0x519405370062d8054480538c050500621405448051c8050e8060191201406", + "0x11201485014cc018b001512014670143c018b4015120144a014170188801512", + "0x51b806019120143401460018064480501810018ae2c0b4220b6050052b805", + "0x544805238050e406238054480501865018a301512014060c4060191201414", + "0x5448052409f0f4c50189f01512014060d8062400544805238a30f4340188e", + "0x1160151201405014dc0180001512014e7014140189a015120149b0143a0189b", + "0x5464054480526805330064600544805274050f00645c05448051680505c06", + "0x112014c20144a01806448050d805178060191201406040064651845d1600014", + "0x50e40646c0544805018790191a01512014060c40601912014140146e01806", + "0x11d0f4c50191d01512014060d806470054480546d1a0f4340191b015120151b", + "0x5014dc0191f01512014250141401915015120151e0143a0191e015120151c", + "0x545405330064880544805274050f00648405448052ec0505c064800544805", + "0x3a0180644805050051b80601912014060400648d224852047c140152301512", + "0x505c06498054480501405370064940544805094050500649005448050c405", + "0x12649414015290151201524014cc01928015120149d0143c0192701512014bb", + "0x7b01806448053fc051280601912014b50145e018064480501810019294a127", + "0x1120152b014390192b015120140619c064a8054480501831018064480505c05", + "0x1120152c4b43d314064b40544805018360192c015120152b4a83d0d0064ac05", + "0x54480501405370064bc054480541c05050064b80544805450050e80645005", + "0x140015120152e014cc0193f015120149d0143c0193e015120140e014170193d", + "0x505c051ec0601912014100144a018064480501810019404fd3e4f52f05005", + "0x644c054480544c050e40644c0544805018650194101512014060c40601912", + "0x65100544805509430f4c50194301512014060d806508054480544d410f434", + "0x17019470151201405014dc019460151201502014140194501512015440143a", + "0x14605005528054480551405330065240544805274050f006520054480507405", + "0x9d01806448050183d01806448050180501817015120140635c065294952147", + "0x5448050400541c06019120140604006075020f54b039070f5120f43d0183d", + "0x54483d080051c80641c054480541c0505006080ff0f512014b201470018b2", + "0x5448050380505c060b0054480541c05050060191201406040062d40553014", + "0x50b42a0b09d344060500544805050170f4d40182d01512014ff015070182a", + "0x51d8060191201406040060c405534c0015120f428014c9018282ec2527512", + "0x20018064480501810018360154e0d0054483d0e405318060e4c20f512014c0", + "0x25018cc0f03d448050e8052d4060e80544805314052c806314054480530805", + "0xce01425018d23383d44805334052d4063340544805018bb01806448050f005", + "0x112014410142c0184301512014d2014280184101512014cc014280180644805", + "0x6448050d005180060191201406040060194f019120f4431043d0a80610405", + "0x45014390184501512014063080634c0544805018310180644805050051b806", + "0x461203d3140612005448050183601846015120144534c3d0d0061140544805", + "0x5014053700613c054480509405050061380544805354050e8063540544805", + "0x1120144e014cc01854015120149d0143c0182301512014bb014170185001512", + "0x5338061580544805018cd01806448050181001849150231404f0500512405", + "0x1120140604006168e70f550390e20f5120f4562ec25274d2018560151201456", + "0x450185e015120140634c063a405448051700510c0617005448050184101806", + "0x6184e10f51201460014480186001512014e83a43d118063a0054480517805", + "0x505c06368054480501405370061a40544805388050500601912014e1014d5", + "0x14014390186e01512014610144e0186c015120149d0143c0182201512014e4", + "0x144480535cd81b86c088da1a5073040635c05448050d00539c063600544805", + "0x60c4060191201406040061c80554470015120f4dc014da018dc19c4a194e3", + "0xc90146e018763243d44805344051b00634405448051c005088063500544805", + "0x51ec790f4d80187b01512014d4014e7018790151201476014390180644805", + "0x530405180061f4c10f512014c6014e801806448053100517806310c60f512", + "0x5448052f40538c062f405448051fc05184061fc05448051f4053840601912", + "0xba015120144a01417018820151201465014dc018bf01512014e301414018bc", + "0x100188b2e4ba208bf0500522c05448052f005330062e4054480519c050f006", + "0x519405370062d8054480538c050500621405448051c8050e8060191201406", + "0x11201485014cc018b001512014670143c018b4015120144a014170188801512", + "0x51b806019120143401460018064480501810018ae2c0b4220b6050052b805", + "0x544805238050e406238054480501865018a301512014060c4060191201414", + "0x5448052409f0f4c50189f01512014060d8062400544805238a30f4340188e", + "0x1160151201405014dc0180001512014e7014140189a015120149b0143a0189b", + "0x5464054480526805330064600544805274050f00645c05448051680505c06", + "0x112014c20144a01806448050d805178060191201406040064651845d1600014", + "0x50e40646c0544805018790191a01512014060c40601912014140146e01806", + "0x11d0f4c50191d01512014060d806470054480546d1a0f4340191b015120151b", + "0x5014dc0191f01512014250141401915015120151e0143a0191e015120151c", + "0x545405330064880544805274050f00648405448052ec0505c064800544805", + "0x3a0180644805050051b80601912014060400648d224852047c140152301512", + "0x505c06498054480501405370064940544805094050500649005448050c405", + "0x12649414015290151201524014cc01928015120149d0143c0192701512014bb", + "0x7b01806448053fc051280601912014b50145e018064480501810019294a127", + "0x1120152b014390192b015120140619c064a8054480501831018064480505c05", + "0x1120152c4b43d314064b40544805018360192c015120152b4a83d0d0064ac05", + "0x54480501405370064bc054480541c05050064b80544805450050e80645005", + "0x140015120152e014cc0193f015120149d0143c0193e015120140e014170193d", + "0x505c051ec0601912014100144a018064480501810019404fd3e4f52f05005", + "0x644c054480544c050e40644c0544805018650194101512014060c40601912", + "0x65100544805509430f4c50194301512014060d806508054480544d410f434", + "0x17019470151201405014dc019460151201502014140194501512015440143a", + "0x14605005528054480551405330065240544805274050f006520054480507405", + "0x641c170f552050100f5120f4050183d2740601912014060f4065294952147", + "0x102014b501902015120140e014b20180e015120149d01420018064480501810", + "0x11201420014b50182001512014062ec06019120141d01425018ff0743d44805", + "0x5448052d4050a00609405448053fc050a00601912014b201425018b52c83d", + "0x64483d2ec250f42a018100151201410014140182501512014250142c018bb", + "0x50e4060b00544805018c20182801512014060c40601912014060400601953", + "0x2d0f4c50182d01512014060d8060a805448050b0280f4340182c015120142c", + "0x1401417018c20151201410014140183101512014c00143a018c0015120142a", + "0x340e4c2040050d805448050c405330060d005448050f4050f0060e40544805", + "0x9d34806314054480531405338063140544805018cd01806448050181001836", + "0xce015120140610406019120140604006334cc0f5540f03a0f5120f4c505010", + "0x460184301512014410144501841015120140634c0634805448053380510c06", + "0x1701806448051140535406118450f512014d301448018d301512014433483d", + "0x9d1f40608c0544805118051380614005448050f4050f00613c05448050f005", + "0x54015120f44e014da0183a015120143a014140184e3544827512014231404f", + "0x6388054480515005088061580544805018310180644805018100184901555", + "0xe7018e901512014e7014390180644805390051b80639ce40f512014e20146c", + "0xe8018064480517005178061705a0f5120145e3a43d36006178054480515805", + "0x5184063840544805180053840601912014e801460018603a03d4480516805", + "0x480141701865015120143a01414018e30151201461014e30186101512014e1", + "0x671286504005370054480538c053300619c0544805354050f0061280544805", + "0x17018da015120143a014140186901512014490143a018064480501810018dc", + "0xda040051b805448051a405330061b00544805354050f006088054480512005", + "0x39018d70151201406194063600544805018310180644805018100186e1b022", + "0x3d314061c80544805018360187001512014d73603d0d00635c054480535c05", + "0x505c06324054480533005050063440544805350050e80635005448051c072", + "0x7632410014c401512014d1014cc018c6015120143d0143c0187601512014cd", + "0x6194061e405448050183101806448052740512806019120140604006310c6", + "0x501836018c1015120147b1e43d0d0061ec05448051ec050e4061ec0544805", + "0x505c05050062f405448051fc050e8061fc05448053047d0f4c50187d01512", + "0x112014bd014cc01882015120143d0143c018bf015120150701417018bc01512", + "0x156050100f5120f4050183d2740601912014060f4062e8822fcbc040052e805", + "0xe0f5120141d014700181d015120149d015070180644805018100190705c3d", + "0x11201406040060800555cff015120f502014720181001512014100141401902", + "0x250f512014b5014b5018b501512014b2014b2018b2015120140e0142001806", + "0x60a82c0f51201428014b50182801512014062ec06019120142501425018bb", + "0x50b00630005448050a8050a0060b405448052ec050a006019120142c01425", + "0xff0146e01806448050181001806560064483d3002d0f42a0182d015120142d", + "0xc201512014c201439018c20151201406308060c40544805018310180644805", + "0x3601512014390d03d314060d00544805018360183901512014c20c43d0d006", + "0x60f005448050500505c060e80544805040050500631405448050d8050e806", + "0x501810018cd3303c0e810014cd01512014c5014cc018cc015120143d0143c", + "0x1120f4ce05010274d2018ce01512014ce014ce018ce01512014063340601912", + "0x51140510c06114054480501841018064480501810018d310c3d564413483d", + "0x112014d51183d11806354054480512005114061200544805018d30184601512", + "0x544805138051380612405448050f4050f00615005448051040505c0613805", + "0x50500608c5013c9d4480538856124540407f018e201512014ff0143901856", + "0x52f00601912014060400639c05568e4015120f423014bd018d201512014d2", + "0x517005180063a45c0f5120145a014e80185a01512014060c40601912014e4", + "0x5448053a00538c063a00544805178051840617805448053a4053840601912", + "0xe301512014500143c01861015120144f01417018e101512014d20141401860", + "0x539c050e806019120140604006194e3184e10400519405448051800533006", + "0x112014500143c018dc015120144f014170186701512014d2014140184a01512", + "0x51b806019120140604006368693706704005368054480512805330061a405", + "0x5448051b0050e4061b00544805018650182201512014060c40601912014ff", + "0x5448051b8d80f4c5018d801512014060d8061b805448051b0220f4340186c", + "0xd401512014d301417018720151201443014140187001512014d70143a018d7", + "0x604006324d1350720400532405448051c0053300634405448050f4050f006", + "0x61d80544805018310180644805038051280601912014200145e0180644805", + "0x36018c401512014c61d83d0d0063180544805318050e406318054480501867", + "0x50500630405448051ec050e8061ec0544805310790f4c5018790151201406", + "0xc1014cc018bd015120143d0143c0187f0151201414014170187d0151201410", + "0x31018064480527405128060191201406040062f0bd1fc7d040052f00544805", + "0x822fc3d0d0062080544805208050e406208054480501865018bf0151201406", + "0x522c050e80622c05448052e8b90f4c5018b901512014060d8062e80544805", + "0x1120143d0143c01888015120150701417018b60151201417014140188501512", + "0x3d2740601912014060f4062c0b4220b6040052c0054480521405330062d005", + "0xe015120149d014200180644805018100190705c3d56c140403d4483d01406", + "0x6019120141d01425018ff0743d44805408052d4064080544805038052c806", + "0x50a00601912014b201425018b52c83d44805080052d4060800544805018bb", + "0x10014140182501512014250142c018bb01512014b5014280182501512014ff", + "0x112014060c4060191201406040060195c019120f4bb0943d0a8060400544805", + "0x5448050b0280f4340182c015120142c014390182c0151201406308060a005", + "0x3101512014c00143a018c0015120142a0b43d314060b40544805018360182a", + "0x60d005448050f4050f0060e405448050500505c0630805448050400505006", + "0x544805018cd018064480501810018360d03930810014360151201431014cc", + "0x6334cc0f55d0f03a0f5120f4c505010274d2018c501512014c5014ce018c5", + "0x1120140634c0634805448053380510c06338054480501841018064480501810", + "0x112014d301448018d301512014433483d1180610c0544805104051140610405", + "0x5448050f4050f00613c05448050f00505c060191201445014d5018461143d", + "0x3a014140184e3544827512014231404f274bf0182301512014460144e01850", + "0x501831018064480501810018490155e150054483d13805368060e80544805", + "0x5390051b80639ce40f512014e20146c018e20151201454014220185601512", + "0x1120145e3a43d3600617805448051580539c063a4054480539c050e40601912", + "0x112014e801460018603a03d44805168053a006019120145c0145e0185c1683d", + "0xe30151201461014e30186101512014e101461018e10151201460014e101806", + "0x619c0544805354050f00612805448051200505c0619405448050e80505006", + "0x112014490143a018064480501810018dc19c4a19410014dc01512014e3014cc", + "0x544805354050f00608805448051200505c0636805448050e805050061a405", + "0x5018310180644805018100186e1b022368100146e0151201469014cc0186c", + "0x112014d73603d0d00635c054480535c050e40635c054480501865018d801512", + "0x544805350050e80635005448051c0720f4c50187201512014060d8061c005", + "0xc6015120143d0143c0187601512014cd01417018c901512014cc01414018d1", + "0x52740512806019120140604006310c61d8c90400531005448053440533006", + "0x61ec05448051ec050e4061ec0544805018650187901512014060c40601912", + "0x61fc05448053047d0f4c50187d01512014060d80630405448051ec790f434", + "0x3c018bf015120150701417018bc015120141701414018bd015120147f0143a", + "0x112014060f4062e8822fcbc040052e805448052f4053300620805448050f405", + "0x9d015070180644805018100190705c3d57c140403d4483d014060f49d01806", + "0x1020147201810015120141001414019020383d44805074051c0060740544805", + "0xb2014b2018b2015120140e0142001806448050181001820015603fc054483d", + "0x112014062ec06019120142501425018bb0943d448052d4052d4062d40544805", + "0x5448052ec050a006019120142c014250182a0b03d448050a0052d4060a005", + "0x64483d3002d0f42a0182d015120142d0142c018c0015120142a014280182d", + "0x6308060c405448050183101806448053fc051b80601912014060400601961", + "0x5018360183901512014c20c43d0d0063080544805308050e4063080544805", + "0x5040050500631405448050d8050e8060d805448050e4340f4c50183401512", + "0x112014c5014cc018cc015120143d0143c0183c0151201414014170183a01512", + "0xce014ce018ce015120140633406019120140604006334cc0f03a0400533405", + "0x64480501810018d310c3d588413483d4483d338140409d348063380544805", + "0x5114061200544805018d30184601512014450144301845015120140610406", + "0x50f00615005448051040505c061380544805354460f446018d50151201448", + "0x5404082018e201512014ff0143901856015120144e0144e01849015120143d", + "0xe4015120f423014bd018d201512014d201414018231404f27512014e215849", + "0xe80185a01512014060c40601912014e4014bc018064480501810018e701563", + "0x51840617805448053a40538406019120145c01460018e91703d4480516805", + "0x4f01417018e101512014d2014140186001512014e8014e3018e8015120145e", + "0xe3184e1040051940544805180053300638c0544805140050f0061840544805", + "0x170186701512014d2014140184a01512014e70143a01806448050181001865", + "0x6704005368054480512805330061a40544805140050f006370054480513c05", + "0x650182201512014060c40601912014ff0146e018064480501810018da1a4dc", + "0x60d8061b805448051b0220f4340186c015120146c014390186c0151201406", + "0x43014140187001512014d70143a018d7015120146e3603d314063600544805", + "0x51c0053300634405448050f4050f006350054480534c0505c061c80544805", + "0x51280601912014200145e018064480501810018c9344d41c810014c901512", + "0x544805318050e4063180544805018670187601512014060c406019120140e", + "0x544805310790f4c50187901512014060d8063100544805318760f434018c6", + "0x7f0151201414014170187d015120141001414018c1015120147b0143a0187b", + "0x6040062f0bd1fc7d040052f0054480530405330062f405448050f4050f006", + "0x6208054480501865018bf01512014060c406019120149d0144a0180644805", + "0xc5018b901512014060d8062e80544805208bf0f43401882015120148201439", + "0x17018b601512014170141401885015120148b0143a0188b01512014ba2e43d", + "0xb6040052c0054480521405330062d005448050f4050f006220054480541c05", + "0x100180e41c3d590170503d4483d0f4060f49d01806448050183d018b02d088", + "0x14014140181d4083d448053fc051c0063fc05448050400541c060191201406", + "0x10201420018064480501810018b201565080054483d074051c8060500544805", + "0xbb01425018282ec3d44805094052d40609405448052d4052c8062d40544805", + "0x1120142a014250182d0a83d448050b0052d4060b00544805018bb0180644805", + "0xc001512014c00142c01831015120142d01428018c001512014280142801806", + "0x310180644805080051b80601912014060400601966019120f4313003d0a806", + "0x393083d0d0060e405448050e4050e4060e40544805018c2018c20151201406", + "0x5314050e80631405448050d0360f4c50183601512014060d8060d00544805", + "0x1120141701417018cc0151201405014dc0183c0151201414014140183a01512", + "0xd2338cd3303c0500534805448050e805330063380544805274050f00633405", + "0x14274d2018410151201441014ce01841015120140633406019120140604006", + "0x6120054480501841018064480501810018461143d59cd310c3d4483d10417", + "0x3d1180613c054480513805114061380544805018d3018d5015120144801443", + "0x5050060191201423014d50185408c3d448051400512006140054480513cd5", + "0x9d0143c018e901512014d3014170185c0151201405014dc0185a0151201443", + "0x5c168172e8061800544805080050e4063a0054480515005138061780544805", + "0x100186101568384054483d39c053680639ce4388561241444805180e8178e9", + "0x112014650146c0186501512014e101422018e301512014060c4060191201406", + "0x54480538c0539c06368054480519c050e406019120144a0146e018671283d", + "0x3d44805370053a00601912014690145e018693703d44805088da0f4d801822", + "0xd701512014d801461018d8015120146e014e101806448051b005180061b86c", + "0x6350054480515805370061c8054480512405050061c0054480535c0538c06", + "0x14014760151201470014cc018c901512014e40143c018d101512014e201417", + "0x1120144901414018c601512014610143a01806448050181001876324d135072", + "0x544805390050f0061ec05448053880505c061e40544805158053700631005", + "0x51b8060191201406040061f4c11ec79310140147d01512014c6014cc018c1", + "0x5448052f4050e4062f40544805018650187f01512014060c4060191201420", + "0x5448052f0bf0f4c5018bf01512014060d8062f005448052f47f0f434018bd", + "0x8b0151201405014dc018b9015120144501414018ba01512014820143a01882", + "0x522005448052e805330062d80544805274050f00621405448051180505c06", + "0x112015020144a01806448052c80517806019120140604006220b62148b2e414", + "0x34018b001512014b001439018b0015120140619c062d005448050183101806", + "0x3a0188e01512014ae28c3d3140628c054480501836018ae01512014b02d03d", + "0x505c0626c0544805014053700627c05448050500505006240054480523805", + "0x9b27c14015160151201490014cc01800015120149d0143c0189a0151201417", + "0x650191701512014060c40601912014100144a018064480501810019160009a", + "0x60d8064640544805461170f43401918015120151801439019180151201406", + "0x107014140191c015120151b0143a0191b01512015194683d314064680544805", + "0x5274050f00645405448050380505c06478054480501405370064740544805", + "0x601912014060f4064811f4551e4741401520015120151c014cc0191f01512", + "0x11201410015070180644805018100180e41c3d5a4170503d4483d0f4060f49d", + "0x1120f41d01472018140151201414014140181d4083d448053fc051c0063fc05", + "0x112014bb01470018bb015120150201507018064480501810018b20156a08005", + "0x52d40541c060191201406040060b0055ac28015120f42501472018252d43d", + "0x10018c20156c0c4054483d0b4051c8060b42a0f512014c001470018c001512", + "0x50d0052d4060d005448050e4052c8060e405448050a805080060191201406", + "0x3d448050e8052d4060e80544805018bb01806448050d80509406314360f512", + "0xce01512014cc01428018cd01512014c50142801806448050f005094063303c", + "0x60191201406040060196d019120f4ce3343d0a8063340544805334050b006", + "0x112014060c40601912014200146e01806448050a0051b80601912014310146e", + "0x544805104d20f434018410151201441014390184101512014063080634805", + "0x4601512014450143a01845015120144334c3d3140634c05448050183601843", + "0x6138054480505c0505c063540544805014053700612005448050500505006", + "0x6040061404f138d512014014500151201446014cc0184f015120149d0143c", + "0x3d08c170509d3480608c054480508c053380608c0544805018cd0180644805", + "0xe401443018e4015120140610406019120140604006388560f56e124540f512", + "0x5170e70f4460185c015120145a014450185a015120140634c0639c0544805", + "0x1120145401414018064480517805354063a05e0f512014e901448018e901512", + "0x544805274050f00637005448051240505c0619c0544805014053700612805", + "0x6c01512014280143901822015120142001439018da01512014e80144e01869", + "0x6138460051120146e1b02236869370671280e2e4061b805448050c4050e406", + "0x54480501831018064480501810018d70156f360054483d1940536806194e3", + "0x644805350051b806344d40f512014720146c0187201512014d80142201870", + "0xc90f512014c43183d3600631005448051c00539c063180544805344050e406", + "0x60191201479014600187b1e43d44805324053a00601912014760145e01876", + "0x140187f015120147d014e30187d01512014c101461018c1015120147b014e1", + "0x50f0062fc05448051840505c062f0054480538405370062f4054480518005", + "0x11201406040062e8822fcbc2f414014ba015120147f014cc0188201512014e3", + "0x8501512014e1014dc0188b015120146001414018b901512014d70143a01806", + "0x52d005448052e40533006220054480538c050f0062d805448051840505c06", + "0x112014280146e01806448050c4051b8060191201406040062d0882d88522c14", + "0x50e4062b8054480501865018b001512014060c40601912014200146e01806", + "0x8e0f4c50188e01512014060d80628c05448052b8b00f434018ae01512014ae", + "0x5014dc0189b0151201456014140189f01512014900143a0189001512014a3", + "0x527c05330064580544805274050f00600005448053880505c062680544805", + "0x4a0180644805308051780601912014060400645d160009a26c140151701512", + "0x544805018310180644805080051b80601912014280146e01806448050a805", + "0x11a01512015194603d0d0064640544805464050e40646405448050188b01918", + "0x64740544805470050e80647005448054691b0f4c50191b01512014060d806", + "0x3c0191f015120141701417019150151201405014dc0191e015120141401414", + "0x501810019214811f4551e0500548405448054740533006480054480527405", + "0x3101806448052d4051280601912014200146e01806448050b0051780601912", + "0x1234883d0d00648c054480548c050e40648c054480501879019220151201406", + "0x5498050e8064980544805491250f4c50192501512014060d8064900544805", + "0x1120141701417019290151201405014dc019280151201414014140192701512", + "0x12c4ad2a4a528050054b0054480549c05330064ac0544805274050f0064a805", + "0x112014060c40601912015020144a01806448052c80517806019120140604006", + "0x5448054512d0f4340191401512015140143901914015120140619c064b405", + "0x13e015120153d0143a0193d015120152e4bc3d314064bc0544805018360192e", + "0x6504054480505c0505c06500054480501405370064fc05448050500505006", + "0x60400650913505404fc1401542015120153e014cc01913015120149d0143c", + "0x65100544805018650194301512014060c40601912014100144a0180644805", + "0xc50194601512014060d8065140544805511430f43401944015120154401439", + "0xdc019490151201507014140194801512015470143a0194701512015455183d", + "0x5330065c40544805274050f0065c005448050380505c06528054480501405", + "0x1120f43d0143d2740601912014060f4065c9715c14a52414015720151201548", + "0xff01470018ff0151201410015070180644805018100180e41c3d5cc170503d", + "0x62c8055d020015120f41d01472018140151201414014140181d4083d44805", + "0x25014b50182501512014b5014b2018b5015120150201420018064480501810", + "0x1120142c014b50182c01512014062ec0601912014bb01425018282ec3d44805", + "0x5448050b4050a00630005448050a0050a006019120142a014250182d0a83d", + "0x64480501810018065d4064483d0c4c00f42a018c001512014c00142c01831", + "0x3901439018390151201406308063080544805018310180644805080051b806", + "0x340d83d314060d80544805018360183401512014393083d0d0060e40544805", + "0x505005050060f0054480501805214060e80544805314050e8063140544805", + "0x1120143a014cc018ce015120149d0143c018cd015120141701417018cc01512", + "0x5338061040544805018cd018064480501810018d2338cd3303c0500534805", + "0x1120140604006118450f57634c430f5120f44105c14274d2018410151201441", + "0x450184e015120140634c0635405448051200510c0612005448050184101806", + "0x6150230f512014500144801850015120144f3543d1180613c054480513805", + "0x521406170054480534c0505c06168054480510c05050060191201423014d5", + "0x2001439018e801512014540144e0185e015120149d0143c018e90151201406", + "0xe701488018e7390e21584905112014603a05e3a45c168172d8061800544805", + "0x5384052d00638c0544805018310180644805018100186101577384054483d", + "0x11201467014a30180644805128052b80619c4a0f51201465014b00186501512", + "0x51a405178061a4dc0f512014223683d23806088054480538c0539c0636805", + "0x5448051b80538406019120146c014600186e1b03d44805370053a00601912", + "0x7201512014e2014850187001512014d7014e3018d701512014d801461018d8", + "0x63240544805390050f00634405448051580505c0635005448051240505006", + "0x5184050e8060191201406040061d8c9344d41c814014760151201470014cc", + "0x112014560141701879015120144901414018c401512014e201485018c601512", + "0x7d3047b1e4c4050051f4054480531805330063040544805390050f0061ec05", + "0x11201406194061fc0544805018310180644805080051b806019120140604006", + "0x54480501836018bc01512014bd1fc3d0d0062f405448052f4050e4062f405", + "0x54480501805214062e80544805208050e80620805448052f0bf0f4c5018bf", + "0xb6015120149d0143c018850151201446014170188b015120144501414018b9", + "0xb20145e018064480501810018882d88522cb90500522005448052e80533006", + "0x62c0054480501867018b401512014060c40601912015020144a0180644805", + "0xc5018a301512014060d8062b805448052c0b40f434018b001512014b001439", + "0x140189f01512014060148501890015120148e0143a0188e01512014ae28c3d", + "0x5330060000544805274050f006268054480505c0505c0626c054480505005", + "0x6448050400512806019120140604006458002689b27c14015160151201490", + "0x3d0d0064600544805460050e4064600544805018650191701512014060c406", + "0x50e80646c05448054651a0f4c50191a01512014060d806464054480546117", + "0xe014170191e0151201507014140191d0151201406014850191c015120151b", + "0x1154791d050054800544805470053300647c0544805274050f0064540544805", + "0x604006039070f57805c140f5120f43d0143d2740601912014060f4064811f", + "0x50500505006075020f512014ff01470018ff0151201410015070180644805", + "0x540805080060191201406040062c8055e420015120f41d014720181401512", + "0x52ec05094060a0bb0f51201425014b50182501512014b5014b2018b501512", + "0x6448050a805094060b42a0f5120142c014b50182c01512014062ec0601912", + "0x63000544805300050b0060c405448050b4050a00630005448050a0050a006", + "0x60c40601912014200146e018064480501810018065e8064483d0c4c00f42a", + "0x50e4c20f43401839015120143901439018390151201406308063080544805", + "0x112014c50143a018c501512014340d83d314060d80544805018360183401512", + "0x54480505c0505c06330054480505005050060f0054480501805214060e805", + "0x6348ce334cc0f014014d2015120143a014cc018ce015120149d0143c018cd", + "0x170509d34806104054480510405338061040544805018cd018064480501810", + "0x4301848015120140610406019120140604006118450f57b34c430f5120f441", + "0xd50f4460184f015120144e014450184e015120140634c06354054480512005", + "0x601485018e701512014d301417018e401512014430141401850015120144f", + "0x5080050e4063a4054480514005138061700544805274050f0061680544805", + "0x3d388052f406388561245408c1444805178e91705a39ce405c900185e01512", + "0x5448050183101806448053a0052f006019120140604006180055f0e801512", + "0x6501512014e3014e10180644805184051800638c610f512014e1014e8018e1", + "0x63700544805124052140619c05448051280538c0612805448051940518406", + "0xcc0182201512014560143c018da01512014540141701869015120142301414", + "0x112014600143a0180644805018100186c088da1a4dc050051b0054480519c05", + "0x5448051500505c0635c054480508c0505006360054480512405214061b805", + "0x6350721c0d736014014d4015120146e014cc0187201512014560143c01870", + "0x54480501865018d101512014060c40601912014200146e018064480501810", + "0xc601512014060d8061d80544805324d10f434018c901512014c901439018c9", + "0x7b0151201406014850187901512014c40143a018c401512014763183d31406", + "0x61fc0544805274050f0061f405448051180505c0630405448051140505006", + "0x52c805178060191201406040062f47f1f4c11ec14014bd0151201479014cc", + "0x39018bf015120140619c062f00544805018310180644805408051280601912", + "0x3d314062e80544805018360188201512014bf2f03d0d0062fc05448052fc05", + "0x5050062140544805018052140622c05448052e4050e8062e40544805208ba", + "0x8b014cc018b4015120149d0143c01888015120141701417018b60151201414", + "0x601912014100144a018064480501810018b02d0882d885050052c00544805", + "0xae0f434018a301512014a301439018a30151201406194062b8054480501831", + "0x9f0143a0189f015120148e2403d314062400544805018360188e01512014a3", + "0x50380505c06000054480541c05050062680544805018052140626c0544805", + "0x117458002681401518015120149b014cc01917015120149d0143c0191601512", + "0x17d050100f5120f49d0149b0189d015120143d0142001806448050189f01918", + "0x60380544805040050000641c0544805050052680601912014060400605c05", + "0x54480501918018064480501810018065f8050191701902015120150701516", + "0x10201512014ff015160180e015120141701400018ff015120141d015190181d", + "0x17f2c8054483d408054680608005448050800541c0608005448050380538406", + "0x11d018bb01512014064700609405448052c80546c060191201406040062d405", + "0x541c060c405448050140505c06300054480501805050060a0054480509405", + "0xc00511e018340151201428014390183901512014bb0144f018c20151201420", + "0x501810018c5015800d8054483d0b405408060b42a0b09d448050d03930831", + "0x53300547c0633005448050f03a0f5150183c0e83d448050d8050740601912", + "0x112014cd01520018d2015120142a01417018ce015120142c01414018cd01512", + "0x2c014140184301512014c50152101806448050181001841348ce2740510405", + "0x46114d327405118054480510c054800611405448050a80505c0634c0544805", + "0x5120054880612005448050191801806448052d40517806019120140604006", + "0x5018050500613c05448051380547c061380544805354200f515018d501512", + "0x6150231409d01454015120144f01520018230151201405014170185001512", + "0x6014140181401512014170152301817015120149d0144e01806448050189f", + "0x505005490062c805448050f4050f00608005448050140505c063fc0544805", + "0x1020390704112014252d4b2080ff051250182501512014100144f018b501512", + "0x5448052ec05124060191201406040060a005604bb015120f41d014540181d", + "0xc00151201507014140182d015120142a015270182a015120142c015260182c", + "0x50e405448050b4054a0063080544805408050f0060c405448050380505c06", + "0x112015070141401834015120142801529018064480501810018393083130010", + "0x5448050d0054a0060e80544805408050f00631405448050380505c060d805", + "0x54ac060503d0f5120143d0152a01806448050189f0183c0e8c50d8100143c", + "0x10701428018064480505c050940641c170f51201410014b5018100151201414", + "0x1022743d0d0064080544805408050e4064080544805038054b0060380544805", + "0x50140505c06094054480501805050063fc05448050f4054b4060740544805", + "0x282ec250412e0182c015120141d014e70182801512014ff01514018bb01512", + "0x60191201406040060b4056082a015120f4b50145c018b52c820275120142c", + "0x3d4bc0630805448050191801806448050c405178060c4c00f5120142a014e9", + "0x505c060d8054480508005050060d005448050e4054f4060e40544805308c0", + "0x60191201406040060e8c50d89d0143a01512014340153e018c501512014b2", + "0x13e018cd01512014b201417018cc0151201420014140183c015120142d0153f", + "0x54480504005138060191201414014c0018ce334cc2740533805448050f005", + "0xb50151201405014dc018b20151201406014140181701512015070152301907", + "0x60a0054480505c05490062ec0544805274050f00609405448050f40505c06", + "0x560c2c015120f420014da018203fc1d4080e05112014282ec252d4b205140", + "0x113018c0015120142d015410182d015120142c014220180644805018100182a", + "0x505c060e405448054080537006308054480503805050060c4054480530005", + "0x3930814014c50151201431015420183601512014ff0143c01834015120141d", + "0x3c015120140e014140183a015120142a01543018064480501810018c50d834", + "0x633805448053fc050f00633405448050740505c0633005448054080537006", + "0x3d0d0060f405448050180547406348ce334cc0f014014d2015120143a01542", + "0x100154401814015120149d014e70181001512014064600627405448050f405", + "0x9d0f43d4483d0140526c060140544805018050800605c140f40505c0544805", + "0x17015120143d0140001814015120149d0149a0180644805018100181001584", + "0x1120140646006019120140604006019850140645c0641c05448050500545806", + "0x544805408054580605c054480504005000064080544805038054640603805", + "0xff015120f5070151a0181d015120141d015070181d0151201417014e101907", + "0xb501512014b20151d018b201512014ff0151b0180644805018100182001586", + "0x50a0054480509405518062ec05448050740541c0609405448052d40551406", + "0x1470182c01512014064600601912014200145e018064480501810018282ec3d", + "0x2d0f40530005448050a805518060b405448050740541c060a805448050b005", + "0x187050100f5120f49d0149b0189d015120143d0142001806448050189f018c0", + "0x60380544805040050000641c0544805050052680601912014060400605c05", + "0x5448050191801806448050181001806620050191701902015120150701516", + "0x10201512014ff015160180e015120141701400018ff015120141d015190181d", + "0x1892c8054483d408054680608005448050800541c0608005448050380538406", + "0x11d018bb01512014060c40609405448052c80546c060191201406040062d405", + "0x541c060c405448050140505c06300054480501805050060a0054480509405", + "0xc005148018340151201428014390183901512014bb014e7018c20151201420", + "0x501810018c50158a0d8054483d0b405324060b42a0b09d448050d03930831", + "0x5330055280633005448050f03a0f5490183c0e83d448050d8051d80601912", + "0x112014cd01570018d2015120142a01417018ce015120142c01414018cd01512", + "0x2c014140184301512014c50157101806448050181001841348ce2740510405", + "0x46114d327405118054480510c055c00611405448050a80505c0634c0544805", + "0x5120055c80612005448050191801806448052d40517806019120140604006", + "0x5018050500613c054480513805528061380544805354200f549018d501512", + "0x6150231409d01454015120144f01570018230151201405014170185001512", + "0xdc018b501512014060141401907015120140e015230180e01512014100144e", + "0x5490060a00544805274050f0062ec05448050f40505c06094054480501405", + "0xb541d8b0182d0151201417014e70182a0151201414014390182c0151201507", + "0x310158c300054483d2c805368062c8203fc1d40814448050b42a0b0282ec25", + "0x544c060e40544805308055040630805448053000508806019120140604006", + "0xff01417018c5015120141d014dc01836015120150201414018340151201439", + "0x3a314360500533005448050d005508060f00544805080050f0060e80544805", + "0x63380544805408050500633405448050c40550c060191201406040063303c", + "0x1420184301512014200143c0184101512014ff01417018d2015120141d014dc", + "0xe015230180e01512014100144e018d310c41348ce0500534c054480533405", + "0x50f40505c06094054480501405370062d40544805018050500641c0544805", + "0x11201414014390182c01512015070152401828015120149d0143c018bb01512", + "0x1d40814448050b42a0b0282ec252d50762c060b4054480505c0539c060a805", + "0x530005088060191201406040060c405634c0015120f4b2014da018b2080ff", + "0x1120150201414018340151201439015130183901512014c201541018c201512", + "0x544805080050f0060e805448053fc0505c06314054480507405370060d805", + "0x550c060191201406040063303c0e8c50d814014cc0151201434015420183c", + "0xff01417018d2015120141d014dc018ce015120150201414018cd0151201431", + "0x41348ce0500534c0544805334055080610c0544805080050f0061040544805", + "0x5448050180505c0627405448050400548c0604005448050f4051380634c43", + "0x1120141d4080e2758e0181d015120149d015240190201512014050143c0180e", + "0xff01422018064480501810018200158f3fc054483d41c053680641c170509d", + "0x50500505c0609405448052d40544c062d405448052c805504062c80544805", + "0x60b0282ec9d0142c0151201425015420182801512014170143c018bb01512", + "0x170143c0182d0151201414014170182a015120142001543018064480501810", + "0x6040054480501841018313002d274050c405448050a805508063000544805", + "0x1240181d01512014050143c0190201512014060141701814015120141001443", + "0x1727512014203fc1d40810640060800544805274050e4063fc054480505005", + "0x112014b201593018064480501810018b5015922c8054483d038056440603907", + "0x11201428015960182801512014bb0f43d65406019120142501594018bb0943d", + "0x5448050b00565c060b4054480541c050f0060a8054480505c0505c060b005", + "0x112014b50159801806448050f405354060191201406040063002d0a89d014c0", + "0x5448050c40565c060e4054480541c050f006308054480505c0505c060c405", + "0x505c0627405448050400548c0604005448050f405138060d0393089d01434", + "0xe275990181d015120149d015240190201512014050143c0180e0151201406", + "0x64480501810018200159a3fc054483d41c053680641c170509d4480507502", + "0x609405448052d40544c062d405448052c805504062c805448053fc0508806", + "0x9d0142c0151201425015420182801512014170143c018bb015120141401417", + "0x2d0151201414014170182a0151201420015430180644805018100182c0a0bb", + "0x501841018313002d274050c405448050a80550806300054480505c050f006", + "0x112014050143c01902015120140601417018140151201410014430181001512", + "0x203fc1d4081066c060800544805274050e4063fc0544805050054900607405", + "0x193018064480501810018b50159c2c8054483d03805644060390705c9d44805", + "0x1960182801512014bb0f43d65406019120142501594018bb0943d448052c805", + "0x565c060b4054480541c050f0060a8054480505c0505c060b005448050a005", + "0x19801806448050f405354060191201406040063002d0a89d014c0015120142c", + "0x565c060e4054480541c050f006308054480505c0505c060c405448052d405", + "0x10701512014100144e0180644805050051b8060d0393089d014340151201431", + "0x62d4054480501405370062c80544805018050500605c054480541c0548c06", + "0x14001828015120141701524018bb015120149d0143c01825015120143d01417", + "0x2a0159d0b0054483d0800536806080ff0750203814448050a0bb094b52c814", + "0x544c0630005448050b405504060b405448050b00508806019120140604006", + "0x1d01417018390151201502014dc018c2015120140e014140183101512014c0", + "0x340e4c20500531405448050c405508060d805448053fc050f0060d00544805", + "0x60f0054480503805050060e805448050a80550c0601912014060400631436", + "0x142018ce01512014ff0143c018cd015120141d01417018cc0151201502014dc", + "0x505c051b80601912014140146e018d2338cd3303c0500534805448050e805", + "0xe0151201502015230190201512014100144e018064480541c051b80601912", + "0x60a005448050f40505c062ec0544805014053700609405448050180505006", + "0x1120142a0b0282ec25051400182a015120140e015240182c015120149d0143c", + "0x22018064480501810018c00159e0b4054483d2d405368062d4b2080ff07414", + "0x5050060e405448053080544c0630805448050c405504060c405448050b405", + "0xb20143c018c50151201420014170183601512014ff014dc01834015120141d", + "0x644805018100183c0e8c50d834050050f005448050e405508060e80544805", + "0x633805448053fc05370063340544805074050500633005448053000550c06", + "0x140144301512014cc015420184101512014b20143c018d2015120142001417", + "0x6014140181701512015070159f0190701512014100144e01843104d2338cd", + "0x5274050f00609405448050f405214062d405448050140505c062c80544805", + "0x252d4b205da10182c015120141401439018280151201417015a0018bb01512", + "0x6040060b4056882a015120f42001488018203fc1d4080e051120142c0a0bb", + "0x11201431015a40183101512014c0015a3018c0015120142a014b40180644805", + "0x54480507405214060d005448054080505c060e40544805038050500630805", + "0x60e8c50d8340e4140143a01512014c2015a5018c501512014ff0143c01836", + "0x10201417018cc015120140e014140183c015120142d015a6018064480501810", + "0x50f0056940634805448053fc050f006338054480507405214063340544805", + "0x54483d0f4056a0060f405448050180569c06104d2338cd330140144101512", + "0x60500544805019aa01806448052740517806019120140604006040056a49d", + "0x112014100145e018064480501810018066ac050191701817015120141401439", + "0x1020383d4480505c051b00605c054480541c050e40641c0544805019ac01806", + "0xd8018b20151201405014e70182001512015020151d0180644805038051b806", + "0x539c062d405448050191801806448053fc05178063fc1d0f512014b20803d", + "0x170f51201410015ad018bb0943d014bb01512014b50154401825015120141d", + "0x25015120143d01485018b5015120140501417018b201512014060141401907", + "0x60b00544805050050e4060a0054480505c05490062ec0544805274050f006", + "0x1af0a8054483d0800564406080ff0750203814448050b0282ec252d4b205dae", + "0x601912014310145e018313003d448050a80564c060191201406040060b405", + "0x60d00544805308390f5950183901512015073003d11806308054480501918", + "0x850183a015120150201417018c5015120140e0141401836015120143401596", + "0xc50500533405448050d80565c0633005448053fc050f0060f0054480507405", + "0xce015120142d01598018064480541c056c006019120140604006334cc0f03a", + "0x610c0544805074052140610405448054080505c0634805448050380505006", + "0x627c06114d310c41348140144501512014ce01597018d301512014ff0143c", + "0x3d050050189d34806050054480505005338060500544805018cd0180644805", + "0x140181d0403d44805040056c8060191201406040064080e0f5b141c170f512", + "0x51b8060191201406040063fc056d0064483d074056cc0605c054480505c05", + "0xb20151f018b201512014200f43d454060800544805274056d4060191201410", + "0x52d405480062ec054480541c0505c06094054480505c05050062d40544805", + "0x170141401806448053fc056d8060191201406040060a0bb0949d0142801512", + "0x313009d6dc0630805448050f40541c060c4054480541c0505c063000544805", + "0x60191201406040060d0056e439015120f42d015b80182d0a82c27512014c2", + "0x644805018100183c015bc0e8054483d314056ec06314360f51201439015ba", + "0xce01512014cd0403d6f8063340544805019ac018cc015120143a2743d6f406", + "0x611805448050d80541c0611405448050a80505c0634c05448050b00505006", + "0x112014d512046114d30511e018d501512014ce014390184801512014cc0144f", + "0x4e0141d0180644805018100184f015bf138054483d10c054080610c413489d", + "0x50500612405448051500547c06150054480508c500f515018231403d44805", + "0xe21589d014e4015120144901520018e20151201441014170185601512014d2", + "0x170185a01512014d201414018e7015120144f01521018064480501810018e4", + "0x64480501810018e91705a274053a4054480539c0548006170054480510405", + "0x3d4540617805448050f00548806019120149d014c00180644805040051b806", + "0x505c0638405448050b0050500618005448053a00547c063a0054480517836", + "0x601912014060400638c613849d014e301512014600152001861015120142a", + "0x2c01414018650151201434015210180644805274053000601912014100146e", + "0xdc19c4a274053700544805194054800619c05448050a80505c061280544805", + "0x50f40512806019120149d014c00180644805040051b806019120140604006", + "0x63680544805368050e4063680544805018650186901512014060c40601912", + "0x61b805448050886c0f4c50186c01512014060d8060880544805368690f434", + "0x12001870015120150201417018d7015120140e01414018d8015120146e01521", + "0x50f4056c0060f4050f51201406015ad018721c0d7274051c8054480536005", + "0x1120149d0159401806448050189f0189d014052740544805014054900601912", + "0x9d448054080e0f5c001902015120143d0143c0180e01512014050141701806", + "0x50740570c060191201406040063fc057081d015120f507015c10190705c14", + "0x52d4051b806094b50f512014b20146c018b20151201420015c40182001512", + "0x6448050a0051b8060b0280f512014bb0146c018bb01512014066a80601912", + "0xc0015120142d0a83d6f8060b405448050b005474060a805448050940547406", + "0x60191201406040060c405714064483d300056cc063000544805300050e406", + "0x393089d44805314360f533018c501512014170143c01836015120141401417", + "0x5448050e805720060191201406040060f00571c3a015120f434015c601834", + "0x1cb01846114d310c41348ce41d12014cd015ca018cd01512014cc015c9018cc", + "0x112014d30146e018064480510c05128060191201441015cc018064480534805", + "0x6354480f512014ce0146c0180644805118051b80601912014450146e01806", + "0x547406019120144f0146e0185013c3d44805138051b0061380544805019ac", + "0x500151d0180644805150051b806124540f512014230146c0182301512014d5", + "0x5124054740601912014e20146e018e43883d44805158051b0061580544805", + "0x5168e70f5be018e701512014e7014390185a01512014e40151d018e701512", + "0x480151201448014390185c015120145c014390180644805019cd0185c01512", + "0x1170180644805120051b8060191201406040063a405738064483d170056cc06", + "0x5e0f512014480146c01806448053a4056d806019120140604006019cf01406", + "0x6184e10f512014600146c01860015120140674006019120145e0146e018e8", + "0x3d6f8061940544805184054740638c05448053a0054740601912014e10146e", + "0x619c05744064483d128056cc061280544805128050e4061280544805194e3", + "0x112014c2014170186c01512014060141401806448050189f018064480501810", + "0xd73606e1b0107480635c05448050400513c0636005448050e4050f0061b805", + "0x60191201406040061c80574c70015120f4220145401822368693701044805", + "0x14018c901512014d101527018d101512014d401526018d4015120147001449", + "0x54a0063100544805368050f00631805448051a40505c061d8054480537005", + "0x7b01512014720152901806448050181001879310c61d8100147901512014c9", + "0x61fc0544805368050f0061f405448051a40505c0630405448053700505006", + "0x6448050189f018064480501810018bd1fc7d30410014bd015120147b01528", + "0x5019d4018bc01512014060c4060191201410014c0018064480519c056d806", + "0x112014060d80620805448052fcbc0f434018bf01512014bf01439018bf01512", + "0x11201406014140188b01512014b901529018b901512014822e83d314062e805", + "0x54480522c054a00622005448050e4050f0062d805448053080505c0621405", + "0x50f0054a4060191201410014c0018064480501810018b4220b621410014b4", + "0x112014390143c018a301512014c201417018ae015120140601414018b001512", + "0x56d8060191201406040062408e28cae0400524005448052c0054a00623805", + "0x9b01512014067540627c054480501831018064480504005300060191201431", + "0x60000544805018360189a015120149b27c3d0d00626c054480526c050e406", + "0x64600544805018050500645c0544805458054a4064580544805268000f4c5", + "0x100151b0151201517015280191a01512014170143c01919015120141401417", + "0x11c01512014ff015290180644805040053000601912014060400646d1a46518", + "0x6454054480505c050f00647805448050500505c0647405448050180505006", + "0x11201406014060500544805019d60191f4551e474100151f015120151c01528", + "0x9d3480605c054480505c053380605c0544805018cd01806448050189f01806", + "0x5448050f40576006019120140604006075020f5d7039070f5120f41701406", + "0x1da2c8200f5120f4ff015d9019070151201507014140180644805019cd018ff", + "0x60400544805080053900609405448052c80576c060191201406040062d405", + "0x54480501918018064480501810018067740501917018bb0151201425015dc", + "0xbb015120142c015dc0181001512014b5014e40182c0151201428015de01828", + "0x11201406040060b4057842a015120f4bb015e00181001512014100503d77c06", + "0x1701834015120150701414018c0015120142a015e201806448050189f01806", + "0x1078c060e805448052740539c0631405448053000541c060d8054480503805", + "0x501810018cc015e40f0054483d0e405170060e4c20c49d448050e8c50d834", + "0x112014d20145e018d23383d448050f0053a4063340544805040054b40601912", + "0x4801512014cd015140184601512014c2014170184501512014310141401806", + "0xd30145c018d310c4127512014d512046114104b80635405448053380539c06", + "0x51780608c500f5120144e014e90180644805018100184f015e5138054483d", + "0x51400539c06124054480510c0505c06150054480510405050060191201423", + "0x14018e2015120144f0153f0180644805018100180679805019170185601512", + "0xe4274051680544805388054f80639c054480510c0505c06390054480510405", + "0x140185c01512014cc0153f01806448050400579c06019120140604006168e7", + "0xe9274053a00544805170054f80617805448053080505c063a405448050c405", + "0x10015e701806448050b40517806019120140627c060191201406040063a05e", + "0x1120149d014e701849015120140e01417018540151201507014140180644805", + "0x544805384054f4063840544805180560f52f0186001512014064600615805", + "0x4a01512014610153e01865015120144901417018e301512014540141401861", + "0x64480527405180060191201414015e80180644805018100184a194e327405", + "0xdc01439018dc01512014061940619c05448050183101806448050f4057a406", + "0x693683d314063680544805018360186901512014dc19c3d0d0063700544805", + "0x50740505c061b8054480540805050061b00544805088054fc060880544805", + "0x603805448050f40505c0635cd81b89d014d7015120146c0153e018d801512", + "0x54483d41c057180641c170509d448054080e0f53301902015120149d0143c", + "0x5448050800572406080054480507405720060191201406040063fc057a81d", + "0x572c0601912014b50146e0182d0a82c0a0bb094b541d12014b2015ca018b2", + "0x6448050b4051b806019120142a0146e01806448052ec05730060191201425", + "0x60e805448050500505c06314054480501405370060d805448050180505006", + "0x107018cd015120142c01439018cc0151201410015240183c01512014170143c", + "0x60d039308313001444805338cd3303c0e8c50d9077ac0633805448050a005", + "0x610c0544805348052d006019120140604006104057b0d2015120f43401488", + "0x31018064480534c0517806019120140604006114057b4d3015120f443015a8", + "0x481183d0d0061200544805120050e4061200544805019ee018460151201406", + "0x513c0550c0613c05448053544e0f4c50184e01512014060d8063540544805", + "0x112014c201417018540151201431014dc0182301512014c0014140185001512", + "0xe21584915023050053880544805140055080615805448050e4050f00612405", + "0x539005504063900544805019ef01806448051140517806019120140604006", + "0x11201431014dc0185c01512014c0014140185a01512014e701513018e701512", + "0x54480516805508063a005448050e4050f00617805448053080505c063a405", + "0x50500638405448051040550c06019120140604006180e8178e91701401460", + "0x390143c0186501512014c201417018e30151201431014dc0186101512014c0", + "0x64480501810018671286538c610500519c054480538405508061280544805", + "0xdc01869015120140601414018dc01512014ff0154301806448050400565006", + "0x5508061b0054480505c050f00608805448050500505c06368054480501405", + "0x14015120140633406019120140627c061b86c088da1a4140146e01512014dc", + "0x10019020383d7c10705c3d4483d050050189d3480605005448050500533806", + "0x1d015b3018170151201417014140181d0403d44805040056c8060191201406", + "0x1120149d015f20180644805040051b8060191201406040063fc057c4064483d", + "0x1120141701414018b501512014b20154a018b201512014200f43d5240608005", + "0x10018282ec25274050a005448052d4055c0062ec054480541c0505c0609405", + "0x1120142d014700182d015120143d0150701806448053fc056d8060191201406", + "0xc02743d0d0060191201406040060c4057ccc0015120f42a014720182a0b03d", + "0x505c05050060d005448050e4100f5be0183901512014066b0063080544805", + "0x112014c2014e7018cd015120142c01507018cc0151201507014170183c01512", + "0x60e8c50d89d44805348ce334cc0f0145200634805448050d0050e40633805", + "0x4534c3d44805104051d80601912014060400610c057d041015120f43a014c9", + "0xd50151201436014140184801512014460154a01846015120144534c3d52406", + "0x5018100184f138d52740513c0544805120055c00613805448053140505c06", + "0x5448053140505c0608c05448050d80505006140054480510c055c40601912", + "0x5040051b8060191201406040061245408c9d0144901512014500157001854", + "0x5448051582c0f549018560151201431015720180644805274051800601912", + "0x5a015120150701417018e7015120141701414018e401512014e20154a018e2", + "0x112014100146e0180644805018100185c168e7274051700544805390055c006", + "0x6194063a405448050183101806448050f40512806019120149d0146001806", + "0x501836018e8015120145e3a43d0d0061780544805178050e4061780544805", + "0x503805050061840544805384055c40638405448053a0600f4c50186001512", + "0x61286538c9d0144a01512014610157001865015120150201417018e301512", + "0x1401902015120140e014e1018064480541c0518006039070f51201417014e8", + "0x50f0060a005448050f40505c062ec05448050140537006094054480501805", + "0x102015070182d0151201414014390182a0151201410015240182c015120149d", + "0x5220062d4b2080ff07414448053002d0a82c0a0bb095077ac063000544805", + "0x56a0060e405448050c4052d006019120140604006308057d431015120f4b5", + "0x5019aa01806448050d005178060191201406040060d8057d834015120f439", + "0x5e018064480501810018067dc05019170183a01512014c501439018c501512", + "0x50e805504060e805448050f0050e4060f00544805019ef01806448050d805", + "0x112014ff014dc018ce015120141d01414018cd01512014cc01513018cc01512", + "0x544805334055080610c05448052c8050f00610405448050800505c0634805", + "0x50500611405448053080550c0601912014060400634c43104d233814014d3", + "0xb20143c018d50151201420014170184801512014ff014dc01846015120141d", + "0x1120143d015f80184f138d5120460500513c054480511405508061380544805", + "0x544805274057e4060380544805014050f00641c05448050180505c0627405", + "0x63fc057ec1d015120f417014da0181705010275120150203907275fa01902", + "0xb201513018b201512014200154101820015120141d01422018064480501810", + "0x52d405508062ec0544805050050f00609405448050400505c062d40544805", + "0x505c060b005448053fc0550c060191201406040060a0bb0949d0142801512", + "0x2d0a89d014c0015120142c015420182d01512014140143c0182a0151201410", + "0x544805014050f00640805448050180505c06050100f5120143d015fc018c0", + "0xe015fe0180e41c1727512014ff07502275fd018ff0151201414015240181d", + "0x5040057e006019120142001600018064480501810018b2015ff080054483d", + "0x541c050f0060b4054480505c0505c062ec250f512014b501601018b501512", + "0xda0182a0b02827512014313002d275fa0183101512014bb015f9018c001512", + "0x2030183401512014c2014220180644805018100183901602308054483d0a805", + "0x50f00633405448050a00505c0631405448050940510c060d805448050d005", + "0xcd0420501841015120143601604018d201512014c501524018ce015120142c", + "0x112014060400634c0581843015120f4cc01591018cc0f03a2751201441348ce", + "0x4f015120143a0141701806448051180517806118450f512014430159301806", + "0x61500544805274050e40608c0544805114054900614005448050f0050f006", + "0x100185601607124054483d1380564406138d51209d44805150231404f04135", + "0x112014064600601912014e40145e018e43883d448051240564c060191201406", + "0x11201448014170185c015120145a016090185a01512014e73883d8200639c05", + "0x10018e8178e9274053a0054480517005828061780544805354050f0063a405", + "0x5354050f00638405448051200505c0618005448051580582c060191201406", + "0x51b80601912014060400638c613849d014e301512014600160a0186101512", + "0x50f0050f00612805448050e80505c06194054480534c0582c06019120149d", + "0x51b806019120140604006370671289d014dc01512014650160a0186701512", + "0x11201428014170186901512014390160b01806448050940583006019120149d", + "0x100186c088da274051b005448051a4058280608805448050b0050f00636805", + "0x5448052c80582c060191201410015940180644805274051b8060191201406", + "0x70015120146e0160a018d701512015070143c018d80151201417014170186e", + "0x50143c019070151201406014170189d015120143d015f80187035cd827405", + "0x605c140409d448054080e41c9d7e8064080544805274057e4060380544805", + "0x6080054480507405088060191201406040063fc058341d015120f417014da", + "0x3c01825015120141001417018b501512014b201513018b2015120142001541", + "0x64480501810018282ec25274050a005448052d405508062ec054480505005", + "0x60b40544805050050f0060a805448050400505c060b005448053fc0550c06", + "0x5014050f00641c05448050180505c063002d0a89d014c0015120142c01542", + "0x10203907041900181d015120149d0143901902015120143d015240180e01512", + "0x601912014060400608005838ff015120f417015910181705010275120141d", + "0x3d8200609405448050191801806448052d405178062d4b20f512014ff01593", + "0x50f0060b005448050400505c060a005448052ec05824062ec0544805094b2", + "0x60191201406040060b42a0b09d0142d01512014280160a0182a0151201414", + "0x20a018c201512014140143c01831015120141001417018c001512014200160b", + "0x501405650060f4050f51201406015ad0183930831274050e4054480530005", + "0x5050056c80605c054480501a0f0189d0140527405448050f4056800601912", + "0x107015b3019070151201507014390190701512014170383d6f806038140f512", + "0x11201410015b00180644805050051b80601912014060400640805840064483d", + "0x608005448053fc0568c063fc0544805074058440607405448050191801806", + "0x8501825015120140501417018b5015120140601414018b20151201420015a4", + "0xb5050050b005448052c805694060a00544805274050f0062ec05448050f405", + "0x2a0151201410015340180644805408056d8060191201406040060b0282ec25", + "0x631405448050f405214060d805448050140505c060d005448050180505006", + "0x213018cc0151201414014390183c015120142a016120183a015120149d0143c", + "0x5850cd015120f4390148801839308313002d05112014cc0f03a314360d017", + "0x1a40184101512014d2015a3018d201512014cd014b4018064480501810018ce", + "0x52140611405448053000505c0634c05448050b4050500610c054480510405", + "0x4534c14014d50151201443015a50184801512014c20143c018460151201431", + "0x4f015120142d014140184e01512014ce015a6018064480501810018d512046", + "0x61500544805308050f00608c05448050c4052140614005448053000505c06", + "0x170144501817015120140634c061245408c5013c1401449015120144e015a5", + "0x1120140501417018b50151201406014140180e01512014068540641c0544805", + "0x54480541c05680060a00544805274050f0062ec05448050f4052140609405", + "0x203fc1d40814448050a82c0a0bb094b505e160182a015120140e014390182c", + "0x6448050b40586406019120140604006300058602d015120f4b201617018b2", + "0x6314054480504005490060d80544805080050f0060d005448050740505c06", + "0x3d0e405644060e4c20c49d448050e8c50d834041350183a015120141401439", + "0xce0145e018ce3343d448050f00564c06019120140604006330058683c01512", + "0x11201441016090184101512014d23343d820063480544805019180180644805", + "0x5448053fc052140611405448050c40505c0634c0544805408050500610c05", + "0x6354481184534c14014d501512014430160a0184801512014c20143c01846", + "0x31014170184f0151201502014140184e01512014cc0160b018064480501810", + "0x513805828061500544805308050f00608c05448053fc05214061400544805", + "0x1940180644805050051b8060191201406040061245408c5013c140144901512", + "0x1d01417018e20151201502014140185601512014c00160b018064480504005", + "0x515805828061680544805080050f00639c05448053fc05214063900544805", + "0x605c054480501a1b01810015120140635c061705a39ce4388140145c01512", + "0x1120143d015070181d01512014060141401806448050189f018064480501805", + "0x60800587814015120f5020161d019020390727512014ff0743d870063fc05", + "0x3d87c062d4b20f512014250147001825015120140e01507018064480501810", + "0x14018064480501810018bb01620274054483d2d4051c806050054480505017", + "0x3d350060c405448052c80541c0630005448050140505c060b4054480541c05", + "0x54483d0a805324060a82c0a09d448050c4c00b49d34406274054480527410", + "0x1120f436014c6018360d03d44805308051d8060191201406040060e405884c2", + "0x3c016240183c01512014c527414276230180644805018100183a0162231405", + "0x2801414018ce01512014cd01626018cd01512014cc0d03d894063300544805", + "0x43104d22740510c0544805338054c80610405448050b00505c063480544805", + "0x50e80589c06019120149d0146e01806448050500572c06019120140604006", + "0x50a0050500611805448051140589806114054480534c340f625018d301512", + "0x6138d51209d0144e015120144601532018d5015120142c014170184801512", + "0x112014390162801806448050500572c06019120149d0146e018064480501810", + "0x54480513c054c80608c05448050b00505c0614005448050a0050500613c05", + "0x112014100147b01806448050500572c06019120140604006150231409d01454", + "0x54480515805898061580544805124b20f6250184901512014bb0162701806", + "0x5a01512014e201532018e7015120140501417018e4015120150701414018e2", + "0x64480505c058a40601912014100147b0180644805018100185a39ce427405", + "0x5e01512014e901626018e9015120145c0383d8940617005448050800589c06", + "0x53840544805178054c80618005448050140505c063a0054480541c0505006", + "0x170503d8a80605c0544805014050f00605005448050180505c06384603a09d", + "0x22d0180644805018100180e0162c41c054483d040058ac060409d0f49d44805", + "0xb52c8203fc1444805074058bc060740544805408058b806408054480541c05", + "0x51b80601912014b5015cb0180644805080058c40601912014ff0163001825", + "0x50f40505c060a005448052ec058cc062ec05448052c8058c8060191201425", + "0x60b42a0b09d0142d0151201428016340182a015120149d0143c0182c01512", + "0x9d0143c01831015120143d01417018c0015120140e01635018064480501810", + "0x140151201406014170183930831274050e40544805300058d0063080544805", + "0x1120f4100162b018102743d27512014170503d8a80605c0544805014050f006", + "0x112015020162e0190201512015070162d0180644805018100180e0163641c05", + "0xb2015cb01806448053fc058c006094b52c8203fc1444805074058bc0607405", + "0xbb0151201420016370180644805094051b80601912014b5015cb0180644805", + "0x60a80544805274050f0060b005448050f40505c060a005448052ec054c406", + "0x544805038058e4060191201406040060b42a0b09d0142d015120142801638", + "0x3901512014c001638018c2015120149d0143c01831015120143d01417018c0", + "0x5448050180505006040054480501a3a01806448050189f018393083127405", + "0x20015120149d0144f018ff015120143d0143c0181d01512014050141701902", + "0x23d0180e41c1705010448052c8203fc1d408148f0062c80544805040058ec06", + "0x2c0a0bb27512014b50163f018064480501810018250163e2d4054483d03805", + "0x549c060a805448050a00549806019120142c0145e01806448052ec0530006", + "0x1070143c01831015120141701417018c00151201414014140182d015120142a", + "0x60191201406040060e4c20c4c0040050e405448050b4054a0063080544805", + "0x3c018c50151201417014170183601512014140141401834015120142501529", + "0x1120140627c060f03a31436040050f005448050d0054a0060e8054480541c05", + "0x5448050500508006050054480504005900060403d0f5120143d0153001806", + "0x64480503805094064080e0f51201507014b5019070151201417014b201817", + "0x63fc05448053fc050e4063fc0544805074054b0060740544805408050a006", + "0x60a0054480501805050062c805448050f4059000608005448053fc9d0f434", + "0x2410182d0151201420014e70182a01512014b2015070182c015120140501417", + "0x6040060c405908c0015120f4bb0145c018bb094b5275120142d0a82c0a010", + "0x340153d0183401512014393083d4bc060e4c20f512014c0014e90180644805", + "0x50d8054f8060e805448050940505c0631405448052d405050060d80544805", + "0x50500633005448050c4054fc060191201406040060f03a3149d0143c01512", + "0xce3349d014d201512014cc0153e018ce015120142501417018cd01512014b5", + "0x544805038052c806038054480541c050800641c170f5120141701530018d2", + "0x6080054480501a43018064480507405094063fc1d0f51201502014b501902", + "0x280182501512014ff0142801806448052c805094062d4b20f51201420014b5", + "0x601a44019120f4bb0943d0a8060940544805094050b0062ec05448052d405", + "0x11201410015940180644805050051b80601912014170144a018064480501810", + "0x60a8054480501805050060b005448050a005914060a005448050191801806", + "0xa301831015120149d0143c018c0015120143d014170182d0151201405014dc", + "0x544805040057e00601912014060400601a460140645c0630805448050b005", + "0xcc0151201439015f90183c015120149d0143c0183a015120143d0141701839", + "0x10018ce01647334054483d3140536806314360d09d448053303c0e89d7e806", + "0x51040508006104170f5120141701530018d201512014062ec060191201406", + "0x112014d20142c01848015120144301400018460151201406014140184301512", + "0x613c059284e015120f445016490184534c3d44805354481189d9200635405", + "0x501a4c0182301512014500151b01850015120144e0164b018064480501810", + "0x1120144901400018e401512014d301414018490151201417014200185401512", + "0x2301439018e21583d44805168e73909d920061680544805150050b00639c05", + "0x5c0164b018064480501810018e90164d170054483d388059240608c0544805", + "0x508c0547406180054480533405088063a005448051780546c061780544805", + "0x11201405014dc018670151201456014140186101512014e80151d018e101512", + "0x544805384050e4063680544805180050e4061a40544805050050e40637005", + "0x61286538c9d448051b022368693706705e4e0186c01512014610143901822", + "0x3c018c00151201434014170182d0151201465014dc0182a01512014e301414", + "0x5690061b805448053080568c0630805448051280528c060c405448050d805", + "0xc00141701870015120142d014dc018d7015120142a01414018d8015120146e", + "0x721c0d7050053440544805360056940635005448050c4050f0061c80544805", + "0x51b80601912014230146e01806448053340593c06019120140604006344d4", + "0x501405370061d80544805158050500632405448053a405698060191201414", + "0x112014c9015a50187901512014360143c018c4015120143401417018c601512", + "0x51b80601912014cd0164f0180644805018100187b1e4c431876050051ec05", + "0x112014d301414018c1015120144f015a6018064480505c05128060191201414", + "0x5448050d8050f0062f405448050d00505c061fc054480501405370061f405", + "0x5128060191201406040062fcbc2f47f1f414014bf01512014c1015a5018bc", + "0x11201406014140188201512014ce015a60180644805050051b8060191201417", + "0x5448050d8050f00622c05448050d00505c062e4054480501405370062e805", + "0x25001806448050f405830062d88522cb92e814014b60151201482015a501885", + "0x5050050b0060500544805018bb01810015120149d016510189d0151201406", + "0x2540390705c9d4483d040140140604253018100151201410016520181401512", + "0x54480505c0505c06080054480503805954060191201406040063fc1d4089d", + "0x100180695c050191701825015120142001656018b501512015070143c018b2", + "0x5074050f0062c805448054080505c062ec05448053fc05960060191201406", + "0x1120142c0165a0182c0151201425016590182501512014bb01656018b501512", + "0x1120142a014220180644805018100182d0165b0a8054483d0a005368060a005", + "0x5448052c80505c0630805448050c40544c060c40544805300055040630005", + "0x6040060d8340e49d0143601512014c2015420183401512014b50143c01839", + "0x112014b50143c0183a01512014b201417018c5015120142d015430180644805", + "0x505c06019120143d01594018cc0f03a27405330054480531405508060f005", + "0x6050102749d4480541c170f5c00190701512014050143c018170151201406", + "0x62c805448052740505c06019120140604006408059700e015120f414015c1", + "0x54483d0800570406080ff0749d448052d4b20f65d018b501512014100143c", + "0x3d448050a00597c060a005448050940570c060191201406040062ec0597825", + "0xc0015120142d015c40182d015120142a0166001806448050b00572c060a82c", + "0x601912014c2015cb018393083d448050c40597c060c405448050380570c06", + "0x60e8c50f512014c00146c018360151201434015c401834015120143901660", + "0x547406019120143c0146e018cc0f03d448050d8051b00601912014c50146e", + "0x50e4063480544805338cd0f5be018ce01512014cc0151d018cd015120143a", + "0x5019180180644805018100184101661019120f4d2015b3018d201512014d2", + "0x1120141d014170184501512014d301663018d30151201443016620184301512", + "0x10018d512046274053540544805114059900612005448053fc050f00611805", + "0x4f0151201406994061380544805018310180644805104056d8060191201406", + "0x608c05448050183601850015120144f1383d0d00613c054480513c050e406", + "0x615805448050740505c06124054480515005998061500544805140230f4c5", + "0x1120140604006390e21589d014e4015120144901664018e201512014ff0143c", + "0x616805448050740505c0639c05448052ec0599806019120140e0166701806", + "0x11201406040063a45c1689d014e901512014e7016640185c01512014ff0143c", + "0x6001512014100143c018e8015120149d014170185e01512015020166601806", + "0x140166801814015120149d01604018e1180e82740538405448051780599006", + "0x544805018d301907015120141701443018170151201406104060400544805", + "0x544805040059a4060740544805409070f44601902015120140e014450180e", + "0x28015120141d0144e018bb01512014050143c01825015120140601417018ff", + "0xb5014bd018b52c820275120142c0a0bb094109ac060b005448053fc059a806", + "0x1120140646006019120142a014bc0180644805018100182d0166c0a8054483d", + "0x1120142001417018c20151201431016090183101512014c00f43d8200630005", + "0x10018360d039274050d8054480530805828060d005448052c8050f0060e405", + "0x1120142001417018c5015120142d0160b01806448050f405650060191201406", + "0x1f8018cc0f03a27405330054480531405828060f005448052c8050f0060e805", + "0x57e4064080544805014050f00603805448050180505c0604005448050f405", + "0x109b4063fc05448053fc050e4063fc9d0f5120149d015b20181d0151201410", + "0x501810018b20166f080054483d41c059b80641c170509d448053fc1d4080e", + "0x544805274059c40601912014250145e018252d43d44805080059c00601912", + "0x3101512014170143c018c00151201414014170182801512014b501443018bb", + "0x1120143930831300109cc060e405448052ec059c80630805448050a00549006", + "0x340159301806448050181001836016740d0054483d0b405644060b42a0b09d", + "0x50f0c50f6080183c015120140646006019120143a0145e0183a3143d44805", + "0x1120142a0143c018ce015120142c01417018cd01512014cc01609018cc01512", + "0x360160b01806448050181001841348ce274051040544805334058280634805", + "0x510c058280611405448050a8050f00634c05448050b00505c0610c0544805", + "0xb20160b0180644805274051b8060191201406040061184534c9d0144601512", + "0x51200582806138054480505c050f00635405448050500505c061200544805", + "0x607405448050f405214064080544805018050500613c4e3549d0144f01512", + "0x9d44805080ff075020427501820015120141401439018ff015120141001612", + "0x544805274050f0060a005448050140505c062c80544805018bb0180e41c17", + "0x50b42a0b028042770182d015120140e016760182a01512014b20142c0182c", + "0xc001488018c00151201431016790183101512014bb01678018bb094b527512", + "0x34015a30183401512014c2014b4018064480501810018390167a308054483d", + "0x52d40505c060e8054480505c050500631405448050d805690060d80544805", + "0x112014c5015a5018cd01512014250143c018cc0151201507014850183c01512", + "0x14018d20151201439015a6018064480501810018ce334cc0f03a0500533805", + "0x50f00634c054480541c052140610c05448052d40505c06104054480505c05", + "0x11201406460061184534c43104140144601512014d2015a5018450151201425", + "0x54480501805050060380544805040054d00641c054480505c058440605c05", + "0x28015120149d0143c018bb015120143d0148501825015120140501417018b5", + "0x60b4054480541c0528c060a80544805050050e4060b005448050380584806", + "0xc0015120f4b20167c018b2080ff07502051120142d0a82c0a0bb094b541e7b", + "0x6448050e405178060e4c20f512014c00167e018064480501810018310167d", + "0x631405448050d0360f67f0183601512014c20144501834015120140646006", + "0x85018cc015120141d014170183c0151201502014140183a01512014c501680", + "0x3c0500534805448050e805a04063380544805080050f00633405448053fc05", + "0x544805408050500610405448050c405a0806019120140604006348ce334cc", + "0x4601512014200143c0184501512014ff01485018d3015120141d0141701843", + "0x7001810015120140501507018481184534c4305005120054480510405a0406", + "0x601912014060400605c05a0c14015120f49d014720189d0f43d4480504005", + "0x54480503805a180601912014060400640805a140e41c3d4483d050060f684", + "0xb2015120141d0168701820015120143d01507018ff0151201507014140181d", + "0x5448052d405a20062d4054480501918018064480501810018b2080ff27405", + "0x2c01512014250168701828015120143d01507018bb01512015020141401825", + "0x11201406014140182a0151201417016880180644805018100182c0a0bb27405", + "0x289018313002d274050c405448050a805a1c0630005448050f40541c060b405", + "0x504005a2c0601912014060400641c170509da28102743d275120f4050183d", + "0x1120140e0168c0181d015120149d0143c01902015120143d014170180e01512", + "0x505c06080054480541c05a380601912014060400601a8d0140645c063fc05", + "0xff0168f018ff01512014200168c0181d01512014170143c019020151201414", + "0x10018bb01691094054483d2c8058ac062c805448052d405a40062d40544805", + "0x50b0054e8060b005448050a005a48060a00544805094058b4060191201406", + "0x1120142a01693018c0015120141d0143c0182d0151201502014170182a01512", + "0x10201417018c201512014bb01694018064480501810018313002d274050c405", + "0x360d039274050d8054480530805a4c060d00544805074050f0060e40544805", + "0x6274d2018140151201414014ce01814015120140633406019120140627c06", + "0x140180644805019cd018064480501810019020383da550705c3d4483d05005", + "0x601912014060400608005a5cff0743d4483d27405a580605c054480505c05", + "0x29901825015120141d0144f018b501512014b201624018b201512014ff01698", + "0x2801512014064600601912014060400601a9a0140645c062ec05448052d405", + "0x62ec05448050b005a640609405448050800513c060b005448050a00589c06", + "0x60e4054480541c0505c060191201406040060b405a6c2a015120f4bb015bb", + "0xc027512014360d0392769d01836015120142a0169c01834015120143d0143c", + "0x6448050189f0180644805018100183a0169f314054483d30805a780630831", + "0x43015120141701414018cc015120143c0403da84060f0054480531405a8006", + "0x611805448050940513c0611405448050c4050f00634c05448053000505c06", + "0x58f406104d2338cd04112014481184534c430523c0184801512014cc0163b", + "0x608c5013c9d44805354058fc0601912014060400613805a88d5015120f441", + "0x5601512014cd01414018490151201454016a40185401512014231404f276a3", + "0x539c054480512405a94063900544805348050f00638805448053380505c06", + "0x112014cd014140185a015120144e016a6018064480501810018e7390e215810", + "0x54480516805a94061780544805348050f0063a405448053380505c0617005", + "0x11201425014c001806448050189f018064480501810018e8178e917010014e8", + "0x6384054480505c050500618005448050e805a98060191201410014e201806", + "0x10014650151201460016a5018e301512014310143c0186101512014c001417", + "0x11801806448050b40517806019120140627c06019120140604006194e3184e1", + "0x14018dc0151201467016a401867015120144a04025276a30184a0151201406", + "0x5a940608805448050f4050f006368054480541c0505c061a4054480505c05", + "0x6019120149d014c00180644805018100186c088da1a4100146c01512014dc", + "0x5360050e4063600544805018650186e01512014060c4060191201410014e2", + "0x535c700f4c50187001512014060d80635c05448053606e0f434018d801512", + "0x1120150201417018d1015120140e01414018d40151201472016a60187201512", + "0x631876324d104005318054480535005a94061d805448050f4050f00632405", + "0x50189d34806040054480504005338060400544805018cd01806448050189f", + "0x640805448050f40508006019120140604006039070f6a705c140f5120f410", + "0x20016a83fc1d0f5120f5020149b018140151201414014140180644805019cd", + "0x5458062d4054480507405000062c805448053fc0526806019120140604006", + "0x62ec05448050191801806448050181001806aa405019170182501512014b2", + "0x11a01825015120142801516018b50151201420014000182801512014bb01519", + "0x2c0151b01806448050189f0180644805018100182a016aa0b0054483d09405", + "0x393083d360060e405448052740539c0630805448050b4050e4060b40544805", + "0x505005050060d005448052d4053840601912014310145e018313003d44805", + "0x112014c0014e7018cd015120143401507018cc0151201417014170183c01512", + "0x5aacd2015120f43a0145c0183a3143627512014ce334cc0f0109040633805", + "0x14018064480534c051780634c430f512014d2014e901806448050181001841", + "0x645c06120054480510c0539c0611805448053140505c0611405448050d805", + "0x4e015120143601414018d501512014410153f01806448050181001806ab005", + "0x5018100185013c4e274051400544805354054f80613c05448053140505c06", + "0x50500601912014b5016ad01806448050a80517806019120140627c0601912", + "0x50191801848015120149d014e701846015120141701417018450151201414", + "0x511405050061240544805150054f406150054480508c480f52f0182301512", + "0x6390e21589d014e401512014490153e018e20151201446014170185601512", + "0x5448050183101806448050f40512806019120149d01460018064480501810", + "0x5c015120145a39c3d0d0061680544805168050e406168054480501865018e7", + "0x63a00544805178054fc061780544805170e90f4c5018e901512014060d806", + "0x9d0146101512014e80153e018e1015120140e0141701860015120150701414", + "0x2b001806448050181001814016af0409d0f5120f43d01406276ae0186138460", + "0x5ac8060380544805274050500641c054480505c05ac40605c054480504005", + "0x6acc06074054480501831018064480501810019020383d015020151201507", + "0x5018360182001512014ff0743d0d0063fc05448053fc050e4063fc0544805", + "0x5050050500609405448052d405ad0062d40544805080b20f4c5018b201512", + "0x605c140f51201414015b2018282ec3d014280151201425016b2018bb01512", + "0x51b80601912014140146e01806448050181001907016b5019120f417015b3", + "0xe015120140646006019120149d0146e0180644805040051b806019120143d", + "0x63fc054480501405370060740544805018050500640805448050380591406", + "0x64480541c056d806019120140604006080ff0749d014200151201502014a3", + "0xb501512014b20943d6f806094140f51201414015b2018b20151201406ad806", + "0x60191201406040062ec05adc064483d2d4056cc062d405448052d4050e406", + "0x5274051b80601912014100146e01806448050f4051b80601912014140146e", + "0x2a0151201406014140182c0151201428016450182801512014064600601912", + "0x501810018c00b42a2740530005448050b00528c060b405448050140537006", + "0x390403d44805040056c8060c4054480501ab601806448052ec056d80601912", + "0x2b8019120f4c2015b3018c201512014c201439018c201512014310e43d6f806", + "0x51b806019120143d0146e0180644805050051b8060191201406040060d005", + "0x5448050d805914060d80544805019180180644805274051b8060191201410", + "0xcc01512014c5014a30183c0151201405014dc0183a015120140601414018c5", + "0x1120f49d0183dae4060191201434015b6018064480501810018cc0f03a27405", + "0x533805af006338054480533805aec0601912014060400634805ae8ce3343d", + "0x46016bd114d30f5120f4433343dae40610c100f51201410015b20184101512", + "0x6af806120054480511405af006114054480511405aec06019120140604006", + "0x1120144e01439018d501512014d5014390184e0151201406afc063540544805", + "0x50181001806b044f015120f44e3543db000634c054480534c050500613805", + "0x5448050140537006140054480513c05af00613c054480513c05aec0601912", + "0x112014e215849276c3018e2015120141401439018560151201448016c201849", + "0x11201441016c6018064480501810018e4016c5019120f454016c40185408c3d", + "0x6460060191201450016c601806448050f4051b80601912014100146e01806", + "0x508c0537006170054480534c0505006168054480539c059140639c0544805", + "0x5b1c06019120140604006178e91709d0145e015120145a014a3018e901512", + "0x50016c2018e30151201423014dc0180644805180051b806180e80f512014e4", + "0xdc018613843d448051286538c9db0c0612805448050f4050e4061940544805", + "0x9db0c060880544805040050e406368054480510405b08061a4054480538405", + "0x6e015120146e016c20186e1843d4480518405b2006370670f5120142236869", + "0x5448053606e0f6c9018d801512014d8016c2018d83703d4480537005b2006", + "0x1001806b2c0501917018064480501810018d7016ca019120f46c016c40186c", + "0x53a0056c80601912014720146e018721c03d4480535c05b1c060191201406", + "0xd4015b3018d401512014d401439018d401512014d11c03d6f806344e80f512", + "0x112014dc016c601806448053a0051b80601912014060400632405b30064483d", + "0x14018c6015120147601611018760151201406460060191201461016c601806", + "0xc4274051ec05448053180528c061e4054480519c0537006310054480534c05", + "0x2c20187d0151201461016c20180644805324056d8060191201406040061ec79", + "0xbd016ce019120f4c1016c4018c1015120147f1f43db34061fc054480537005", + "0x6448050181001806b3c050191701806448053a0051b806019120140604006", + "0x8201512014e82f03d6f80601912014bf0146e018bf2f03d448052f405b1c06", + "0x60191201406040062e805b40064483d208056cc062080544805208050e406", + "0x537006214054480534c050500622c05448052e405844062e4054480501918", + "0x6019120140604006220b62149d01488015120148b014a3018b60151201467", + "0xd301414018b001512014b401645018b401512014064600601912014ba015b6", + "0x8e28cae2740523805448052c00528c0628c054480519c05370062b80544805", + "0x50f4051b80601912014100146e018064480510405b1806019120140604006", + "0x245018900151201406460060191201448016c60180644805050051b80601912", + "0x528c062680544805014053700626c054480534c050500627c054480524005", + "0x2c60180644805050051b8060191201406040060009a26c9d01400015120149f", + "0x5448050191801806448050f4051b80601912014100146e018064480510405", + "0x1190151201405014dc019180151201446014140191701512015160164501916", + "0x112014140146e0180644805018100191a4651827405468054480545c0528c06", + "0x59140646c0544805019180180644805040051b806019120143d0146e01806", + "0x11c014a30191e0151201405014dc0191d01512014d2014140191c015120151b", + "0x11201406040060f405b4805015120f406016d1019154791d274054540544805", + "0x1401512014100154201810015120149d015130189d01512014050154101806", + "0x107015120143d05c3d3140605c0544805018360180644805018100181401405", + "0x1120140601417019020140540805448050380550806038054480541c0550c06", + "0x100162b018102743d27512014170503d8a80605c0544805014050f00605005", + "0x1020162e0190201512015070162d0180644805018100180e016d341c054483d", + "0x23101806448053fc058c006094b52c8203fc1444805074058bc060740544805", + "0x112014b5016320180644805094051b80601912014b2015cb018064480508005", + "0x544805274050f0060b005448050f40505c060a005448052ec058cc062ec05", + "0x5038058d4060191201406040060b42a0b09d0142d0151201428016340182a", + "0x112014c001634018c2015120149d0143c01831015120143d01417018c001512", + "0x50143d0151201405016d5018050151201406016d40183930831274050e405", + "0x605c054480501831018100151201414016d601814015120149d0166a0183d", + "0x59a806019120140e016d7019020383d44805040054f00641c054480501831", + "0xb2276d8018250151201507014e7018b50151201417014e7018b20151201502", + "0x60a0bb0f5120141d014e801806448050800517806080ff0749d44805094b5", + "0x600182d0a83d448053fc053a0060b005448050a0053840601912014bb01460", + "0xc0015070182c015120142c01507018c0015120142d014e101806448050a805", + "0x501810018360d039276da308310f5120f4c00b00501810b64063000544805", + "0x3c0151201431014170183a01512014c5016db018c501512014064600601912", + "0x60400601add0140645c0633405448050e805b70063300544805308050f006", + "0x112014340143c0183c015120143901417018ce0151201436016de0180644805", + "0x544805104054ec06104054480533405b7c06334054480533805b700633005", + "0x54480510c05b840601912014060400634c05b8043015120f4d2015fe018d2", + "0x5448050f00505c061200544805118056580611805448051143d0f59501845", + "0x60400613c4e3549d0144f0151201448015970184e01512014cc0143c018d5", + "0x5448050f00505c06140054480534c0566006019120143d014d50180644805", + "0x6940061245408c9d014490151201450015970185401512014cc0143c01823", + "0x1120143d016010181701512014062ec06050054480504005944060400544805", + "0x544805050059480605c054480505c050b006019120140e0160c0180e41c3d", + "0x64480501810018b2080ff276e3075020f5120f49d0501701406052e201814", + "0x3c018bb0151201502014170182501512014b5016db018b5015120140646006", + "0x112014060400601ae40140645c060b0054480509405b70060a0054480507405", + "0x2801512014200143c018bb01512014ff014170182a01512014b2016de01806", + "0x60b40544805300054ec0630005448050b005b7c060b005448050a805b7006", + "0x60e405448050c405b840601912014060400630805b9431015120f42d015fe", + "0x631405448052ec0505c060d805448050d005b9c060d005448050e5070f6e6", + "0x11201406040060f03a3149d0143c0151201436016e80183a01512014280143c", + "0x633405448052ec0505c06330054480530805ba40601912015070160c01806", + "0x5274059c806348ce3349d014d201512014cc016e8018ce01512014280143c", + "0x54480505c0510c0605c054480501841018100151201414016ea0181401512", + "0x1d015120150241c3d11806408054480503805114060380544805018d301907", + "0x62ec0544805014050f00609405448050180505c063fc0544805040059a406", + "0x9d448050b0282ec250426b0182c01512014ff0166a01828015120141d0144e", + "0x50a8052f0060191201406040060b405bac2a015120f4b5014bd018b52c820", + "0x5448050c405824060c405448053003d0f608018c001512014064600601912", + "0x3601512014c20160a0183401512014b20143c01839015120142001417018c2", + "0x5448050b40582c06019120143d01594018064480501810018360d03927405", + "0xcc01512014c50160a0183c01512014b20143c0183a015120142001417018c5", + "0x11201410016ee018100151201406bb406019120143d016ec018cc0f03a27405", + "0x5274170149dbc00605c054480505c050e40605c054480505005bbc0605005", + "0x5074050e406074054480540805bbc06408054480503805bb806039070f512", + "0x10701485018b201512014ff01414018203fc3d44805074060f6f10181d01512", + "0x10015120149d01651018252d4b2274050940544805080059d8062d40544805", + "0x6019120140604006075020389dbc90705c14275120f4100f4050181094c06", + "0x51b0062c80544805019aa01806448053fc051b806080ff0f512015070146c", + "0xbb0146c018bb01512014200151d01806448052d4051b806094b50f512014b2", + "0x50a8051b0060a80544805094054740601912014280146e0182c0a03d44805", + "0x112014c00151d01831015120142c0151d01806448050b4051b8063002d0f512", + "0x11201439014390183901512014c20c43d6f8060c405448050c4050e40630805", + "0x64483d0e4056cc0605c054480505c050f00605005448050500505c060e405", + "0x631405448050d805844060d805448050191801806448050181001834016f3", + "0x11201434015b601806448050181001806bd005019170183a01512014c5014a3", + "0x60e805448053300528c0633005448050f005914060f005448050191801806", + "0x3c018d2015120141401417018ce01512014cd016f6018cd015120143a016f5", + "0x6448050181001843104d22740510c0544805338054e406104054480505c05", + "0x61180544805408050f00611405448050380505c0634c054480507405bdc06", + "0x100183d016f9014054483d01805be006120461149d0144801512014d301539", + "0x504005694060400544805274056900627405448050140568c060191201406", + "0x50f4170f4c50181701512014060d806019120140604006050050141401512", + "0x5be8064080501502015120140e015a50180e0151201507015a60190701512", + "0x5848062c805448050f4052140608005448050180505006039070f51201410", + "0x1d4089d44805094b52c8200427501825015120141401439018b5015120140e", + "0x644805018100182c016fb0a0054483d05c056a0062ec0544805018bb018ff", + "0x645c060b405448050a8050e4060a80544805019aa01806448050a00517806", + "0x39018c001512014066b006019120142c0145e01806448050181001806bf005", + "0x14b88062ec05448052ec050b0060c405448053fc05944060b4054480530005", + "0x501918018064480501810018c50d834276fd0e4c20f5120f42d0c4bb27405", + "0x112014390143c018cc01512014c2014170183c015120143a016db0183a01512", + "0x5b780601912014060400601afe0140645c0633805448050f005b700633405", + "0xd2016dc018cd01512014360143c018cc015120143401417018d201512014c5", + "0x3d104057f806104054480510c054ec0610c054480533805b7c063380544805", + "0x4641c3dc0006118054480534c05b840601912014060400611405bfcd301512", + "0x53300505c0613805448054080505006354054480512005c04061200544805", + "0x112014d5017020182301512014cd0143c01850015120141d014850184f01512", + "0x5c0c060191201507016ec0180644805018100185408c5013c4e0500515005", + "0x1d01485018e201512014cc0141701856015120150201414018490151201445", + "0xe43885605005168054480512405c080639c0544805334050f0063900544805", + "0x11201405016920180644805018100183d01705014054483d01805c1006168e7", + "0x5018100181401405050054480504005a4c060400544805274054e80627405", + "0x54480541c05a500641c05448050f4170f4c50181701512014060d80601912", + "0x53a006050102749d448050f405c18064080501502015120140e016930180e", + "0xe015070180e0151201507014e1018064480505c051800641c170f51201414", + "0x10018b52c820277083fc1d4089d4483d038102740501814c1c060380544805", + "0x5074050f0062ec05448054080505c0609405448053fc05c24060191201406", + "0x30c01806448050181001806c2c05019170182c01512014250170a0182801512", + "0x5c28060a005448052c8050f0062ec05448050800505c060a805448052d405", + "0x2d0169e0182d01512014c00170e018c0015120142c0170d0182c015120142a", + "0x3901461018390151201431016a0018064480501810018c20170f0c4054483d", + "0x50a0050f00631405448052ec0505c060d805448050d00538c060d00544805", + "0x50e8060191201406040060f03a3149d0143c0151201436014cc0183a01512", + "0xcc014cc018ce01512014280143c018cd01512014bb01417018cc01512014c2", + "0x64483d27405b1006274050f51201405016c8018d2338cd274053480544805", + "0x605005448050180537006019120143d0146e0180644805018100181001710", + "0x11201405016c601806448050181001806c440501917018170151201405016c2", + "0x540805c4c064080e0f512014100f507018104e00641c054480501b1201806", + "0x50181001806c541d015120f502017140180e015120140e014dc0190201512", + "0x601b160140645c0608005448053fc05b08063fc054480507405af00601912", + "0x5038053700608005448052c805b08062c8054480501b17018064480501810", + "0x1120141701719018b5015120141401718018170151201420016c20181401512", + "0x9d0171a019120f43d016c40183d0183d4480501805b2006094b50f40509405", + "0x604005014100151201405016c2018064480501805b1806019120140604006", + "0x9d0171c018064480501810018140171b019120f405016c4018064480501810", + "0x501805b180601912014060400605c05014170151201406016c20180644805", + "0x54480503805c4c060380544805275070f71d019070151201406c480601912", + "0x54483d40805c5006408054480540805c4c0640805448050500e0f71d0180e", + "0x2001512014ff016c2018ff015120141d016bc01806448050181001806c781d", + "0x112014b2016c2018b20151201406c5c0601912014060400601b1f0140645c06", + "0x5b10060f4050f51201405016c8018b5014052d4054480508005c640608005", + "0x501805b08060191201405016c60180644805018100189d01720019120f43d", + "0x1120140501721018064480527405c7006019120140604006040050141001512", + "0x1120140e41c3db2406038054480505005b080641c054480501805b080605005", + "0x6014050140501512014060166a0190201405408054480505c05c640605c05", + "0x6038054480527405b540601912014060400604005c889d015120f40601537", + "0x14275120141d4080e277230181d015120143d014e7019020151201405014e7", + "0x200151201417014e7018ff0151201414014e7018064480541c051780641c17", + "0x50140539c062ec054480504005c940601912014060400601b240140645c06", + "0x5e018252d4b2275120142c0a0bb277260182c015120143d014e70182801512", + "0x5019180182001512014b5014e7018ff01512014b2014e7018064480509405", + "0x1120142a01544018c00151201420017270182d01512014ff017270182a01512", + "0x60191201406040060f405ca405015120f40601728018313002d274050c405", + "0x50141401512014100166401810015120149d016630189d015120140501662", + "0x26601907015120143d05c3d3140605c05448050183601806448050181001814", + "0x501512014060172a019020140540805448050380599006038054480541c05", + "0x54480501805c2806014054480501b2b0183d014050f4054480501405b5406", + "0x54483d0f405a78060f405448050409d0f72c018100151201405014390189d", + "0x54480541c051840641c054480505005a800601912014060400605c05cb414", + "0x1120140604006074050141d0151201502014cc01902015120140e014e30180e", + "0x3d01805cb806080050142001512014ff014cc018ff01512014170143a01806", + "0x1120141401439018140151201406cc00601912014060400604005cbc9d01512", + "0x11201417014e70181d015120149d016720181701512014140143d0d00605005", + "0x5178064080e41c9d44805080ff0749dcc40608005448050f40539c063fc05", + "0x3320140645c062d405448050380539c062c8054480541c0539c060191201502", + "0x3d0d0060940544805094050e406094054480501b3301806448050181001806", + "0x539c0630005448052ec0539c060b4054480504005810062ec054480509405", + "0x6019120142a0145e0182a0b02827512014313002d2773401831015120143d", + "0x5c9c06308054480501918018b5015120142c014e7018b20151201428014e7", + "0x340e49d0143601512014c2015440183401512014b5017270183901512014b2", + "0x3d01805cd806018060173501806448050f4051800601912014050146001836", + "0x1120143d014610180644805014051b80601912014060400627405cdc3d01512", + "0x501810018170140505c0544805050053300605005448050400538c0604005", + "0xe015120140541c3d0d00641c0544805018310180644805274051800601912", + "0x63fc0544805074050e8060740544805039020f4c50190201512014060d806", + "0x544805274050e406274054480501805ce006080050142001512014ff014cc", + "0x112014140145e018140403d4480541c170f4d801907015120143d014e701817", + "0x607405448050400539c0640805448050140539c0603805448050191801806", + "0x5274050e4062740544805018054d8063fc1d4089d014ff015120140e01544", + "0x140145e018140403d4480541c170f4d801907015120143d014e70181701512", + "0x5448050400539c0640805448050140539c060380544805019180180644805", + "0xae0189b2681005c0626c9a040823fc1d4089d014ff015120140e015440181d", + "0x9a051900409d0f405018ae0189b2e49a050170189b2e49a050062743d01406", + "0xb92681405c0626cb926814954102743d014062b80626cb92681405c0626cb9", + "0x10ce89d0f405018ae0189b2681005c0626c9a043390409d0f405018ae0189b", + "0x62b80626c9a040170189b26810cec9d0f405018ae0189b2681005c0626c9a", + "0x170189b2e49a0533d2743d014062b80626c9a040170189b26810cf09d0f405", + "0x62b80626cb92681405c0626cb926814cf8102743d014062b80626cb926814", + "0xc4053400409d0f405018ae0189b268c4050170189b268c40533f0409d0f405", + "0x627c9b2689d05c9b2689dd04102743d014062b80626c9a3101405c0626c9a", + "0x101849b26810d0c102743d014062d00626c9a040451e40626c9a053420f405", + "0x3d014062e80626cb926814114790189b2e49a05f442743d014062d89b2689d", + "0x9d05c9b2689dd1c062f0170f4170174601406074100f4100383dd14140409d", + "0x9d0f405018ba0189b2e49a05010038790189b2e49a41f480f405018bd26c9a", + "0x17050102743d014062e80626cb9268140400e1e40626cb926907d241705010", + "0x3d014063040626c9d038790189b0434b0f405018ba0189b274790189b2774a", + "0x5018c10189b2740e1e40626c10d343d014062e80626c9d1e40626c9dd309d", + "0x9a03b4f050102743d014062e80626cb926814038790189b2e49a05f4e2743d", + "0x9b26817d410705c140409d0f405018ba0189b2e49a0500e0380e1e40626cb9", + "0x50181d0403d040310f751050102743d01406318063109b2681403879018c4", + "0x1726c9a05353050102743d01406304063109b2681403879018c426c9a05f52", + "0x10114700189b26814d54061c0051e405d50102743d0140627c9b2689d03845", + "0x14d5c9d0f405018b626c9a274103449b26810d58102743d014062d00626c9a", + "0x9a2740e0401726c9a053580409d0f405018ba0189b2e49a050700189b2e49a", + "0x3d014062e80626cb9268140400e1c00626cb926907d64102743d014062f49b", + "0x626c9d038700189b0435b0f405018ba0189b274700189b2775a05c140409d", + "0x9b2740e1c00626c10d743d014062e80626c9d1c00626c9dd709d0f405018d4", + "0x63109b268140385a018c426c9a05f5f0185a014790175e2743d0140635006", + "0x9d0f405018d4018c426c9a0500e1c0063109b26817d80140409d0f405018c6", + "0x363014063680626c9d0189b0f7620f405018d826c9a2741726c9a2776105010", + "0x3652743d014062d00626c9a040450189b26810d9005018dc0189b2740626c3d", + "0xb92681405c0e1c00626cb926907d989d0f405018b626c9a2741005c9b26810", + "0x9b277680f405018ba0189b274340189b2776705c140409d0f405018c60189b", + "0x10da89d0f405018d40189b2743a1c00626c10da43d014063a00626c9d1c006", + "0x63109b2681403828018c426c9a05f6b2743d014063500626c9d038700189b", + "0x9d0f405018e9018c426c9a0500e168063109b26817db0140409d0f405018c6", + "0x9a0536f014063880626c9d0189b0f76e01406390172689d05c9a0f76d05010", + "0x62d89b2689d0401726c9a043700409d0f405018d50189b26810118450189b", + "0xb92689d0380e0380e2e49a05f720f405018d32683d28c142689ddc49d0f405", + "0x5dd405018da0189b2740626c3ddd0062e80533405dcc140409d0f40501831", + "0x9d038340189b043772743d014063040626c9d330790189b043760183c0143a", + "0xc426810de49d0f405018d40189b274391c00626c10de09d0f405018c50189b", + "0x37b2743d014063080626c9d348a30189b0437a2743d01406348c42689d03828", + "0x102743d01406300063109b268140c40e0a0063109b26907df0063180530805", + "0xe080b92777f0f405018ae0189b274220189b2777e018e2014bb0177d05c14", + "0xcc017820140608005080200f7810140608005080200f7800f405018202e43d", + "0x50e405e14063a0053fc05e103d01406074100409d040103309de0c0633005", + "0x100403d277880f4050181d04010274100403c27787018ae01507017860183c", + "0x6074100409d040100e49de2805018ae0140e41c3de243d01406074100409d", + "0x38c0f4050181d04010274100403a2778b0f405" + ], + "sierra_program_debug_info": { + "type_names": [ + [0, "System"], + [1, "Uninitialized"], + [2, "openzeppelin::introspection::src5::SRC5Component::Event"], + [3, "EcState"], + [4, "Array"], + [5, "Snapshot>"], + [6, "core::array::Span::"], + [ + 7, + "core::result::Result::, core::array::Array::>" + ], + [8, "felt252"], + [9, "core::pedersen::HashState"], + [10, "Unit"], + [ + 11, + "core::result::Result::<(), core::array::Array::>" + ], + [12, "EcPoint"], + [13, "NonZero"], + [14, "Box"], + [15, "Box"], + [ + 16, + "core::result::Result::, core::array::Array::>" + ], + [ + 17, + "openzeppelin::introspection::src5::SRC5Component::SRC5_supported_interfaces::ComponentMemberState" + ], + [ + 18, + "Tuple" + ], + [19, "core::panics::Panic"], + [20, "Tuple>"], + [ + 21, + "core::panics::PanicResult::<(openzeppelin::introspection::src5::SRC5Component::SRC5_supported_interfaces::ComponentMemberState, ())>" + ], + [22, "core::bool"], + [ + 23, + "core::result::Result::>" + ], + [ + 24, + "openzeppelin::account::account::AccountComponent::OwnerAdded" + ], + [ + 25, + "openzeppelin::account::account::AccountComponent::Account_public_key::ComponentMemberState" + ], + [ + 26, + "Tuple" + ], + [ + 27, + "core::panics::PanicResult::<(openzeppelin::account::account::AccountComponent::Account_public_key::ComponentMemberState, ())>" + ], + [ + 28, + "openzeppelin::account::account::AccountComponent::OwnerRemoved" + ], + [29, "openzeppelin::account::account::AccountComponent::Event"], + [30, "openzeppelin::presets::account::Account::Event"], + [ + 31, + "core::result::Result::>" + ], + [32, "StorageAddress"], + [33, "StorageBaseAddress"], + [34, "Box"], + [35, "Tuple>"], + [ + 36, + "core::panics::PanicResult::<(core::box::Box::<@core::felt252>,)>" + ], + [37, "Array"], + [38, "Array>"], + [ + 39, + "Tuple, Array>, Unit>" + ], + [ + 40, + "core::panics::PanicResult::<(core::array::Array::, core::array::Array::>, ())>" + ], + [41, "Box"], + [42, "Box"], + [43, "ContractAddress"], + [44, "core::starknet::info::ExecutionInfo"], + [45, "u64"], + [46, "core::starknet::info::BlockInfo"], + [47, "Tuple>"], + [ + 48, + "core::panics::PanicResult::<(core::box::Box::,)>" + ], + [ + 49, + "core::option::Option::" + ], + [50, "Uninitialized"], + [ + 51, + "openzeppelin::introspection::src5::SRC5Component::ComponentState::" + ], + [ + 52, + "Tuple, Unit>" + ], + [ + 53, + "core::panics::PanicResult::<(openzeppelin::introspection::src5::SRC5Component::ComponentState::, ())>" + ], + [54, "Tuple"], + [55, "core::panics::PanicResult::<((),)>"], + [56, "Box>"], + [ + 57, + "core::option::Option::>>" + ], + [58, "Snapshot>>"], + [ + 59, + "Uninitialized>>>" + ], + [60, "u128"], + [61, "core::starknet::info::TxInfo"], + [62, "Tuple>"], + [ + 63, + "core::panics::PanicResult::<(core::box::Box::,)>" + ], + [64, "Tuple"], + [ + 65, + "core::panics::PanicResult::<(core::starknet::contract_address::ContractAddress,)>" + ], + [66, "core::starknet::account::Call"], + [67, "core::option::Option::"], + [ + 68, + "Tuple, core::option::Option::>" + ], + [ + 69, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::)>" + ], + [70, "NonZero"], + [ + 71, + "openzeppelin::account::account::AccountComponent::ComponentState::" + ], + [ + 72, + "Tuple, Unit>" + ], + [ + 73, + "core::panics::PanicResult::<(openzeppelin::account::account::AccountComponent::ComponentState::, ())>" + ], + [74, "core::array::Span::>"], + [75, "core::option::Option::>"], + [76, "Tuple"], + [77, "core::panics::PanicResult::<(core::bool,)>"], + [78, "Pedersen"], + [79, "openzeppelin::presets::account::Account::ContractState"], + [ + 80, + "Tuple" + ], + [ + 81, + "core::panics::PanicResult::<(openzeppelin::presets::account::Account::ContractState, ())>" + ], + [ + 82, + "core::option::Option::>" + ], + [ + 83, + "Tuple, core::option::Option::>>" + ], + [ + 84, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>" + ], + [85, "core::option::Option::"], + [86, "Uninitialized"], + [87, "Tuple"], + [88, "core::panics::PanicResult::<(core::felt252,)>"], + [89, "EcOp"], + [90, "Tuple>"], + [91, "Tuple, Unit>"], + [ + 92, + "core::panics::PanicResult::<(core::array::Array::, ())>" + ], + [93, "Tuple>>"], + [ + 94, + "core::panics::PanicResult::<(core::array::Array::>,)>" + ], + [95, "BuiltinCosts"], + [ + 96, + "core::panics::PanicResult::<(core::array::Span::,)>" + ], + [97, "u32"], + [ + 98, + "core::option::Option::>" + ], + [ + 99, + "Tuple, core::option::Option::>>" + ], + [ + 100, + "core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>" + ], + [101, "GasBuiltin"], + [102, "RangeCheck"] + ], + "libfunc_names": [ + [0, "alloc_local"], + [1, "finalize_locals"], + [2, "revoke_ap_tracking"], + [3, "withdraw_gas"], + [4, "branch_align"], + [5, "store_temp"], + [6, "store_temp"], + [7, "store_temp>"], + [ + 8, + "function_call::deserialize>" + ], + [ + 9, + "enum_match, core::option::Option::>)>>" + ], + [ + 10, + "struct_deconstruct, core::option::Option::>>>" + ], + [ + 11, + "enum_match>>" + ], + [12, "struct_deconstruct>"], + [13, "array_len"], + [14, "snapshot_take"], + [15, "drop"], + [16, "u32_const<0>"], + [17, "rename"], + [18, "store_temp"], + [19, "u32_eq"], + [20, "drop>"], + [21, "drop>"], + [22, "array_new"], + [ + 23, + "felt252_const<7733229381460288120802334208475838166080759535023995805565484692595>" + ], + [24, "store_temp"], + [25, "array_append"], + [26, "struct_construct"], + [ + 27, + "struct_construct>>" + ], + [ + 28, + "enum_init,)>, 1>" + ], + [29, "store_temp"], + [ + 30, + "store_temp,)>>" + ], + [31, "get_builtin_costs"], + [32, "store_temp"], + [33, "withdraw_gas_all"], + [ + 34, + "struct_construct" + ], + [ + 35, + "struct_construct>" + ], + [ + 36, + "struct_construct" + ], + [ + 37, + "struct_construct>" + ], + [ + 38, + "struct_construct" + ], + [ + 39, + "snapshot_take" + ], + [ + 40, + "drop" + ], + [ + 41, + "store_temp" + ], + [42, "store_temp>"], + [ + 43, + "function_call::__execute__>" + ], + [44, "store_local"], + [ + 45, + "enum_match>,)>>" + ], + [ + 46, + "struct_deconstruct>>>" + ], + [47, "snapshot_take>>"], + [48, "drop>>"], + [ + 49, + "store_temp>>>" + ], + [50, "store_temp>"], + [ + 51, + "function_call, core::array::SpanSerde::, core::array::SpanDrop::>::serialize>" + ], + [ + 52, + "enum_match, ())>>" + ], + [53, "struct_deconstruct, Unit>>"], + [54, "drop"], + [55, "snapshot_take>"], + [56, "drop>"], + [57, "struct_construct>"], + [ + 58, + "struct_construct>>" + ], + [ + 59, + "enum_init,)>, 0>" + ], + [60, "felt252_const<375233589013918064796019>"], + [61, "drop>"], + [ + 62, + "felt252_const<485748461484230571791265682659113160264223489397539653310998840191492913>" + ], + [63, "store_temp"], + [ + 64, + "function_call::__validate__>" + ], + [65, "enum_match>"], + [66, "struct_deconstruct>"], + [67, "snapshot_take"], + [68, "drop"], + [69, "function_call"], + [70, "alloc_local"], + [71, "function_call"], + [72, "enum_match>"], + [73, "store_local"], + [ + 74, + "function_call::deserialize>" + ], + [ + 75, + "enum_match, core::option::Option::>)>>" + ], + [ + 76, + "struct_deconstruct, core::option::Option::>>>" + ], + [ + 77, + "enum_match>>" + ], + [ + 78, + "function_call::is_valid_signature>" + ], + [ + 79, + "felt252_const<485748461484230571791265682659113160264223489397539653310998840191492914>" + ], + [80, "drop>"], + [ + 81, + "function_call::isValidSignature>" + ], + [ + 82, + "function_call::get_public_key>" + ], + [ + 83, + "function_call::set_public_key>" + ], + [ + 84, + "enum_match>" + ], + [ + 85, + "drop>" + ], + [ + 86, + "function_call::getPublicKey>" + ], + [ + 87, + "function_call::setPublicKey>" + ], + [ + 88, + "function_call::__validate_declare__>" + ], + [ + 89, + "function_call::__validate_deploy__>" + ], + [ + 90, + "felt252_const<485748461484230571791265682659113160264223489397539653310998840191492915>" + ], + [91, "store_temp"], + [ + 92, + "function_call::supports_interface>" + ], + [93, "enum_match>"], + [94, "struct_deconstruct>"], + [95, "snapshot_take"], + [96, "drop"], + [97, "store_temp"], + [98, "function_call"], + [ + 99, + "function_call" + ], + [100, "disable_ap_tracking"], + [101, "array_snapshot_pop_front"], + [ + 102, + "enum_init>, 0>" + ], + [103, "store_temp>>"], + [ + 104, + "store_temp>>" + ], + [105, "jump"], + [106, "struct_construct"], + [ + 107, + "enum_init>, 1>" + ], + [ + 108, + "enum_match>>" + ], + [109, "unbox"], + [110, "array_new"], + [111, "rename"], + [ + 112, + "function_call>" + ], + [ + 113, + "struct_construct, core::option::Option::>>>" + ], + [ + 114, + "enum_init, core::option::Option::>)>, 0>" + ], + [ + 115, + "store_temp, core::option::Option::>)>>" + ], + [ + 116, + "enum_init, core::option::Option::>)>, 1>" + ], + [ + 117, + "enum_init>, 1>" + ], + [ + 118, + "function_call" + ], + [ + 119, + "store_temp>" + ], + [ + 120, + "function_call::__execute__>" + ], + [ + 121, + "struct_construct>>>" + ], + [ + 122, + "enum_init>,)>, 0>" + ], + [ + 123, + "store_temp>,)>>" + ], + [ + 124, + "enum_init>,)>, 1>" + ], + [125, "dup>>>"], + [126, "array_len>"], + [127, "u32_to_felt252"], + [ + 128, + "struct_construct>>" + ], + [ + 129, + "store_temp>>" + ], + [ + 130, + "function_call, core::array::SpanSerde::, core::array::SpanDrop::>>" + ], + [131, "struct_construct, Unit>>"], + [ + 132, + "enum_init, ())>, 0>" + ], + [ + 133, + "store_temp, ())>>" + ], + [ + 134, + "enum_init, ())>, 1>" + ], + [ + 135, + "function_call::validate_transaction>" + ], + [136, "struct_construct>"], + [ + 137, + "enum_init, 0>" + ], + [ + 138, + "store_temp>" + ], + [ + 139, + "enum_init, 1>" + ], + [140, "store_temp"], + [141, "enum_init, 0>"], + [142, "store_temp>"], + [143, "enum_init, 1>"], + [ + 144, + "function_call>" + ], + [ + 145, + "struct_construct, core::option::Option::>>>" + ], + [ + 146, + "enum_init, core::option::Option::>)>, 0>" + ], + [ + 147, + "store_temp, core::option::Option::>)>>" + ], + [ + 148, + "enum_init, core::option::Option::>)>, 1>" + ], + [ + 149, + "enum_init>, 1>" + ], + [ + 150, + "function_call::is_valid_signature>" + ], + [ + 151, + "function_call::get_public_key>" + ], + [ + 152, + "function_call::set_public_key>" + ], + [ + 153, + "enum_match, ())>>" + ], + [ + 154, + "struct_deconstruct, Unit>>" + ], + [ + 155, + "drop>" + ], + [ + 156, + "struct_construct>" + ], + [ + 157, + "enum_init, 0>" + ], + [ + 158, + "store_temp>" + ], + [ + 159, + "enum_init, 1>" + ], + [ + 160, + "function_call::getPublicKey>" + ], + [ + 161, + "function_call::setPublicKey>" + ], + [ + 162, + "function_call" + ], + [ + 163, + "store_temp>" + ], + [ + 164, + "function_call::supports_interface>" + ], + [165, "struct_construct>"], + [166, "enum_init, 0>"], + [167, "store_temp>"], + [168, "enum_init, 1>"], + [169, "rename"], + [170, "enum_match"], + [171, "felt252_const<0>"], + [172, "felt252_const<1>"], + [ + 173, + "struct_deconstruct" + ], + [ + 174, + "function_call::initializer>" + ], + [ + 175, + "drop>" + ], + [176, "dup"], + [177, "felt252_is_zero"], + [ + 178, + "enum_init>, 0>" + ], + [179, "drop>"], + [ + 180, + "function_call" + ], + [ + 181, + "enum_match, core::option::Option::)>>" + ], + [ + 182, + "struct_deconstruct, core::option::Option::>>" + ], + [ + 183, + "enum_match>" + ], + [184, "array_append"], + [185, "felt252_sub"], + [ + 186, + "function_call" + ], + [ + 187, + "enum_match>" + ], + [188, "struct_deconstruct>"], + [189, "contract_address_to_felt252"], + [190, "function_call"], + [ + 191, + "enum_match,)>>" + ], + [ + 192, + "struct_deconstruct>>" + ], + [193, "unbox"], + [194, "struct_deconstruct"], + [195, "drop"], + [196, "drop"], + [197, "enable_ap_tracking"], + [198, "felt252_const<340282366920938463463374607431768211457>"], + [ + 199, + "function_call" + ], + [ + 200, + "felt252_const<26899160088882821476234389471510102233170292334138446031203430254>" + ], + [ + 201, + "felt252_const<6262948757243068301173483364169975331325598907448976754>" + ], + [ + 202, + "alloc_local>>>" + ], + [ + 203, + "struct_deconstruct>>" + ], + [ + 204, + "array_snapshot_pop_front>" + ], + [ + 205, + "enum_init>>, 0>" + ], + [ + 206, + "store_temp>>>" + ], + [ + 207, + "enum_init>>, 1>" + ], + [ + 208, + "store_local>>>" + ], + [ + 209, + "enum_match>>>" + ], + [210, "unbox>"], + [ + 211, + "function_call::serialize>" + ], + [ + 212, + "drop>>>" + ], + [ + 213, + "drop>>>>" + ], + [ + 214, + "drop>>" + ], + [ + 215, + "function_call::_is_valid_signature>" + ], + [ + 216, + "felt252_const<105074844097198521391540583873086336848321434922596230638170725>" + ], + [217, "felt252_const<370462705988>"], + [ + 218, + "enum_init>, 0>" + ], + [ + 219, + "struct_deconstruct>" + ], + [ + 220, + "store_temp" + ], + [ + 221, + "function_call::read>" + ], + [ + 222, + "snapshot_take>" + ], + [ + 223, + "function_call::assert_only_self>" + ], + [224, "enum_match>"], + [225, "drop>"], + [ + 226, + "snapshot_take" + ], + [ + 227, + "struct_construct" + ], + [ + 228, + "store_temp" + ], + [ + 229, + "function_call>" + ], + [ + 230, + "function_call::_set_public_key>" + ], + [ + 231, + "struct_construct, Unit>>" + ], + [ + 232, + "enum_init, ())>, 0>" + ], + [ + 233, + "store_temp, ())>>" + ], + [ + 234, + "enum_init, ())>, 1>" + ], + [ + 235, + "drop" + ], + [ + 236, + "felt252_const<1797054754729183305928171726271749999318198861813713898581160688510183841877>" + ], + [237, "enum_init"], + [ + 238, + "struct_deconstruct>" + ], + [ + 239, + "store_temp" + ], + [ + 240, + "function_call>>::read>" + ], + [ + 241, + "felt252_const<1270010605630597976495846281167968799381097569185364931397797212080166453709>" + ], + [ + 242, + "function_call::register_interface>" + ], + [ + 243, + "enum_match, ())>>" + ], + [ + 244, + "drop, Unit>>" + ], + [245, "alloc_local"], + [ + 246, + "function_call" + ], + [ + 247, + "enum_match>" + ], + [248, "store_local"], + [249, "struct_construct"], + [ + 250, + "enum_init, 0>" + ], + [ + 251, + "struct_construct, core::option::Option::>>" + ], + [ + 252, + "enum_init, core::option::Option::)>, 0>" + ], + [ + 253, + "store_temp, core::option::Option::)>>" + ], + [ + 254, + "enum_init, 1>" + ], + [ + 255, + "enum_init, core::option::Option::)>, 1>" + ], + [256, "drop>"], + [ + 257, + "function_call" + ], + [ + 258, + "enum_match,)>>" + ], + [ + 259, + "struct_deconstruct>>" + ], + [260, "unbox"], + [261, "struct_deconstruct"], + [262, "drop>"], + [263, "drop>"], + [264, "struct_construct>"], + [ + 265, + "enum_init, 0>" + ], + [ + 266, + "store_temp>" + ], + [ + 267, + "enum_init, 1>" + ], + [ + 268, + "struct_construct>>" + ], + [ + 269, + "enum_init,)>, 0>" + ], + [ + 270, + "store_temp,)>>" + ], + [ + 271, + "enum_init,)>, 1>" + ], + [272, "array_new>"], + [273, "store_temp>>"], + [ + 274, + "function_call" + ], + [ + 275, + "enum_match, core::array::Array::>, ())>>" + ], + [ + 276, + "struct_deconstruct, Array>, Unit>>" + ], + [277, "dup>"], + [278, "rename>"], + [ + 279, + "function_call>" + ], + [280, "u32_const<2>"], + [281, "enum_init"], + [ + 282, + "function_call>" + ], + [ + 283, + "enum_match,)>>" + ], + [284, "struct_deconstruct>>"], + [285, "u32_const<1>"], + [286, "function_call"], + [287, "drop>"], + [ + 288, + "storage_base_address_const<550557492744938365112574611882025123252567779123164597803728068558738016655>" + ], + [289, "storage_address_from_base"], + [290, "store_temp"], + [291, "storage_read_syscall"], + [ + 292, + "enum_init>, 0>" + ], + [ + 293, + "store_temp>>" + ], + [ + 294, + "enum_init>, 1>" + ], + [ + 295, + "rename>>" + ], + [ + 296, + "function_call::unwrap_syscall>" + ], + [ + 297, + "function_call" + ], + [298, "snapshot_take"], + [299, "rename"], + [300, "struct_construct>"], + [301, "enum_init, 0>"], + [302, "store_temp>"], + [ + 303, + "felt252_const<95565013996018498247890117593540195050286445389156>" + ], + [304, "enum_init, 1>"], + [305, "drop>"], + [ + 306, + "function_call" + ], + [ + 307, + "enum_init" + ], + [ + 308, + "store_temp" + ], + [ + 309, + "function_call>>" + ], + [ + 310, + "function_call::write>" + ], + [ + 311, + "enum_match>" + ], + [ + 312, + "struct_deconstruct>" + ], + [ + 313, + "struct_construct" + ], + [ + 314, + "store_temp" + ], + [ + 315, + "function_call>" + ], + [ + 316, + "function_call" + ], + [317, "store_temp"], + [ + 318, + "function_call" + ], + [ + 319, + "rename>>" + ], + [ + 320, + "function_call::unwrap_syscall>" + ], + [ + 321, + "function_call>>::write>" + ], + [ + 322, + "enum_match>" + ], + [ + 323, + "struct_deconstruct>" + ], + [ + 324, + "struct_construct, Unit>>" + ], + [ + 325, + "enum_init, ())>, 0>" + ], + [ + 326, + "store_temp, ())>>" + ], + [ + 327, + "enum_init, ())>, 1>" + ], + [328, "contract_address_try_from_felt252"], + [ + 329, + "enum_init, 0>" + ], + [ + 330, + "store_temp>" + ], + [ + 331, + "enum_init, 1>" + ], + [332, "get_execution_info_syscall"], + [ + 333, + "enum_init, core::array::Array::>, 0>" + ], + [ + 334, + "store_temp, core::array::Array::>>" + ], + [ + 335, + "enum_init, core::array::Array::>, 1>" + ], + [ + 336, + "rename, core::array::Array::>>" + ], + [ + 337, + "function_call>::unwrap_syscall>" + ], + [ + 338, + "struct_construct>>" + ], + [ + 339, + "enum_init,)>, 0>" + ], + [ + 340, + "store_temp,)>>" + ], + [ + 341, + "enum_init,)>, 1>" + ], + [342, "array_pop_front"], + [343, "unbox"], + [ + 344, + "store_temp>" + ], + [345, "store_temp"], + [ + 346, + "function_call" + ], + [ + 347, + "enum_match,)>>" + ], + [ + 348, + "struct_deconstruct>>" + ], + [349, "array_append>"], + [ + 350, + "struct_construct, Array>, Unit>>" + ], + [ + 351, + "enum_init, core::array::Array::>, ())>, 0>" + ], + [ + 352, + "store_temp, core::array::Array::>, ())>>" + ], + [ + 353, + "enum_init, core::array::Array::>, ())>, 1>" + ], + [354, "drop>>"], + [355, "array_get"], + [356, "struct_construct>>"], + [ + 357, + "enum_init,)>, 0>" + ], + [ + 358, + "store_temp,)>>" + ], + [ + 359, + "felt252_const<1637570914057682275393755530660268060279989363>" + ], + [ + 360, + "enum_init,)>, 1>" + ], + [ + 361, + "felt252_const<3618502788666131213697322783095070105526743751716087489154079457884512865583>" + ], + [362, "ec_point_from_x_nz"], + [363, "store_temp>"], + [364, "unwrap_non_zero"], + [ + 365, + "felt252_const<874739451078007766457464989774322083649278607533249481151382481072868806602>" + ], + [ + 366, + "felt252_const<152666792071518830868575557812948353041420400780739481342941381225525861407>" + ], + [367, "ec_point_try_new_nz"], + [368, "store_temp"], + [369, "function_call"], + [370, "ec_point_is_zero"], + [371, "drop"], + [372, "ec_point_unwrap"], + [373, "dup"], + [374, "function_call"], + [375, "function_call"], + [ + 376, + "enum_match>>" + ], + [ + 377, + "enum_init" + ], + [ + 378, + "store_temp" + ], + [ + 379, + "function_call::into>" + ], + [ + 380, + "snapshot_take" + ], + [381, "drop"], + [ + 382, + "function_call" + ], + [383, "emit_event_syscall"], + [ + 384, + "enum_init>, 0>" + ], + [ + 385, + "store_temp>>" + ], + [ + 386, + "enum_init>, 1>" + ], + [ + 387, + "rename>>" + ], + [ + 388, + "function_call::unwrap_syscall>" + ], + [389, "struct_deconstruct>"], + [390, "storage_write_syscall"], + [ + 391, + "struct_construct>" + ], + [ + 392, + "enum_init, 0>" + ], + [ + 393, + "store_temp>" + ], + [ + 394, + "enum_init, 1>" + ], + [ + 395, + "function_call" + ], + [ + 396, + "drop" + ], + [ + 397, + "felt252_const<29856869448526851354677579421814598404948672607251612773571742675033995705>" + ], + [398, "struct_construct"], + [399, "struct_deconstruct"], + [400, "pedersen"], + [401, "storage_base_address_from_felt252"], + [402, "bool_not_impl"], + [ + 403, + "enum_init>, 0>" + ], + [ + 404, + "store_temp>>" + ], + [ + 405, + "enum_init>, 1>" + ], + [ + 406, + "enum_match>>" + ], + [ + 407, + "snapshot_take" + ], + [ + 408, + "struct_construct>" + ], + [ + 409, + "enum_init, 0>" + ], + [ + 410, + "store_temp>" + ], + [ + 411, + "enum_init, 1>" + ], + [ + 412, + "enum_match, core::array::Array::>>" + ], + [413, "struct_deconstruct"], + [414, "call_contract_syscall"], + [ + 415, + "enum_init, core::array::Array::>, 0>" + ], + [ + 416, + "store_temp, core::array::Array::>>" + ], + [ + 417, + "enum_init, core::array::Array::>, 1>" + ], + [ + 418, + "rename, core::array::Array::>>" + ], + [ + 419, + "function_call, core::array::Array::>::unwrap::>>" + ], + [420, "ec_state_init"], + [421, "ec_state_add_mul"], + [422, "store_temp"], + [423, "ec_state_try_finalize_nz"], + [424, "ec_point_zero"], + [425, "rename"], + [426, "rename"], + [427, "drop>"], + [428, "ec_state_add"], + [429, "ec_neg"], + [ + 430, + "enum_match" + ], + [ + 431, + "function_call" + ], + [ + 432, + "store_temp" + ], + [ + 433, + "function_call" + ], + [434, "rename>"], + [ + 435, + "enum_match>>" + ], + [ + 436, + "enum_init" + ], + [ + 437, + "felt252_const<30828113188794245257250221355944970489240709081949230>" + ], + [ + 438, + "function_call, core::array::Array::>::expect::>>" + ], + [ + 439, + "enum_match" + ], + [ + 440, + "felt252_const<1610331728778078893946407512609881658931720321973668761376942902098853979009>" + ], + [ + 441, + "function_call" + ], + [ + 442, + "felt252_const<22344655548567333405387866802074085172395779041116519548464544628677498541>" + ], + [ + 443, + "function_call" + ], + [ + 444, + "enum_match" + ], + [ + 445, + "enum_match, core::array::Array::>>" + ], + [ + 446, + "struct_deconstruct" + ], + [ + 447, + "struct_deconstruct" + ] + ], + "user_func_names": [ + [ + 0, + "openzeppelin::account::account::AccountComponent::__wrapper__SRC6Impl____execute__::" + ], + [ + 1, + "openzeppelin::account::account::AccountComponent::__wrapper__SRC6Impl____validate__::" + ], + [ + 2, + "openzeppelin::account::account::AccountComponent::__wrapper__SRC6Impl__is_valid_signature::" + ], + [ + 3, + "openzeppelin::account::account::AccountComponent::__wrapper__SRC6CamelOnlyImpl__isValidSignature::" + ], + [ + 4, + "openzeppelin::account::account::AccountComponent::__wrapper__PublicKeyImpl__get_public_key::" + ], + [ + 5, + "openzeppelin::account::account::AccountComponent::__wrapper__PublicKeyImpl__set_public_key::" + ], + [ + 6, + "openzeppelin::account::account::AccountComponent::__wrapper__PublicKeyCamelImpl__getPublicKey::" + ], + [ + 7, + "openzeppelin::account::account::AccountComponent::__wrapper__PublicKeyCamelImpl__setPublicKey::" + ], + [ + 8, + "openzeppelin::account::account::AccountComponent::__wrapper__DeclarerImpl____validate_declare__::" + ], + [ + 9, + "openzeppelin::account::account::AccountComponent::__wrapper__DeployableImpl____validate_deploy__::" + ], + [ + 10, + "openzeppelin::introspection::src5::SRC5Component::__wrapper__SRC5Impl__supports_interface::" + ], + [ + 11, + "openzeppelin::presets::account::Account::__wrapper__constructor" + ], + [ + 12, + "core::array::ArraySerde::::deserialize" + ], + [ + 13, + "openzeppelin::account::account::AccountComponent::SRC6Impl::::__execute__" + ], + [ + 14, + "core::array::ArraySerde::, core::array::SpanSerde::, core::array::SpanDrop::>::serialize" + ], + [ + 15, + "openzeppelin::account::account::AccountComponent::SRC6Impl::::__validate__" + ], + [16, "core::Felt252Serde::serialize"], + [17, "core::Felt252Serde::deserialize"], + [ + 18, + "core::array::ArraySerde::::deserialize" + ], + [ + 19, + "openzeppelin::account::account::AccountComponent::SRC6Impl::::is_valid_signature" + ], + [ + 20, + "openzeppelin::account::account::AccountComponent::SRC6CamelOnlyImpl::::isValidSignature" + ], + [ + 21, + "openzeppelin::account::account::AccountComponent::PublicKeyImpl::::get_public_key" + ], + [ + 22, + "openzeppelin::account::account::AccountComponent::PublicKeyImpl::::set_public_key" + ], + [ + 23, + "openzeppelin::account::account::AccountComponent::PublicKeyCamelImpl::::getPublicKey" + ], + [ + 24, + "openzeppelin::account::account::AccountComponent::PublicKeyCamelImpl::::setPublicKey" + ], + [ + 25, + "openzeppelin::account::account::AccountComponent::DeclarerImpl::::__validate_declare__" + ], + [ + 26, + "openzeppelin::account::account::AccountComponent::DeployableImpl::::__validate_deploy__" + ], + [ + 27, + "openzeppelin::introspection::src5::SRC5Component::SRC5Impl::::supports_interface" + ], + [28, "core::BoolSerde::serialize"], + [29, "openzeppelin::presets::account::Account::constructor"], + [ + 30, + "core::array::deserialize_array_helper::" + ], + [ + 31, + "openzeppelin::presets::account::Account::HasComponentImpl_AccountComponent::get_component" + ], + [ + 32, + "openzeppelin::account::account::AccountComponent::SRC6::::__execute__" + ], + [ + 33, + "core::array::serialize_array_helper::, core::array::SpanSerde::, core::array::SpanDrop::>" + ], + [ + 34, + "openzeppelin::account::account::AccountComponent::InternalImpl::::validate_transaction" + ], + [ + 35, + "core::array::deserialize_array_helper::" + ], + [ + 36, + "openzeppelin::account::account::AccountComponent::SRC6::::is_valid_signature" + ], + [ + 37, + "openzeppelin::account::account::AccountComponent::PublicKey::::get_public_key" + ], + [ + 38, + "openzeppelin::account::account::AccountComponent::PublicKey::::set_public_key" + ], + [ + 39, + "openzeppelin::account::account::AccountComponent::PublicKeyCamel::::getPublicKey" + ], + [ + 40, + "openzeppelin::account::account::AccountComponent::PublicKeyCamel::::setPublicKey" + ], + [ + 41, + "openzeppelin::presets::account::Account::HasComponentImpl_SRC5Component::get_component" + ], + [ + 42, + "openzeppelin::introspection::src5::SRC5Component::SRC5::::supports_interface" + ], + [ + 43, + "openzeppelin::account::account::AccountComponent::InternalImpl::::initializer" + ], + [44, "core::starknet::account::CallSerde::deserialize"], + [45, "core::starknet::info::get_caller_address"], + [46, "core::starknet::info::get_tx_info"], + [ + 47, + "openzeppelin::account::account::AccountComponent::_execute_calls" + ], + [ + 48, + "core::array::SpanSerde::::serialize" + ], + [ + 49, + "openzeppelin::account::account::AccountComponent::InternalImpl::::_is_valid_signature" + ], + [ + 50, + "core::starknet::storage::StorageMemberAccessImpl::::read" + ], + [ + 51, + "openzeppelin::account::account::AccountComponent::InternalImpl::::assert_only_self" + ], + [ + 52, + "openzeppelin::presets::account::Account::HasComponentImpl_AccountComponent::emit::" + ], + [ + 53, + "openzeppelin::account::account::AccountComponent::InternalImpl::::_set_public_key" + ], + [ + 54, + "core::starknet::storage::StorageMapMemberAccessImpl::>>::read" + ], + [ + 55, + "openzeppelin::introspection::src5::SRC5Component::InternalImpl::::register_interface" + ], + [ + 56, + "core::starknet::contract_address::ContractAddressSerde::deserialize" + ], + [57, "core::starknet::info::get_execution_info"], + [ + 58, + "openzeppelin::account::account::AccountComponent::_execute_calls[expr12]" + ], + [ + 59, + "core::array::serialize_array_helper::" + ], + [60, "core::array::array_at::"], + [61, "core::ecdsa::check_ecdsa_signature"], + [ + 62, + "core::starknet::SyscallResultTraitImpl::::unwrap_syscall" + ], + [63, "core::starknet::info::get_contract_address"], + [ + 64, + "openzeppelin::account::account::AccountComponent::EventOwnerRemovedIntoEvent::into" + ], + [ + 65, + "openzeppelin::presets::account::Account::ContractStateEventEmitter::emit::>" + ], + [ + 66, + "core::starknet::storage::StorageMemberAccessImpl::::write" + ], + [ + 67, + "openzeppelin::presets::account::Account::HasComponentImpl_AccountComponent::emit::" + ], + [ + 68, + "openzeppelin::introspection::src5::SRC5Component::SRC5_supported_interfaces::StorageMapComponentMemberStateImpl::address" + ], + [69, "core::starknet::storage_access::StoreBool::read"], + [ + 70, + "core::starknet::SyscallResultTraitImpl::::unwrap_syscall" + ], + [ + 71, + "core::starknet::storage::StorageMapMemberAccessImpl::>>::write" + ], + [ + 72, + "core::starknet::SyscallResultTraitImpl::>::unwrap_syscall" + ], + [ + 73, + "openzeppelin::account::account::AccountComponent::_execute_single_call" + ], + [74, "core::ec::EcPointImpl::mul"], + [75, "core::ec::EcPointAdd::add"], + [76, "core::ec::EcPointSub::sub"], + [ + 77, + "core::traits::TIntoT::::into" + ], + [ + 78, + "openzeppelin::presets::account::Account::EventIsEvent::append_keys_and_data" + ], + [ + 79, + "core::starknet::SyscallResultTraitImpl::<()>::unwrap_syscall" + ], + [ + 80, + "openzeppelin::account::account::AccountComponent::EventOwnerAddedIntoEvent::into" + ], + [ + 81, + "core::result::ResultTraitImpl::, core::array::Array::>::unwrap::>" + ], + [ + 82, + "openzeppelin::account::account::AccountComponent::EventIsEvent::append_keys_and_data" + ], + [ + 83, + "openzeppelin::introspection::src5::SRC5Component::EventIsEvent::append_keys_and_data" + ], + [ + 84, + "core::result::ResultTraitImpl::, core::array::Array::>::expect::>" + ], + [ + 85, + "openzeppelin::account::account::AccountComponent::OwnerAddedIsEvent::append_keys_and_data" + ], + [ + 86, + "openzeppelin::account::account::AccountComponent::OwnerRemovedIsEvent::append_keys_and_data" + ] + ] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [ + { + "selector": "0xbc0eb87884ab91e330445c3584a50d7ddf4b568f02fbeb456a6242cce3f5d9", + "function_idx": 7 + }, + { + "selector": "0xfe80f537b66d12a00b6d3c072b44afbb716e78dde5c3f0ef116ee93d3e3283", + "function_idx": 10 + }, + { + "selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", + "function_idx": 0 + }, + { + "selector": "0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775", + "function_idx": 1 + }, + { + "selector": "0x1a35984e05126dbecb7c3bb9929e7dd9106d460c59b1633739a5c733a5fb13b", + "function_idx": 4 + }, + { + "selector": "0x1a6c6a0bdec86cc645c91997d8eea83e87148659e3e61122f72361fd5e94079", + "function_idx": 6 + }, + { + "selector": "0x213dfe25e2ca309c4d615a09cfc95fdb2fc7dc73fbcad12c450fe93b1f2ff9e", + "function_idx": 3 + }, + { + "selector": "0x28420862938116cb3bbdbedee07451ccc54d4e9412dbef71142ad1980a30941", + "function_idx": 2 + }, + { + "selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", + "function_idx": 8 + }, + { + "selector": "0x2e3e21ff5952b2531241e37999d9c4c8b3034cccc89a202a6bf019bdf5294f9", + "function_idx": 5 + }, + { + "selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895", + "function_idx": 9 + } + ], + "L1_HANDLER": [], + "CONSTRUCTOR": [ + { + "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", + "function_idx": 11 + } + ] + }, + "abi": [ + { + "type": "impl", + "name": "SRC6Impl", + "interface_name": "openzeppelin::account::interface::ISRC6" + }, + { + "type": "struct", + "name": "core::starknet::account::Call", + "members": [ + { + "name": "to", + "type": "core::starknet::contract_address::ContractAddress" + }, + { "name": "selector", "type": "core::felt252" }, + { + "name": "calldata", + "type": "core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::ISRC6", + "items": [ + { + "type": "function", + "name": "__execute__", + "inputs": [ + { + "name": "calls", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::array::Array::>" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "__validate__", + "inputs": [ + { + "name": "calls", + "type": "core::array::Array::" + } + ], + "outputs": [{ "type": "core::felt252" }], + "state_mutability": "view" + }, + { + "type": "function", + "name": "is_valid_signature", + "inputs": [ + { "name": "hash", "type": "core::felt252" }, + { + "name": "signature", + "type": "core::array::Array::" + } + ], + "outputs": [{ "type": "core::felt252" }], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SRC6CamelOnlyImpl", + "interface_name": "openzeppelin::account::interface::ISRC6CamelOnly" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::ISRC6CamelOnly", + "items": [ + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { "name": "hash", "type": "core::felt252" }, + { + "name": "signature", + "type": "core::array::Array::" + } + ], + "outputs": [{ "type": "core::felt252" }], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "PublicKeyImpl", + "interface_name": "openzeppelin::account::interface::IPublicKey" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::IPublicKey", + "items": [ + { + "type": "function", + "name": "get_public_key", + "inputs": [], + "outputs": [{ "type": "core::felt252" }], + "state_mutability": "view" + }, + { + "type": "function", + "name": "set_public_key", + "inputs": [ + { "name": "new_public_key", "type": "core::felt252" } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "PublicKeyCamelImpl", + "interface_name": "openzeppelin::account::interface::IPublicKeyCamel" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::IPublicKeyCamel", + "items": [ + { + "type": "function", + "name": "getPublicKey", + "inputs": [], + "outputs": [{ "type": "core::felt252" }], + "state_mutability": "view" + }, + { + "type": "function", + "name": "setPublicKey", + "inputs": [ + { "name": "newPublicKey", "type": "core::felt252" } + ], + "outputs": [], + "state_mutability": "external" + } + ] + }, + { + "type": "impl", + "name": "DeclarerImpl", + "interface_name": "openzeppelin::account::interface::IDeclarer" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::IDeclarer", + "items": [ + { + "type": "function", + "name": "__validate_declare__", + "inputs": [ + { "name": "class_hash", "type": "core::felt252" } + ], + "outputs": [{ "type": "core::felt252" }], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "DeployableImpl", + "interface_name": "openzeppelin::account::interface::IDeployable" + }, + { + "type": "interface", + "name": "openzeppelin::account::interface::IDeployable", + "items": [ + { + "type": "function", + "name": "__validate_deploy__", + "inputs": [ + { "name": "class_hash", "type": "core::felt252" }, + { + "name": "contract_address_salt", + "type": "core::felt252" + }, + { "name": "public_key", "type": "core::felt252" } + ], + "outputs": [{ "type": "core::felt252" }], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "SRC5Impl", + "interface_name": "openzeppelin::introspection::interface::ISRC5" + }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { "name": "False", "type": "()" }, + { "name": "True", "type": "()" } + ] + }, + { + "type": "interface", + "name": "openzeppelin::introspection::interface::ISRC5", + "items": [ + { + "type": "function", + "name": "supports_interface", + "inputs": [ + { "name": "interface_id", "type": "core::felt252" } + ], + "outputs": [{ "type": "core::bool" }], + "state_mutability": "view" + } + ] + }, + { + "type": "constructor", + "name": "constructor", + "inputs": [{ "name": "public_key", "type": "core::felt252" }] + }, + { + "type": "event", + "name": "openzeppelin::account::account::AccountComponent::OwnerAdded", + "kind": "struct", + "members": [ + { + "name": "new_owner_guid", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::account::account::AccountComponent::OwnerRemoved", + "kind": "struct", + "members": [ + { + "name": "removed_owner_guid", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::account::account::AccountComponent::Event", + "kind": "enum", + "variants": [ + { + "name": "OwnerAdded", + "type": "openzeppelin::account::account::AccountComponent::OwnerAdded", + "kind": "nested" + }, + { + "name": "OwnerRemoved", + "type": "openzeppelin::account::account::AccountComponent::OwnerRemoved", + "kind": "nested" + } + ] + }, + { + "type": "event", + "name": "openzeppelin::introspection::src5::SRC5Component::Event", + "kind": "enum", + "variants": [] + }, + { + "type": "event", + "name": "openzeppelin::presets::account::Account::Event", + "kind": "enum", + "variants": [ + { + "name": "AccountEvent", + "type": "openzeppelin::account::account::AccountComponent::Event", + "kind": "flat" + }, + { + "name": "SRC5Event", + "type": "openzeppelin::introspection::src5::SRC5Component::Event", + "kind": "flat" + } + ] + } + ] + }, + "classHash": "0xa55" + } + ] +} diff --git a/crates/katana/primitives/src/genesis/test-genesis.json b/crates/katana/primitives/src/genesis/test-genesis.json index 9b618e85ea..cc7be2c232 100644 --- a/crates/katana/primitives/src/genesis/test-genesis.json +++ b/crates/katana/primitives/src/genesis/test-genesis.json @@ -57,15 +57,15 @@ }, "classes": [ { - "path": "../../contracts/compiled/erc20.json", + "class": "../../contracts/compiled/erc20.json", "classHash": "0x8" }, { - "path": "../../contracts/compiled/universal_deployer.json", + "class": "../../contracts/compiled/universal_deployer.json", "classHash": "0x80085" }, { - "path": "../../contracts/compiled/oz_account_080.json", + "class": "../../contracts/compiled/oz_account_080.json", "classHash": "0xa55" } ]