From 916a49602d4cf9baeb3ca2402d2b7faf1f5bb256 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Wed, 12 Jun 2024 17:27:48 +0200 Subject: [PATCH 01/22] feat: fearigon witness extractor initiall commit --- Cargo.lock | 14 ++++++++++++++ Cargo.toml | 2 +- tools/jerigon_witness_extractor/Cargo.toml | 16 ++++++++++++++++ tools/jerigon_witness_extractor/src/main.rs | 8 ++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 tools/jerigon_witness_extractor/Cargo.toml create mode 100644 tools/jerigon_witness_extractor/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 3af52fd7..87e5fa29 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2512,6 +2512,20 @@ dependencies = [ "libc", ] +[[package]] +name = "jerigon_witness_extractor" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap", + "common", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber", +] + [[package]] name = "js-sys" version = "0.3.69" diff --git a/Cargo.toml b/Cargo.toml index 8433d332..307cac73 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["leader", "worker", "common", "ops", "verifier", "rpc", "prover"] +members = ["leader", "worker", "common", "ops", "verifier", "rpc", "prover", "tools/jerigon_witness_extractor"] resolver = "2" [workspace.dependencies] diff --git a/tools/jerigon_witness_extractor/Cargo.toml b/tools/jerigon_witness_extractor/Cargo.toml new file mode 100644 index 00000000..138fc1c1 --- /dev/null +++ b/tools/jerigon_witness_extractor/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "jerigon_witness_extractor" +version = "0.1.0" +edition = "2021" + +[dependencies] +clap = { workspace = true } +tracing = { workspace = true } +tracing-subscriber = { workspace = true } +anyhow = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +tokio = { workspace = true } + +# Local dependencies +common = { path = "../../common" } diff --git a/tools/jerigon_witness_extractor/src/main.rs b/tools/jerigon_witness_extractor/src/main.rs new file mode 100644 index 00000000..9d46d29c --- /dev/null +++ b/tools/jerigon_witness_extractor/src/main.rs @@ -0,0 +1,8 @@ +use anyhow::Result; + +#[tokio::main] +async fn main() -> Result<()> { + println!("This is jerigon witness extractor!"); + + Ok(()) +} From ecb825adf6585536268118bd3b5ef26e5e834f90 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 12:31:58 +0200 Subject: [PATCH 02/22] fix: update rpc and stdio test case --- .github/workflows/ci.yml | 4 +- Cargo.lock | 14 - Cargo.toml | 2 +- leader/src/stdio.rs | 19 +- rpc/src/main.rs | 26 +- tools/artifacts/witness_b19240705.json | 1390 +++++++++++ tools/artifacts/witness_b2_b7.json | 2414 +++++++++++++++++++ tools/jerigon_witness_extractor/Cargo.toml | 16 - tools/jerigon_witness_extractor/src/main.rs | 8 - tools/{simple_test.sh => stdio_test.sh} | 29 +- 10 files changed, 3849 insertions(+), 73 deletions(-) create mode 100644 tools/artifacts/witness_b19240705.json create mode 100644 tools/artifacts/witness_b2_b7.json delete mode 100644 tools/jerigon_witness_extractor/Cargo.toml delete mode 100644 tools/jerigon_witness_extractor/src/main.rs rename tools/{simple_test.sh => stdio_test.sh} (75%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9f463625..28a6f054 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,7 +76,7 @@ jobs: - name: Run the script run: | pushd tools - ./simple_test.sh + ./stdio_test.sh artifacts/witness_b19240705.json simple_proof_witness_only: name: Execute bash script to generate the proof witness for a small block. @@ -89,4 +89,4 @@ jobs: - name: Run the script run: | pushd tools - ./simple_test.sh test_only + ./stdio_test.sh artifacts/witness_b19240705.json test_only diff --git a/Cargo.lock b/Cargo.lock index 87e5fa29..3af52fd7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2512,20 +2512,6 @@ dependencies = [ "libc", ] -[[package]] -name = "jerigon_witness_extractor" -version = "0.1.0" -dependencies = [ - "anyhow", - "clap", - "common", - "serde", - "serde_json", - "tokio", - "tracing", - "tracing-subscriber", -] - [[package]] name = "js-sys" version = "0.3.69" diff --git a/Cargo.toml b/Cargo.toml index 307cac73..8433d332 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["leader", "worker", "common", "ops", "verifier", "rpc", "prover", "tools/jerigon_witness_extractor"] +members = ["leader", "worker", "common", "ops", "verifier", "rpc", "prover"] resolver = "2" [workspace.dependencies] diff --git a/leader/src/stdio.rs b/leader/src/stdio.rs index b49223dc..7e7e4050 100644 --- a/leader/src/stdio.rs +++ b/leader/src/stdio.rs @@ -3,7 +3,7 @@ use std::io::{Read, Write}; use anyhow::Result; use paladin::runtime::Runtime; use proof_gen::proof_types::GeneratedBlockProof; -use prover::BlockProverInput; +use prover::ProverInput; /// The main function for the stdio mode. pub(crate) async fn stdio_main( @@ -15,18 +15,17 @@ pub(crate) async fn stdio_main( std::io::stdin().read_to_string(&mut buffer)?; let des = &mut serde_json::Deserializer::from_str(&buffer); - let input: BlockProverInput = serde_path_to_error::deserialize(des)?; - let proof = input - .prove( - &runtime, - previous.map(futures::future::ok), - save_inputs_on_error, - ) + let prover_input = ProverInput { + blocks: serde_path_to_error::deserialize(des)?, + }; + + let block_proofs = prover_input + .prove(&runtime, previous, save_inputs_on_error) .await; runtime.close().await?; - let proof = proof?; + let proofs = block_proofs?; - std::io::stdout().write_all(&serde_json::to_vec(&proof)?)?; + std::io::stdout().write_all(&serde_json::to_vec(&proofs)?)?; Ok(()) } diff --git a/rpc/src/main.rs b/rpc/src/main.rs index a38ee7a7..bd84b113 100644 --- a/rpc/src/main.rs +++ b/rpc/src/main.rs @@ -10,15 +10,19 @@ use url::Url; pub enum Args { /// Fetch and generate prover input from the RPC endpoint. Fetch { + // Starting block of interval to fetch + #[arg(short, long)] + start_block: u64, + // End block of interval to fetch + #[arg(short, long)] + end_block: u64, /// The RPC URL. #[arg(short = 'u', long, value_hint = ValueHint::Url)] rpc_url: Url, - /// The block number. + /// The checkpoint block number. If not provided, + /// block before the `start_block` is the checkpoint #[arg(short, long)] - block_number: BlockId, - /// The checkpoint block number. - #[arg(short, long, default_value = "0")] - checkpoint_block_number: BlockId, + checkpoint_block_number: Option, }, } @@ -34,18 +38,24 @@ async fn main() -> anyhow::Result<()> { .init(); let Args::Fetch { + start_block, + end_block, rpc_url, - block_number, checkpoint_block_number, } = Args::parse(); + + let checkpoint_block_number = checkpoint_block_number.unwrap_or((start_block - 1).into()); + let block_interval = BlockInterval::Range(start_block..end_block + 1); + + // Retrieve prover input from the Erigon node let prover_input = rpc::prover_input( RootProvider::new_http(rpc_url), - BlockInterval::SingleBlockId(block_number), + block_interval, checkpoint_block_number, ) .await?; - serde_json::to_writer_pretty(io::stdout(), &prover_input)?; + serde_json::to_writer_pretty(io::stdout(), &prover_input.blocks)?; Ok(()) } diff --git a/tools/artifacts/witness_b19240705.json b/tools/artifacts/witness_b19240705.json new file mode 100644 index 00000000..1422c84e --- /dev/null +++ b/tools/artifacts/witness_b19240705.json @@ -0,0 +1,1390 @@ +[ + { + "block_trace": { + "trie_pre_images": { + "combined": { + "compact": "0x01031664dbd4a27781c8d129bab370c7498db3f71ad38853cf1c9b54ed0aefdfbc87034d9119280e061867c595d7df73f20434265a3062cae79c005715414be8e0846703324e2ab34b184864cd4c923cff7ac3d9744e0405a88580f858f8999924cb0ff503a6b60e17c4c4601ba1af49e95cf74e90c136153a495b419eb9e05756ff3da0de03310252de1f39746fdf13fa8c97d847a102ba32b3d152730d9423048eccda50790368d497df1f682ffdd3ed4f4a82e250271ac7ae096bead2a17a6207929c610482032479a848475f822582422a97702ae252f39b10b48d669bcc4bc8abdd8b205043036606ddc5a70f0fcfe956030a35ae91a6b003259bfa774a6a2b018a1b8a270c5a03e9f9e21290bfcc332e2c940e6ac9a99dc5e940085314ce91ae5ba4fcbcdca80403681320aa56c59dbc6d76dd24f979fd8e6431d4a555579b03fbd8f4debb14d4940329a98aafd5b252a5cb6edf169e6da01f3131b73a61241b0e5a9974023f20bce303064373a92fbaa74c494b9bb3c09ed235d90ee175fbb2fce2f07cb0d7e6517e3d03e9dcebfbf76992b81a6b596f81f8280c7007539757190f61b4bf7691846952c1038c3e0ea786a08d9d4ff010c17dd80831350bdd04109bd2e5641b1102d0d201d703ce018171a52ff434a6fd849ca812ad5fb12ea24ab5d00e3e92fe4517243c13e1035cfc9421e276d124a62c46c72f2feb99d7f616fa25acd16cf597b7dc531a66ca0312e5a34c61ed89765cb41e1af31f58a2387b45d3d40976446390a53f4c2eb652030a63f2ca64bf32f0a365a1728cda44264fbeefe86d9be4eb6059406b8dfb7c1003d9b3278e5c61faaf09b6914d8626dfe663a88b8b4486219f0e784205c9962a5003078468a40a017c769b325c488872cb5be8a5716d891d0e9d05676b95034a4d7c03f58b271b1ab544c0329216099bc2ea100431a4fb64920eedebe971caa0a74804038931a7b3f1f35ac1e5d35d3c5fc3771bb9f91d77a26cb1d31f8b2f118c75d69003dacbd8664c534de3efc89b9f4320ab03ef2546fc335d79396b02922d12845476033de8ca51e8f5722f83aee0eaca24e08137c8fb72a174e3de4d64e3b828601541032b8de6bd8adf2f22f570b158e9e5a68342d21614eb496e3abfb1d39d4fa0c1a303af3f7c4a5d228f3bf81538c09d60e1ca847c8ff863da885a4d320566d898009d0331e6f9f849baa8f4d97907719237c7e1c465807efb84710d9ea1bfd1360a093903068210e24a700477fa40e242b1287c7405c7332aefcaf77e92fb87b63a104700030bfaac2d323eb6898db67737c27769c6cc5898346fff8f67f60009412c5acc6a03ae56aaf99e2b4171979478eb1f9a0caafe2e98292c6c1526b63910397217cd20031196de1dcd4a9e9ac5e1bf6ae9db3bda7ac39f41a31f90ea9aa985a5e0e23bab0338a3648fe43d0759c2545fbac374ab550f6155703a37f1216014f02c11614ccd05581e0333617c4920d035c85869829581a0a3a3dd9dadf122daad9c47fc2edf400c074771c0d792eca0cb05581e03154df0016effd23a529fe9dba19a32aa7838f956bbc8c9334f0666a5d0040405581e032b3ff3ba56b5c3d896d23ff067c9e26cad3f115e9283dce09e19a270c0040305581e03f158e6cd12159a3cf47403a789dc6c9e7e8c9a09b6da1e03f8e0979e400c0346afca8172ffa0038211f446ac23f136adb55c95b8eba937b16b12d9d32ee30eaca4059191e0207503da31270adeab5b50d0101caa8dd4e2326fae6a43562501680271f83f8fb34787037a3670f78c75958f13f8579474b348612a80af61fa9b61b2c81c415523f170590605581e035e4e75fffbb329e4ba7f1b98156fd87b98d7f9b60be56ac357673ff22007011bffffffffffffffff05581e033cc8f8c15d49a17ea4ffc954f9927f2ea565c8ca347927a41b994e7110040104595ca7608060405260043610610087575f3560e01c806375713a081161005757806375713a08146101215780638024c73a146101345780638129fc1c14610148578063e634edd31461015c578063fa461e331461016f575f80fd5b80630162e2d0146100925780631a12d67c146100a7578063547d00a2146100d45780636e20b1071461010e575f80fd5b3661008e57005b5f80fd5b6100a56100a03660046150df565b61018e565b005b6100ba6100b5366004615263565b61027b565b604080519283526020830191909152015b60405180910390f35b3480156100df575f80fd5b506100f36100ee366004615306565b6103db565b604080519384526020840192909252908201526060016100cb565b6100ba61011c366004615388565b610ac5565b6100a561012f36600461547b565b610bfb565b34801561013f575f80fd5b506100a56113a3565b348015610153575f80fd5b506100a561149c565b6100f361016a36600461552b565b6115c4565b34801561017a575f80fd5b506100a56101893660046155a8565b611c20565b81158061019a57508142145b6101bf5760405162461bcd60e51b81526004016101b690615620565b60405180910390fd5b5f898960028181106101d3576101d361564f565b90506020020135111561026157888860028181106101f3576101f361564f565b905060200201353410156102195760405162461bcd60e51b81526004016101b690615663565b416108fc8a8a60028181106102305761023061564f565b9050602002013590811502906040515f60405180830381858888f1935050505015801561025f573d5f803e3d5ffd5b505b61027089898989898887611f17565b505050505050505050565b5f8083158061028957508342145b6102a55760405162461bcd60e51b81526004016101b690615620565b8b156102f7578b3410156102cb5760405162461bcd60e51b81526004016101b690615663565b60405141908d156108fc02908e905f818181858888f193505050501580156102f5573d5f803e3d5ffd5b505b5f6040518061012001604052808b815260200189151581526020018e81526020018f60028151811061032b5761032b61564f565b60200260200101516001600160a01b031681526020015f6001600160a01b031681526020018881526020018a81526020018781526020018581525090506103728e826124f8565b9094509250508b158061038557508b8310155b6103a15760405162461bcd60e51b81526004016101b69061569a565b8a15806103ae57508a8311155b6103ca5760405162461bcd60e51b81526004016101b6906156c9565b509b509b9950505050505050505050565b5f805f80845f815181106103f1576103f161564f565b60209081029190910101516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561043f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046391906156f6565b90505f8a6064148061047357508a155b61049e575f8a1161049857610493606461048d848e613429565b9061345a565b6104a0565b896104a0565b815b90505f81116104e05760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f42414c414e434560a01b60448201526064016101b6565b866001815181106104f3576104f361564f565b60200260200101516001600160a01b03167368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316036106c4575f6040518061012001604052808d5f14801561054257505f8d115b61054c575f61054e565b8c5b81526020015f151581526020015f8152602001896002815181106105745761057461564f565b60200260200101516001600160a01b03168152602001895f8151811061059c5761059c61564f565b60200260200101516001600160a01b031681526020015f81526020018381526020015f81526020018b81525090505f60026001600160401b038111156105e4576105e461517b565b60405190808252806020026020018201604052801561060d578160200160208202803683370190505b509050875f815181106106225761062261564f565b6020026020010151815f8151811061063c5761063c61564f565b60200260200101906001600160a01b031690816001600160a01b0316815250508760018151811061066f5761066f61564f565b60200260200101518160018151811061068a5761068a61564f565b60200260200101906001600160a01b031690816001600160a01b0316815250506106b481836124f8565b9198509096509450610ab6915050565b8a1580156106d157505f8a115b15610745575f6106fd8b888a6001815181106106ef576106ef61564f565b60200260200101518c61346c565b905082815f815181106107125761071261564f565b602002602001015111156107265782610741565b805f815181106107385761073861564f565b60200260200101515b9150505b855f815181106107575761075761564f565b60200260200101516001600160a01b03166370a08231886002815181106107805761078061564f565b60200260200101516040518263ffffffff1660e01b81526004016107b391906001600160a01b0391909116815260200190565b602060405180830381865afa1580156107ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f291906156f6565b9450865f815181106108065761080661564f565b60200260200101516001600160a01b031663199f7260875f8151811061082e5761082e61564f565b6020026020010151338a60028151811061084a5761084a61564f565b6020026020010151856040518563ffffffff1660e01b8152600401610872949392919061570d565b5f604051808303815f87803b158015610889575f80fd5b505af115801561089b573d5f803e3d5ffd5b5050505084865f815181106108b2576108b261564f565b60200260200101516001600160a01b03166370a08231896002815181106108db576108db61564f565b60200260200101516040518263ffffffff1660e01b815260040161090e91906001600160a01b0391909116815260200190565b602060405180830381865afa158015610929573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094d91906156f6565b610957919061574b565b6040516370a0823160e01b81523060048201529095505f905f80516020615c52833981519152906370a0823190602401602060405180830381865afa1580156109a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c691906156f6565b90506109ed87308a6001815181106109e0576109e061564f565b60200260200101516135e0565b506040516370a0823160e01b81523060048201525f9082905f80516020615c52833981519152906370a0823190602401602060405180830381865afa158015610a38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5c91906156f6565b610a66919061574b565b90505f8111610aac5760405162461bcd60e51b81526020600482015260126024820152711393c81513d2d15394c8149150d15255915160721b60448201526064016101b6565b9194509092508390505b50505b96509650969350505050565b5f80831580610ad357508342145b610aef5760405162461bcd60e51b81526004016101b690615620565b8a15610b41578a341015610b155760405162461bcd60e51b81526004016101b690615663565b60405141908c156108fc02908d905f818181858888f19350505050158015610b3f573d5f803e3d5ffd5b505b5f6040518061012001604052808b815260200189151581526020018d81526020018e600281518110610b7557610b7561564f565b60200260200101516001600160a01b031681526020015f6001600160a01b031681526020018881526020018a8152602001878152602001858152509050610bbc8d826124f8565b9094509250508a1580610bcf57508a8310155b610beb5760405162461bcd60e51b81526004016101b69061569a565b509a509a98505050505050505050565b5f82600481518110610c0f57610c0f61564f565b6020026020010151118015610c3e575081600481518110610c3257610c3261564f565b60200260200101514214155b15610c97576040516001600160a01b038a1681527ff2e7574263ab25e854ccac210f6060de1cb000d665c40e21b3bcb80f2b4511bc9060200160405180910390a160405162461bcd60e51b81526004016101b690615620565b5f5f80516020615c528339815191526001600160a01b038a1614610cbc576003610cbf565b60025b60ff166001600160401b03811115610cd957610cd961517b565b604051908082528060200260200182016040528015610d02578160200160208202803683370190505b50905089815f81518110610d1857610d1861564f565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600181518110610d4c57610d4c61564f565b60200260200101906001600160a01b031690816001600160a01b0316815250508051600303610db7575f80516020615c5283398151915281600281518110610d9657610d9661564f565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516370a0823160e01b81523360048201525f906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610dfb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1f91906156f6565b90506001600160a01b0389167368b3465833fb72a70ecdf485e0e4c7bd8665fc45036110c3575f6040518061012001604052805f87600581518110610e6657610e6661564f565b602002602001015111610e79575f610e95565b86600581518110610e8c57610e8c61564f565b60200260200101515b81526020015f151581526020015f81526020018a6001600160a01b03168152602001876001600160a01b0316815260200186600181518110610ed957610ed961564f565b602002602001015181526020015f8a11610f4a57865f81518110610eff57610eff61564f565b6020026020010151606414610f44576064875f81518110610f2257610f2261564f565b602002602001015185610f35919061575e565b610f3f9190615789565b610f4c565b83610f4c565b895b815260200186600281518110610f6457610f6461564f565b602090810291909101810151825201859052604080516002808252606082019092529192505f91908160200160208202803683370190505090508c815f81518110610fb157610fb161564f565b60200260200101906001600160a01b031690816001600160a01b0316815250508b81600181518110610fe557610fe561564f565b60200260200101906001600160a01b031690816001600160a01b0316815250505f61101082846124f8565b509150507f522881958b3c4a6fc0840ad3b7fb947b881edc28c004245a62541647422ade978160405161104591815260200190565b60405180910390a15f8911801561105b57508881105b156110785760405162461bcd60e51b81526004016101b69061569a565b86516007036110bb57866006815181106110945761109461564f565b60200260200101518111156110bb5760405162461bcd60e51b81526004016101b6906156c9565b505050611396565b5f808811611177575f871161112f57845f815181106110e4576110e461564f565b6020026020010151606414611129576064855f815181106111075761110761564f565b60200260200101518361111a919061575e565b6111249190615789565b611179565b81611179565b61112461115888858d8960038151811061114b5761114b61564f565b602002602001015161346c565b5f815181106111695761116961564f565b602002602001015183613837565b875b9050856001600160a01b031663199f7260845f8151811061119c5761119c61564f565b6020026020010151338c856040518563ffffffff1660e01b81526004016111c6949392919061570d565b5f604051808303815f87803b1580156111dd575f80fd5b505af11580156111ef573d5f803e3d5ffd5b505050506111fe83308c6135e0565b506040516370a0823160e01b81523060048201525f905f80516020615c52833981519152906370a0823190602401602060405180830381865afa158015611247573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126b91906156f6565b90505f8811801561127b57508781105b156112985760405162461bcd60e51b81526004016101b69061569a565b85516007036112db57856006815181106112b4576112b461564f565b60200260200101518111156112db5760405162461bcd60e51b81526004016101b6906156c9565b801561133b57604051632e1a7d4d60e01b8152600481018290525f80516020615c5283398151915290632e1a7d4d906024015f604051808303815f87803b158015611324575f80fd5b505af1158015611336573d5f803e3d5ffd5b505050505b6113608186886002815181106113535761135361564f565b602002602001015161384c565b6040518181527f522881958b3c4a6fc0840ad3b7fb947b881edc28c004245a62541647422ade979060200160405180910390a150505b5050505050505050505050565b5f546001600160a01b031633146113e25760405162461bcd60e51b8152602060048201526003602482015262486d6d60e81b60448201526064016101b6565b5f6001541161142c5760405162461bcd60e51b8152602060048201526016602482015275139bc81199595cc810dd5c9c995b9d1b1e4813ddd95960521b60448201526064016101b6565b60015447101561147e5760405162461bcd60e51b815260206004820181905260248201527f4e6f7420456e6f7567682042616c616e636520546f20436f766572204665657360448201526064016101b6565b5f54600154611496916001600160a01b0316906138fd565b5f600155565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156114e05750825b90505f826001600160401b031660011480156114fb5750303b155b905081158015611509575080155b156115275760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561155157845460ff60401b1916600160401b1785555b5f80546001600160a01b0319167337aab97476ba8dc785476611006fd5dda4eed66b17905583156115bd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b5050505050565b5f80806001600160a01b0386167368b3465833fb72a70ecdf485e0e4c7bd8665fc4503611730576040805160028082526060820183525f9260208301908036833701905050905089815f8151811061161e5761161e61564f565b60200260200101906001600160a01b031690816001600160a01b03168152505088816001815181106116525761165261564f565b60200260200101906001600160a01b031690816001600160a01b0316815250505f604051806101200160405280875f815181106116915761169161564f565b602002602001015181526020016001151581526020015f81526020018a6001600160a01b031681526020015f6001600160a01b03168152602001876001815181106116de576116de61564f565b60200260200101518152602001348152602001876002815181106117045761170461564f565b6020026020010151815260200188815250905061172182826124f8565b90965094509250610ab9915050565b5f61174c611740876103e86157a8565b61048d346103e8613429565b90505f5f80516020615c528339815191526001600160a01b038b1614611773576003611776565b60025b60ff166001600160401b038111156117905761179061517b565b6040519080825280602002602001820160405280156117b9578160200160208202803683370190505b5090505f80516020615c52833981519152815f815181106117dc576117dc61564f565b6001600160a01b0392831660209182029290920101528b9082908c165f80516020615c5283398151915214611812576002611815565b60015b60ff16815181106118285761182861564f565b6001600160a01b0392831660209182029290920101528a165f80516020615c52833981519152146118885789816001815181106118675761186761564f565b60200260200101906001600160a01b031690816001600160a01b0316815250505b5f80875f8151811061189c5761189c61564f565b6020026020010151111561193a575f6118cf885f815181106118c0576118c061564f565b6020026020010151848c6139c7565b905083815f815181106118e4576118e461564f565b602002602001015111156118f85783611913565b805f8151811061190a5761190a61564f565b60200260200101515b945083815f815181106119285761192861564f565b6020026020010151111591505061193e565b8293505b61194984838b613b23565b60018351611957919061574b565b815181106119675761196761564f565b602002602001015194505f80516020615c528339815191526001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004015f604051808303818588803b1580156119b7575f80fd5b505af11580156119c9573d5f803e3d5ffd5b50505050505f80516020615c528339815191526001600160a01b031663a9059cbb611a288b855f81518110611a0057611a0061564f565b602002602001015186600181518110611a1b57611a1b61564f565b6020026020010151613c59565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018790526044016020604051808303815f875af1158015611a72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9691906157bb565b611aa257611aa26157d6565b6040516370a0823160e01b81523360048201525f906001600160a01b038e16906370a0823190602401602060405180830381865afa158015611ae6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0a91906156f6565b90508115611b4b575f611b37895f81518110611b2857611b2861564f565b6020026020010151858d6139c7565b9050611b458185338e614100565b50611b58565b611b5683338c6135e0565b505b6040516370a0823160e01b815233600482015281906001600160a01b038f16906370a0823190602401602060405180830381865afa158015611b9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc091906156f6565b611bca919061574b565b96505f8711611c105760405162461bcd60e51b81526020600482015260126024820152711393c81513d2d15394c8149150d15255915160721b60448201526064016101b6565b5050505096509650969350505050565b5f841380611c2d57505f83135b611c35575f80fd5b5f80808080611c46868801886157ea565b9550955095505094509450611cbb8585336001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb6919061585f565b614290565b6001600160a01b0316336001600160a01b031614611d0b5760405162461bcd60e51b815260206004820152600d60248201526c46616b652063616c6c6261636b60981b60448201526064016101b6565b5f805f8b13611d2f57866001600160a01b0316866001600160a01b0316108a611d46565b856001600160a01b0316876001600160a01b0316108b5b91509150828111611396578115611e33575f5f80516020615c528339815191526001600160a01b03891614611d7b5787611d8a565b5f80516020615c528339815191525b90506001600160a01b038616301480611db857505f80516020615c528339815191526001600160a01b038916145b15611dce57611dc981873385614354565b611e2d565b60405162ccfb9360e51b81526001600160a01b0386169063199f726090611dff9084908a903390889060040161570d565b5f604051808303815f87803b158015611e16575f80fd5b505af1158015611e28573d5f803e3d5ffd5b505050505b50611396565b5f5f80516020615c528339815191526001600160a01b03881614611e575786611e66565b5f80516020615c528339815191525b90506001600160a01b038616301480611e9457505f80516020615c528339815191526001600160a01b038816145b15611eaa57611ea581873385614354565b611f09565b60405162ccfb9360e51b81526001600160a01b0386169063199f726090611edb9084908a903390889060040161570d565b5f604051808303815f87803b158015611ef2575f80fd5b505af1158015611f04573d5f803e3d5ffd5b505050505b505050505050505050505050565b5f611f5f611f27836103e86157a8565b61048d6103e8611f598c8c6002818110611f4357611f4361564f565b905060200201353461448390919063ffffffff16565b90613429565b90505f8686611f6f60018261574b565b818110611f7e57611f7e61564f565b9050602002016020810190611f939190615881565b6040516370a0823160e01b81523360048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ffe91906156f6565b90505f808b8b5f8181106120145761201461564f565b905060200201351161204357604080516001808252818301909252906020808301908036833701905050612099565b6120998b8b5f8181106120585761205861564f565b905060200201358a8a808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508c92506139c7915050565b90505f808c8c5f8181106120af576120af61564f565b905060200201351180156120dc575084825f815181106120d1576120d161564f565b602002602001015111155b6120e65784612101565b815f815181106120f8576120f861564f565b60200260200101515b90505f80516020615c528339815191526001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612149575f80fd5b505af115801561215b573d5f803e3d5ffd5b50505050505f80516020615c528339815191526001600160a01b031663a9059cbb6121d48a8d8d5f8181106121925761219261564f565b90506020020160208101906121a79190615881565b8e8e60018181106121ba576121ba61564f565b90506020020160208101906121cf9190615881565b613c59565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af115801561221e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224291906157bb565b61224e5761224e6157d6565b5f8c8c5f8181106122615761226161564f565b9050602002013511801561228e575084825f815181106122835761228361564f565b602002602001015111155b156122d8576122d3828b8b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152503392508d91506141009050565b612336565b6123178a8a808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152503392508c91506135e09050565b825f815181106123295761232961564f565b6020026020010181815250505b6040516370a0823160e01b81523360048201526123a99084906001600160a01b038716906370a08231906024015b602060405180830381865afa15801561237f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a391906156f6565b90614483565b92505f8c8c60018181106123bf576123bf61564f565b905060200201351115612405578b8b60018181106123df576123df61564f565b905060200201358310156124055760405162461bcd60e51b81526004016101b69061569a565b60048b10612446578b8b60038181106124205761242061564f565b905060200201358311156124465760405162461bcd60e51b81526004016101b6906156c9565b61245181878961384c565b7f9f849d23f4955d98202378ea318f2b0c7533695d3c9fb2a3931f0f919fa8c42081845f8f8f5f8181106124875761248761564f565b90506020020135116124b257845f815181106124a5576124a561564f565b60200260200101516124cc565b8e8e5f8181106124c4576124c461564f565b905060200201355b6040805193845260208401929092529082015260600160405180910390a1505050505050505050505050565b5f805f806040518061010001604052808760018151811061251b5761251b61564f565b60200260200101516001600160a01b03168152602001875f815181106125435761254361564f565b60200260200101516001600160a01b03168152602001336001600160a01b03168152602001306001600160a01b0316815260200186608001516001600160a01b031681526020018660c0015181526020015f81526020016001151581525090505f47905085602001511561271757866001815181106125c4576125c461564f565b60200260200101516001600160a01b03165f80516020615c528339815191526001600160a01b03160361262e576126248661010001516103e861260791906157a8565b61048d6103e8611f598a604001513461448390919063ffffffff16565b60a083015261294c565b6126925f80516020615c52833981519152886001815181106126525761265261564f565b602002602001015161268d8961010001516103e861267091906157a8565b61048d6103e8611f598d604001513461448390919063ffffffff16565b61449c565b866001815181106126a5576126a561564f565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156126f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262491906156f6565b865f815181106127295761272961564f565b60209081029190910101516001600160a01b031682528651879060019081106127545761275461564f565b6020908102919091018101516001600160a01b0316908301523060408301523360608301525f60e0830181905287518891906127925761279261564f565b60209081029190910101516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156127e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280491906156f6565b60c08301528551158015906128525750866001815181106128275761282761564f565b60200260200101516001600160a01b03165f80516020615c528339815191526001600160a01b031614155b1561294c576040805160028082526060820183525f926020830190803683370190505090508760018151811061288a5761288a61564f565b6020026020010151815f815181106128a4576128a461564f565b60200260200101906001600160a01b031690816001600160a01b0316815250505f80516020615c52833981519152816001815181106128e5576128e561564f565b60200260200101906001600160a01b031690816001600160a01b0316815250505f612928885f015183737a250d5630b4cf539739df2c5dacb4c659f2488d6139c7565b9050805f8151811061293c5761293c61564f565b6020908102919091010151885250505b85515f9015612adf575f87606001516001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612996573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ba91906158b2565b50505050509150505f6129cc82614577565b90506001600160801b036001600160a01b03821611612a60575f6129f96001600160a01b0383168061575e565b905085602001516001600160a01b0316865f01516001600160a01b031610612a3c57612a37600160c01b8760a001516001600160801b031683614892565b612a58565b612a58818760a001516001600160801b0316600160c01b614892565b935050612adc565b5f612a796001600160a01b03831680600160401b614892565b905085602001516001600160a01b0316865f01516001600160a01b031610612abc57612ab7600160801b8760a001516001600160801b031683614892565b612ad8565b612ad8818760a001516001600160801b0316600160801b614892565b9350505b50505b86515f9015801590612af2575087518210155b15612d5357602084015160408086015190516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015612b45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6991906156f6565b90505f8089606001516001600160a01b031663128acb08876040015188602001516001600160a01b0316895f01516001600160a01b031610612bad8e5f015161493c565b612bb69061594a565b8a602001516001600160a01b03168b5f01516001600160a01b031610612bfa57612bf5600173fffd8963efd1fc6a506488495d951d5263988d26615964565b612c0a565b612c0a6401000276a3600161598b565b8b604051602001612c1b91906159ab565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612c4a959493929190615a64565b60408051808303815f875af1158015612c65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c899190615a9e565b9150915085602001516001600160a01b0316865f01516001600160a01b031610612cbc5780612cb78361594a565b612cc6565b81612cc68261594a565b60208801516040808a015190516370a0823160e01b81526001600160a01b039182166004820152929a50612d08935086929116906370a0823190602401612364565b92505f8311612d495760405162461bcd60e51b815260206004820152600d60248201526c1b9bc81d1bdad95b9cc81bdd5d609a1b60448201526064016101b6565b8297505050612f7b565b602084015160408086015190516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015612da1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dc591906156f6565b606089015160408601516020870151875160a08901519495505f9485946001600160a01b039081169463128acb089490939082169116109081612e2657612e21600173fffd8963efd1fc6a506488495d951d5263988d26615964565b612e36565b612e366401000276a3600161598b565b8b604051602001612e4791906159ab565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612e76959493929190615a64565b60408051808303815f875af1158015612e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eb59190615a9e565b9150915085602001516001600160a01b0316865f01516001600160a01b031610612ee85780612ee38361594a565b612ef2565b81612ef28261594a565b60208801516040808a015190516370a0823160e01b81526001600160a01b039182166004820152929a50612f34935086929116906370a0823190602401612364565b92505f8311612f755760405162461bcd60e51b815260206004820152600d60248201526c1b9bc81d1bdad95b9cc81bdd5d609a1b60448201526064016101b6565b82975050505b87602001516132015783602001516001600160a01b03165f80516020615c528339815191526001600160a01b0316146130405760208401516040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015612ff6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301a91906156f6565b9050801561303e5761303e85602001515f80516020615c528339815191528361449c565b505b6040516370a0823160e01b81523060048201525f905f80516020615c52833981519152906370a0823190602401602060405180830381865afa158015613088573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130ac91906156f6565b9050801561310e57604051632e1a7d4d60e01b8152600481018290525f80516020615c5283398151915290632e1a7d4d906024015f604051808303815f87803b1580156130f7575f80fd5b505af1158015613109573d5f803e3d5ffd5b505050505b613122818a61010001518b60e0015161384c565b8096506131b78a5f8151811061313a5761313a61564f565b60209081029190910101516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613188573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131ac91906156f6565b60c087015190614483565b60408051828152602081018a90529081018890529098507f9f849d23f4955d98202378ea318f2b0c7533695d3c9fb2a3931f0f919fa8c4209060600160405180910390a1506133de565b83516001600160a01b03165f80516020615c52833981519152146132ac5783516040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015613264573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061328891906156f6565b905080156132aa5784516132aa905f80516020615c528339815191528361449c565b505b6040516370a0823160e01b81523060048201525f905f80516020615c52833981519152906370a0823190602401602060405180830381865afa1580156132f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061331891906156f6565b9050801561337a57604051632e1a7d4d60e01b8152600481018290525f80516020615c5283398151915290632e1a7d4d906024015f604051808303815f87803b158015613363575f80fd5b505af1158015613375573d5f803e3d5ffd5b505050505b613384478561574b565b60408051828152602081018a90529081018890529098507f9f849d23f4955d98202378ea318f2b0c7533695d3c9fb2a3931f0f919fa8c4209060600160405180910390a16133dc888a61010001518b60e0015161384c565b505b5f871161341e5760405162461bcd60e51b815260206004820152600e60248201526d1b9bc81b5bdb995e481cdc195b9d60921b60448201526064016101b6565b505050509250925092565b5f82158061344c5750818361343e828261575e565b925061344a9083615789565b145b613454575f80fd5b92915050565b5f6134658284615789565b9392505050565b60606002845110156134905760405162461bcd60e51b81526004016101b690615ac0565b83516001600160401b038111156134a9576134a961517b565b6040519080825280602002602001820160405280156134d2578160200160208202803683370190505b5090508481600183516134e5919061574b565b815181106134f5576134f561564f565b6020026020010181815250505f60018551613510919061574b565b90505b80156135d7575f806135628761352a60018661574b565b8151811061353a5761353a61564f565b60200260200101518885815181106135545761355461564f565b6020026020010151886149a9565b9150915061359a84848151811061357b5761357b61564f565b602002602001015183838987600114613594575f614a6e565b89614a6e565b846135a660018661574b565b815181106135b6576135b661564f565b602002602001018181525050505080806135cf90615ae6565b915050613513565b50949350505050565b5f805b600185516135f1919061574b565b81101561382f575f8086838151811061360c5761360c61564f565b60200260200101518784600161362291906157a8565b815181106136325761363261564f565b6020026020010151915091505f6136498383614baf565b5090505f613658878585613c59565b90505f805f836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613699573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136bd9190615b11565b506001600160701b031691506001600160701b031691505f80866001600160a01b0316896001600160a01b0316146136f65782846136f9565b83835b6040516370a0823160e01b81526001600160a01b038981166004830152929450909250613734918491908c16906370a0823190602401612364565b94506137428583838f614bdf565b9a50505050505f80846001600160a01b0316876001600160a01b03161461376a57885f61376d565b5f895b915091505f60028d51613780919061574b565b891061378c578b6137ad565b6137ad8b888f61379d8d60026157a8565b81518110611a1b57611a1b61564f565b604080515f8152602081019182905263022c0d9f60e01b9091529091506001600160a01b0386169063022c0d9f906137ee9086908690869060248101615b5d565b5f604051808303815f87803b158015613805575f80fd5b505af1158015613817573d5f803e3d5ffd5b50506001909a0199506135e398505050505050505050565b509392505050565b5f8183106138455781613465565b5090919050565b5f61385d6103e861048d8686613429565b90505f61387f61387883600154614cfe90919063ffffffff16565b4790614483565b905080156138aa57600a8110156138a05761389a8282614cfe565b506138aa565b6138aa33826138fd565b6001546138b79083614cfe565b600155604080518381523360208201529081018490527f72015ace03712f361249380657b3d40777dd8f8a686664cab48afd9dbbe4499f906060016115b4565b50505050565b604080515f808252602082019092526001600160a01b0384169083906040516139269190615b93565b5f6040518083038185875af1925050503d805f8114613960576040519150601f19603f3d011682016040523d82523d5f602084013e613965565b606091505b50509050806139c25760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b60648201526084016101b6565b505050565b60606002835110156139eb5760405162461bcd60e51b81526004016101b690615ac0565b82516001600160401b03811115613a0457613a0461517b565b604051908082528060200260200182016040528015613a2d578160200160208202803683370190505b509050838160018351613a40919061574b565b81518110613a5057613a5061564f565b6020026020010181815250505f60018451613a6b919061574b565b90505b801561382f575f80613abd86613a8560018661574b565b81518110613a9557613a9561564f565b6020026020010151878581518110613aaf57613aaf61564f565b6020026020010151876149a9565b91509150613ae6848481518110613ad657613ad661564f565b6020026020010151838388614d17565b84613af260018661574b565b81518110613b0257613b0261564f565b60200260200101818152505050508080613b1b90615ae6565b915050613a6e565b6060600283511015613b475760405162461bcd60e51b81526004016101b690615ac0565b82516001600160401b03811115613b6057613b6061517b565b604051908082528060200260200182016040528015613b89578160200160208202803683370190505b50905083815f81518110613b9f57613b9f61564f565b6020026020010181815250505f5b60018451613bbb919061574b565b81101561382f575f80613bff868481518110613bd957613bd961564f565b602002602001015187856001613bef91906157a8565b81518110613aaf57613aaf61564f565b91509150613c28848481518110613c1857613c1861564f565b6020026020010151838388614bdf565b84613c348560016157a8565b81518110613c4457613c4461564f565b60209081029190910101525050600101613bad565b5f805f613c668585614baf565b90925090506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d03613d4957735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8282604051602001613cb7929190615bae565b60405160208183030381529060405280519060200120604051602001613d2a9291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604051602081830303815290604052805190602001205f1c92506140f7565b6001600160a01b0386167368b3465833fb72a70ecdf485e0e4c7bd8665fc4503613dbc57731f98431c8ad98523631ae4a59f267346ea31f9848282604051602001613d95929190615bae565b60405160208183030381529060405280519060200120604051602001613d2a929190615bd0565b6001600160a01b03861673d9e1ce17f2641f24ae83637ab66a2cca9c378b9f03613e7b5773c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac8282604051602001613e08929190615bae565b60405160208183030381529060405280519060200120604051602001613d2a9291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527fe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303603582015260550190565b6001600160a01b03861673eff92a263d31888d860bd50809a8d171709b7b1c03613f3a57731097053fd2ea711dad45caccc45eff7548fcb3628282604051602001613ec7929190615bae565b60405160208183030381529060405280519060200120604051602001613d2a9291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f57224589c67f3f30a6b0d7a1b54cf3153ab84563bc609ef41dfb34f8b2974d2d603582015260550190565b6001600160a01b0386167303f7724180aa6b939894b5ca4314783b0b36b32903613ff95773115934131916c8b277dd010ee02de363c09d037c8282604051602001613f86929190615bae565b60405160208183030381529060405280519060200120604051602001613d2a9291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f65d1a3b1e46c6e4f1be1ad5f99ef14dc488ae0549dc97db9b30afe2241ce1c7a603582015260550190565b6001600160a01b038616730c17e776cd218252adfca8d4e761d3fe757e9778036140b8577335113a300ca0d7621374890abfeac30e88f214b18282604051602001614045929190615bae565b60405160208183030381529060405280519060200120604051602001613d2a9291906001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f49d9acd3e20042617be7e378294c731749bc579b09dfd560cd3357445ce0b9e9603582015260550190565b60405162461bcd60e51b8152602060048201526014602482015273149bdd5d195c881b9bdd081cdd5c1c1bdc9d195960621b60448201526064016101b6565b50509392505050565b5f5b60018451614110919061574b565b8110156115bd575f8085838151811061412b5761412b61564f565b60200260200101518684600161414191906157a8565b815181106141515761415161564f565b6020026020010151915091505f6141688383614baf565b5090505f886141788660016157a8565b815181106141885761418861564f565b602002602001015190505f80836001600160a01b0316866001600160a01b0316146141b457825f6141b7565b5f835b915091505f60028b516141ca919061574b565b88106141d657896141e7565b6141e789878d61379d8c60026157a8565b90506141f4898888613c59565b6001600160a01b031663022c0d9f8484845f6040519080825280601f01601f191660200182016040528015614230576020820181803683370190505b506040518563ffffffff1660e01b81526004016142509493929190615b5d565b5f604051808303815f87803b158015614267575f80fd5b505af1158015614279573d5f803e3d5ffd5b505060019099019850614102975050505050505050565b5f826001600160a01b0316846001600160a01b031611156142af579192915b826001600160a01b0316846001600160a01b0316106142cc575f80fd5b604080516001600160a01b03808716602083015285169181019190915262ffffff83166060820152731f98431c8ad98523631ae4a59f267346ea31f9849060800160405160208183030381529060405280519060200120604051602001614334929190615bd0565b60408051601f198184030181529190528051602090910120949350505050565b804710614457576001600160a01b0384165f80516020615c5283398151915203614457575f80516020615c528339815191526001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156143be575f80fd5b505af11580156143d0573d5f803e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b0386166004820152602481018590525f80516020615c52833981519152935063a9059cbb925060440190506020604051808303815f875af115801561442d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061445191906157bb565b506138f7565b306001600160a01b0384160361447757614472848383614e47565b6138f7565b6138f784848484614f56565b5f8261448f838261574b565b9150811115613454575f80fd5b6040805160028082526060820183525f9260208301908036833701905050905083815f815181106144cf576144cf61564f565b60200260200101906001600160a01b031690816001600160a01b03168152505082816001815181106145035761450361564f565b60200260200101906001600160a01b031690816001600160a01b0316815250506145588430614552737a250d5630b4cf539739df2c5dacb4c659f2488d855f81518110611a0057611a0061564f565b85614354565b6115bd8130737a250d5630b4cf539739df2c5dacb4c659f2488d6135e0565b5f805f8360020b1261458c578260020b614593565b8260020b5f035b9050620d89e88111156145b9576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f036145ce57600160801b6145e0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615614614576ffff97272373d413259a46990580e213a0260801c5b6004821615614633576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614652576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614671576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614690576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156146af576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156146ce576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156146ee576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561470e576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561472e576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561474e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561476e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561478e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156147ae576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156147ce576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156147ef576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561480f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561482e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561484b576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561486a57805f198161486657614866615775565b0490505b64010000000081061561487e576001614880565b5f5b60ff16602082901c0192505050919050565b5f80805f19858709858702925082811083820303915050805f036148c6575f84116148bb575f80fd5b508290049050613465565b8084116148d1575f80fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f6001600160ff1b038211156149a55760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101b6565b5090565b5f805f6149b68686614baf565b5090505f806149c6868989613c59565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015614a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a259190615b11565b506001600160701b031691506001600160701b03169150826001600160a01b0316886001600160a01b031614614a5c578082614a5f565b81815b90999098509650505050505050565b5f808611614abe5760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e5400000000000060448201526064016101b6565b5f85118015614acc57505f84115b614ae85760405162461bcd60e51b81526004016101b690615c21565b5f614af9612710611f59888a613429565b90507310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0385161480614b42575073eff92a263d31888d860bd50809a8d171709b7b1c6001600160a01b038516145b15614b80575f614b61614b57856126f761574b565b611f59888b614483565b9050614b786001614b728385615789565b90614cfe565b925050614ba5565b5f614b90614b57856126f261574b565b9050614ba16001614b728385615789565b9250505b5095945050505050565b5f80826001600160a01b0316846001600160a01b031610614bd1578284614bd4565b83835b909590945092505050565b5f808511614c2f5760405162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e540000000000000060448201526064016101b6565b5f84118015614c3d57505f83115b614c595760405162461bcd60e51b81526004016101b690615c21565b5f7310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0384161480614ca1575073eff92a263d31888d860bd50809a8d171709b7b1c6001600160a01b038416145b15614cb957614cb2866126f7613429565b9050614cc8565b614cc5866126f2613429565b90505b5f614cd38286613429565b90505f614ce683614b7289612710613429565b9050614cf28183615789565b98975050505050505050565b5f82614d0a83826157a8565b9150811015613454575f80fd5b5f808511614d675760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e5400000000000060448201526064016101b6565b5f84118015614d7557505f83115b614d915760405162461bcd60e51b81526004016101b690615c21565b5f614da2612710611f598789613429565b90507310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0384161480614deb575073eff92a263d31888d860bd50809a8d171709b7b1c6001600160a01b038416145b15614e1a575f614e016126f7611f59878a614483565b9050614e126001614b728385615789565b9250506135d7565b5f614e2b6126f2611f59878a614483565b9050614e3c6001614b728385615789565b979650505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691614ea29190615b93565b5f604051808303815f865af19150503d805f8114614edb576040519150601f19603f3d011682016040523d82523d5f602084013e614ee0565b606091505b5091509150818015614f0a575080511580614f0a575080806020019051810190614f0a91906157bb565b6115bd5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016101b6565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291515f92839290881691614fb99190615b93565b5f604051808303815f865af19150503d805f8114614ff2576040519150601f19603f3d011682016040523d82523d5f602084013e614ff7565b606091505b509150915081801561502157508051158061502157508080602001905181019061502191906157bb565b6150795760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b60648201526084016101b6565b505050505050565b5f8083601f840112615091575f80fd5b5081356001600160401b038111156150a7575f80fd5b6020830191508360208260051b85010111156150c1575f80fd5b9250929050565b6001600160a01b03811681146150dc575f80fd5b50565b5f805f805f805f805f60e08a8c0312156150f7575f80fd5b89356001600160401b038082111561510d575f80fd5b6151198d838e01615081565b909b50995060208c0135915080821115615131575f80fd5b5061513e8c828d01615081565b90985096505060408a0135615152816150c8565b989b979a5095989497966060860135965060808601359560a0810135955060c001359350915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156151b7576151b761517b565b604052919050565b5f6001600160401b038211156151d7576151d761517b565b5060051b60200190565b5f82601f8301126151f0575f80fd5b81356020615205615200836151bf565b61518f565b8083825260208201915060208460051b870101935086841115615226575f80fd5b602086015b8481101561524b57803561523e816150c8565b835291830191830161522b565b509695505050505050565b80151581146150dc575f80fd5b5f805f805f805f805f805f6101608c8e03121561527e575f80fd5b8b356001600160401b03811115615293575f80fd5b61529f8e828f016151e1565b9b505060208c0135995060408c0135985060608c0135975060808c0135965060a08c0135955060c08c01356152d381615256565b8095505060e08c013593506101008c013592506101208c013591506101408c013590509295989b509295989b9093969950565b5f805f805f8060c0878903121561531b575f80fd5b8635955060208701359450604087013593506060870135925060808701356001600160401b038082111561534d575f80fd5b6153598a838b016151e1565b935060a089013591508082111561536e575f80fd5b5061537b89828a016151e1565b9150509295509295509295565b5f805f805f805f805f806101408b8d0312156153a2575f80fd5b8a356001600160401b038111156153b7575f80fd5b6153c38d828e016151e1565b9a505060208b0135985060408b0135975060608b0135965060808b0135955060a08b01356153f081615256565b999c989b5096999598949794965050505060c08301359260e08101359261010082013592506101209091013590565b5f82601f83011261542e575f80fd5b8135602061543e615200836151bf565b8083825260208201915060208460051b87010193508684111561545f575f80fd5b602086015b8481101561524b5780358352918301918301615464565b5f805f805f805f805f6101208a8c031215615494575f80fd5b893561549f816150c8565b985060208a01356154af816150c8565b975060408a01356154bf816150c8565b965060608a01356154cf816150c8565b955060808a0135945060a08a0135935060c08a01356154ed816150c8565b925060e08a01356001600160401b03811115615507575f80fd5b6155138c828d0161541f565b9250506101008a013590509295985092959850929598565b5f805f805f8060c08789031215615540575f80fd5b863561554b816150c8565b9550602087013561555b816150c8565b9450604087013561556b816150c8565b9350606087013561557b816150c8565b92506080870135915060a08701356001600160401b0381111561559c575f80fd5b61537b89828a0161541f565b5f805f80606085870312156155bb575f80fd5b843593506020850135925060408501356001600160401b03808211156155df575f80fd5b818701915087601f8301126155f2575f80fd5b813581811115615600575f80fd5b886020828501011115615611575f80fd5b95989497505060200194505050565b60208082526015908201527410da185a5b8814994b5bdc99c819195d1958dd1959605a1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b6020808252601c908201527f4e6f7420656e6f7567682045544820666f72206d696e65722074697000000000604082015260600190565b602080825260159082015274139bdd08195b9bdd59da081d1bdad95b9cc81bdd5d605a1b604082015260600190565b602080825260139082015272151bdbc81b585b9e481d1bdad95b9cc81bdd5d606a1b604082015260600190565b5f60208284031215615706575f80fd5b5051919050565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561345457613454615737565b808202811582820484141761345457613454615737565b634e487b7160e01b5f52601260045260245ffd5b5f826157a357634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561345457613454615737565b5f602082840312156157cb575f80fd5b815161346581615256565b634e487b7160e01b5f52600160045260245ffd5b5f805f805f8060c087890312156157ff575f80fd5b863561580a816150c8565b9550602087013561581a816150c8565b9450604087013561582a816150c8565b9350606087013561583a816150c8565b9250608087013561584a816150c8565b8092505060a087013590509295509295509295565b5f6020828403121561586f575f80fd5b815162ffffff81168114613465575f80fd5b5f60208284031215615891575f80fd5b8135613465816150c8565b805161ffff811681146158ad575f80fd5b919050565b5f805f805f805f60e0888a0312156158c8575f80fd5b87516158d3816150c8565b8097505060208801518060020b81146158ea575f80fd5b95506158f86040890161589c565b94506159066060890161589c565b93506159146080890161589c565b925060a088015160ff81168114615929575f80fd5b60c089015190925061593a81615256565b8091505092959891949750929550565b5f600160ff1b820161595e5761595e615737565b505f0390565b6001600160a01b0382811682821603908082111561598457615984615737565b5092915050565b6001600160a01b0381811683821601908082111561598457615984615737565b5f6101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401525060a083015160a083015260c083015160c083015260e0830151151560e083015292915050565b5f5b83811015615a31578181015183820152602001615a19565b50505f910152565b5f8151808452615a50816020860160208601615a17565b601f01601f19169290920160200192915050565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190525f90614e3c90830184615a39565b5f8060408385031215615aaf575f80fd5b505080516020909101519092909150565b6020808252600c908201526b0929cac82989288bea082a8960a31b604082015260600190565b5f81615af457615af4615737565b505f190190565b80516001600160701b03811681146158ad575f80fd5b5f805f60608486031215615b23575f80fd5b615b2c84615afb565b9250615b3a60208501615afb565b9150604084015163ffffffff81168114615b52575f80fd5b809150509250925092565b84815283602082015260018060a01b0383166040820152608060608201525f615b896080830184615a39565b9695505050505050565b5f8251615ba4818460208701615a17565b9190910192915050565b6001600160601b0319606093841b811682529190921b16601482015260280190565b6001600160f81b0319815260609290921b6001600160601b031916600183015260158201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54603582015260550190565b602080825260169082015275494e53554646494349454e545f4c495155494449545960501b60408201526060019056fe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2a2646970667358221220743c8892851ac9b13e466532e3ac230413800df85301b7404b7ea95484eb2c4a64736f6c634300081700330605581e03ae88d60ce5722ba4d45bad2212f1c19dbc045e025144e80b926be7b3400701195ca705581e035f517349c69668843e7b5ebd815ad1205dadeede0831b55f80a5552820040103f693203bcd1962bbac5a3c4d08f7db978e02899ebd2f3a41f5be1702dd265e3f0219fd4d036cf48af9ce5bbf5d3c4d8679a22d6dc4ce50f2460e589be9b4eef3c3b296ac09034c387cc134b025bc72580db4a32e6f93eb6cff1f632cc031116863918672ea6d03aec6040e90b5e1939362f47cfe1b75fc6afc77ed285efbf31d37f66c8c73c8390366dd5a8943fa2e34afdd38a7e29f9b5a260c6aa866bef41848cc9e846278fd0803ec8dcfeb7af17e68816e778c606f011814c881a7ca0420db53979a560445b66003e8658b485991901a3388ac76de1a80ab3c3fe1cef9b781995ceb1e554138717103f274ba96d638a0f12fb0ece331da8b8bfbebde904e8c235ac7a6587a1e8ce1d60219ffff03f1da45c57c01d4f8bc8bd6c9bc6393e84372cfe0f58d59c4d89d45eb6384462203346b8a0a99c4ba441015c58299e81089a9b802b1255390b29c412ca1a12bb86503c55cc21f1e0b7ed64a4d3242270c11fd47d3f4a1cfde25e9687aed1f3d3fb7ad03eb45196994cb6827f64c63e12ae4c35fa30847adc8dac3dfd0d17444cb7e27460219ffff033ea37b4bc18ff0c8c1d4c6eba7ac89a5659ece6afa749617199d93dac0e57f8b031167476f34c04d2d2a1d063e633a9b976d734c6ce3b9aa78f54d772292cb7880036668221048b112a7543000f8295428ea4c6019668dbafa097054fbd35cf538ce03942446c6cf3bb9d492e6fe0d48eb500f03e6347f5da3842de17263cf1786166003d56e88c6f6a7ca937626c16d6bb9df0f72b871c9872a1f86cf5cc744565bfc3b030d933a399cb276af17886a28cbbae9d28561cbc70caf5e03adef1cf434ba86ea030b64ffeb2d73c8658b2f32d23c27c41434b84546c37f6c333fe83c489f052c2d0219ffff032a920fcec7ad7eaf3da21f74afd3eca01ba7ab3c5a978e777300a274a3bd1d2203dc21ea4894a17cb8f0a9e5c0c204c99080059cc2682e8a14c444dd7a53b5023903637df4de77435671cf15bd74dd44977f729aa956a2adef9d6f6f4156d5ba3de1037a1372027f775e5e20feb3b5c6ac3fc3a2d5bd7d4d3301a6797cdb6be9a6492203eadee423ae6a30aa34bf0d837a5ce95fda44aa80c8b092bbe9f78ce0b7241705034470d70e1a9f2a34078454b6ed0a60322dff81f416debb9d2bce3670c3af37800342befbc08e9fd98ae09d083baa646724cb427d58a8d03f5583fd1b8e0b7d254d03b113c8b01d890dc8a4069c34ad779b103a00cb8de02f240db781e00929d71b97033cb0316ffc5cdd9a69b57a3507b6b2420cb74d71b5ad7467a2d8d843d6c5062103a1b4328a38cfac9268faf280fc98bd0c0fa8574f07a1a3afa490d682916a974c03f3fcc742e1ba3a075b94ee89e3326a8ce7b25ee755b744797e27bc0cfa5ef17b03fd0284aaf80f26a314d965f927714102c04737bdd23701a3906de4bfe4de4fd203bb7673f584d9e797bd06344fafec5905507ee8baeb7ad66ce4ae49f37a3e0dd10372d59d1bb5ba502a8310d2a626d6b813ca380433f5419b3d2e734e39a565709d0354ac6fbf7b3633a66737869de6ecaec8f628d1831094be91c6f9951c2f1bf6c10219ffff03735679cda2399ba770a95ba2eec939f077a2a138ef29a62ec1f7f85be02c8b3d03e71d683987c8bab462f584bf46080780650fa506702756b021604a486311cc2d03665dba8379d0e8bbaa1e07b2397e57bbc17314dfbfb3782101be57aaae200ba803018d7267d3a0a8c6070f79f8c42468dc69f6c4899ac7c809bd356a3456c767f60309c52341c2ea613092fd07fe860b6ed3835e54d7c983ea3e8629f4730f2ab01f03393a490158ae5ca743df92d5668aa63a7576c7a8184d8fe26593df8295266c5f03e7c4611ca114168df06cf1807e024d84187bddc5143c5253a1a35acb628d9a4703ecc762b2f0b4ba9b9f2c7f8b0ca3a90ec70a8ec6d80f97202c3e6bd9f1564bb3031b5eca64c3a92e360845c85fe17279d0b81f22da61902bc43d24814ce40f63480399819b79aa9f27c6fd6ae6e2ccfb5872420ba00bad60ee8ff4618422c65011b70219ffff035c72a5b8df6d140b2375c72cac1c4e7881e210d87fe2c87730eb741a17a77d7303905928e185f123232c8c7261b02971dab40ed8e82da5c7a6b15391d3f069403c030bd78f252075f21349d67e3327473579bde5d2acc634ab78a91e79b646746e080399a32d53de3b2f35d769d5b1c4dc76301ed21ce83465e20110fff41ae5b9a8f6032e21e312e91ad7e9d49fe1ba481bfdf70c1fbb49fa03e9d8ce4a82e3c4b5c7b30341a81b27db19ddb1213831bb5cd6b590cf695f321c550f41d455f1b34c199c7a031d66064ee221ce4b3203bbdc0aabd875e2c4fdb789b5f5a61ab0750e3b959194034990e84322e8a1f997bc3b4808f72fee14a893b0c829322f28eecbc0b8ad638c03cf4568c6936b516d41400e0e11cc45d9b0f81a5493080b766305f9aa5959c01103454e866cd0ab911708b1c91e64ad2b97db195f1fe54bf745590b54218f89638e03f1d5ff12623b88e84b2add4e2db8bc622ee888fcc7b185f2581afd8029fe78d5030ce8f42b55e2ea45b52bb0bd7e05d11fb2e1ea1519a05eacf20854cba023f533038f9737d46f65365b46069f3fc22802377e9b61a4872d49e6e00e184d85d16fb0034b19b564ee45e9185490014a4ee16b43dc439d9015426e17fd50e92bf5e866640310ddce46903b3b0b8189d497261fea503471caf88643f4e1f726d880efbbbfaa03965da42acbedae7c965766b94a0193058f482c35ef57423bd68615af8d4b57f10375bd09ae24f56000053686e9f3a867bc53a495d6be7d3ff56ee234cf92192a0303e46f4db1633764b2a6077603a107cb73009d73a677ce7fde14f22a31b9c646fb03b8f7efd3098f280d4c17614060db426eb788d6ea49924918d4225394c83d8cd1034d0daae0cd47b570caf372cc2cfd7fbf5e71b9df1564991394bb9edb7114864503e9cb8c0e0d19329b5e232da4daa112c63da5b4f74859b35797fabc776fa5a3450305cdd717d655902fc921df296e863a7f4000962d18e79bf5bbb5009e1385bab00335ab2dcea26a7a1dea24c18d7dff4b4239977fc6fcd7cbe0e9dd047323a745ca03203db6f69a8ee4c323ed8056da115dc9da6558b3300be2512a9f58d234e50c7403eeeb77529480b032b76ab3271179724ffc4520917fa8950ec9f974a60e3f7ff803a25192e64f727de2f50934985afbee7ac7effba582ab669b12157d3e494fcc45037bedb346c6de914b136ac09c6877c0820b689567f23dcfd7f2ce2a8a4520ff8603908d912c1b509820efe4607bef4463c0347b5d4cda2a4cdbafa3a88c959c624703688354a1e85a8a186ae6e881f2c1c83c7f99470b4ea8ce301074d89660cafd35037efd37571911580076cea911cddbf4d16a6b475a3e37ea084e717ffc04fe6add032031ac15c31e6b72f2561e974bdaace2b18f5ac67db7bf328f567767627d8cce0356ee30f29377dd0bf2c83d72bf759d3a63246fa90e03f65c864bd13e5cf25ee403f55981fb71e58799afe2fd5fb907dc0d0b24052ad552b770f3310b7ddc12f27703a0854707ecc0abdb75020ed2dce429e1786054a44f832bc59a13ab802f7cc925035fdb5b525336196e741576eeec7f4d7aa5bf1ce2d3d248768327ac5e107feaf903cc0ef8701b1ee3e5f8fb5156a8a6a6997f1314ade00b95aad0e57eb8225d98cf038648170679b8fca45120e6350eff29915ca1711a7116ec3fb2869efb3c63ee43034575afeab279534e8792828438ed135a56c875c09d0b3fea7f99840e8bb1a81905581e03861256bc430a7d76c124258551957f339ba0edbd3f4d5b692b5f7cce400c02467a6a2b5f02e805581e03f3875dcbc5783835dc6682d990c44e394b1a1d0d2f3a56a74d8f66496008480de23ca122bec40005581e032625892a32fd2ada575bde80f2dca9e28dfaf0b6feac08e7eb4d8af560040205581e03d569b8e0dfdd1b88f1e60d86ee1f7a8e6f838188564bc8a3b88c1514b0040405581e03786fe573a7611f61fc6214e2be41183b47551bd0c11383d07accd3f1a0084801b10bcae6d91600021919b10390572b0396a1f40ae9189362c57f73dce6d7368ed7d5468bf5f0b0af06bd787303fb5dc0ee7dcf373c536d7113bdb20a5312a30eb9f754d823e856f3f83fa125e503e22712db2102e3ca381e7f1fd521303d75c5f8bdf7d8e99ca9b6240e6f92bdf10219ffff0312ef95182a010f63c037bc5ef6c1edada9ce415b134a6e1adf350854e08cf4a3035e778f7669a42ae82a352f9af4f3b41c101d9eb6a27f339c0f1a9b7acc9852b2039337a9c3bc9ae2e76e91384c31736fdc26a8557c92afebd1938815d4b51978d003291bc35c5bb11dcf7f97da1c2ed0625620f750c27d0aac5ef22fec7634e8b54f0334ef646a608eec2d1d5057624beeb9aa262505160668fe557a5a4b6df8b9096203b14e559e722bac627754c0107c5b18cb8c5d8ef214421c8e1762c220c605329303ae9da8b9fb939d833a55f89cf9a6e64748de6bebb56c01fd1c3a1c26c13fa0b6038c3ba669eea4e60b096bb6062599855d3314d12a8e3b06533eefb5328e78ad130219ffff03226bc07a7cc8aea352cce49b4fd39d020684a1271c88be3aa3b03bab878fd051030586962dfc97fbe066a567d0b1388c20fcd6337fcb275db5db78050405b6d20f0328ba3d28d19bd8c0f0f0016d42133f16a6075c756b9f62712fa7e79a9d1695b103b8f8c6fa9ffaac2de69ddf9f6fe4944eca4eb330b9151a1bc3f69f15e8c0e5d10357fc85c0d5a5a5dacec8e7f7162c24cfe2baabf5c3d07f530e3cea6cd1ac1dd4039a9c45ef912d6d4c03246e84e1c19af508e2613ce61678303ad70e26f5408bf70219ffff0318d43e2a6b470b6a7435f4eae4d7819fa1f66e867c8a27a5442ee98c23e52a34038bda7b4f790cb7ff1861b19407f79b4b52e83ccd012cd9dec73a2f2097296d12037ece001af6626b48e63a0f5d1edb4f64d7ea556694c1151c25b9d3ceea8a04280369782b3fa9c58bfb9c7347c48069ab8063561113c776cabd179e41e2350f84ba039baf46cf56af0ef9d31f77aa778a93c2a131fb0e5b885a634f3c0cef7e2fd4ee036b97b4060da3b1e5c8b785165f2cb0e5bfd0430fbf0548ef3dae6b7aeba297bf032f71b5ce39aed3b63f4f0f089e5e21d227201b8b3a76bd06d34d8407219b7f6503ccec62ee6f67f930afcc0e9996e173589568eb54355b2a3e6ad18a36d5ce7755032276e5c6be2b8fd4327e0b405978eeeb081407fe81c59d3366a4818dab32e78503bcf7e9ca72eea0ba7eea71e7fa426a6e15dbfc4b845ca9f5311147c42c3dd81a03cde19ed13118ec034326156a535603fe3f69b6b50c54357aaf78cd9afffc932e031d03a9ece069167f8b41b18f2c94b4476c0b4529e7287990c98731645acc81680219ffff035c3f99bfb5712981c5a688b2da16749515f3f6ded477e364339b1e147de8f430035769eff213dbda1566c2943184fb815471d65b72c791eede6ad5b703ee634592031ff500b18ef3c07715f78824498a3c0737dc44bb995946f82b41a629159f1b6f0319bdabb5dea19cff6fde5587cd28bcd72ee5e4170ba24070f6a6002fdf731fa503f16b14175705ddb439a255c2c2803be1b25fdb87ae95216bcb7a610e9a9063360324394503bc7bab04c3ae1141256777ecfc42465d006ce4c09bf8ae3a0505fdec03fa0c79c692ca546e2bca4050d15dfb6fed2451e19ace6c8a45c256307152122403e9a87d7f00d36247214bac5ac23668bad58d0e703689a626311795ea662a8f0903d4d1eb3aa092873dfb631e9c717f85690d1cfe18f4f95b815fa1a034745b82fb0331f798882485ca8f70026b07efdfdfbc8a321ac2fef536a2e3d7a13fb2874cf603b222d031faf18b2125cfb48cd5b35bb5b07396f645d123f4e6d29ef8c3b364e80324bbfed77e3bf4d94330e8e7afd5f2f8415bef1985dcc285df500f1fdc7ca2ff03f4073a7a3f0aad3360bfa09da2901733b15821c3e6dc429c201067c58ff96994032c8ad7cb79bf584d41811b65276d3fffda3c3bbf8821db50ce3712de762c2dee03d46133d041ee62fa33bd9341c24169a7d41871b638e08d5999ebc590cc4b08ce03727540e192d1abdee75c4d04dcfe05141d896d4df59d1d3434b4e62d232930e903fc3f397b6c9586e93d73efe0120c7a6f97f23be88d6e8dd9c56e27bca9993dd20373f5e2c15353050277b3d28c14c3eaff37b6c52c7a598724ba1cd5029695f9d703a08979fc8d59e672f084440f9e2752b06bb7594dc4e52e2c043aa90f8ab19666039145679165c3a2ec4db63d803f3ae1f0195c02062cac214cca96e9e450af3aab05581e037a53550dc399a156d54347ef50def8f425931c331dd2b8e53442208bd0040205581e03480a7c8dda2f8d183a8e975e60aba0e1d6bb1ca841027528c06d0f21300c0146b5e620f78d4005581e0346dc4933acd0fe8c0d3469bdbbd7522c52de9cc1c803e0a5f70e312690040305581e0342a72fd9151705b181ebc17546587d9113d29b35e7b87d6e75d5bfd2200c044702801a77a2f94405581e03d51b7fdff2fbaff38b64ad1a59df11a34c66dc0a2c648297d12c9e56100c02470119782e133fb005581e037c48cf7dabeaebd595de1ae697978a8fd4ab361157ccd3094d19998f40040105581e03e00c26999ded424d15fa5b92552e0638e325d168d234595c98c3c721000c014703328b944c400003ce33220d5c7f0d09d75ceff76c05863c5e7d6e801c70dfe7d5d45d4c44e806540306b487d15c028b6df56c3ebb9b7086965eba3a240857a647faece2ff13269f2b05581e03e31911ffeab5320719c6d1778f576f6042a38712df31403962d169452007011bffffffffffffffff04590855608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ce578063aad0ae5b146100df578063c4d66de8146100f2578063f2fde38b1461010557600080fd5b80630a5ea4661461008257806312ec8dcc14610097578063715018a6146100c6575b600080fd5b6100956100903660046106f7565b610118565b005b6065546100aa906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b610095610198565b6033546001600160a01b03166100aa565b6100956100ed3660046106d5565b6101ce565b6100956101003660046106d5565b610244565b6100956101133660046106d5565b610321565b6065546001600160a01b031633146101775760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e417070726f76653a2041636365737320726573747269637465640060448201526064015b60405180910390fd5b8015610192576101926001600160a01b0385168484846103bc565b50505050565b6033546001600160a01b031633146101c25760405162461bcd60e51b815260040161016e9061079f565b6101cc6000610416565b565b6033546001600160a01b031633146101f85760405162461bcd60e51b815260040161016e9061079f565b606580546001600160a01b0319166001600160a01b03831690811790915560405181907ff213750e75b7d8975215501c91778a99d0e1d7e30453ea61619aba02b5e0d17d90600090a350565b600054610100900460ff1661025f5760005460ff1615610263565b303b155b6102c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161016e565b600054610100900460ff161580156102e8576000805461ffff19166101011790555b6102f0610468565b606580546001600160a01b0319166001600160a01b038416179055801561031d576000805461ff00191690555b5050565b6033546001600160a01b0316331461034b5760405162461bcd60e51b815260040161016e9061079f565b6001600160a01b0381166103b05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161016e565b6103b981610416565b50565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261019290859061049f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661048f5760405162461bcd60e51b815260040161016e906107d4565b610497610626565b6101cc61064d565b6104b1826001600160a01b031661067d565b6104fd5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161016e565b600080836001600160a01b0316836040516105189190610764565b6000604051808303816000865af19150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b5091509150816105ac5760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161016e565b80511561019257808060200190518101906105c79190610742565b6101925760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161016e565b600054610100900460ff166101cc5760405162461bcd60e51b815260040161016e906107d4565b600054610100900460ff166106745760405162461bcd60e51b815260040161016e906107d4565b6101cc33610416565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906106b157508115155b949350505050565b80356001600160a01b03811681146106d057600080fd5b919050565b6000602082840312156106e757600080fd5b6106f0826106b9565b9392505050565b6000806000806080858703121561070d57600080fd5b610716856106b9565b9350610724602086016106b9565b9250610732604086016106b9565b9396929550929360600135925050565b60006020828403121561075457600080fd5b815180151581146106f057600080fd5b6000825160005b81811015610785576020818601810151858301520161076b565b81811115610794576000828501525b509190910192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea26469706673582212204145507bfa15500c0eee86c57c125e8500315ccc134912cdaa0914a0badb3f8d64736f6c634300080600330058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630410100582002a75bdeeae8604d839476ae9efd8b0e15aa447e21bfd7f41283bb54e22c9a8254e1c7db7575babf0d3369835678ec9b7f15c0886b00582002f97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75470cbb871e8f30fc8ce23609e9e0ea87b6b222f58021980040219010405581e0364d11e8e3a1420889b55b40236f26171452fc5c2039b36c2ff7eebd1e0070119085505581e03c041a125d5bebf793e4fe76765079b1a6f58561779843267210dab21b00c044656385853200005581e0311f5442609a3d1c9d8b6fcd4116925086103aaa59609edf9372c61ebb00c014622f186d1abe60338d318867d6777429ae9d27eeb574a09ece60292650356363e87b497663cf7db05581e03a72e70a896c5e7e3fd73fc037f9e385a2ff1fcd346c335e8e608f124400c186d471f71d628f1f38803eea6e015c5abaf705debdb853983b714b38e22667b85ff6e05a2db41df0504dc01410f0219effd03a6843d794191119540d18dd93aa3f26f19ee6736289b1728bdb6fc94c6d01aef03f05b8be49c774ea5112ae2b06f09779a49dc595dcd4f90ee6c608aaee100ff3c03acec0c85618661dfc8a7474ffd8eed9c8015ffebd298a260dcd5646f746ac8f30375c93313558d212b012ba9de45416de8a868081a9b692dbe734dac81924addd40328fdc911f176342e62c4f6f5c116a9e9409782b874c181e4deb1363e3ef504f2035f71f76b8ff24905310063097922eb65d32443d0a72bafb3644e7c09a75d73d80375251b39dcf86fbedeb4f16acfa9a96fab03f908a387e2965a90759e8ffa218103b5d8a37ef68dac3b8812669b09392960fc92c87540cd6d61616a7e5e419e495b03dcfdd8ddac2f3c79a632c51a37e9ecf139707623464f7c4cfacb2751ed93e7e60368406e0b3ffe2c3b5a929555b32adfe58f3b85bafc33604e6997cb906673bb7803037103a8515f11e5164f6121e4b98403db352e195fe7d848c812690013d4c18c035c52f86143284b4ffb948c26902cfa5ac33408c4d653b07c7c9356fb4f91c2a903e7148db0ce78e416bd6927721e3beaa5e4c707f3eed4ab9b85d0718bf2c753a30219ffff03a71e294d2d02571517deb4634b261cae905d73885dbac3bb92b437783c03fad5034617a132fd46b0746a642477af55f04d508bf633624ff3a24f92026c42ce5ef703ea8a32a0892cc9162a190dc9557003262a033d6cecd61792656fddb656611905032d815036f3b9c8a7899fc31cabb7d2a30ab09240bb7716a89923847d4692b2e8038170d98859c3e5afaf9382d4ad20f0f0667e474944a816c579830bacd8ed136303fbb43df4eb9fd44f41e741253bb9f1cc03fc4337741529cbef6a90092571c01d035bcf85d3ff03edf81b1367adbc9cb9180d04c08712d7882900e508738fc3089b03e4dbf27791ed2eb9580d54e0c9966a86a290abaeb665c4e3ac7408a07c75f0b003fe736eaf793ce468af4bbb253c8c6309905baf6a0a385b7b1ffba78e72c632dd031eb5bba110765533307bc7844d2549f6aad55d2bdc4d01d704c819627c57bcc40321d1d474b26b89b2aef4d29af2209a8aedefd68060da4fa7134c42cbdcb5c8060385d0fb46317e8decc4c8a9b9396a2cc67b8d8d84951c8ca09916c2651be388080219ffff035900025946d281922a2a3144a22dad27408351e8d3cc81ef80e261b7ad787b1103fe05601ed45fca9fae57f5fde490f733dcc403cce9dfe6e11a6572dfdff55a4d0219ffff035693c2c1841cadcce6bbdf834b1eb0ab5b353a3a0e97227fb049ec9615da3abd0397a56b4955d6201ce452807a7090f7816d5b336774bddc884c2aa979709869fc033bb228620700ed48d7c6722b359bbccaf43843e4eec132e892c589906ba0e34d03208fa1a8cdb23079c52bc53a60e18fcfe50dba6434ae3b881dde353b4b6484630321e9ccdc9c7e8008bddda6018876a33a7fc099bb8a61ac0a6aea5b086047f48703e7d2807dff149f510f87e46de01df997829c73935301328346b0a99f5f04b49903d92232a1be23509197c762fc3ddc4e116af2b00d2b58fffac62b9a29722b2bbc0394b688a92a36ea0541f132f6b3a148f96b78c4e560857195771e40b6ebb98b96032b17c04a457e4b51f16b166eeb7d523c2d9914565fac05922f4e40996df8e8fd0304c46b43f6e10ecdc76a36a768bd1a5dbb2e839fc9b81d3b1905f4014b96225f0380e1582aa2c0269014764b12f00cfd4fb0de432c629108b4f39d16f06b63d68b037ab32135d12fbe72d13468e4a09ade0ca57073cf23eeb094492415d0603f5810039042a74959f462854170ee15ff86df9bd3cdea7b7e278007abc2ebe86b6e7a940219ffff0302ee6748e49feefcd81d7f36cbb0262dd5e253cb09e54b55f89f1bedc2081198037ced7ad4bb05522b0a843ff26d459a8b767e3eabf53c02f6bcd7f09329e2ca4f0381f33cd259fa3721eb9ee3ba328e2662fac73c608223755eb466211ce5cad314037e6b32d3fea0c44ad09041dc3bd7b8844556a358978e1990b35f6b4114665c12035adec0570b1e27de63def72581c89d2b637a660b41c9c4ecc6420a2215a1b3e4035da952844db89701769bacf14fc0318956bc954f6d3e56ea03c33deeb217be610320d471a4c51bda9f860a58db58e5fa40ee851c49de8b07b4a11c52853d9a7a5403b8a80c95d0bc8750735c278aadc0f99ce7abcb8aceeda2047eee7a8b7f89dceb03da6e9638370df8eea75bb2dda24b0da4f2ce74c11fd2af8d16c9e901c7ba96cc03ddefb159b278ad3fb41cd2980832af3cfee6b2e4989e00f69559d0ec14009bf503d342b74cdab6c920201ed43a009696450f0bd78270bc12483fd5dce8492fddc003d9dea40b85826d838afd593b8522829f92b39b2e200d46727dff2556ba97d7c203fa71c50f29c4c86af3617e3e49d01fe9d992839c22dd0e1f67bf5aaabfd0c97903a3fc42bf47045d0114f7cab5b152874e61d00db9daf556eb3e9cecae7c804890033ac9291c220ef9563b6fe0aa556902adb116236b3b499e4b9e1b2d4756476f40034a88fb904aa63c19ff6b92f1a1b7ae8a2cb3232ad3eb85266da1ef00027749e1030873e3808ad184715bbe3b68ac856d9c3b37a187e6d98e584251be1c71e6053f03a40c2194b288fd8373f20cbf63a30b712dfa6c6eb4be8f4d55170d1fde0092bc03b4daca7d995845477da69ae5bfe38f9c8efe98dd81aad0679ad02e4cc100e9ca0398eb3be1d07e74e56a38dd852a517f8627d4c3d8eaea366cb6ebea356659f1d6033b3b9e721e3706a59dffabeabe18561a7abfd200c90944f716f9d3f32e8735bd03758d97923b36ee90d1d726a0ca2941e7794fed165d1c15ec60b63f22586583b403c3313e2c86abebf00faef8000594fc94292e9d953054406e912ba0de562a1045034f6f06069510da768d3d1b765a255f73d7d721cdbb950cccd386da66411d00d803fde78858d765faac65e171d4d997f5a607c9fc7d2f57c1f356b6f9dee89b2819031b54fa51c8b98ace8b52dbb878e6f331913f0207320b4c17602c91a1ea241ebf03692b7aa1880b2fd3cb08a69fb170b955865c0ebe1fa8922bf18303bb7c0739de032683f4365950ab6078ca7dccfecdbd2cc7cf7d902353e26b26c4a9d2bcb727e4038a9deca6a56557b0f8a9a37e363b143791ce28d8ef86427540c607005058906b03163aa4972ecd867d23dfee8b0dc0a7f84dc5b802f239bc597388dc36fe1761e603a1337173b66588069b505117f2f6b03f2687decd611d23089cf266747a3d86a10326ba9631082b28e97a3d2c2d9ce796e2a7e99f0f981bc93223c9b48ba390cd13036eef6590e68a52f414e37daa1cda86067bd4a08f33ffdad65a56eb9d762a1cad032f429836817e5f030d88502f411733ff43cb87b34dc5aae7457447a17f5c870703f5ded695fd33a93686cd4af6e215da0c29a0c3b6a26fd4c42d04d4bd6bfa2ec303916e9b45c46253767d84dc2c538b2a4dbd513ac672874fc2a354fd77c6924a9c03b0b2bfaa982bfa0b74152f2488e9b9d32ff418e8890904dadb4210b9fb766cd603e2c01afb40a1bb4ccf9a79c4915eecbe587ae719c8fbe1f17e23ee0f7995f598037907fd5613aee26f32bc20daa1a7444a3d45422ec495e6ee41997e01dd56f8b403988210ffded5ffb34d5945c489523735955ff1f133794ce9de831ff2b55ee58103e63ca8ea36587045751cd52ff23f480cfd8bfb1df3c60e19e22b9391b1ee30350329f924759d52253b62c21e4b7dde3d0728014b21b292451c4918fad1f6bf46f303c4c062397f4ed5718992327cdb72794471e6da53e0c9fa6f7a0d40ab10845c92035e860bb2f34de14c371c11e22070be4b57ed2ace7a01a2bc4f6d5af79cf4496203f2732092af7bdeb2eda70c80e5784eb5f0ebc392a4a801b3caa70a971991f8c203a5f91fac66be92d9e4a883ed27f772d3213e414c49a338e143825c95ee7f5fda05581e0377e234d8a1d0c939f87874cfb86dfe782e023c206bfe4fbad9a3217240040105581e03471d189c4b053895c86042ac4f3df3293fb829e40af0d3a77e59e5e7d00c02443b9aca00031659de68e6a279da28599e113109376d848bf72a54b56d945750294b8c97e773030657e508cc6d404d8cc89513d451fab06b3288013a5753906560d9cbed22571f05581e0309f88ee63cf75e84a39c1be2be1a2cae55d179b8bdfd190a874eec787007011bffffffffffffffff05581e039d8fb44577e2daf690f073b13fda3e9530b8d7de93799939ee840128b00c0146045b423f9c0004592c1d608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a723158207dca18479e58487606bf70c79e44d8dee62353c9ee6d01f9a9d70885b8765f2264736f6c63430005100032032e2bc0c0ff22609eac8f10e1c8736f3e780dcb85055451e7ac674e2667ce4b570058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563048f9c610ebbc61159e00582103e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af051017712623e1bcef3779fa029d2e2f4c9d4005820026cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68854ee1c139ea09924a95b98b56a68efc1104f049f2100582002b661198733f53bb9b621ec808effd2e8a3d86db6962103738e13951e49aab048027f6bb06ff6bb0e0058200242acdcf31e478e05416ff0498747b1eafa6dded723cd84aa3fbaf351918e1b5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0219814000582002575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b582075a68b0fa4968ae75daab7bfd26f9ab84ab59f2c370a2bb03f935f76f2084074005820025a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a84ff26820becbb6cffeb183005372ad1400582002941fd76a619f3a67fa78ba1487c712734af6eab41dc9677b31f2061df8da265820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0219404400582103f6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c704101005821031f25289b5c9db29d46c3566463f71796d2e07c9a7a96a888214082f19288cd0048f746a53b4c6a56a800582002f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3582065cf607b00000000000215a2f25a7370a09800000000000078f317b5af08a25d0058200252222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f54c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20218480219f44505581e03d4635628fef027e57129bd3a095819ae66dbb21fb4a76125a74aae57d00701192c1d03ba69b6e13b06e84ce4faf381891057c2373b95161158cd388cde1468371b679003a730bf4ae8b8d79a8c09ab8d29b845fdd4c90f497f2b15089a8c5320d8cd7d9c03dc9634d9c39ab372aaf8be320e08b89f81ffa41da053dacdb5d6d9c25941f79805581e034591b5db0714bdb9feb551698706b0d8cff472f22c58bf09e6f6905d7007011bffffffffffffffff05581e03b1a88893bf611ec668150981b0b37067adaf203b9858aeed822c2d8c300c04473a8f8ca6524e2e05581e03e1c68af45e0c85feaf3a7e9fe92e28f05c39b3685484103358404cb2b00c0245e8d4a510010219a5f30312ec879be9c677e9cd8c58b81338a3c1f442a39534fa5a20480361821c674ebb03a9b19de15c2de2252a22b9b5d887c9c436742eb269eadc247209b24b4172bacf033506e714a4a01db4c0842dfa4660ff9461fa8dcd0016b355c697f5cff35e542a03325e7a922b7b10fd078dde633987d39d8f11d36c73c25772f0d9292ab0e9843203cf5e1050d248908b6c3f95dd3a9856e716780c8bbc1cedff515677287dcbaf480348e1ea176bc5ad367b7983a2ab37538560113be6bd6b6c4e4a5b64ee104f503f030f06198042726a04fefa7d9a78c2fb1cd58250947f8a622d64a00508e309035303c0a46a8f8e407587943847e371372bb9cd11dadd451a80c84fd172c729f931770386e834850f3cbf84fb35f9c43c8a4af6311c86416b751fb68441e720a454e6cd03e350976bf817e314e74655a286a781918c2e8fb14b93b1cae155199497c6086f0396f1f5d6b310c90daf49e363058565126fb58470cfbbdddd46281740a72fed6e03fef3723d9d6f88255fc973e1c05cf370e97c6b4ca4d817e246da14e2ba1f5165039926cd4851688a6aefcf632eb5c95972342d8043bfee4ed5ddb714ad545c7d8c0219ffff039ce82626dfccfdc04a23de94000cb7e7b5ff29196454a6d3f29d2f34ae3e1ee10300f8bc8529a658177b91483a8c20dd822882ffa84c2173b97f3c54c2e5aa5ab60219ffff03aa5b66c190b04ab77071f0af2a64d663196df1d4b0d26048c21be3431efbc4730353a2fb7a6edface47ef1d1e969afdbbcd75b98f9507b0573087ade8cfbcdbe6e0219ffff03097157d03fca75074a3dc93deb9dafc6342d7b715bfabf71fca899f08b2dd23a0326b342158886796927600e31784c379f8e1e7d1d67327d82bcad9078223b9b73038d77db4a697a0bedc7f67619e6733d2bcc034da5ebc15510c6a114a72b1d04f60219ffff03d0de2e180fff3a55c29c3f515a6018e7c3eb4c32a03ac92442e0d3f687d9b65103ecd7a4ac75cdf85fa4431962fd0f1983a089dc08696a3f2287706e19ace0f6c803f10900d6fdfb05ce1547c147e643ff12ebcea5741a819fb8145b517fcc18b23c0219ffff03878100c6c9978d175f775bc3ae266eb60efc6cfa774c2baa124921d393df04c203ca4eb829dcfaecec905c4f3aa891b389b10d22ed8cd6a945705ee096c7ba8b32035aef37e568230984375b8c038ae04b46877562d2cc4db86c07969dc12a79a68a034b965bdaab97431fb164f668dabd56f4023e5e8589626cca7e625cc85562bbd9038ce1019ba6386eeb4d667511780d27b81eae1c9e4fffe6a59ffd13a71b4d87ef03ac7bd0407d067c58ccb9e10b7c68e497286c6f5710e97b5f4fcbe2d6ae30c740030c91f514a6dc623b7cbb4d3a4fd91ad2827ba569fd6c109b05d8c48a7107155f031f8c7783ff88d7e710280676359dde9afc5b12e4b3ed612c160c36c477fc4f0103e4ce0629ccfa996c8f77b4b8bea1e0e14eeab7c0aeb5224c59531eeec9361c4503db0e5c1161a9ab04e3c80f8e69410bd456db47648ce65ba2524a153129e4ac2e033cb52f93ec611a8da0a05bea4c61653be3b5fee33b255f7c4a4a33d7a598f1fb03e574c20d5407882ea0826a1d6f23218fdcf684c872de8412ae633052ae679b7603c71c4f70e1fcb790d7ea148787479c232ce53786da5931662e3305295b7eda1303fc5d61ab5aea99e55b274ab21b6a194c669d11e6746d4fce409c60294b4bfb92031e1c8733fdd568cc4e51d07fffe8a54175ab5fd9e83375f11da2893ca7e1681b03f4fdc6d79030a30c431df4e85969ee99e6fd99b51342541e5a9801cba5281a870384d0a936894c155431dbf0bcaef8d4c58c66e0b68b2163a0defe33f2afc3d67603a8d4459a41a545aa37f1df4cd1e53dbdfccfe1b92739db8f0b507ba816ea71ab030b081eae3fcb2995062804dfe05064190e89879fe6a8358b7e0716883222b1e20373da16b5a11fd31f687468e7e437c0ce88ed2218ec87097fd68d12aecedbe82103458ae837264127bae70701a77efbd93777c4f2f964eb0ff8749febf21b08f30a03180409dbce0f471a844cde7655d95f99ce57465f2c9b3a3519f6ef0fdf1296ac032411ceacd5de7fcb10320f232f57522a65bdcf9a0367f17cd2a6f2134ab128b6037c229ffc216827e2e26285abdbb2aafec7f91c595696c56c788e8c9d6b378fb30314d17ef0919b0aa2c2c93f207d5eb384998bde11623ef29cb6c192db580c226e03e165e3f2145ad1b10898dbcd711b093702d032e174a5bfcff28e34c0a9915e7203d8a2a04978703613b39788713a45ce2347fe08f90b592b2fd0f77c782f3fd9cd03d142273a6a1c19cc86b6aedf3e313aca349ea9d25b1398b2f2f3cd1ace87667a033c7edaf4c8a204444d65b7f9acb35770d92fe09237a5018e699090ad0a187d4303d0cdbf72330850e1ea2eab63c2c486efa350a5af71292b89b52516ac046a335a03e60096b2ed0595435e292119086017532da0b5ceef785f0b34adce9b8cb383960309e7c17f44c6c75499f1bf67a2b9c9448ac5adae6221167115e0d9ce0e49f23503ec3f036e612279d24a3d407ca0ca1b8137a8d3d2098a5e66a8f214125b3a7f3503c6371abded603253ee4228bcea5add2a8b7400008cd2c7b5aa2ff3f4022f900f03cb803d44a46f933e524d11c4bc2f26aa300b0d2560dc348d3806cf00554f0569039583cb3595c1a6fbaa09a3ccd519076b7720661a4066f398865650ea5ae1896b031b229c9aa259eab43f0e90082bc8425f5e6c04c20e70999a2c9f48d7b72487cf03c67a043590d9eab3067a1c34a179e424063785319153efdc4afb6c94ed99c8c403a8e4a1de078a7ea7818384927df551760df45d456d2a5b9efc8d797378c7246903f0555de3a780a48be182cb3956f3972eaf5106a284c0a7d87c1f77ff3967285a03783780f3097d9d3b8d67969c62f43b69a1c1f7f8b5663c07a34a3780f8c5e29d03103aa12154c07d1154135f1fc68be927ab68f4d8d75b08258469719f378d35c803a40d312748d6b29a5f4d7dd517d1428e5eadb39832845c7993fe5e30384352eb037a4fda7eecbf10b451093aa7e2ad1ba546c4a311b9afa34602a683bfa6af4602037effdea2cbf5b602df64645f5b90f76cc0fa0bcf9b6b20d5148ec979986b066103974a3df45a37ad885cb8d634f3ed912a8487ff4289ce9f7bf69b9d008ee9a18903f27ee8ab8332ff77ad5487e6a9ad201754bc5b99429cd6829d48d57cd689a9d90355d40058e37fccd6ba820f57b8ba73329b414bef035b4b2fa58dcef21445079a036271b1db5ad4c0ad3f180eb86687dd406625ba472119ddaef0b57a160d0aea6903c47460ddfd8303529a1e20b02b0283a695f2c54f1969d4ae9375a871d8bc880503f1b574431f3838d9cdff6e701afd5a058652dab5ae5523288a83d5fad7696139035d1e21f700a49be24991d5b20b17b5bd6c9f9a8827fdcdd22ee081f8bbd1bb9005581e033438101ef5396c10534be9546fc834bd35e6ccfcf8cd3552b4b854d33007011bffffffffffffffff03fe8bcc95af69bde603a5a768dbaa33251965e49b6f41b8029c8662a8db4969f5038d4c389f756f95f370cf7c6fa0651dd5b2cd27e42d12dd9222b0ee4e91797ad205581e03c1da930cccc481a412b5efdbf4997d85c44a1a7b63e2992224a2f4a5300c014705fd13b7002800035fbb31888e45cf7930d8c8e1029831f8ce15991af5b655662300055997f61b3405581e0359b9faca07078cae61867ac6e3dc14b902198ae1980e99c0001ab016600c0346ca879bffa87803fb917bf9a473489d27e723f0e8f448c4e545e27331b6ff02f21f902d020da35805581e03996a3aa27c767b8c3ac816236a0b34c8f2e66d191c3212eb329856db100c0247021a2f33a4a2d005581e0302165eaa9d6e6b7eaf421cf598b0638802abd4d1277516e120f88e71f0040105581d023a6babfab699ca3d07c66886fa4e9e51a2a6e21297dca705c934a9570c1819483f9090fb7868e6ee05581d026cd14160e241b00429968b1668fc8b8e3d9d191b136b0637ef5b1a450c014687852573cc10021948000219fe5803a05659574551ea0cf290a2c70af2481e86893cd0ebcbc5fc2387c80e817927b203c542072960261f3b38cd2dc79531c70c6fc4c0aed4c87f4c6cbd07e79d1c490003c63d5ff108063e3a89891c3f4ea60dd31ca4697cd58adff1a2370b952c47da67034c73f237b3dbc56ce47ece6783b811a0ddfd8a6c3aec26c796cac29d612ce9560394be43c2adad543ba84fdc7f7bd7afdf03a91b794f416fdb5c4c0c2b7b41f67a0219ffff030e0881ad66a02f3fe2c9ebcb27f845215b8b4dc93ea5501b459478f8701e992b0219ffff03a8d34fc25359ac47eb194ea6e30768823481ee1ba924b9848c4ee23556817a3203d85fd32fca06ed5f490940bbfe9d9806208f2362eaed9b75eb27e407532df021030f8f2c11a52847a7be932fd334ae7db84dd2ff21646b915c811f18e68b4182470335891ad75f98d3652a9dbfbf992443c43e26602aa777cefe83fcc70e19e77d170394690fbdfa2ad5e4e129dec7c3237b4f7734abed6dcea962084ea426aceba58f03926b0e126a044fe044ce1d0831c226ad12d47181570def599c1d2d29c2befc95037c5c4cb86021328742bc66980c7b2b71ec34ac9a817cb96e136f713593152a0d03501338a2a200b60e6d0f87dba02d16abd7b1686ccb3136e9b0240a4c0cf5b6c7032db8e251de21bbdaa52da2ab2ac3b2a14886689e3ed30b4cb6a844b51a3c20f303dca97dc0f65415e9879799ba77b6783282c65332dd3a13f425795281003245070219ffff0367f451a4ad47c8220f1729d0a9791ec1ce5bea8f6b7906645e1355bab18735ff0322b54ab719b9e3e71900115871b1f48077880126a617bf38c3b8150b978021960219ffff0302bd4698994add16277367c4bccbb70f1248e5d28e378c04deeaf5688274b1b503f1fc7bfdbc17f4086b74aef53d09b2a82506feebd991a8a0ade752e0003fe5d903171ed47d15ad1089bcf6d352466f44e99bdd2af2ad2ba4cf80363323d9f176fb0355bc01d7ffce21e32df87fb848757e0878eca09f76e1fda3dc7415e0b1ce07c20378e5fdcfbe4d95ddbddf83d1b2110372aff3e388b8c9e4e52a65ddbd34c01b870372002b1bc559bd8b33137ebc94cbaa3ce5f134d124872331b8d1910e83130ff303c21fca0227893af7ee96d8ca1450a18a5d8e5c3c11a8c62801da5739bbd1569a03062b54192802608f44da7d8dc88572d95e312046b506774b73421262e610fe75034599d0b1b1cfc5b7c2211b22d00929b48d1c447e43786f5430727294e4a1a1c7036f3dbf2aefde19bcd4efd4ad6b3863ea328336faad90dc710f7e6e2dc6975c0e03c7ef8aefc48789dc86397aa6315851d86b100b8911c962005c069c4874a2fe0003115289873e516be36694c7c922de641db9395df113345a505433f386dd1b9873030a5aa79d60cdac8e72264a13b956bf58e8f34ca6fb0e8ec6f3db057dea8cd65c03fb1031261c5d5d1992c80f0037f4d191c92398c2fa126389e356d9f38c13d7cf0362323e7dc261fd76fe5455219780f1c9c9f982774cb196f8f765c0af4cc7e6c303fa269f41ed80985a1950fbf26ebad060dedf816a6d5f78d3f7ec07e9827df75303b29f231fe527f9f435efcb02d86914c05750f96b4463eb8483376a680e6eb991030df7a18ffeae72999e556197def50a6baa33a2c3b657eb5cac7b023200e93c7c0310b4b1f0815162aa248e0c9c588f31f00f45ec5418647eb8748b55b81aa0f66f031ac4758ca7b0d836a009ff26dd3c075e679a3162a4a02426e21f115ff549d582034e3fe4262eb2506ce70778c550a215651f9b234b1fff3c13e36ed89f22f7aead03e483ecca68b2b9532792ca69ad8eaa73552e6a75f9b3b235606c60cdcce8d5b30376b84eea0f0aaa1676c6a0ae8b1a6a042041739824a19da7d473a1b2a56bc97703ff604c3b5e3154617bf0364f42c18d10ca313bc62821b24c4aebec56b26fe15a03562c3f1d73ff4f5a6b3f2ae66df841e74add41bc94f4cb5f25302d6f9f43a43f0353978061defd7c4ebb3ff153cddb5b9b3a5b09fb73ba5f0897c1d6c937043ec203630745dc758c3fb321763b4441fe788474762bbc52061f2ce4cb09c5e651ab9f032fab18a72edb2a1718d770f78c3c2851330c5f67aea71542432b0cca2d558d9d03ebf5407db2103bc2170644c2ea67c5fa21cf167f3e4a182dee62a9b6a0e525ed03ca02e8f285c5e442bf6bc2ff36bb401891cc4f772574e6a217c1357894d2b150030558d991cec03efdee59d2d25815b0f71de4a7e4bdb8a4d0c27c1d715c6f1143031d4085a52c1aac855aae027cd0c1d4130979f306d5ba05518a3a5b7c39f9087703ef5431197bff07b8a476584c5c61a40e3cb7ff726d9f1d405f298c270fb6683803a761059ea5af9a1b64c6ff398a71a1e0572de2037f6bfe1969e7166492411d96038138530f6fb246a158dd6b68bc756817e02696f8548fe93ee008aa59e37930e0038425c190044f3304a1aa14185c149858784b9b582178e80721157109b6f0d20e03d1fb26ef4ef14fd1cd15f2aaeb42cc49048fe7d1ffc1023078902b53cb37aa79033ff5200910bb08510effdd04ea6d4f989ce27254fe38eb3cab754fda2a22d21a03a08ba3a324df41304cfe3374fabf34b70a5e477f0013a58cb491bacc0d87d0770335bcbc8fba81b3fb9c6229660536a8614decb7a45b6c3d47cb085cc1ed403fc903da811c580b78eac3ae5ba3c1265c3aa65d21deef1b44fb752d73e67cee94214303cb4d7eb01e97ce22d09191b41d86a60d816b821de3b510486879b8c40778366e0355f374186530d90e7c9719bc3cf70fb0cc5c712c24228a1f5e4458382170eb74036a29255426190bb25fa8db64db6956b68a9be29b0ffb49cd008a89899731aa2703e2b9de7909547916f9f268098b9d3df29f01da900cd7d3c9bcec5f2170fcc21c035d134e2f370c028df4a34fa28eaff9242ad0e804976612aea7cef898722939950399c99f1a6d65a9097e0f8ca61683878ed26099e347359f5cdc600bd194dbe9080334f8e8acfd3df21fb6b4920d3fa69a9856f37a4f9cad8dbcc9ecd7f7a73c7d8e05581d039affa12f89f8662c1507f375c69d80101aaa5b480d7e964080f7d73007011bffffffffffffffff05581d03b51aeb3ee9e7ca0d7d47ac795675339bcd29c50c6ac19c125bc4df60084803ceabeb6ff266000219010801410b05581e03dc1677c4522eca559a65132eb4b85199e621072d97377578460c696cd0040105581e034f25072e0b9fdfbfdea8aa79146512dd27421f764497a8be2957f43a900847421499f8d2800003ae1af30a21312b72edcb045f5268155e027b81270fe04dc2921f94bb804705b70321754bf7895b8714445d33ee8983b68a6ba8fdd6d4e100c0d35d03c09ec29a0d05581e030c22d311bdc1e70fc4b42fff2c58373b6a8e00640950858edc1f22f97007011bffffffffffffffff0219ca42030cfc9fc5667290eed7b5ac7adb68e286859e4ee77557e8560b8abd4db3a9cb560219ffff0219ffff03c518c068d62fd3d91cf967ec08251172165d9ee5751baaa60082ff7bc36d690403b75e4fd4abf4bbd921afa539bf71ce13d3f4c11caec4e5594a306f361eef81dd03995fa5fcf1ab4232768b3266bd9be5549b571fd7928573a7d879bd44c17ce67a0326c967f97e9999cc08ea55be423847fb7ca65a2e66da929ff920751061c7d4e90219ffff03a5066587c590ed21e9f7dc7e44976e9b10472674f6bd37ce627b464ae0a75dd403ee92b8f62185d11b314fddc8c9894dae73a8d1d566ff46b325380cc33c12388303e2cc8541cccaa04c09040f581808a870038ad5931cb969370ad3242f5aad387d0311bdb9fad4c09d7067260c14230de1c6ab3becc2bc6c15b160dea322739a1b37038db49d765e38fc43a357651cf7deb2ad2fee35790c849d0d87d20f69ef0f257903d8ac6b6b7c0d0c49edb0d8aa589b59ca52ac5d6450f14e39b08eb4f29b0dc9c5038293282d89c2663c4ecb581b01adc19b0bf2f146f1ca904a890624a34a6b61a3032294f3f6186f4a5562d601140d3ce5dbc0dc251dbccae758ddb41f50816859ff03f994b3e2f65b080d61b21aab639f99ce65352b1960fca5831efd6ce5e29aefaf03ff38083b3bf9431afdc20c083099823247ff62849a3d8eeaabe78c5d18bd70d003014c09ba7243985098597f841a6ca69159150413e7f8263849c95a8a3cbce86f03c285b0de973206517e2f32b72f6e7665a08306427b96326b6baa3478555362280219ffff03cf4b7ad72e2f7a3b01b4c7c417abfe0840bd69003bef46c3d3eed21de2531ac803c038947683b938fd5a917a384a8ac3ae2873193b1cd3a0b0446acd14dcee91cc037b4f0a4555cee9cb31f97e25e76513ad4f1100eb8ef5464b9871a22d8c0f52f5038f05094655eb5336b7c1ab05e6826bc23f04d4f5ee914d2a3247d6e22be72cd203e5525ecf7a788dfcf1cf011caff57b8668e553256bc9b30abbdf77b97b28765803cbd8906e97ee531eabd8d49fee9c3ae78f5b2f28c20696557ca09654c5f1ade303fcc753912a9db2a5a0b8b3ceecc1f621e1a942c42baf17c3b4882e26a6b37ca303e163ae3ca9fe4cf2d99eedb537f5dbb9b68e9dc7fbab48c83a682d5adb518f9d031d493888c974607dbf2456f935206ef317d3fa83e175eb3c719a262b16ad5d2a031bcdfa82750fcbac4bdbaa853a2bf29593383aaff1c96b19c98453a58aa67e2003abc592271f11f7b1a4ae6c1bad45486c7115063735532507b0d255361cec2f2a03df515b9d6e1e4fe32f602169a59bd354264ad8128455f576cb86775ce31dfe4303d7934fc800f5abb969e43f4702ba707c596df15f3c4bcec2a295ca6fb0a243cc03488d761aa0cbe0a0472e042a4d29b60c162e197a6f154e09f81aad9f7101c35f0383a3092a8366a04b3b83f747c8918e0edd2435d2a0f826036f6d9d99324aaf8603d1da83539dae0099f72cd69e9667e4cb28b5b33ad2d96258c088ee114748c8c503f1ce13bef235983d4066d4f705ea80b2874c73836a2a5640546334f9e45cb96603722022519cf3f20e1b07211e22fb6f65d34ccb0429f638c58d08bf6e1ecb79ea03761f0c601bf8cb02b95116fce2f8c21e7ebd67939b4520972f91ee160b310c94034125e8dd1d536ac4c80e6e9840ac8b29d30465c2dd34ee2d704cfd82c22b51280389d4da338edf84d390cf34c69e8c36ed764423c1a15c50213f1dc1e5dc369a1d0378e94952ce1bc0afde1eea71ca51c365c3d9f1806d3edfcc535103cc32dd245703da781397a8a19b3cb849eb2429e9b3f2d9c7fd8833c19a8be1178ae937302efd037dacccfd5d2dbc236bee7cb777e959ce654c610908d338de3dd4ebaf20704ba303d51f2fca8487e57207f3a4c260bda7252a1d6a2f6f3bbe434c82ed5461867f0e03f83f96d228dc2640f82b03b8016166598a770cb24fea736b49c85ab1885e2c6403fd2d5808e1fceced0e4fcb12844cacae66ebdfe52b2977fc7d298ead33d8cb1303ace34b6bd027f526944c7ec351d854b362f59b789f9b0fea04ce8c5728a539dc030c30dd688be7da097a7931192372452de60035776d01f2ea5444c96e99ee34e103c2c344b5398d297d91632f0f15db6d8396aa44ee5f68fc14c298b091a9fb02a103c52a80712f639e5d71618d76158e26835abec7f439e4b283980fa5f1640bf3980375f97ce3e0fc8ee3c26bafbf906f35ad3f8c5aaf0338ba1b20c5c0352566116c03ae55ce69e6c98fbce62692032113356e0efe54be677f4bee7976bec37d17a7f5033b405d677c8017060b68df3c28b6c15da9e94505c3df263f6ad471fab20e4fcf0378f5167a494b7d754bed3a275e39803baed72470ded6ec1caa0582e17578acff03578c2127074f32fc131f17dc09716bd59d1a9da28e0525440b85e91a77fa5c36034aadfa8ae380e751a027d2dc84f0bfc9a1cd4f4a73b0464a95e491ac905ba1c1032f2577ad00321839febab8416cf64b0e0fdea6d5ada8c4fe105a477625fdbd3203d0745f81e49855fc6a9bd2d3e3897bcdcfb7f23fd5eac8132698624f9f8f939003e472b8b3a4cc6a574a9e899a72381da4eeede12a238fae43cc064996cd15d65c030816e1229f4b52302711d8a527bfca050711ab10235bec03520d3077d6a9908e030291527e64a07367aab20faf5c96279c7900cd4a4e32a3d4fe0c0c418ccb6d8003555d6acdcb125c7be00f942339138a2741ddd1985dfe1da2e2b006d1445b325401410c05581e03d76845474f6b8fc056f04fbf29ab738b82af3d0fda0374cb1c7b3ae980040103a730bf4ae8b8d79a8c09ab8d29b845fdd4c90f497f2b15089a8c5320d8cd7d9c030ca6da658307619963e16e7ee61a42cc711e48fce75d8b9190011addf16a3c9805581d021f15ef2ca3fce0c62b42e9d74d2a181d9cc435631edf0db21949ee9a07011bffffffffffffffff0459368b6080604052600436106102b25760003560e01c80638ae458da11610175578063b2494df3116100dc578063d7f1b27c11610095578063ea0ee5591161006f578063ea0ee55914610842578063eaf993e114610862578063f77c479114610882578063f83d08ba14610897576102b9565b8063d7f1b27c146107e2578063dd62ed3e14610802578063df5e9b2914610822576102b9565b8063b2494df314610738578063c2de0e9d1461074d578063c5d574fe1461076d578063c75640171461078d578063d0ebdbe7146107ad578063d7b96d4e146107cd576102b9565b8063a457c2d71161012e578063a457c2d71461068e578063a4e2d634146106ae578063a69df4b5146106c3578063a7bdad03146106d8578063a9059cbb146106f8578063acf3f07714610718576102b9565b80638ae458da146105d75780638f6f0332146105f757806395d89b411461061757806399d50d5d1461062c5780639dc29fac1461064e578063a06324611461066e576102b9565b806340c10f191161021957806366cb8d2f116101d257806366cb8d2f146105155780636f86c8971461053557806370a08231146105555780637d96659314610575578063802758601461059557806381b2248a146105b7576102b9565b806340c10f191461045e578063481c6a751461047e5780634e353270146104a05780635230c396146104c057806353bae5f7146104d557806363a90fc1146104f5576102b9565b806323b872dd1161026b57806323b872dd1461038f57806326898fe1146103af5780632ba57d17146103cf578063313ce567146103ef57806335bc4e5214610411578063395093511461043e576102b9565b806306fdde03146102be578063095ea7b3146102e95780630ffe0f1e1461031657806318160ddd1461032d5780631ed86f191461034f57806322ebeba41461036f576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108ac565b6040516102e09190612db5565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612b31565b610943565b6040516102e09190612d66565b34801561032257600080fd5b5061032b610961565b005b34801561033957600080fd5b50610342610a4b565b6040516102e09190612ddc565b34801561035b57600080fd5b5061032b61036a366004612a02565b610a51565b34801561037b57600080fd5b5061034261038a366004612a1d565b610b89565b34801561039b57600080fd5b506103096103aa366004612af1565b610ba4565b3480156103bb57600080fd5b5061032b6103ca366004612a51565b610c31565b3480156103db57600080fd5b5061032b6103ea366004612b31565b610ccc565b3480156103fb57600080fd5b50610404610d43565b6040516102e09190613548565b34801561041d57600080fd5b5061043161042c366004612a02565b610d4c565b6040516102e09190612dc8565b34801561044a57600080fd5b50610309610459366004612b31565b610d61565b34801561046a57600080fd5b5061032b610479366004612b31565b610db5565b34801561048a57600080fd5b50610493610dd3565b6040516102e09190612c47565b3480156104ac57600080fd5b5061032b6104bb366004612a02565b610de2565b3480156104cc57600080fd5b50610342610e90565b3480156104e157600080fd5b506103096104f0366004612a02565b610e96565b34801561050157600080fd5b5061032b610510366004612ab4565b610ec9565b34801561052157600080fd5b50610342610530366004612a02565b610f48565b34801561054157600080fd5b5061032b610550366004612a02565b610f56565b34801561056157600080fd5b50610342610570366004612a02565b610fae565b34801561058157600080fd5b50610309610590366004612a1d565b610fc9565b3480156105a157600080fd5b506105aa610fe4565b6040516102e09190612cc2565b3480156105c357600080fd5b506104936105d2366004612bbd565b6111a1565b3480156105e357600080fd5b506102d36105f2366004612a1d565b6111c8565b34801561060357600080fd5b506102d3610612366004612b5b565b6111d4565b34801561062357600080fd5b506102d3611281565b34801561063857600080fd5b506106416112e2565b6040516102e09190612c75565b34801561065a57600080fd5b5061032b610669366004612b31565b611343565b34801561067a57600080fd5b5061032b610689366004612a02565b61135d565b34801561069a57600080fd5b506103096106a9366004612b31565b611483565b3480156106ba57600080fd5b506103096114f1565b3480156106cf57600080fd5b5061032b6114fa565b3480156106e457600080fd5b506106416106f3366004612a02565b61156a565b34801561070457600080fd5b50610309610713366004612b31565b611575565b34801561072457600080fd5b5061032b610733366004612a1d565b611589565b34801561074457600080fd5b50610641611646565b34801561075957600080fd5b5061032b610768366004612bbd565b6116a6565b34801561077957600080fd5b50610493610788366004612bbd565b6116ff565b34801561079957600080fd5b5061032b6107a8366004612a02565b61170c565b3480156107b957600080fd5b5061032b6107c8366004612a02565b6117c6565b3480156107d957600080fd5b50610493611850565b3480156107ee57600080fd5b506103096107fd366004612a02565b61185f565b34801561080e57600080fd5b5061034261081d366004612a1d565b611868565b34801561082e57600080fd5b5061030961083d366004612a02565b611893565b34801561084e57600080fd5b5061032b61085d366004612a1d565b611902565b34801561086e57600080fd5b5061034261087d366004612a02565b6119a6565b34801561088e57600080fd5b50610493611a0d565b3480156108a357600080fd5b5061032b611a21565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b820191906000526020600020905b81548152906001019060200180831161091b57829003601f168201915b505050505090505b90565b6000610957610950611a79565b8484611a7d565b5060015b92915050565b600a5460ff161561098d5760405162461bcd60e51b815260040161098490613427565b60405180910390fd5b60013360009081526009602052604090205460ff1660028111156109ad57fe5b146109ca5760405162461bcd60e51b8152600401610984906134b7565b33600081815260096020526040808220805460ff19166002179055600880546001810182559083527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191684179055517f27b541a16df0902e262f34789782092ab25125513b8ed73608e802951771b9289190a2565b60025490565b610a59611b31565b6001600160a01b03811660009081526009602052604081205460ff166002811115610a8057fe5b14610a9d5760405162461bcd60e51b815260040161098490612eb1565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990610ad1908490600401612c47565b60206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190612b9d565b610b3d5760405162461bcd60e51b81526004016109849061316e565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a9190a250565b6000610b9d610b988484611b5d565b611b8c565b9392505050565b6000610bb1848484611ba3565b610c2784610bbd611a79565b610c2285604051806060016040528060288152602001613609602891396001600160a01b038a16600090815260016020526040812090610bfb611a79565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611cc416565b611a7d565b5060019392505050565b610c39611cf0565b610c41611dcd565b6001600160a01b038085166000908152600c6020908152604080832093871683526002909301905220610c7890600101838361288c565b50826001600160a01b0316846001600160a01b03167fb373eedb8e9038a2dcba31f06b2735887c1a904125e5c9f0021ba41ed972318e8484604051610cbe929190612d71565b60405180910390a350505050565b610cd4611cf0565b610cdc611dcd565b6000610ce782611e02565b6001600160a01b0384166000818152600c60205260409081902083905551919250907f8133e2bf34edab764b55c59d1d41f9df637e7c22828bb6b0a9d55b429d008a9790610d36908590612ddc565b60405180910390a2505050565b60055460ff1690565b60096020526000908152604090205460ff1681565b6000610957610d6e611a79565b84610c228560016000610d7f611a79565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611e4716565b610dbd611cf0565b610dc5611dcd565b610dcf8282611e6c565b5050565b6006546001600160a01b031681565b610dea611cf0565b610df2611dcd565b610dfb81611893565b15610e185760405162461bcd60e51b81526004016109849061313f565b600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b03841690811790915560405190917f76da6cf8b40dd2b2c223a5956831e0ff4e75522538a86782108a0bbe1577e29891a250565b600d5481565b600060015b6001600160a01b03831660009081526009602052604090205460ff166002811115610ec257fe5b1492915050565b610ed1611cf0565b610ed9611dcd565b6000610ee482611e02565b6001600160a01b038086166000818152600c602090815260408083209489168084526002909501909152908190208490555192935090917f81a422e27f503e1b92cdb616a6e653aac10a8e0c3fa6832a58dc616c080fd7bd90610cbe908690612ddc565b600061095b610b9883611f38565b610f5e611cf0565b610f66611dcd565b610f77600b8263ffffffff611f5316565b6040516001600160a01b038216907fc605d0bf97f9b921340106a2e59f9428d5eb9039b16866159e0cdd2bf8e963df90600090a250565b6001600160a01b031660009081526020819052604090205490565b6000610b9d82610fd885612080565b9063ffffffff6120f916565b606080610fef61210f565b67ffffffffffffffff8111801561100557600080fd5b5060405190808252806020026020018201604052801561103f57816020015b61102c612906565b8152602001906001900390816110245790505b5090506000805b600b54811015611199576000600b828154811061105f57fe5b60009182526020822001546001600160a01b0316915061107e82611f38565b13156110ed576040805160a0810182526001600160a01b0383168152600060208201529081016110ad83610f48565b8152602001600060ff168152602001604051806020016040528060008152508152508484815181106110db57fe5b60209081029190910101526001909201915b60606110f882612080565b905060005b815181101561118e57600082828151811061111457fe5b602002602001015190506040518060a00160405280856001600160a01b03168152602001826001600160a01b031681526020016111518684610b89565b8152600160208201526040016111678684612194565b81525087878151811061117657fe5b602090810291909101015250600194850194016110fd565b505050600101611046565b509091505090565b600881815481106111ae57fe5b6000918252602090912001546001600160a01b0316905081565b6060610b9d8383612194565b60606111de611cf0565b6111e6611dcd565b61123183838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050506001600160a01b03881691905086612252565b905083856001600160a01b03167f2a936dbabeaea30adc1ddad138b1958497988474bef8b09a29411f0105ab8ab285858560405161127193929190612d85565b60405180910390a3949350505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b6060600b80548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161131c575050505050905090565b61134b611cf0565b611353611dcd565b610dcf8282612280565b611365611b31565b600a5460ff16156113885760405162461bcd60e51b815260040161098490613427565b60026001600160a01b03821660009081526009602052604090205460ff1660028111156113b157fe5b146113ce5760405162461bcd60e51b81526004016109849061301f565b806001600160a01b031663847ef08d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561140957600080fd5b505af115801561141d573d6000803e3d6000fd5b505050506001600160a01b0381166000908152600960205260409020805460ff1916905561144c600882611f53565b6040516001600160a01b038216907f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b890600090a250565b6000610957611490611a79565b84610c228560405180606001604052806025815260200161363160259139600160006114ba611a79565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611cc416565b600a5460ff1681565b611502611cf0565b600a5460ff166115245760405162461bcd60e51b8152600401610984906131ec565b6007546001600160a01b0316331461154e5760405162461bcd60e51b81526004016109849061327c565b600780546001600160a01b0319169055600a805460ff19169055565b606061095b82612080565b6000610957611582611a79565b8484611ba3565b611591611cf0565b611599611dcd565b6001600160a01b0382166000908152600c602052604090206115c4906001018263ffffffff611f5316565b6001600160a01b038083166000908152600c6020908152604080832093851683526002909301905290812081815590611600600183018261294a565b5050806001600160a01b0316826001600160a01b03167f5d0275f68d583838a7e2be68e3ef8ac2c1f9d4eeaa4b223360f4cd093a160d7560405160405180910390a35050565b60606008805480602002602001604051908101604052809291908181526020018280548015610938576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161131c575050505050905090565b6116ae611cf0565b6116b6611dcd565b6116bf81612362565b600d8190556040517fc4e78b3245dc105eefced18655b978e194ff858545a1080f2888dc3b6ae8df0a906116f4908390612ddc565b60405180910390a150565b600b81815481106111ae57fe5b611714611b31565b600a5460ff16156117375760405162461bcd60e51b815260040161098490613427565b60016001600160a01b03821660009081526009602052604090205460ff16600281111561176057fe5b1461177d5760405162461bcd60e51b8152600401610984906134b7565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fd6b18042563148f38d728c1c4d339ffd515b632d0ad2e1833b822412f3f4d8779190a250565b6117ce611b31565b600a5460ff16156117f15760405162461bcd60e51b815260040161098490613427565b600680546001600160a01b038381166001600160a01b03198316179092556040519116907f43fcfef38622d6a5b118be09c27a6ed8cbdbfca21f0ea9245412ce8031c0423c906118449084908490612c5b565b60405180910390a15050565b6007546001600160a01b031681565b60006002610e9b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061095b82600b8054806020026020016040519081016040528092919081815260200182805480156118ef57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118d1575b50505050506120f990919063ffffffff16565b61190a611cf0565b611912611dcd565b61191c8282610fc9565b156119395760405162461bcd60e51b815260040161098490612e54565b6001600160a01b038281166000818152600c60209081526040808320600190810180549182018155845291832090910180546001600160a01b0319169486169485179055517ff71324fa78e1894b364a1fc8d0535c4208f28c7b380f752afe00c8ce386023fb9190a35050565b6000806119b283610f48565b905060606119bf84612080565b905060005b8151811015611a04576119fa6119ed868484815181106119e057fe5b6020026020010151610b89565b849063ffffffff61239d16565b92506001016119c4565b50909392505050565b60055461010090046001600160a01b031681565b611a29611cf0565b600a5460ff1615611a4c5760405162461bcd60e51b815260040161098490612de5565b600780546001600160a01b03191633179055600a805460ff19166001179055565b670de0b6b3a764000090565b3390565b6001600160a01b038316611aa35760405162461bcd60e51b815260040161098490613320565b6001600160a01b038216611ac95760405162461bcd60e51b815260040161098490612ee8565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b24908590612ddc565b60405180910390a3505050565b6006546001600160a01b03163314611b5b5760405162461bcd60e51b815260040161098490613453565b565b6001600160a01b039182166000908152600c602090815260408083209390941682526002909201909152205490565b600061095b600d54836123e390919063ffffffff16565b6001600160a01b038316611bc95760405162461bcd60e51b8152600401610984906132a4565b6001600160a01b038216611bef5760405162461bcd60e51b815260040161098490612e11565b611bfa838383612406565b611c3d816040518060600160405280602681526020016135ba602691396001600160a01b038616600090815260208190526040902054919063ffffffff611cc416565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611c72908263ffffffff611e4716565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b24908590612ddc565b60008184841115611ce85760405162461bcd60e51b81526004016109849190612db5565b505050900390565b60023360009081526009602052604090205460ff166002811115611d1057fe5b14611d2d5760405162461bcd60e51b8152600401610984906130c7565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990611d61903390600401612c47565b60206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db19190612b9d565b611b5b5760405162461bcd60e51b8152600401610984906133e3565b600a5460ff1615611b5b576007546001600160a01b03163314611b5b5760405162461bcd60e51b81526004016109849061304d565b600080611e1a600d548461240b90919063ffffffff16565b9050600083138015611e2a575080155b1561095b5760405162461bcd60e51b815260040161098490612fe8565b600082820183811015610b9d5760405162461bcd60e51b815260040161098490612f2a565b6001600160a01b038216611e925760405162461bcd60e51b8152600401610984906134e7565b611e9e60008383612406565b600254611eb1908263ffffffff611e4716565b6002556001600160a01b038216600090815260208190526040902054611edd908263ffffffff611e4716565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f2c908590612ddc565b60405180910390a35050565b6001600160a01b03166000908152600c602052604090205490565b600080611fb984805480602002602001604051908101604052809291908181526020018280548015611fae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f90575b50505050508461242e565b9150915080611fda5760405162461bcd60e51b815260040161098490612e82565b83546000190182811461204c57848181548110611ff357fe5b9060005260206000200160009054906101000a90046001600160a01b031685848154811061201d57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8480548061205657fe5b600082815260209020810160001990810180546001600160a01b0319169055019055505b50505050565b6001600160a01b0381166000908152600c60209081526040918290206001018054835181840281018401909452808452606093928301828280156120ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116120cf575b50505050509050919050565b600080612106848461242e565b95945050505050565b600080805b600b5481101561218e576000600b828154811061212d57fe5b60009182526020822001546001600160a01b0316915061214c82611f38565b1315612159576001909201915b606061216482612080565b80519091501561218457805161218190859063ffffffff611e4716565b93505b5050600101612114565b50905090565b6001600160a01b038281166000908152600c60209081526040808320938516835260029384018252918290206001908101805484519281161561010002600019011694909404601f8101839004830282018301909352828152606093909290918301828280156122455780601f1061221a57610100808354040283529160200191612245565b820191906000526020600020905b81548152906001019060200180831161222857829003601f168201915b5050505050905092915050565b60606122788484846040518060600160405280602981526020016135e060299139612494565b949350505050565b6001600160a01b0382166122a65760405162461bcd60e51b81526004016109849061323b565b6122b282600083612406565b6122f581604051806060016040528060228152602001613598602291396001600160a01b038516600090815260208190526040902054919063ffffffff611cc416565b6001600160a01b038316600090815260208190526040902055600254612321908263ffffffff61255516565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f2c908590612ddc565b600061236c612597565b90506000612380828463ffffffff6123e316565b13610dcf5760405162461bcd60e51b8152600401610984906132e9565b60008282018183128015906123b25750838112155b806123c757506000831280156123c757508381125b610b9d5760405162461bcd60e51b815260040161098490612f61565b6000610b9d6123f8848463ffffffff61268116565b670de0b6b3a76400006126ec565b505050565b6000610b9d61242884670de0b6b3a764000063ffffffff61268116565b836126ec565b81516000908190815b8181101561248157846001600160a01b031686828151811061245557fe5b60200260200101516001600160a01b031614156124795792506001915061248d9050565b600101612437565b50600019600092509250505b9250929050565b6060824710156124b65760405162461bcd60e51b815260040161098490612fa2565b6124bf8561277a565b6124db5760405162461bcd60e51b815260040161098490613364565b60006060866001600160a01b031685876040516124f89190612c2b565b60006040518083038185875af1925050503d8060008114612535576040519150601f19603f3d011682016040523d82523d6000602084013e61253a565b606091505b509150915061254a828286612780565b979650505050505050565b6000610b9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cc4565b6000600019815b600b54811015612671576000600b82815481106125b757fe5b60009182526020822001546001600160a01b031691506125de6125d983611f38565b6127b9565b90506000811180156125ef57508381105b156125f8578093505b606061260383612080565b905060005b815181101561266157600082828151811061261f57fe5b60200260200101519050600061263d6126388784611b5d565b6127df565b905060008111801561264e57508781105b15612657578097505b5050600101612608565b50506001909201915061259e9050565b5061267b81612803565b91505090565b6000826126905750600061095b565b826000191480156126a45750600160ff1b82145b156126c15760405162461bcd60e51b8152600401610984906131a5565b828202828482816126ce57fe5b0514610b9d5760405162461bcd60e51b8152600401610984906131a5565b60008161270b5760405162461bcd60e51b81526004016109849061351e565b600160ff1b8314158061272057508160001914155b61273c5760405162461bcd60e51b815260040161098490613214565b600061274e848463ffffffff61282816565b9050600083851812801561276a575082848161276657fe5b0715155b15610b9d57600019019392505050565b3b151590565b6060831561278f575081610b9d565b82511561279f5782518084602001fd5b8160405162461bcd60e51b81526004016109849190612db5565b6000808212156127db5760405162461bcd60e51b815260040161098490613092565b5090565b6000808212156127fa576127f5826000036127b9565b61095b565b61095b826127b9565b6000600160ff1b82106127db5760405162461bcd60e51b81526004016109849061339b565b6000816128475760405162461bcd60e51b815260040161098490613482565b8160001914801561285b5750600160ff1b83145b156128785760405162461bcd60e51b8152600401610984906130fe565b600082848161288357fe5b05949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128cd5782800160ff198235161785556128fa565b828001600101855582156128fa579182015b828111156128fa5782358255916020019190600101906128df565b506127db929150612991565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600060ff168152602001606081525090565b50805460018160011615610100020316600290046000825580601f10612970575061298e565b601f01602090049060005260206000209081019061298e9190612991565b50565b61094091905b808211156127db5760008155600101612997565b80356001600160a01b038116811461095b57600080fd5b60008083601f8401126129d3578182fd5b50813567ffffffffffffffff8111156129ea578182fd5b60208301915083602082850101111561248d57600080fd5b600060208284031215612a13578081fd5b610b9d83836129ab565b60008060408385031215612a2f578081fd5b612a3984846129ab565b9150612a4884602085016129ab565b90509250929050565b60008060008060608587031215612a66578182fd5b8435612a7181613582565b93506020850135612a8181613582565b9250604085013567ffffffffffffffff811115612a9c578283fd5b612aa8878288016129c2565b95989497509550505050565b600080600060608486031215612ac8578283fd5b612ad285856129ab565b9250612ae185602086016129ab565b9150604084013590509250925092565b600080600060608486031215612b05578283fd5b8335612b1081613582565b92506020840135612b2081613582565b929592945050506040919091013590565b60008060408385031215612b43578182fd5b612b4d84846129ab565b946020939093013593505050565b60008060008060608587031215612b70578384fd5b8435612b7b81613582565b935060208501359250604085013567ffffffffffffffff811115612a9c578283fd5b600060208284031215612bae578081fd5b81518015158114610b9d578182fd5b600060208284031215612bce578081fd5b5035919050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612c17816020860160208601613556565b601f01601f19169290920160200192915050565b60008251612c3d818460208701613556565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015612cb65783516001600160a01b031683529284019291840191600101612c91565b50909695505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015612d5857888303603f19018552815180516001600160a01b039081168552888201511688850152868101518785015260608082015160ff169085015260808082015160a08287018190529190612d4283880182612bff565b988b019896505050928801925050600101612ce6565b509098975050505050505050565b901515815260200190565b600060208252612278602083018486612bd5565b600060408252612d99604083018587612bd5565b8281036020840152612dab8185612bff565b9695505050505050565b600060208252610b9d6020830184612bff565b6020810160038310612dd657fe5b91905290565b90815260200190565b602080825260129082015271135d5cdd081b9bdd081899481b1bd8dad95960721b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b602080825260149082015273135bd91d5b1948185b1c9958591e48185919195960621b604082015260600190565b60208082526015908201527420b2323932b9b9903737ba1034b71030b93930bc9760591b604082015260600190565b60208082526018908201527f4d6f64756c65206d757374206e6f742062652061646465640000000000000000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252601f908201527f5669727475616c20756e697420636f6e76657273696f6e20696e76616c696400604082015260600190565b602080825260149082015273135bd91d5b19481b5d5cdd08189948185919195960621b604082015260600190565b60208082526025908201527f5768656e206c6f636b65642c206f6e6c7920746865206c6f636b65722063616e6040820152640818d85b1b60da1b606082015260800190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526018908201527f4f6e6c7920746865206d6f64756c652063616e2063616c6c0000000000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260159082015274135d5cdd081b9bdd0818994818dbdb5c1bdb995b9d605a1b604082015260600190565b6020808252601d908201527f4d75737420626520656e61626c6564206f6e20436f6e74726f6c6c6572000000604082015260600190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b6020808252600e908201526d135d5cdd081899481b1bd8dad95960921b604082015260600190565b6020808252600d908201526c125b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252600e908201526d26bab9ba103132903637b1b5b2b960911b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f4e6577206d756c7469706c69657220746f6f20736d616c6c0000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526024908201527f4d6f64756c65206d75737420626520656e61626c6564206f6e20636f6e74726f604082015263363632b960e11b606082015260800190565b60208082526012908201527113db9b1e481dda195b881d5b9b1bd8dad95960721b604082015260600190565b60208082526015908201527413db9b1e481b585b9859d95c8818d85b8818d85b1b605a1b604082015260600190565b6020808252818101527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604082015260600190565b6020808252601690820152754d6f64756c65206d7573742062652070656e64696e6760501b604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b60208082526010908201526f043616e742064697669646520627920360841b604082015260600190565b60ff91909116815260200190565b60005b83811015613571578181015183820152602001613559565b8381111561207a5750506000910152565b6001600160a01b038116811461298e57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cf4af89f7cfa78e2d4384cff55d4548a6062d655f5be8606d039069af7c903b464736f6c634300060a00330360ea7920ce62b933839c983cff4359cea9f4d40ba7645cca39cc1e5402a537a203aece605703a42cc3191903ca44e8d93c7f0cfe9c38a11b43d20d98fe19d079eb03817af525e983bab0f89ac3adc040c7ea5ba5406dc11cd9f0e6807ee0092f096e03b248b0aa218ce9437d5527aeea2acbcf30e1ce54e9d04934d6f5fc98b9b1589e03597fb92a13c5f9cee69de79819459616163aa87f6a7bab7063bbdc69318c7c04038ef6e594201de8a497fa51cbcd415ff8e6a9da00c7f141d3a86fef301ba8e3fd0345ebdbdf1e995f0b24c19d2306d067636e61ff25afbb6a66172546a401c94a9803d06d15fc48545f2e9495d2e67b15efa8e82e1da82d89f7197f137430810f71a403c7fa824c400e5c511ca9e354f208c685994b6bca2b71c683b03f16fd9aca489f0367f3a50dd1540fd0566e4b9971db42f2d7feef95f7258fec97021c25d213338a03dd6eab68699901082a8ea8d0b1b0019eb89f5808cb23b2ffdce917b5f178dbd00327b174f3d457b9574eaf956fb6894cf6c171c28f9fbaa1d89974abf48faac22703c002a2a7fa946bc4c8d85e660d58eeeffba1a0a2d037b69610368dcfd25febc70319b0306bfe9f803e5a76984fbd3b1dcd65c82acc4eb92f256ee22bd1b5f5de0a00581f02349d274bc7188a5b46e6473ac73cdd8e84278fa55a42020e3650f9fe227f5820fffffffffffffffffffffffffffffffffffffffffffffffe57ffdfa9f6bbfd5000581f02cd4e641d5dc097d27f28b9a0e23a3fe5458682d748afe201584dc073c0a04a014dc15ac70ec6dcdf7f021980100330ca4f85d273fa056f2cbf7cc6f6813650cb8dcba9f80af2a7a93426c61821ec03ef14b2051cb18ad4412cd8975c3e937db64da530a77bf912dbf8e64b07fdc90303e6e1a02945964757a0d562478a0e60a225887f43ae2528255bd178815091a61c00582003ba55c60a0fa4a9fd899dfd4a673d0f9719dac10148afcd5f228ba8ec2d00f04904b8e090c224f16bf703e78b24aca702ba454c9c71a1e6e489a5de4f094887155d3d420125d989a511fd0058200320a8568100753c638523b4721eecd2bc1d49f730adc499e0d7e229c39d5e8049068dc0f6ab76b78e5f038a6a96e2dabaeea96c1d6e50ed429ee22ce2ccc25dbc378f2d3985ee41d9340403532addfb77fb955fb1ca1654ce5f5accefcbaea4a1d5091a9a03a59ee6087d7703ebb91cbd0b3bee7763bf408c2a5e1d1a2d841aafb91e9f90e1312faf2e8d8c88032ed05a017af5c7a17d46022baaf89126037c7a79b212cf638f2c9f6c9e4727c403bf3c18f8c4a1b70103e40fdc3db3fafa127ae0fec7ea38c6d6fda73c92c3e25503503644cc1f69c199037d536d499e33130227e32e9a41282b198228752c9ffe200219ffff0348d264aa096932ffa17497680ec9a0c9fddf5716342ac396bf3ec401dee0adab035f9d2c753b1ece54eaa908171fd993c47277de099863a9f8bb3c729d9ea4681a03fef9e54243ca5f8290d4b6dbe2693bb3cbea9b9df6c24949093e9af33465e4fd03434620618ba07b50f13d8ac61f7718fc4fbf8818ec6881fa8df7ce5b37da6c0d0384e05cc761bf45572ef246a8247ae2d25b27d6e6d27c7e9be97ec9c10e58a89b03fec86154980cc510ad9cb54d257e626983170480f87e7c25c8a824810a55518b034419463465364aa8325f43091944a5715e3bc28a106b44344d4e55119bd62e50032692185f5f8daf24ad9c448a9099bacbd2f3165bf603930ad58c7c4f7b0de58f0219ffff03d34e72b777f28187e287baccd83f73ae9d59bbd26c48f55bec11610c8bc18e3d034097c3505614db42ae89105c5334fb1b065486d8fffcda15955883bd75ff309403e8c29bab046dcf256bb8cb9b6284d387af9dbe6852c78200ece60bd24d4e0b1803ef66232d0f25c47317093eea84c87a75199053f00c6b187fb21365c8f3aa56eb037c6fe2336d56eb64b66ea00824910b85afc78d2cfcaa584da6b28eedf2201f7603b1d51ff745f99c3756b975dc58c27f8d50909be76a9f7e2ac3e32fffff00d39e03b35364f5359252179be91915679b254b9eda1c2d77a1eae414cac7b9c2688345038525f23898b028d8d93ef19d0d78c2eaf32b9525ab25b8049b2722720322152e03f3d86a1e65fff6f637afd02b70b895fd785e0a5bdd3870e1c8b5acf2f7488c700396f90e2844902be3c8b104db58b12dbc6d79b43289c1c75405b33202fbad0d9103f22e70d0927b05d0794334cba00174b6f9030e9ded5d97d1af99255ad21668560336ff865d837cfa5031191bf3633a8b804528311d95af99b967a729729f19fd29038bfb3a29daadd8149f00bcc25c151feb990005f5ae9c41ba76d527255cd8762900582003fa2e1ef7ed4891f7eaf3d99f5ba2d0d270aabd29fcfb9f427469b271f0000041010350ad7a1e103c77c97c3786c8842d58642577cd3105ad215f2fd65ae59e58404a03da884bffa16ef65efc0a542b7346b972b7233f038fbab1e60c9f4d31be985c9e03cc6e71d42b4406ffed6dd22263f27d7721e3ab0a56a91a4926936d90f63962b8032390cae870eda904e39d7c47e01863e25526b66a200ecb6965a154d18194a97203000df4cc52516e3fe0da6292e3945c34a44dbd6a7aef46f11f2719e80fe4f52403e98a78aacfbdc9c25ca5a34b6a50557e4d21fa11f5d14a0e176cc3106830d1b5035f77b7bc095b0487d263589244245a90d5e2a7ed9ecb6852a3ae5acc3ea4c43900582003c7e3794394556e25f5ecf13c05e2fd775bda6b1ac4dd572cbf4311e9d1a4905820fffffffffffffffffffffffffffffffffffffffffffffec6c1075c727b5a516b005820032078711ce01294252b003085eaa0c49afbe6047cca8f1b43f722dab2816c405820fffffffffffffffffffffffffffffffffffffffffffffffe865e8a159b6b9de300581f02eb2c36525a13106cf4035bb6535fea7075d37229dc58c70eb0fbfb83691a5820ffffffffffffffffffffffffffffffffffffffffffffffff26540946cfdb900300581f02e3a84ee4fdc3406cd7a4a31a029ed9ebb7e007228c1a7c10837417923945410100581f028e8ba439adda901ef6c44a001d3dd47301d440e3c8617d025132c678aa9b5820ffffffffffffffffffffffffffffffffffffffffffffffff93a7cc40c3283e3700581f024a8d5c341123cd4ee949dddcb8326974b5d6608244275a63d245c6c267c44618cf323777f40219142803fdc756f7ff0d6e35848fd8e7743150d34e54c8ba511691c9bfda3192237a3fcc03ac2b17e0b2cf0117223684152f239f13b4dd6b3655b2be49db3c2ee9cda03591014200c000582003286855214df8487cfbde892a2d08ce7d0079c7f30c33edc06e2ef7ac3584004954867eca8054b4c8490375829d49c1e3abb17ce1db004b280341685a1602d952d087aea0113d74249a82033b06f0ea641d79d71ebf35c2c325c980044bd5df9aa4b16678aa3289565db0290219ffff034519ab64346f260f31d9de1f04248005442a8bf487763c6af7b3bb941ee57a9603f307c5fd7664ceb397c9ce3943f8e3766ed250b9cfa4dca7c58011e2810cd95c03562414525af04a71e21ad734b9ff47c81a515fbfb2c513917a23494949be50830314a922fbbbc24948c5f28901ed5610a3aa9c8d1b285c564fa4429c1e7bb4b06c036e0f2112a5d75e0963f403b1b561e586740505049e6bca6832028efe11a3a7d30324ee5216e994d7278246247d2140a3a38cb83c27d7908e62a7ca37df0433f2c103c9e2c77bf1158d77fbd2f25d994af57934ecec6850c715f9f41853f46002f2e30219ffff0374b1edb35e17096fc083ddd2a98ff7e996118203b52495c00d7d156c22ed95e8030c9e45be9d8d8f100c01d2ea7e833d4047e90701e08c9f684a1a0e25cecbc9fa03b478375a808daf3ee32b07bf58819bdf924f4df7fcc23ac9653b66edab65b84403566e369f5089642a229892c21f813d3d493a22e7cb37093be36608ae679063fa03612465375a6cdd9a587b08ab4c0c1f7e59d139cbdbd21183cf7434b2bf98e4110380e74b90e67785fe9650cd60c807c53dfe29d02c2aed8e98f8acbd8653ecad0603b8a97ee5c773b0f588bcf0a47e83aad620e34952220680bd6d9e7eff29b5e5fc03c2dc088d21c4069684fc081c0a41b4bd695c2def482ebe5975462f745e8a36e903e97446caf037d2c9e137c062ec8f8945fe04693b206e7325d091185494072d330058200356ea8e9f7a6717567746691d538d897879b771bc4647c73a5a69da6d7349205820fffffffffffffffffffffffffffffffffffffffffffffffee7a8b2fcbfe4ed61036c5628dbb4553305f4bd47efd16c2d85ec0a1e09a63426fbdd1f2ba438759b84033646458c1352d8f5c9890c44102f7bf14eab3457581c50bea8b6c7d354d5232303e67163cfc4f7e53889c4dfa56fae5011a9b668db7d8454084db63420120bb49403b35bf65a50a0c6433a39c4545bd447a175f048cccdf42dfa820071fdf6fef776030d1ce395e015320b7b65a221a135bd96911a5d9a620949ba6590734db74fc3a3033db1cdd3603dd119534c5ca54cc0b563fd84c718c1b4e39a611d4bc58814e9bf03f8dcbd8742d4d43a64ab217499f57b41af1207eea88e56145094a38be1717c8f03ea6e75d3a2c9b48ecc340655734f52a2ed2d0118eb509f166e9c9567f6f97baf03c28d9290573080823105496400298c97e4f1fabb8890779454a913a6cacdedd50304f75971cefaef4023706e4e3c5753c7b34dddc9668a54573808cf0b332af271033d0113019c09bb2f7ad4631dfb8bff0608aac950662b264362d5dbe343dc66bc00582003dd1436ec7d1cd778844d164a21673feae58d0d2ae85340c9b7f68d1bdcc6405820fffffffffffffffffffffffffffffffffffffffffffffffcbe22ed38dfec95440389e216c0828cea6cfda62f518f071ae5f64cdf88f6f9af6571f40db499b94ccb00581f0203cb857c1f88da526238466fcd27659c0601137a2dcb35570ff9288a640f4916bbaf49d9387d1c5400581f02f6d14e8ca06f41679c222b0c291899103ed465ccb47b0fd7d57fe255c3d75820fffffffffffffffffffffffffffffffffffffffffffffffeec3768c48e7bdfaf00581f020e7aa3f550a98e7441986decbba54de0aa16494c47aa0f7786441fbc6f9f5820fe0000000000000000000000000000000000000000000000000000000000000000581f028dbab647369f9731d1ca69aae8a3bdf7ecfe0c247c511dc126569abc6b54484563918244f4000000581f026f50c206ade3be1f6529893678df62d52a20139bc3a789c915374b9c5d2d4a13d746145432c04ad2ef00581f02a54a7ac95148ed8c3c25dbc293c8c1746dfff10acff06f73457717cfb6894814d1120d7b1600000219248d0219ffff03329fd1f4096da071fa63dcb910af71f117af4926fcbe504f4269c8e93b919415031ee90fed9afb36d522978b12dedb0d248da22e721b3f6eb3776ef4234179618f0340b074212ce7e4f6fae4709120f07d0f374bfdce880b43a4f3d7021a549c392e03099b0062d64f901d1b18b502decfb5c9d164fb2621b672fcc6097454a5d780ed03c218b51ccdcf91dc4f95d93a4f79888b3405137c10ea2b685c5cf5dcd334bc70034d707da5efac27c85ed701329d3995ae8d0562327991f75242955e4418fb8ad903779459992fb9bbc066a61ef0a184ad74418a686bb3bf9bf6aff6ba40b595ceba03266ee2f5e65a039fb4a63e3c86257bc112325fd07ebc44f6a9aca25fbd7c07a40312868640842f9d6dadb4f2e49286f56ad6ed6875fb34ff115110344e33d9d1fd0219ffff03c05fa755f2f77c8c5ddcda898ca4784ad7a2dd153acfa494c34c5ccbed7ea4f703e0efb3d5e7913914866b51f5b01656b0ce2b98d5dbe867965247bc9f90cc4ec90219ffff05581d022c8dab52f8f90c271f05bb67675f083fccc293e7a326c3c7afe62bcb0f014805802fe7d705400019368b0219104003562d59a51820d47f520c975e0b2bcffac644a509749a3161f481f57b6e826d210605581e03aba08c489b5ad474c07ebfbe33410ca24439571cfeb3b95724d068960007011bffffffffffffffff05581e03aa752171b2ca99214fbe9c912258dd07e87b2f30c6257a4da69f8770300403031f8b67be329f6419c9282095843235301b6b3475e42bc9e3262b646aba8072060605581e036b0d8253248b15b7a1b12d54f229ee511bcc40b69efc84bf2a16f98ef007011bffffffffffffffff05581e03b60175c43cee12b1004866aa086665d2bec547880437a2759549373f1004010219721a03898e78dad11e17be644381cea0ae7c1d3ad38bfdcc74cd49b46b1fc3b7bb07d10395b59808672fb1353e7f403586324cbca6be75dc3cd93abfe452d0a035f3d538032603d571b139ebd7f01e0066d7dac164a7b8a09c28c1f402f5518b0cc89c8e2d0364805af60650dda41b0b200bfbef51742bbc77da888430fa31b2c8eac68cb918034ceb69ddd1d6fde23d3ac5f6220b87db6d963401eb92df331cc7623fb826c49f03ef053ddb10e6df20e063f1532925f59c38420f435751cff49a6bc16dd32d272003ef5d5dae4ffabe5c846caa0ea177bc513bf30e99bc699dfbffa85ca594edb6790319abfe24aaad4d0fd73cb4f2a5612929c99bd833d65011de189b58c246a9435e03d863a0bcc9387464de132fbbfe12dfde51fee7b3dfc882b0787a6c43ab03276403e81d046085fc47a090b8673c5f77c9ac62232c516f32b895c7bcb203b9faf7b403041dbab8b88d792a0779752b2c1c39a4cbae55bb10fa7f3665781046f1d571fc03ad2468e65640bc4b71a67a8ac043c87860db7e8f200743a19d068d17924ecb430219ffff032f0ee4de7848e944f0b98ccb217fc157f94c5c98ec150f94fb486b6cce04acb503613125e1c61b163fee0d4103f0c8fdd759477be7b8388a30dae3051c79e9ba22032dd258d203531b3bf255270e63356a6c0342895fcbf15a3ff2626e766d96c4550219ffff0386206746b858df0669069442a67ec91f51920cbb483fd8b15bdec382b1a6be860344e6baf813a08fbec1e3dcaaae945379191d13ddeebbccab80560fde94f414650219ffff03d871fc79b151f46dfdbf8c5ab616a8a12274a83dece9f0b88a0563704a387c9703a017311497679948fc2437cde943a41222b0fe06513389f23c8ac362f38baf1a0219ffff030ac22c7b7cce2b8f9fb02f07630853936ed508daed05fe8737d7bbc6aa9e794c03795bf94ba2792add431fa06bfc3c8b7c99f80b32d4bcf808eef9262cb346cb600304a2ecf1a99c3b598c080d4be1bb342a8c9412c8dbe4aa2df63183bcf79d51800219ffff031650191497a8b409c8c7fe01e4591cf485a4b313fd33d3401bcf56a39f97696b03a468d17fd6092b4efdf1790bad8fd877b2bed09d91f570cab5220f1fcd39a2f50306a86098c43e0e3fbdb92cd47459b5dd34c59a089388811190a92a56c6ad97b30305e427e36bc77e9a276c4f8457751fc33b9e022252c1013cda99cd21bc274da7036786e1993791baf9226c4052a8fb37ad27c37ff2bb4f2307f951c328d19904c2039073ee1e985d60302901229de3bcf3bcf578e7e18b7edb00b33d2480191efc890314a13eddeab38bd7df7e4599950ca4255216e9a03d2c09d8c2f3770525af95280362faa5a52289db1f4cfba0b9cc3bdc98edf1203d8507083f4d2b3a58f1d134770339f1c67b059e353d696ac82e7a02bd0a094a3294b41d266d97af01a803f8c1910384082ca5af310f354f23a486be5cbc122c519b8fe4334028720f62154b985ffb033780ea8ec72c0e6c467b4b4262a2a932a05518757d071926fff5d87b29d53a1d0362d0d30c6723438533d8567be7513fe9aa667eb8abaeafc61232486aaa0925a003cbdb3dc65513c802e090a4fbb39e5b323209f6c25d2a27bce5fd481660d1dd0503e8ec37f620834a0c637fa712aa273637f57d53f99dfb6e8f6938f1da3dd381ef030feb1f1078ac4c1f3baa14913b4216ea6fef46388602ffac84cc780c41a35e4c03033cb3e76606fbf8ff953f7594690d3a0331eda7aaadf9e642042df2ecf278ef03f127650e78abd68d95788ae8d7b6d6805e30c5d89d2f3bef3f7b074e18000e9403a95c321fe995d210668461fd4a18e4f471d3d500b370c898bc8587c10e2f6388035131269b9c77b2071c4853d77ce8603ad337693a24a17bc7f0a33932883dd107032b4ddec0b73159580dd4d4706594ed481e9abfee57c4c237f9936f8a40d199f703a1bbe3db57d1bc1b7e873c35ee267c63054f860226377813215564e8ab1cc09103f3ce2fdcd9f13fa517de9dd704a66a02ded5f91f155ea099c40821f4abbf54760351b83ce2933440635dcfdb4808b0b5884e1b6de629b5e4150fb624b771d3ebf40359cd7a40e337cdde43d6b25a43706a33019db9730f6858234b2317727ff067100365d5135d92bff813c2e85bea832701c859f711557a021548a4197ad8cff1398f036d2eec0d268a3dae8cc81b4461ce5d867271d0909ec73fa6d6a8e83a36b53aea036f0581fd2e16dc5b66f066d70690c895eb9871b512a3adc84b24e74db9f7863e0371968765226d34981a4fde2fbfbf3e10669aaf8cf15ca49b9df93e54129739080366b29765d4793c92d469b520ae3809acef4f14b76eec1d9cdf2140a42dab428b05581e03b1ca458d01246eea6fbe769c335cb7ab3f938c5a8726fc54777b261330040205581e033d616945a7d42cfd2e5310f685d39212557c18ee821c96579e5020555004188d05581e0352507f09d93289f2000854ca21ec6d108c413ec69d69e55501c7272540040105581d0265a919c155a4eee6caa20efae6287f002fb003186271ffb1ad95f7c60c02470b7c2e85dcd80005581d02ca4549cdbff3ad31d60800a5e862e8ef6deb21f722a281579428568f0c1a000a961d489d98cc653885ce0905581d0252594122e76166b01cc01f13d41fb1c926568c2f2a14b8ef66fdc0de0c0c47026c8613727150021903800352fc2d0cdc5601d1f944529012aa66566856c5b49b1600c7b40dc84ebe04a38d03b94106c7f2b6483fd61c1a29dcf684bb89827596178cbe8bacf65fa13b7e02140219879803e1c15b457c4e685ba81d745e72451ecf4e083b3f37fada38b5a143336763da6003302374dcc17553bbdd76e46e72cf5d943c9a36aed332a94c20cfd060d15f8bce031d8282a04508b70abd8003c0ee0d0ccd0f740a9dbc743000bdb4c25f20afe76003c5f7ba145fb83f3ba2cc939c780506dbb1086883fe5c4079306b2109bb0c3d60034ffb0f0ec57ef20be8e62668abb6228c41e87695ef06dcb62bb82776f9c9b8e3039228bb9a0e66b2462d2f3df607e607ea6310ad4765c1a8ac4631af32391efed103e28bb3118baa2978d1ed9b188b54dd80406a8cd46ca427e1d6dc34dedf0c80080219ffff03771d8db16d382d38ef617e8bb782406b1fb13a50bc9febe21e166c5dd29a81c703b77c3400efac675ecdcb59e8178b6854dbb5e9c31b46bbe0e467a0aca54a4a2e030e384599b2ac0292cc22fae825a3d5abcc0f6faff8410d3754ead4993c17973903d2f1288a415c951a8d746bb159a68ad49a4066f4279be61983e2f0539f6d24f303a6f5c5fdfab3ff8722d226912d7c35eca8bae179c3cb6dbd2aa9c1ecd2ddcfdc03865149feefc897cf04771e800c7fb4665bd1cd4fe203686889b2604711f8eb2f0389c452df893aefd649e9d4196439ea08129b9905659943c0c60fc18dad94c2bc035a466b549122fc384c6e7191ae783ca4c9f0b4913cc73d3c9ffb3f689f1f0af303dae896e4927a7ad953cb2c4dbf9b573da71f7c4038ef71302fe280ca1b7354430363693490b2d2d231fda356997cbc728e794e4b8c8767d6e23d54cf17f8b861fa0219ffff03d1b42740a4ca6170c9ba5b6c80267ea519c2f398e0b3071e256212270c76e9d40309ae2f8f1724a042ae130555b06ac7873309397ef80fa07d50404fb86b4e49ac0219ffff03e19200f860799073d841dc262d18b6867a70147a377dc6f4c858882fe915d070035637bc54419e6beb7fe3e91086822c4ee1a1984ec724ba003c2fcd92b132a4920350946476b382df6bebd3ee8bb188b2a161a651f06a7a25b5f5c58128b688ecc103308fe2baa64a823ee555712f6d2f4a2e95f1502f1473659209749ae54f637f0e03b6320bcae493696b76e43172f30f3da2da647a53564bbd66871221cad0d0822b03e65ba1802ffff3227e6ed356c9ae478e1de66d20a8d4ce2d8b030a43e5e49b6d031589a93abaa8a24afc80890cf1698e85850fb2acb4b9b2edd8ae5cb189e584aa034f1d8f35b6750a99e6551b4b2afac052924b9f7302fd7d1f4cbb94369c54087303738002a4e001da2183af4778cfd5d80ed5b0dd4116a276824108e0c9d2566f8d03ce331695f7b71fdb63c75f437111eb811d416425044ef936bbb67c2e1513351703d6987fa412d7b5a2c42b1fb0ac04ce5f318b4e9b94af84a20983f97be7c100be034dc6318143d95df384490475d5f685dcdcacb611c977608633384f1cfa7ab1380329232b7985102061ed0a668cdd2cd36d3853f27c17ddd1fd933b7c23c3f87fce0219ffff0354fd639d867589582ddfab7c86c3ff531dfded260dd3d415f7d9f00485a7f7380307c230ba4e2cab7a05b25cc51eb3d33e5760d0da4dc0e8997cc385f1ab5cd0aa03e14cfbcd7b5f1934c5ac07ea5fb182981b1123461ce7819a16fe73e43d90785c03559cf2ca572db8e189a045baf7e8ac291acbb4791a25ea44c8ba728dbe14e042036ae5fedd41c7339d532280816468c4719b4b84cf5f17d2afc642919e96f0d6b103e955618dc0bb756d8c6652599972db422e4eafccb6327ec3ee959ad6c42d4a0b03a0e17dcda347c4ca3ca50b67306df84f097207ca3ac80636e37e8b06bae6afa3037b3c6eab1337187dc2bf4a37ed2371f787003bb33f630221ace92ad7bf6039b20323ca34b42d86bdb89683152acc69a4c9021c428359cf0a933e91d279d7c6819c03f21a3690f370c848513e4423f67d9551d86562dd18cb75d76eb6cc19d44bc67f032697161076dccdb5bb807daad1c4c2e65781002cf718fd32572e0d0ba353915b0326fe00b928c372b6f8c6d826149f09a4aaa97884c1b426e351f9542475de85b40337d5be143d3b11bc857c8b21f3a8241f04b2ff4d19b629899e2b08163c94892303a2bc49e02fdf2ea64de424a5825421cd93ca0f3c63814745ff6ceab7014caff90312e8764a1cea4bddcdde6f6eac6512cbedb9286c41339e28c1650be164de273f0325f9e620b76a6eb7eedcdc0a061ca60bcde101148ba0cf04241c27bd29f66708033ee075a411eae29a56eff8c7c77a6e6a34e41cc3760a30a44bf8ff34251bdbce038b6924e116b176ee9fe8978e10614a63458ba9f81a60582bb2b3c49c7f1cd20a03e5822aa6ba6ca5b14e505a2b58cdc8943197838faa1fdb526755f45870244182038ee495a8519790aed8b58d90f7b0cd0033ce5a6fbf862076afcb1edc23828731033254dea2db34e2cd37ddfb19b7e66ab81a329c1fe94f3ec2ce18354cebcf885703a99ed0ec8142969be41841e6d0409009562a492a52c8d134e791ad623b06456c037bc7bc83dfbf967f09157306507f44775e29d7a711a4d79b64d87d87b1c4f31e03c44e74d57101475667afe2997499e71b521e22cae34b4595bb7180a90fd8eeb4031adf17b5e0d1ed1f4f09408ac7ee25ac7b89ff3e85c4b9293f943207d2d87059034996fb772acc5279ff91ced11bf308fa12a9777c84fa6c09292b04b1d1a5872e03e853ff9f5dda0e9a9c42117c61530a1bdeffef2ef32eaeb071588072eec83402035dce5e3ef39dbc83cb2079f098100a7018c8d1b1b6067d983edce4d331326b530359fe458f8dbc67f5c68b43badb67d0174ac2b9f286d11906c61506617fc6652903d82b805143693d8d0bd0c068d123152e20ef3147789afb74c8a740f385a6eeaf03f130c410a608922d0b516569c279aa5e4f1675ff4ee9e9701068be76a7144df403bbac346e06b07d560b86b40af45fd01aaea3081e8b5f1ab3d3427f321eaf976e03cb98d9270f284630e965774620e0cd58169f8fbd1334bf09f516c1b1b15efdc003685c3bebf67758c1368aa1d3e5698814ee842eddfb1326c8a8862af4e695ff9f030d07b583b4f1a28444d0d5645eedd17e3c62e9a0993f5b5ce1d8edf3c5563b3d033dcf31cc2f00f81cdbe8086e7a74badff58ebc1f190b3467ef9db96697ac9977036cdf1af1bc927549c2def3e877c510d38687b1f672219d47137d64425c6b037503f68cf71d3952d3b1b82360797e16dbf479d39843d8c8fdabf8b5f65f891505c605581e03b2758878c2c36786d8487c37df8e9a27b11118c4e2fd76181cd4e648f00c03464315072a35c805581e03e7618f47a37803fd7f7e2b610c14ee757ee031b936d1f786bf523885e00c01470643706cbd300005581e03b2849ef417d0962c9e837433d17e174ab6f3a5ddbdd107a60f9af4e2a0040203bcf2e69616dfb6dd55d8fcc3a1195f986c99ab606a7f455c1a96fc05ac992d9903d6fe2da97a0df942a65306743ed8e8e53a6360e23194e2510dee03a983d0a1c603f251e2396575a420bbc3c92454aaaa80408ace11a4e1f25a907d3d954a2e97c301410305581e03345302bcaedd0839e22b5d09d3e7577662b0c24e06a11d1837acd01230040103cb14cd5329e35ccbaedb8234f208b713968485497b3f95490e1c59d86c0203ab05581e03d4d377e6932bb19975bd84c39303eb5efdeeb681f70cbc6cb4916ec480040a05581e034f5e278d32b0c694fce17c7080ab33451d85db74cad7ea4e0a29eaed600c18d54902413032c3c53958f805581e03f98f04a75a099653f017e5f0007aef28962073bdcd9dbb2fc1c3d8fb800403021979e703f0a2d2929cb2b23688087875667533715a4d68329289e44136a5badcca5a613b03909f3d1032da5d9e28a25d8c41fa301b0ba133271cccf57be936f24d6b513a6803949cdd1c87ced27b3a3683a2b241b88acd0faec0f3bfee27146615cc9b18d25303660fdc33311b31df8311594411d70dd79d9579c8ed3be050722ad828809f76d9030147dd41c1751910dd8a44d2100dada36ef20080a496d6243efebeb7dbea675d03a8e1dcaa48019d979abb4a1abe5e41b07eb2a83d24248d0f1f2d4799d54adee003ddf013d8db0002df9ac4e0cb79428bf41829678d9e1e9e43a3c32efa250301650387dc1d609547d808578144a5004409543c7067c89f08a9a4d3c06ab05ea1a664037bca481166d6c2f11f582e64074da688c8f8b48551529035a94002bb65de3c7903579deb1009854973ff53977a90f39390b0394de60cba6346816ac572123e58f1034b8ad5983e8cbea18cccf263fc495aec17d42472337d98b674cc85b28fb0de74036ab5538930d803a1751b375e8d2bb3e91a762683181332fdaca1bab792769d08036febc88624a4a3fda3ea4cd8fc3ea6e544c72aafc2a43ccde4ad89828edb0cac0364b7abd45a833820d491fba95703f1c91f4c310d83373c63cc159e8b99a6672f031d1ea4d795373868a1228ad7fbd197aa9097b46ad5bc73a0fb2221416f54d33d0219ffff03dafac1a4364c19bee0f82282f7d8684be93f26b47b6dd421c48807103860a25603767382e59c8963c11bfa50a7cae10224a62fe242f3d75eb0e24bfa885c79ccfa0303d8445482fde0975642775921eeaab332b8db852f1a66ddd53f52537d8e467f0349cd4d5d42a3b842584f901aa98200482e915f02dd391df23c7185c088912a61037c89f6b25c1abf657c1f7037d97c802dc39f07f519369a0057a3bba306c1df230219ffff03598953842790b7a0c5222c5c0a57b830de41daac0ca960583b35ce2b1aaeab2703d532eeab714a9df7607cf66e5ed785e0e40a4f70ec7fd26d7a786a10959bbf2f03d6b1e8fc636643482cc6569d25c2e08ab08fd50802e076a3dcf394db2551b7ca03caca77e6e00d25ddb1ffd1442c946d4809e6d8f75c3997e723ec456e69e882810219ffff032129bb96b2f23eed5d77fd2a9e68d36dc320d9ac5505179ad5eb80684dfbb5260219ffff038365acc675f29cff433b9f43fb82a33ac7434c040ec57488d5b2379768790fbe036a21363dfce2d504d1343d8b2c92108da021f217347ca1febc66beaa60d24af9038cba605eb9df782b050a3adf9853285100007a5ab2e5aa13e2e26abd0aac74e803f7f24fc9cae29ca46d54d50602a703ce5fab714412f8edc14ee61bd1b3ac25bf030df7d5b4f664e00eb5a17a023bd09e7301b915c05f6296c0383011304a859d2103db9f0e02aed5fbb6e1bd855992df00e0da8b84f3419ec3908c78d9429d3a7b470320ac67890b1f95a634e3410ab5383197e44c61b476859d491ada6a3372ec836703f45468c69b1e5fc5ddc7ff6b2887592c262eee4b6cc6fc72365dcf8f6936011d0333e4f0629bb26e3a3c006a6639d09932935586a1492e2794f419497eab819076036893cb4d59104ec9d84505d1785d519b47edb28e8b4669aa6681bcd6d55cb4fc035857d3a8442906347983db9d6f2d898240d605a4f754198066cf22c0d6c425c60219ffff038cec94690e812e7fb50dff8c81d6211cb04743e5f8b76ec3a0ae059cac47e35903c5d01e47803849da226a02611ef29cb491a21cdc63096268eb51c1a0843c4ed003afe9d0d8fa6e4747ad158ced6b55f01473e75f41d1e7d47adcce27132d7b025c03bc85eae3105a35f82706f6319857a7ac5eebf8610cb2b353a6ed897ab70dcb28033f8fdc957e9a6be57bdafcdce8e717438e528911250703139eced50227b94732038e2700a442df5351298173355c3b6948692a0aa43d0044ec7c86a515bdf00a0b03aa0ec262c412f391b647ab1c28c33bd5793e892053147db4f7ebf0760c25429f034a678e08eef171a227e2c5b85449d0f4edc4a1bf5af18ba3d50b259466fb5edb03dc10b47057d2b48f4e4f2b1158dd54217c501ff16f9317c8d3e0b84a4f30ba010317c739f6fe76b7c7abf9bb10be50efdf902cafe342a502ab30874a0b2af7f14a03fb1afe85865a484dc8bf452c789e5011a1e59903d20972f05924a3e2b6deb85a03669dcc7f9b458db580f119eb416696503d3d31b28b02006cd2a8aee8793ccc740371164d32d2071d367ac6f34d4f75dce044da25150290ee13d769e5582e44371903ff32cdf921656f5171bb158da3402c8cfd140a82cb082e97a038e365fafcc8ee031110365a261d78d3acdd84899925a17832414b7d5ee2dcb16a7e08794143900603f9ee72e47c08060252c92cff490f96258af3c94f91c4b4d84542834fa05871b7033cbeda459afbb6320e196a79432f699b31617792176aaacf13c6d8a1986e954003886c9f36f5ada18e9f6ab067414197c8a3782aef8f8779823e9f2b4ca354ada303a3cef5ad072fd3df16c8693ad4370eaf9fd2e94ce4f912b93dea097d034c78b103cfaac0025f48082bac7d449ce07b8e16aebdfb8d4393e1c2bf0fe18afd53b7990382308d803b12041ee39f1c4bcc77d1fa42ad4cbe9904adf28c80d44a285afde40393ad0a1fdacab9ff29e597772250f84c8eb04a5cbfcf0f37025c412b4e9bfa9f03d1e0219bf0dba4a943bdb2c350e355e231e5e841b553823cc0ed7230c048c0ef03820a6aff14571bb86f6d84a375b7d521c08a08496287215a10cbdae279d2b9ca0334afbb53384b515db917dcca63f9d03d58c5ce2547ad24d4576a8d9d02f5a177036aef2b3501214e8dc59b5bd2805acfcb72df6d0da71f9e639d60f101b347c7710381de9086c125bd22dbb92dcd1fbc97f4d4312d2c26c0706956671676f440f41703aef984fd1b9ad3eda0cb4a142bee3736b43c9527a075a44bfbefc5d232f1f85803a61ca9068d61226a8dfffc2477247b37de32d21b128a2ab35fe460987b07c505034c3a2507f2e7db35027f405b2cd849c5eccd2a1e6bb50a6c84da7249e2db82c4032318b89b50b7f709fa75c443ddb31fc492cb3cf3477b7984c8473059e29c4d74039ba4abd791f8ae056a86ef9042a7899ee877d32b493d5f4749aa10fff32a7f1003ddf112e1fc6b153bcc5ca042ac2ba3155aa74860672801cdb276f86ee57ddeaa033a599055e818613288c41f1bd8fe2a4b4e2b05fd23a3a15bf93f16aebf8016ad038ef61839303015b85e3b16fb1fafa1e328fbbfe1fa320753725f982d957654d8038cfa512313f881fdb9e35572587bf69f18ced08776ce49252737295a305966e003f5b536057aa56871b74c38946aa8e54bc4e7dfa53378a2cd9cbeb74cd62720ff03512e7fd967289262104cdbce4b8bc0529bc3a681e9bd1522398b320f89818bb103f9751ff6409ef2fdea49767eed7d654cc98e85f42df3dc401a32d04271577a7303ee7d6a2b0d6d1bc06fdc15320f90300f0ba7642580502c913ba5cbdcb181b1820331010542bfa65854dcce29889cc98de3c639df67379a3b3b3cf98affe2e74f3103dcb79a64cea3597b43fda68eb4d9b9180c3c5ac3512735a1cedf8454bbae58b8034ae3d75f8427121cdf2477d59c6209b77097f8c87292c1ab449e76639360891003914a40818907e5a93f60b05f39e062761b32d515d00583d3aa46034b1c908fbd030b6aaabb5b08f7f67a0b51d394270b37d22bce2df53899d94a428f4f026e0cac03d500a65e021bcace8afe1b96681b393a03d1403a0091bf471807405f950dafcc034eb68f2c06a6b6c91785f0b6d138c33d758e5ad655c179c88caea797147eccef033c3bb23d53ff8242dac04fc1731d0039eeeced92739e248c5b61a60244c03e7603070ce07d739dde5b920b62d01f256ce5466d56eb21f474757116dddcab87f21b03487bc66bb3e9ceaa6ea1782bd007b206d00b76b2b87c65a4ae83a82575fabe0503d4110432f0e1b72c655394ea770fa57c098cd925bde49fee3fa55c3274c04f3603eb8ddc9bd99dc0ae4003a5f637703be6c885cb30dccd4afee9636ca47a90addc038ac54f5d263ffe0769d2abf5f4b61c121180148b19c72a91011f0d3f8d3d54390330d48c7f9098573d652f0b71ed5f14a03f057dca4576bdf5c516b12aa17947c60605581e0309af0f46d24615c7d9edef73d22cc4390ff5f7167da82a3908fcb2e10007011bffffffffffffffff05581e03aac863645a002d6cd78e5f8a9af3dd879a4df84f17e74984f627c294f00c024686bad161a36003bb6c280d77e6d9ca1259c06dc4f38c59a8b3aab4b5fe6c5d20dc76f3818f438405581e037490de37e2dbfaa1e5da021e21b5a47d6fc60d929a3c39c2058fdd3d500c190654485cac3a41e77d836305581e0393884a96280807b1f28aef6947f8ed40af4aae57dd1a924be89aa731e00c014728e59229efe600030f8135fcb5c0719bb19a119537daee05e6ff0236a3a29a05e54e9ec4fc3bc25f05581e03f62e6e00c763e422f7ea24bd5c0e12f0184127ec8b603839a97dd4a4200c024676638b4d70a005581e03e76af22859b199cc092ad3b4ec3eafd7272e6998b1ad598ee26827b5e00c0146082b01dc616003d5a867d268961668f5797a04462bf5b4471525438ca312d5017d72f177b06e5a05581e0303175de6e25ee85989d4d1322bc974085c6e21b54ca16ec6aadc23d6b0040105581e039fad25174958c685cb6a9dc4f9945a11e2f9f4909a3d0d72b52c51f06004010219e7f103cfb7f60c65280c250ed8b66b63b64da972fe24c6603e6861cef1cb14cd23981a0219ffff034409d069f19218810c8e4b88c61128ae0efb3a56059cf946fe38dba77df0c05b0219ffff03459dbb1d11ed80ccdce6cffb2f541fc3e080c9bafff551b98cbd47224ae2d1de03c642b98ce0ccb2a233b951d05583436549a8497802a9b7e450fd9dd030dd270a037379bb1baa8c19f85dcc404819b82be8fa1d10173e59d5dc35bd67deb32e468d0219ffff03ddfd921ece199fdf9ce07d967cf21f29d6811e08436712c9d0676ed741c05282036f50cb292366eef9d858b3826744b2a41ecd06decace609438f63e0605c7d69e0311f0a7bdb78427132f11be5ad99ed58d019449d18daecea686d6b44a7027815403e44b739b1b2908ec7bc7f9ffd26d8da62b806b8bdeb771bfac7691480e9574e30219ffff03b2fc20b5aeb90cbb2f3c51dae028fb77ab15c165180e7295d58795a30544ef3e03979d76527eb461e0dd8e60369ac29beaf5494f9e27b34b1b682735999732809403d0a37bf5814eff746b6a32ce73e12f8885e688acbff824f2494318adac90de8203def5824947d97bdd038734f86e55bd395009261a1deabae90de5f434c03258820311a4afc85f12ab94373f29e51038721da8d12d4452c776ac89e4942c69d0dcae032410e0b73c01dfbc6d692850566e18ed74c647ef55e2a3d65686319f34d9c77703b1c0023f718a63cb2e1c7c3f02106d0faba37a4c38bddb5c6ba5e5f261b3219c03e10f202981587d0adbb061d8554ac0ce7b8767e69867b33d27f09e3178a87cc303fefb3ec6f8eb7e49ec0dc26bd164508cf7ad526fac485c018a06d78b3c5c61da03f1b021d8786270ffbcb4b12a7b796b1e9a079eeb1ab92ca7572377d05353d6270384ffe12720f1aad8e8505ebb585c100a8efe2ca78cc69a61d2b920eb6e6de25003ab0d481d603da4d7d3d30c2e03ca6ecfa986fd91b1edb1a1e42c2890b0d3ed550385e4a91ef8687739a0496322e9ff9ecdcc5e68167380e963a55ec5997182e8a60219ffff03ae293660abe3cddbc2c4e6817310249595745b8fb1c6c1b4da79e90fd51b235d035ad9172f95726ad772496c05b0bcfbc282260fe9d00ad2c40febc637d8b308a3035c5b7583250a54d367052f3844cfe3221b38ef3d1504503bbd779a881f41919d03bef722a29810d8be278b94808ffd425612a0fd56f0aaf969aa3a27bfd533a7ed03936826abe95e5dfeaf6478e54741a9a01f584e3b1f8b05d176291622f4378d3f0363b39b562a171826db83775ae1f478895fc31f510da32df98092fe62463257e903464a191921272ba4a42fa6db53e551c5bbfe3168de5181509ed51d2eac9810f9035fc2d93a5f27bcf189a50fbeabc574d45d40121b19dd3efeff86696528112f4a0377aa2e8df60c94eae555ea56a1328ff71cacb178ae8824de4ab8534c19f9c26603d9c04efb4ad6661520df6289bf6a4cd744b069c1140e9726f1a00baf8b6150c803786dd9ed4539405d4be63a773f8729f79df8a7a7fb3f70b83e2007bafd4a99ef030834cb96749641492857e5f4d71d47b8136a484058e25b8eeaf8b6dba0e3dcd303a1527dd47896f6d7f847576ef9b4330e2c1cca5653381b4b8b9b0608d7a3a45a03cfd3fa4caa95159f045dd28f2a6bf7cb576e533bfcab8918a56ef1e7d337658c03b01f89d3d73e072e79efdf19f4faf5dccd712bc4cb84119cfc0caea00a0a600e03452ad127705a5b6337f8e610a5c267dc9e6a9f81f0974a689da9795ffe787b7c032085fb3cdac5c4ee5fff92861d0cf965d0e6d0c6a2ec83a8b25aab42a4aac4dc03a551029b1762732d70d18f63fb3316b54252d09161432bf22301e734f813889f032f9904487b58121f4ec788fcda7a55acd495a0868af2760a47ab77875706a504038b199df28300fd77865fc68f88e022e7edde0ba0493f9d60041b5ff9c65c4af403296d3fa78b37ae73c02266ad6f7f21003f3c03abd3c979fa676837348f49dc42038781f363df6dd0ef638edc888e8f3529bc8e63326a4ca25f635214f483bb84020305639796c89edea337f3fc0d18bc6ed0bd006eea7fca668cfba48814b5ef153f03f76c5106240ca3da8dcf0aefa301d62524ac023371f4466e6f28c982d2cee71e03d96bedc83d6489e77fe4fee276088c5d390469868fbeb47c399e3fe115d4c74d034a0285e050b910bbd82ab2f451ca9e712ae0a139402cae99797d772572d4e06e03cf03cd33e89e67a721cdccfda36681ec2b5e6c31cf9f5139c625ce197fd1aa5c031f1ea19f5abc5eff32f2eda8e2c5e55d9b49ff02589779e629a324de60f3bb3e03deebc1ad243622d47ea74c10e94994572aa36ea066fe52ad1402bc2309ee51220331eba3738c7900df164323e31d56fcf16dab78c326d5a72b747368ffe008cc3203abf53e9d639ef7b9d62cc052cd2fca230c5696de26abf4bb3167e20533596ffc05581e03b8971967e2f5e83fd50155e29b0d1e3222134b6de74f48246afa33cda00c014614938f7bc00005581e036488ceb871fe4c94751d347eb0480cbe68f771256414587d625860cee0040105581e030ac604447b7178b395be93b3784feeb389f9dc79c831a14db8ae8412f0040205581e0392ce3266e0617c4a23a635682047f6189cd79f9f2d28bcc949c0b1314004020322685ffd66f4d243d83fac445f4713466e6dce4c46c7744ba4a0afbde5ae7d2203cb2944c6ea13de67d0cad588f3fd4493c2412350076a5c13f39b00f682eb2de70459270460806040526004361061009a5760003560e01c80638da5cb5b11610069578063b1ebddda1161004e578063b1ebddda14611616578063c44de60c14611636578063f2fde38b14611656576100a1565b80638da5cb5b14611592578063ad5c4648146115e9576100a1565b806301e33667146115355780631de3df2c146115555780634782f7791461155d578063715018a61461157d576100a1565b366100a157005b60003560e01c6001811461013057600281146101cb578015610278576006811461031b576003811461043b57600481146104c7576005811461059f576007811461069257600881146108505763fa461e33811461096f576310d1e85c81146109e45761012e60067f55444645727200000000000000000000000000000000000000000000000000006114df565b005b60043560e01c61013e610a24565b8015610182578115824314176101795761017960107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b61018233610a61565b505060083560901c60163560901c60243560f81c60253560601c6101bb848273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2611448565b61012e8284600030856000610e5b565b60043560e01c6101d9610a24565b801561021d578115824314176102145761021460107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b61021d33610a61565b60083560901c915060163560901c60243560601c60383560601c610242858284611448565b6102656000823073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28688610e27565b505050801561012e5761012e6000611327565b60043560e01c610286610a24565b60243560f01c81156102d4578215834314176102c7576102c760107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b6102d46000821133610a41565b60263560f81c925060278360140281016001850160140281016102fa8183888688610c6d565b505050811561012e5761030d6001611327565b801561012e5761012e610b50565b60043560e01c610329610a24565b801561036d578115824314176103645761036460107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b61036d33610ada565b60463560f81c604735606090811c90602435811c90605b35901c603835609090811c90606f35901c9650346103aa576103aa81888585888a6110e6565b605b36036103b981605b61151b565b90503086156001811461040d576103d483888489898f610ef3565b848110156104075761040760097f5633414f4572726f7200000000000000000000000000000000000000000000006114df565b5061041b565b61041b838884898989610e27565b5050505050505050801561012e576104336001611327565b61012e610b50565b60043560e01c610449610a24565b801561048d578115824314176104845761048460107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b61048d33610ada565b60163560601c9150602a3560f81c602b3560901c60393560901c6104b683828430896001610e5b565b505050801561012e5761012e610b50565b60043560e01c6104d5610a24565b8015610519578115824314176105105761051060107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b61051933610ada565b60163560601c9150602a3560601c603e3560901c604c3560901c61055781833073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2878a6001610dd8565b94508085101561058c5761058c60097f5633414f4572726f7200000000000000000000000000000000000000000000006114df565b505050801561012e576104336000611327565b60043560e01c6105ad610a24565b60243560f01c81156105fb578215834314176105ee576105ee60107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b6105fb6000821133610a41565b60263560601c9250603a3560601c604e3560f81c604f3560901c605d3560901c606b3560901c6003861634610637576106378385878c85611116565b8061065b5761065b848a73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2611448565b610669858486898d86610e5b565b5061067d8460010382600030896000610e5b565b5050505050811561012e5761030d6001611327565b60043560e01c6106a0610a24565b60243560f01c81156106ea578215834314176106e1576106e160107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b6106ea33610ada565b60263560601c9250608a3560901c60038216603a3560601c60623560601c60983560901c346107355761073581868473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28c896110e6565b6003600287901c168381156107475750305b8561076b5761076b878b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2611448565b61078e8388838773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28f8c610dd8565b50604e3560601c995060763560601c965060a63560901c95506003600489901c16975089905087156107bd5750305b6107cc8684838a888a88610dd8565b5050505050506107de60b43560901c90565b61080181833073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2878b8a610dd8565b9550831561083c578086101561083c5761083c60097f5633414f4572726f7200000000000000000000000000000000000000000000006114df565b50505050801561012e576104336001611327565b60043560e01c61085e610a24565b60243560f01c81156108ac5782158343141761089f5761089f60107f426c6f636b4e756d6265724572726f72000000000000000000000000000000006114df565b6108ac6000821133610a41565b60263560601c925060653560901c60038216603a3560601c60623560f81c60733560901c346108e2576108e28186848b88611116565b8361090657610906858973c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2611448565b610914828287868c89610e5b565b5050604e3560601c955060633560f81c925060813560901c915061093e8383600089856000610e5b565b50505060643560f81c608f3560901c61095d8282600030896000610e5b565b5050811561012e5761030d6001611327565b61097832610ada565b60643580601481146109c35761098d82610bab565b600181146109b75760043560008112156109a657506024355b60843560601c61012e823383611448565b61012e83336084610bbf565b60043560008112156109a6575060243560843560601c61012e823383611448565b6109ed32610ada565b6084356109f981610bab565b60018114610a185760a43560601c60b83560901c61012e813384611448565b61012e823360a4610bbf565b600030331460018114610a3957600191505090565b600091505090565b8160018114610a5857610a5382610a61565b505050565b610a5382610ada565b73de09838eedb3030153524b5a14972e7c9ef6576581147383b4f74296738d8c2e15bd7c1f4a19df122354f582141773744bc1d963e8f54395dfe504e343fc3f2fe8fc8b821417610ad757610ad760087f4e6f7441646d696e0000000000000000000000000000000000000000000000006114df565b50565b7319719e2aa3a47cb0080d7ba10ac3f9651ccd2a7c81147349f18c6370d3235fcc7cf4fd8167b8ca9bed0af882141773e4b35743c2c15760d7551afc9c304ec0dc30ba50821417610ad757610ad760097f4e6f7441646d696e4300000000000000000000000000000000000000000000006114df565b60083560901c610b743073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26112e0565b81811015610ba757610ba760077f42414572726f72000000000000000000000000000000000000000000000000006114df565b5050565b60006058821115610bba575060015b919050565b602281013560f81c6023820135606090811c908335811c906037850135901c6014850135609090811c90604b870135901c60378903610c018160378a0161151b565b87610c51576059821015610c3857610c1a838887611448565b506000610c2b81888c898989610e27565b5050505050505050505050565b610c46818830898989610e27565b610c2b848b88611448565b610c5f81888c898988610ef3565b505050505050505050505050565b60005b83811015610dd05760036002820283901c1660018201606f86821015610c9c57506002810284901c6003165b601484028801803560601c601482013560601c9150601486028801803560601c3085610ccc5750601482013560601c5b878015610d7757600e8a028f013560901c965089610d0357600e88028f013560901c935034610d0357610d0384888888878e6110e6565b6040519350601484528460601b602085015260348401604052610d2a84848489898c610ef3565b96508c8803610d7257600e88028f013560901c935083871015610d7257610d7260097f5633414f4572726f7200000000000000000000000000000000000000000000006114df565b610dbc565b600e88028f013560901c965089610dad578e3560901c935034610da257610da287858888878e6110e6565b610dad848487611448565b610dbc6000848489898c610e27565b505050505050505050600181019050610c70565b505050505050565b60008115610e0d57604051601481528460601b602082015260348101604052610e0581858989898d610ef3565b915050610e1c565b610e1c6000848888888d610e27565b979650505050505050565b610e3183836114b7565b50600082828514610e43575082905060005b610e50898883858c61102f565b505050505050505050565b808015610ecd5760016401000276a488610e8a57506000905073fffd8963efd1fc6a506488495d951d5263988d255b6040516014815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260601b602082015260348101604052610ec38188848b878b610f63565b5050505050610eea565b60008688610edc575086905060005b610e5060008783858961102f565b50505050505050565b6000610eff84846114b7565b5060016401000276a4828614610f2a57506000905073fffd8963efd1fc6a506488495d951d5263988d255b610f388a898388868e610f63565b93509050818015610f4e57836000039450610f55565b8160000394505b505050509695505050505050565b6000806040517f128acb08000000000000000000000000000000000000000000000000000000008152876004820152846024820152856044820152866064820152885160a060848301528060a483015260a482016001820160205b81811015610fd6578c81015183820152602001610fbe565b601f84169150811580610fec57818e0151828501525b505050506000828260c401846000895af190503d806000843e81801561101c578351955060208401519450611020565b8184fd5b50505050965096945050505050565b6040517f022c0d9f00000000000000000000000000000000000000000000000000000000815282600482015283602482015284604482015285516080606483015280608483015260008111156110bd57608482016001820160205b818110156110a257898101518382015260200161108a565b601f841691508115806110b857818b0151828501525b505050505b6000828260a401846000875af1905080806110dc573d806000853e8084fd5b5050505050505050565b6110f084846114b7565b50600084821460018114611107576000915061110c565b600191505b506110dc88888387875b8015600181146111cc57367fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec013560601c611150846112a0565b8560018114611191578282111561118c5761118c60037f43453300000000000000000000000000000000000000000000000000000000006114df565b6111c4565b828210156111c4576111c460037f43453200000000000000000000000000000000000000000000000000000000006114df565b505050610dd0565b6111d784868561120a565b86811015610eea57610eea60037f43453100000000000000000000000000000000000000000000000000000000006114df565b60006112168483611238565b6103e585028181029150806103e8840201925050818104925050509392505050565b6000806040517f0902f1ac000000000000000000000000000000000000000000000000000000008152600081600483875afa503d806000833e50805160208201519150856001811461128f57829450819350611296565b8194508293505b5050509250929050565b60006040517f3850c7bd000000000000000000000000000000000000000000000000000000008152600081600483865afa503d806000833e505192915050565b60006040517f70a08231000000000000000000000000000000000000000000000000000000008152836004820152600081602483865afa503d806000833e50519392505050565b346000811160018114611391578215610a535760163560901c91508115610a5357611351826113cb565b60008060008085415af18061138b5761138b60197f7472616e7366657220636f696e62617365206572726f723a32000000000000006114df565b50505050565b60008060008085415af18061138b5761138b60197f7472616e7366657220636f696e62617365206572726f723a31000000000000006114df565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152816004820152600081602483600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1905080610ba757610ba760137f776974686472617757657468206661696c6564000000000000000000000000006114df565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081528260048201528360248201526000816044836000865af190508061138b5761138b601c7f736166655472616e736665723a7472616e73666572206661696c6564000000006114df565b600080838310600181146114d0578391508492506114d7565b8392508491505b509250929050565b62461bcd60e51b6000527c20000000000000000000000000000000000000000000000000000000006020528160e01b6040528060445260646000fd5b604051828152828260208301379182016020016040525090565b34801561154157600080fd5b5061012e611550366004612278565b611676565b61012e6116ed565b34801561156957600080fd5b5061012e6115783660046122b4565b611762565b34801561158957600080fd5b5061012e6117d3565b34801561159e57600080fd5b506000546115bf9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156115f557600080fd5b506001546115bf9073ffffffffffffffffffffffffffffffffffffffff1681565b6116296116243660046122de565b6118a9565b6040516115e091906123df565b34801561164257600080fd5b5061012e61165136600461246d565b611cc6565b34801561166257600080fd5b5061012e6116713660046124ad565b611e5d565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116e25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610a53838383611fda565b6000341161173d5760405162461bcd60e51b815260206004820152600a60248201527f76616c756520697320300000000000000000000000000000000000000000000060448201526064016116d9565b6001546117609073ffffffffffffffffffffffffffffffffffffffff16346120c5565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016116d9565b610ba782826120c5565b60005473ffffffffffffffffffffffffffffffffffffffff16331461183a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016116d9565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60608315806118b757504384145b6119035760405162461bcd60e51b815260206004820152601160248201527f426c6f636b4e756d6265724572726f724d00000000000000000000000000000060448201526064016116d9565b337383b4f74296738d8c2e15bd7c1f4a19df122354f581148061194f575073ffffffffffffffffffffffffffffffffffffffff81167349f18c6370d3235fcc7cf4fd8167b8ca9bed0af8145b80611983575073ffffffffffffffffffffffffffffffffffffffff811673744bc1d963e8f54395dfe504e343fc3f2fe8fc8b145b806119b7575073ffffffffffffffffffffffffffffffffffffffff811673e4b35743c2c15760d7551afc9c304ec0dc30ba50145b806119eb575073ffffffffffffffffffffffffffffffffffffffff811673de09838eedb3030153524b5a14972e7c9ef65765145b80611a1f575073ffffffffffffffffffffffffffffffffffffffff81167319719e2aa3a47cb0080d7ba10ac3f9651ccd2a7c145b611a6b5760405162461bcd60e51b815260206004820152600960248201527f4e6f7441646d696e4d000000000000000000000000000000000000000000000060448201526064016116d9565b8567ffffffffffffffff811115611a8457611a846124cf565b604051908082528060200260200182016040528015611ab757816020015b6060815260200190600190039081611aa25790505b5091503060005b87811015611bc8576000808373ffffffffffffffffffffffffffffffffffffffff168b8b85818110611af257611af26124fe565b9050602002810190611b04919061252d565b604051611b12929190612599565b6000604051808303816000865af19150503d8060008114611b4f576040519150601f19603f3d011682016040523d82523d6000602084013e611b54565b606091505b509150915081611ba057604481511015611b6d57600080fd5b60048101905080806020019051810190611b8791906125a9565b60405162461bcd60e51b81526004016116d99190612669565b80868481518110611bb357611bb36124fe565b60209081029190910101525050600101611abe565b50611bd2856121b5565b8315611cbb576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015611c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c67919061267c565b905084811015611cb95760405162461bcd60e51b815260206004820152600860248201527f42414572726f724d00000000000000000000000000000000000000000000000060448201526064016116d9565b505b505095945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d2d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016116d9565b80611dcf576001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015611dab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b9190612695565b6001546040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d90602401600060405180830381600087803b158015611e3b57600080fd5b505af1158015611e4f573d6000803e3d6000fd5b50505050610a5383836120c5565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ec45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016116d9565b73ffffffffffffffffffffffffffffffffffffffff8116611f4d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016116d9565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600060606040517fa9059cbb00000000000000000000000000000000000000000000000000000000815284600482015283602482015260008060448360008a5af192503d806000833e5051905081801561204c57508051158061204c57508080602001905181019061204c9190612695565b6120be5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016116d9565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516120fc91906126b2565b60006040518083038185875af1925050503d8060008114612139576040519150601f19603f3d011682016040523d82523d6000602084013e61213e565b606091505b5050905080610a535760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016116d9565b3480156121c657610ba741826120c5565b8115610ba7576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810183905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90602401600060405180830381600087803b15801561223257600080fd5b505af1158015612246573d6000803e3d6000fd5b50505050610ba741836120c5565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bba57600080fd5b60008060006060848603121561228d57600080fd5b61229684612254565b92506122a460208501612254565b9150604084013590509250925092565b600080604083850312156122c757600080fd5b6122d083612254565b946020939093013593505050565b6000806000806000608086880312156122f657600080fd5b853567ffffffffffffffff8082111561230e57600080fd5b818801915088601f83011261232257600080fd5b81358181111561233157600080fd5b8960208260051b850101111561234657600080fd5b60209283019a909950918801359760408101359750606001359550909350505050565b60005b8381101561238457818101518382015260200161236c565b8381111561138b5750506000910152565b600081518084526123ad816020860160208601612369565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612452577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612440858351612395565b94509285019290850190600101612406565b5092979650505050505050565b8015158114610ad757600080fd5b60008060006060848603121561248257600080fd5b61248b84612254565b92506020840135915060408401356124a28161245f565b809150509250925092565b6000602082840312156124bf57600080fd5b6124c882612254565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261256257600080fd5b83018035915067ffffffffffffffff82111561257d57600080fd5b60200191503681900382131561259257600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156125bb57600080fd5b815167ffffffffffffffff808211156125d357600080fd5b818401915084601f8301126125e757600080fd5b8151818111156125f9576125f96124cf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561263f5761263f6124cf565b8160405282815287602084870101111561265857600080fd5b610e1c836020830160208801612369565b6020815260006124c86020830184612395565b60006020828403121561268e57600080fd5b5051919050565b6000602082840312156126a757600080fd5b81516124c88161245f565b600082516126c4818460208701612369565b919091019291505056fea2646970667358221220932e621a318d90d57728b23b6b8ebe354e5199bd783a1acaf86074346a7ae8ba64736f6c634300080e00330058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56305410d943f5633601c7b8c3b372344e6efc81eef8590058210310e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6054c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20219080405581e03d1e36fd391765bbd4a519f884d78455ee5bfdf384736a00e181b3acb100f0147061bd47e8b4f4419270403166cba5acb1a5132ed604d27477f76feb649a56bfeddd965f1cff1f60eb003f905581e038de083c28af92607f637131c37dba4c7b72df805cb584abc910c6ae2400c18a14739b7bb9f2afac705581e036ee6a1d847851f4666bed5c0d3d27784495e23255b85c86710c68cbe500c024702e5972354226c02190dfe037fbcdd3bbd34d9b1721a72138883c1d2d4c619eba0d4899bcc9300ba2c08d90203ec81b54e953804ed8c7b82108f2990ee41f569a9a5cbac888ed9c34418d87677032e75389d74795252e76a0a0910440e1a62c88dab5b799acabf4d78c81ba197d2037fa45a9fe8977e379d4529cd907bec97ede6598301278add040b3c2ea0a407d603a11b78759f6317337167e25e628be5d7bfc9c37ad7dcf9c0ccc77158450380520219ffff03cc0040f8b4fbff51c0ad1b7710242eeff01654763ec33aeb52e2f8a1a3a4f9e503af26dddb3bd264d7db42076334a9d44d72e8130d1147f949eb1a5f4cfb44e52f030bf5636a845cb1e79b67d37e199d98495dd97114aac9533a1c247d2178c0b40d0336d7421ec59a1fc107f3a40c857ef57060af1b683dbbe7e1ae3c277187ba80ea0353d23c8d8191f6bfeb79319f3cbf068a04505486c3ed54e949d9d44ef679d45103331c67b9d15b402274e86815be78462c5be10d3621ab38a0d6ae2ddd7b8baf8e0219ffff031033cf636ce42c22de07cc39d3478b3368bbf3638526fad4927e074a01560239036a22116ed3ac780090ba206b862e044ff0cf2ee389cef93dbc9e4fcc415b90f7035b258a1e6267f6e1fa7e8b6fdf3b69f705527a0817b96205474e3baa43149f3003f09a95e75308449bb78aa85a27c7a4cd7c137fa63a7f79d15bcc09dce3d822e40376e68cb02ba670190c510c3b4392cf7d37e7bf15ae6a8909da54e757ccbe6c5a03907475f8f41ba06e55670725d6a42430f78f584e782f29feb47b5871bb89903703b300a0d103c0557e248b6c3326c75162e578f66d37d48db092184806baeb27dc032057ebd34af07d82d56b0f5ceb2c8e242848f2f14befab412c1b30aafbbefe710219ffff03babe6b515cf2a449471a5015e761c78fbfc4b467e36aeac9e95687b130ee5f51036b9db22a9a878c2087fc8f038e0b56a66a78f83929717819640adb2a1e113fc103f7f2c2f10a8eecf5786704ea87dc6d22ae4f36afb8155b60c1fad8dee4b4712403bad25ff330db4a52a5def2afeb01dcd7575e24c356b1373c1b3e9372a7a8cc4e033853e06919d519c5f38d17d4314470bffef11b68196778e48cae52863f25dea503dc63ac4e2437e738f391eef51d42a951c95e976b05b6d7074cd96474eccb09b203e34dc65c5890e69bbb32a9ef90c57d2ef46a142712ab577f53e3fc06b328f7ed03968c7804351e62726e4ff4693a1e99c81645be8ed49c74e31a96437c416e9bb80360b11412e8a9f294f6e01cf4556b0af7e6b67788af4215dc6e74f0b19bdf1e42034488b2271b1634cdda9c8b32bea9114f04cede3f99afa15436439d583186970e0219ffff0350066cb67c52b9d23d6f6e85c58c2e02d85e7dc9928e0b6a2fa468f2b2ffd4ab03b39e4e5884dac60a8278529349312286331f51e37d0b0747a829b80ad290139e036f862d27e55f213ad069e611d4652601c9e554a0d161140f65276ac2dbdfeaa803fb39494bb9d03c568859c4a168143118335a3c818c5c219a900ef328fd67c301035d5e64342445f410edcc877e67f5241963338cdddcdaedb7d55e5db546517989033b4793ca1456af2e262c56b84ba1f742c23e0b97a585e4752128ed1d27d7c7a903b67230383f3183bf9bcc0f462c724572ad43a9ecec6383ed9a9bdf6d002f61ce0384ae369c8ddc9bad7ccda88e7c9c4798bf62161f3f039b572bce167fb27ecc0f03a8135b3f62177e7a9ae95a7eb2ea4cfd5ba5878b453a4c731d93ff3b6e9daf6903314ff144a7e487cfb5bc452dfbb742fb9c1c7055019723524936aabd00a7b8b1038e4401767f85303e41a6e7f2e51ba885f429056454ec0d36b0da624f41ca8528031264525fa2a269995835d3e83791e40aa57d5fc97c2d08f44de3acf55164ae1003de8be2322451cfc03cae9f799eed95dd44cdb530d178306fa7199616add4253a03ddec68283ccd6e20527e07bf9d2ef5cafd17e805649707987bf5cb6c82c89bb90350968574dc68676695037a86c185ba272c93aa7ff84788c87f0661a2aec449230219ffff0329f5ea03f138654821a56c803f1c8781e95cd37ad57e295fc9a614574390d39403a83733e7a9e8e45397a4f248abf791ddca5a8596579467eba057e2b12d2a6d090363e407ce706f3c4b6dcbcc412ac9faeb063a0f0280d46acaec189b747361cf240316e5616221e0f41071280d2f81ef5c685d140eb7d94a4f172fff4808fa0586dd036adf750f60b31cc5992b96556a44bb210008c0d193aaf86a10b646c345c16b52036a6265623e513be11407ddde45601c989111a620b438420f978e51aa2299a45c031fc06c1559d481fd7751cab8a1a28aa043b09dd6b8a9003c07e99fa232b9d53803e39c343a022e5adb5ddb9de1fb5429380e84fbf2edc958a9fb9235d6a20f6edf035943e330cdc50f5c240ce93e408c8352e1c1860448f590f7ab110c96333a5fc3033cfd59903e9469371629266f4dfe8497fd9d64c0a0d69435ab5ef096717f500803a7bd073efeade7339903c1c84b380c596f6bb03a468435acbb58ad2d55503588033db92409d33e9c5ed24b70b60ccd28cb150cfd080be3dda3dd2ed6864f220d0f036bfa5ec82ad90f847ac7b1204d3722741e9b6fe1e5d627bb9f07245ce98ff12d0364889c57678439f414dad7f20b34e390507d7dfd771178f2b861afd07358973003f311510188e2ada3c74a8af101b9ead4bd3a0504f29daae9edefcfeb6d51a77f031cf4da75e563752699a28a070e83902720798921ef0243233a44cc952b631be803a2b288c3f489f99e9fbc68793de3dd5a602474bed5d41439d90ff45a6d00452c03ac9627b7f877637fcae78668a792401b53347c2c8502ef1a5b850226321e806e03cbe73dd06a125feaab189d1c3fac24a9c20e51f27a43ea82d297a159b179aacc03abb4c0d6016205cbcfcefae5fb5ea50cd2d4b283a3a03c7919bc26329552287a037c2264be4993bf805a7e035a9220f894640846b5409f1a7b6ddac86d093dd12f03ba9b0a4fd0a60166b71ca888cdb209e144a10ea491396661b6d3e01db952d45f03c800fde1d87a58058d05e9a69d513f3ec61751988718de94daec4468d471c5f703334bf048147bc3c8d5eda628fa4e2b7da233137a09e9bd2d0968ae13b021891a03dc8479561c4b58e13eefd0fefae7a2b5943468036a14ecb43f433704645383260303071dbb5906fdd60e3f3793cd0f1c4612019151db0a430c21ba9d5a8ea4282d035aa3d5150785de378a065383c6e99fcaa54d34a18dbf48785bcb3e474161fca1031a6fc96f268cdf8409a5afd3d76950e04b629bd1c14ecdf9e514ce9c4fed6ec1033ed2d7fe66a7bb3d912ecd8e8ef51b79e550d1759f93152a1a8b28f1c647286703a33d3c3ed50965a874d739d252afe0069b6d8353ddf1d4e525967322b8f5a79903fbe4a701c0efe983660ad7caa7cee90a3c1b45ee16a2d5f75e667796f93b6f81038b89d95fcde74215b4cee473bf62ba977832e2ea3c99505e31d637c30694695e05581e0387aafd947848989648f2c48c38ab94d95be2615644b89c5b14cb7f6ae00c044727329e584eb3570314c1811cbbd2b3af2e2399efbbc145d5566e88644f8ad6b48f29b0de6335d3c4031b460c826a854d61dca82f718e088b8b4c4082ffeb93752d7691bc62c51dc0280605581e03a70a818564a13adb6652153ada0fdd5bf1f4f94da63b492dcaf9e428b007011bffffffffffffffff03e25d4f154acb2394ee6c18d64fb5635959ba063d57f83091ec9cf34be16224d703608a02f403f30892b8967da9ac469a8c36335336a69bfcb93089ae791d2c976f05581e035331503212364343f6be717d883932db5da5e03c0c6ce7823efe84e8100f01447807c1dc1bffffffffffffffff031bb9923cd5c240f934d10aa469719216b5085bad3872169ccced536edc22277b03da9a8dc62f6fe7e06cf36272a7824915f0fa67a577b587182bb8eb00ead29d6103ec549f9c6738e97fd8fe16864a50696530be736dbe5b3f828cc38c4201b2fae804592c1d608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a723158207dca18479e58487606bf70c79e44d8dee62353c9ee6d01f9a9d70885b8765f2264736f6c634300051000320300ee6158611a510f7de2df7a2c4767d987778493b8e3b80910c7fead461bbe3f0058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56304b0314681367c295c3ff27fc0058200238e9689977d526f580531775c606e5a07c1ff4f40a9ee98e4cca4fe145a2f44106005820021540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af4d1eef57b0bce86debc4dd280c38021942000058210366cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688054c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200582002575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5820215b786e4eba85d363599f0603a96206d9fe3a001a117bd4680bc44156f3ec7f005820025a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85501f3f662916305da19deefd84fdc79e3923b00f41802184400582103f6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70410100582002f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3582065cf607b000000000007d33cd603004aedbf0001838810f254c24ce8a92f56600058200252222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f546d7497751656618fc38cfb5478994a20f7e235df0218480219b44505581e038de1d31fd0732b069ae68190eee17c0c586049e31a87a9de9222e718a00701192c1d0219d3e603704520d9a7f1d0f5ab13beb574fa85de11eb7dcc7aa98226a9ccb5801f75c362034e9df35d5bc61b600725ff1e3b9edc93735eed90a4aab1d0ad00f3616160ad20031176eebd55a02d80dd05460759ea58b48d39d6536b0ac765748a7a44410fc12f039da3c4c4508ecd179fc818cfd6c02b6e5d3d1e3047f69ecd21c37da15cb7d95c03dd42b7dc543187733702e6833e939411b2197a65cb76db423d59b475efae383a0315eb189197451955857f5707b837d7f14410752a1f0df757c7cb5863a9c6693b031aad9b030037232530ffb8b896db838425e0920dc8cdab47a182e2fe28b962c10365767c107ae03dfe02656af65be9ea4c30a65e8f9dfdb46295a452d5d381cdc903849f47f6dc1cc96fbdf17126d21d912c231b751f006d336884ce515a2681f93a032727c37bcf8b59e47634a27e11ee38eff8a05f80189c6c3d26722bc37bba30ce038177696feb2dbf2967cb4103efa2d507430711a197c2a738717c5b5543008abe032508f1a148f02172830fd482ea79cac02271a388af04019d6e49921a8a889c5d03e3b6225311b88e9bb4e2e9fa7a8ca0d03d20ac765b5f7ecdb3b183f7d7cae19303ee1760c7bd18c667ed1ed1d2d7c9bf2fb21df6ec20e0ee2dc9728cce12e9fb1b03d670e0d87c493b8041d362698dafdccc6291b498bfa6d94e5dc5d570c404140f0219ffff039a5d2aa9f89477b40b38a663ee233af208c20c47eaa78bbbabc145f2904fe69103b90caeab462eef9191d70fedb72ccf5a33cfeb057ee0fd17bbc43924a95fd89b03c3311ed3314a1499699434304684b7d306fc6f1358e8cad611a2895ac6e4291803b606ff6b93ae409276455be3f976d773b4336fa3f48cebeec8e7d522e9ffc77d032b6813577f217f060dd7ddfa16d8fd1394f5ac92b0c1b82d1ce3ed2f6e7b54050345aac4665b1fe48e2030bf0b64fa6a30ae1ccafe3dc13205189dfb7f0bf87bc40219ffff03bd2694cb32c5b310f2d4aefb513da5ba5f275c0b27abf93d3bf882a711be69e0030d23013cf35ab6c493b4afe0a730271f0f060b47cd5fbf77c501601a0ee33c0e034fb730c95cb500750ebaaa3c8d558a90071672bcca746ed2947d120c748b257f03a040fa78512205ba6ff18eaa5abdf5ca13d3f9b4e4c429bcc2e21e2c53349e8b0314412893c2f0f840fc03069f58fa267f5e29847a2715a440d21fadc59457ce9203cc8caead566ef34cbb50ddfa940a73e65fb2fa76e866521de5f66c24db31c7fb0219ffff031f58a293556a6886c08f3d6c768f622a47e151b3634f8f27f27d5ac65e5718fb03a101dde72c7df67bc737f261dab0779c02c0b83dc7cc111e94c471bda75630ab03ea33f18eaba3e67e57b55c8dee691f600f5e2a467e8133a6beb172c334b509dd03e50222ce226a8a103d385375f1341bfa321a721b0bdbcc6605fed526cd0821530323170395cb90f96cf5a6bd123f15830fb3e6bf21867d89a4bacc4643cf45d45803b316b8749165960c3c89c6e10d4998e4b40cc00e5a082bb7a07fbf9e679e8d2e0219ffff035542724e0ac64f0a9d2fb2104ed94363a57255f5680ee238de1474bc8486e44f03a6d185bd0e74535b72331e6dc9d2d19f53a4b4997b5c52f926ce79f26862099303f1f1571e19500730c0f62375fa7f8a7a90f6c4742bf538167be72a1432aadfb90310b9f42c477bf95e082653b147bee8737c9739cac14151019627bae2597ec4080370c11e4972fcab13d1050b9e54844ea1ff920d4470cbd2bf4e943b4d7bcde9e603d08c521f7580826bb146e476039ce572c0de596b9575ad6323d5947a0664f066030e7bf139f4acf4e2c3c37b1baced8754bc1ad4d28f6eec46b2afeaa843fb049b03e409a71cf61129f80b21eb96d4065506242fa36959967f5b797f0662a52f6d2603dcd03520ef6cdb737f6db64a695efa661cbcb74ced82a26e42f26cf6c85638ef03c4e66faec72346ccb69262b48aa4bbdd469944760209e8b91affed19198001f503edf450d44e9efc837fae58d704d8e6993a288e8ab19f430b496a6654f4fe4c4a03cd85c534ca4a6372058d36cbc405f13617bb5613c55942a3bbdec1a288797ae80353a0bacd823ddf1d179cb8bfa8e42020d2d6d89dd990ecf999ea42e9ca5b961d036036bdc180b8a1831a3e4376ee2b14fb762ee3b8013677f728cc40c17596c625032e5c4827174c4bf23d8d7782af6d6e69556233276422e18447afe6bc443cea3e03fc3f664a374c6cb7ebbc31143797767eb7f19a549fb18f5a79aee942f7f8a26a038c5ca361caa2475fef718e0a397f8d009e51ac3c6cc4621497fc31630d0ca24c03402e34ef9e39f1497e13e2190876faa9e01bd5a84075750a4d8d23a31527e3620388de86a97156e789845fca62671d0c79ebfadd3bc152e1f2947f9a30550bb58403901ed45ad80716634d8624f033d2070b0846facef7492686119fc2c631a58e9f0343b5ca4ec3c5ce5f4ca7fd15c9e94b832d2760e1519c6449212797fe9f63233a0339b21d7ec373b990bb1c57ce14123ac52ef5c7b88d20f76c1e35f7efcbf7c36003a2704b18c6dc0a318607ac2360f3991a67a92b944f41de6ef5a6e0e05afea94d036f216e7c7b3ea96690e6d0a685db725022227c311f46560481f4f49c094b0d1703abfe3d58af8f75d5d96bc1825a828bf810ab4dcc0c84a26df58228cd2331a20803c324ba644c40d8d6c2d47ae57b229a26e894ae7ea6ff3f9faf8e476f9692f37003433c8f733badd86057cb9a944bbb222eb992c5396a58e0a47f0d275b6e57fe2d038069108ff8e4b9e14c0c6bbbd884df679c273d1118a06e2b0e21eb9c93ecac0103d34a0eed061b8b168ba9abf29add6056d4e619688539cee6fe212dbcb47da6b70459202a608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063c87b56dd11610097578063e0df5b6f11610071578063e0df5b6f14610400578063e985e9c514610413578063f28ca1dd14610441578063f2fde38b1461044957600080fd5b8063c87b56dd146103ba578063d547cfb7146103cd578063dd62ed3e146103d557600080fd5b80639b19251a116100d35780639b19251a1461035e578063a22cb46514610381578063a9059cbb14610394578063b88d4fde146103a757600080fd5b806370a08231146103235780638da5cb5b1461034357806395d89b411461035657600080fd5b80632b968958116101665780634f02c420116101405780634f02c420146102e1578063504334c2146102ea57806353d6fd59146102fd5780636352211e1461031057600080fd5b80632b9689581461028d578063313ce5671461029557806342842e0e146102ce57600080fd5b806306fdde03146101ae578063081812fc146101cc578063095ea7b31461020d57806318160ddd1461023057806318d217c31461026557806323b872dd1461027a575b600080fd5b6101b661045c565b6040516101c3919061172c565b60405180910390f35b6101f56101da36600461175f565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101c3565b61022061021b36600461178f565b6104ea565b60405190151581526020016101c3565b6102577f00000000000000000000000000000000000000000000021e19e0c9bab240000081565b6040519081526020016101c3565b61027861027336600461185c565b61063b565b005b610278610288366004611899565b610675565b6102786109fe565b6102bc7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff90911681526020016101c3565b6102786102dc366004611899565b610a64565b61025760035481565b6102786102f83660046118d5565b610b39565b61027861030b366004611939565b610b6d565b6101f561031e36600461175f565b610bc2565b610257610331366004611975565b60046020526000908152604090205481565b6000546101f5906001600160a01b031681565b6101b6610bfd565b61022061036c366004611975565b600b6020526000908152604090205460ff1681565b61027861038f366004611939565b610c0a565b6102206103a236600461178f565b610c76565b6102786103b5366004611990565b610c8a565b6101b66103c836600461175f565b610d4d565b6101b6611085565b6102576103e3366004611a2b565b600560209081526000928352604080842090915290825290205481565b61027861040e36600461185c565b611092565b610220610421366004611a2b565b600760209081526000928352604080842090915290825290205460ff1681565b6101b66110c8565b610278610457366004611975565b6110d5565b6001805461046990611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461049590611a5e565b80156104e25780601f106104b7576101008083540402835291602001916104e2565b820191906000526020600020905b8154815290600101906020018083116104c557829003601f168201915b505050505081565b600060035482111580156104fe5750600082115b156105d5576000828152600860205260409020546001600160a01b031633811480159061054f57506001600160a01b038116600090815260076020908152604080832033845290915290205460ff16155b1561056c576040516282b42960e81b815260040160405180910390fd5b60008381526006602090815260409182902080546001600160a01b0319166001600160a01b038881169182179092559251868152908416917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350610631565b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b5060015b92915050565b6000546001600160a01b03163314610665576040516282b42960e81b815260040160405180910390fd5b600c6106718282611ae8565b5050565b600354811161098f576000818152600860205260409020546001600160a01b038481169116146106b857604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0382166106df57604051634e46966960e11b815260040160405180910390fd5b336001600160a01b0384161480159061071c57506001600160a01b038316600090815260076020908152604080832033845290915290205460ff16155b801561073f57506000818152600660205260409020546001600160a01b03163314155b1561075c576040516282b42960e81b815260040160405180910390fd5b610764611171565b6001600160a01b0384166000908152600460205260408120805490919061078c908490611bbe565b9091555061079a9050611171565b6001600160a01b03808416600081815260046020908152604080832080549096019095558582526008815284822080546001600160a01b03199081169094179055600681528482208054909316909255918616825260099052908120805461080490600190611bbe565b8154811061081457610814611bd1565b60009182526020808320909101546001600160a01b0387168352600982526040808420868552600a9093529092205481549293508392811061085857610858611bd1565b60009182526020808320909101929092556001600160a01b038616815260099091526040902080548061088d5761088d611be7565b600082815260208082208301600019908101839055909201909255838252600a8152604080832054848452818420556001600160a01b0386168084526009835290832080546001818101835582865293852001869055925290546108f19190611bbe565b6000838152600a602052604080822092909255905183916001600160a01b0380871692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4826001600160a01b0316846001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487610978611171565b60405190815260200160405180910390a350505050565b6001600160a01b038316600090815260056020908152604080832033845290915290205460001981146109eb576109c68282611bbe565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6109f68484846111a3565b50505b505050565b6000546001600160a01b03163314610a28576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b031916815560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b610a6f838383610675565b6001600160a01b0382163b15801590610b1b5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e9190611bfd565b6001600160e01b03191614155b156109f957604051633da6393160e01b815260040160405180910390fd5b6000546001600160a01b03163314610b63576040516282b42960e81b815260040160405180910390fd5b6106718282611351565b6000546001600160a01b03163314610b97576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000818152600860205260409020546001600160a01b031680610bf85760405163c5723b5160e01b815260040160405180910390fd5b919050565b6002805461046990611a5e565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000610c833384846111a3565b9392505050565b610c95858585610675565b6001600160a01b0384163b15801590610d2f5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610cdf9033908a90899089908990600401611c27565b6020604051808303816000875af1158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d229190611bfd565b6001600160e01b03191614155b156109f657604051633da6393160e01b815260040160405180910390fd5b60606000600d8054610d5e90611a5e565b90501115610d9857600d610d718361136a565b604051602001610d82929190611c7b565b6040516020818303038152906040529050919050565b600082604051602001610dad91815260200190565b6040516020818303038152906040528051906020012060f81c905060608060648360ff1611610e1b5760405180604001604052806005815260200164189733b4b360d91b81525091506040518060400160405280600581526020016423b932b2b760d91b8152509050610f56565b60a08360ff1611610e6a5760405180604001604052806005815260200164191733b4b360d91b815250915060405180604001604052806004815260200163426c756560e01b8152509050610f56565b60d28360ff1611610ebb5760405180604001604052806005815260200164199733b4b360d91b815250915060405180604001604052806006815260200165507572706c6560d01b8152509050610f56565b60f08360ff1611610f0c57604051806040016040528060058152602001641a1733b4b360d91b8152509150604051806040016040528060068152602001654f72616e676560d01b8152509050610f56565b60ff8360ff1611610f5657604051806040016040528060058152602001641a9733b4b360d91b81525091506040518060400160405280600381526020016214995960ea1b81525090505b6000610f618661136a565b604051602001610f719190611d02565b60408051601f1981840301815290829052610f8e91602001611d3e565b604051602081830303815290604052600c84604051602001610fb1929190611c7b565b60408051601f1981840301815290829052610fcf9291602001611e17565b6040516020818303038152906040529050600082604051602001610ff39190611e3d565b60408051601f1981840301815282820182526004835263227d5d7d60e01b602084810191909152915190935061102d918591859101611e17565b60408051601f198184030181529082905261104c918390602001611e17565b60408051601f198184030181529082905261106991602001611e9a565b6040516020818303038152906040529650505050505050919050565b600d805461046990611a5e565b6000546001600160a01b031633146110bc576040516282b42960e81b815260040160405180910390fd5b600d6106718282611ae8565b600c805461046990611a5e565b6000546001600160a01b031633146110ff576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116611126576040516349e27cff60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600061119e7f0000000000000000000000000000000000000000000000000000000000000012600a611fc3565b905090565b6000806111ae611171565b6001600160a01b038087166000818152600460205260408082208054948a16835290822054928252939450919290918691906111ea8386611bbe565b90915550506001600160a01b03808716600090815260046020908152604080832080548a019055928a168252600b9052205460ff1661127c576001600160a01b038716600090815260046020526040812054611247908590611fd2565b6112518585611fd2565b61125b9190611bbe565b905060005b8181101561127957611271896113fd565b600101611260565b50505b6001600160a01b0386166000908152600b602052604090205460ff166112f75760006112a88483611fd2565b6001600160a01b0388166000908152600460205260409020546112cc908690611fd2565b6112d69190611bbe565b905060005b818110156112f4576112ec88611525565b6001016112db565b50505b856001600160a01b0316876001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e0314878760405161133c91815260200190565b60405180910390a35060019695505050505050565b600161135d8382611ae8565b5060026109f98282611ae8565b6060600061137783611630565b600101905060008167ffffffffffffffff811115611397576113976117b9565b6040519080825280601f01601f1916602001820160405280156113c1576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846113cb57509392505050565b6001600160a01b03811661142457604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600960205260408120805461144a90600190611bbe565b8154811061145a5761145a611bd1565b9060005260206000200154905060096000836001600160a01b03166001600160a01b0316815260200190815260200160002080548061149b5761149b611be7565b600082815260208082208301600019908101839055909201909255828252600a815260408083208390556008825280832080546001600160a01b031990811690915560069092528083208054909216909155518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03811661154c57604051634e46966960e11b815260040160405180910390fd5b60038054600101908190556000818152600860205260409020546001600160a01b03161561158d5760405163119b4fd360e11b815260040160405180910390fd5b600081815260086020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558084526009835290832080546001818101835582865293852001859055925290546115e59190611bbe565b6000828152600a602052604080822092909255905182916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061166f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061169b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106116b957662386f26fc10000830492506010015b6305f5e10083106116d1576305f5e100830492506008015b61271083106116e557612710830492506004015b606483106116f7576064830492506002015b600a83106106355760010192915050565b60005b8381101561172357818101518382015260200161170b565b50506000910152565b602081526000825180602084015261174b816040850160208701611708565b601f01601f19169190910160400192915050565b60006020828403121561177157600080fd5b5035919050565b80356001600160a01b0381168114610bf857600080fd5b600080604083850312156117a257600080fd5b6117ab83611778565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126117e057600080fd5b813567ffffffffffffffff808211156117fb576117fb6117b9565b604051601f8301601f19908116603f01168101908282118183101715611823576118236117b9565b8160405283815286602085880101111561183c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561186e57600080fd5b813567ffffffffffffffff81111561188557600080fd5b611891848285016117cf565b949350505050565b6000806000606084860312156118ae57600080fd5b6118b784611778565b92506118c560208501611778565b9150604084013590509250925092565b600080604083850312156118e857600080fd5b823567ffffffffffffffff8082111561190057600080fd5b61190c868387016117cf565b9350602085013591508082111561192257600080fd5b5061192f858286016117cf565b9150509250929050565b6000806040838503121561194c57600080fd5b61195583611778565b91506020830135801515811461196a57600080fd5b809150509250929050565b60006020828403121561198757600080fd5b610c8382611778565b6000806000806000608086880312156119a857600080fd5b6119b186611778565b94506119bf60208701611778565b935060408601359250606086013567ffffffffffffffff808211156119e357600080fd5b818801915088601f8301126119f757600080fd5b813581811115611a0657600080fd5b896020828501011115611a1857600080fd5b9699959850939650602001949392505050565b60008060408385031215611a3e57600080fd5b611a4783611778565b9150611a5560208401611778565b90509250929050565b600181811c90821680611a7257607f821691505b602082108103611a9257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156109f9576000816000526020600020601f850160051c81016020861015611ac15750805b601f850160051c820191505b81811015611ae057828155600101611acd565b505050505050565b815167ffffffffffffffff811115611b0257611b026117b9565b611b1681611b108454611a5e565b84611a98565b602080601f831160018114611b4b5760008415611b335750858301515b600019600386901b1c1916600185901b178555611ae0565b600085815260208120601f198616915b82811015611b7a57888601518255948401946001909101908401611b5b565b5085821015611b985787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8181038181111561063557610635611ba8565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215611c0f57600080fd5b81516001600160e01b031981168114610c8357600080fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808454611c8981611a5e565b60018281168015611ca15760018114611cb657611ce5565b60ff1984168752821515830287019450611ce5565b8860005260208060002060005b85811015611cdc5781548a820152908401908201611cc3565b50505082870194505b505050508351611cf9818360208801611708565b01949350505050565b727b226e616d65223a202250616e646f7261202360681b81528151600090611d31816013850160208701611708565b9190910160130192915050565b60008251611d50818460208701611708565b7f222c226465736372697074696f6e223a224120636f6c6c656374696f6e206f669201918252507f2031302c303030205265706c6963616e747320656e61626c656420627920455260208201527f433430342c20616e206578706572696d656e74616c20746f6b656e207374616e60408201527f646172642e222c2265787465726e616c5f75726c223a2268747470733a2f2f7060608201527f616e646f72612e6275696c64222c22696d616765223a220000000000000000006080820152609701919050565b60008351611e29818460208801611708565b835190830190611cf9818360208801611708565b7f222c2261747472696275746573223a5b7b2274726169745f74797065223a224381526e37b637b91116113b30b63ab2911d1160891b602082015260008251611e8d81602f850160208701611708565b91909101602f0192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c0000000000815260008251611ed281601b850160208701611708565b91909101601b0192915050565b600181815b80851115611f1a578160001904821115611f0057611f00611ba8565b80851615611f0d57918102915b93841c9390800290611ee4565b509250929050565b600082611f3157506001610635565b81611f3e57506000610635565b8160018114611f545760028114611f5e57611f7a565b6001915050610635565b60ff841115611f6f57611f6f611ba8565b50506001821b610635565b5060208310610133831016604e8410600b8410161715611f9d575081810a610635565b611fa78383611edf565b8060001904821115611fbb57611fbb611ba8565b029392505050565b6000610c8360ff841683611f22565b600082611fef57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220d5cf2af665a707cf5fa8553c93e5404fb287bcd41313f3344f32d0bb6a72666664736f6c6343000817003303afb8816c4cbb69d1df7f5059c8646f739bdc1817a86586f82cd4543b55a07783038e056198349b75c9b9a2851928c6671134b3a28d9040008ec86b3da5d838499103aace8e5f96254bf5453630ba6fa4cdc8cde7f86bc2bddb01e42a1b888475ed5d0347c71c1f338cc73e8a463c9f0f2dc851fb8a3d29c9bd6d1529d4c2377c42de2f031f0fb94baff76e5ee7f7d75f27c6e2b6b5c8340d5547ae398d2ed700062d760b03eac10e4e75850fb781f4514a8aaad8f96b1b71d095d550697fcfc9586d75251803c619492583c6a3c872c33839d6f72ac0cc3e2865677e0ea0cb60e65ec9506771039affd3ea0720f53c544f1334f05faf65376d554554281bcca35f5c2871eedc8503cf9022b6c201b40807867336a288444e32df93bc2fddbb202e473e1f2351d44803e2dea544c7acf3c3d68e84ea42b2033de4dce351782729d2b1209df4f5f4ca7b03e002d88c0ff6a423bde25825060a68c1d33224da5da9127b494d663924574e6703d9630c91655bddf13e22545a7e58f1567777df8f64b4de6dbf6fd49b3f6be859038fc5ab4fbec404548cf127d320bbcfaa800874dcab588464dcce52fc8747ff890330d12872a989a652a34dd908b114ef593c53c19ffe34e22a6ffd7504df33d1a2033924eb6d6559eff37eccbcfd94782fe708b7e9b7ea1d4acd6219983c7420683b03fa494b54c69888d3f047882e041269bc44bec96b7c76f2b966858e0e16a13e760339edca7c8391b51d5aff3c834244cad508bddf6e60ce0b3b39c61c544abfd56c03cff8c0c53988ef18c8b769c73491561c34c77d596f18efc3ea65058a65278cce030c41d2f047a84162cd85fd26831453eced5545b17de49416bb5470e8fcc10e5e00581f02e3701882b4f087cfdc78abee4623bb59f835d466dcdb4ff432a8f5d5abc2410c03be77150d048b20b98659ed12f85c28a16f3efcf4a2a45216d3fd1d36f5a5a97700581f02775f66ffeb1f2e550ff9b71f8aa7ca573c9cae553005a0500111bc36fa5c54c43b6ffbb4781c354d7ea7198641ec4cdc4d8f5c00581f027a335fefd9be47e8bc2cb6453050aebe23d537b1768dfdf2010a85abd0af5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f024b576da2277d0f3ef4f31a5e552b21b15014dd98f1dc1af9978fcc4523a648040cbd672250e32d00581f0269bdb3883436bde2846536fbc18fee58d5e21f361a5bfbb28be23834d0d042d10700581f028c6c4d6a2392b5fc8a9938ff0ae2d0f50bd92eca6fa0973e1bdb71eb52f4448a285ef2021930ee03edc7886ccbaadd1de4656b5e27f47268d7ea0b763b1f29ab2643af30499cfdb803f313ee58c42be5fbbeea7beff6bcf262bfb57f190a5507a7513971a343df8f6d0219ffff03df405c9d0d4d3e4fb368796734f23d0496cf38d5ab43bd167de49f437e7078cb035dd55be8715f265612ff3b9aac3207ac0d678528b9e9208eb2df59c8754bc846038b721f87a03cf95a23556c9a2f34025889bb152febebff81273c4a03e418e2fd032b5cc81ec353118fd2abed61ebe006bd0984835c5fd5e4716c8f598c0bd9b4a0033774d2d5872667a66c0e7231d14c7663efdb043f0463244b722003a483b7079603504f211b98470aa50f212213cd973251f0062e64b81b72ce07938279234ba0df03c25d438036663fc363ff53168ad90c44e119ec3ac35fa82a8c396a02fe52bc1303b5f499f58394fe98dcb7fba234c586be11e00084e82664d5ad5675df80c137fa00581f02b0656bc779b3f8000ade5ed2448f370c7a38beda3a9b7876f46cf2d4821754d371519e9789a5bbd84faf18928c80ab243f48c800581f020f83fba0715c7d6d1a6a69df54c8208d059a1c6c5c9fa73ceaff43ac83ed470c26dcc0adf96900581f0207d10a5ff625be797ed60a1524539ef9a27a10f079fe99fdcd3a8f16cdd0411500581f02177e67927941018ff62e60d1fe7d904bc57f4ea49d8304ac3dd63d698d4f54c189aed75a492fc5008e5b007d44b95803382c080219408a03ab2b0580bed43ab8c5465595fda58fb6051853b6f35915afc35307779010c0e1032ebfb925a833fbe9c7546b571c12048455da69c97c57109873443544ee71ab2603f8732bde2803092bcf70124f1fb7d589d3fb94f684f3b20dc9a64b5d21dfb44303087a83d2071bcb4f34d8cd038d6fc539d6b19578bc67289d0b55f0b90201ec35031a2e84f6251ccedae62fb19c2213a1cbfd71b44ff48752d5ee4a7b9761a1ac14030ecbea35a112be72647c6a983894167135d5e64f6a2434549c7d51c41aab8c1703a5a98598ee7877f4a8c462a6e7fcc3cbdd6901b93d9245f25c7e241978409a4a03dd7c568538321815198054b1ebfedbc635588efffb46c6b524a6d412f6c4630f032a3eca7218b391e2d38a67b3091855de846dec0de77086e0b93b4fd0f69668a403921e9848736d339a50ab2ed7d1f2cf1c5dd04f88b002e6ad4b42f3e31daa591f0219ffff0337273a33d5c14715eb8a36b57d93e6b435370d781d8ceae99a0fa41a85944e9a03ca0fd50d59aae1608d8867e01aa7c439f9bf99e7c4b0e7b9c269d4049da6ef9403ba5dd91f613c4882767a640da0752fe850b73b1db8ff62df46f4f8f172d8712b0337133aeaefea3eab255123fb16d3b60f84bb4b9d63eda43be2e1baa430e4ef96036358cea0b0b4693acd10a63674724e5c6257acb7fbe2e8143b5f595e72f70038032bba71886fc0281b091a81e8fa5ff55fc2cbb30c1fbda322bd956bf57f6bb03803f61425b6f4c6413945c685005cc015933b587b38b15feba29c052a88cc7ba1c80219ffff03a2bbb58e792a148022b2c2a0f18e455f1c5ce5b493c75cdb64943643ab97e63403c28957c904d5661cb39916050852b167a2497ba063b485afadbe4e41834760f40333b15d5664ee15356b4d2e32e4cdcf084f99a0a01eb48c3df97efab1220679d103d86fccda022cbf5ae9f722f6c3b9205b8474edd5adcf47a9428b518e325b98d600581f02f37f5113ad1b3ab93b023a19619372c3490a37dddb2b89865ff3b455c314410a00581f039c2658206e3d8ca06c209a6564533a873126c1cc9bc7f3b662a5ca455b60410d00581f03d0f839c327f30fdf0399abd58ea86e01198bcfc3df68c5312c519be877504901a17653070c4e80bb02186000581f0251dc258019cc2c05182012d6231b2b75c0208f04a33aaf6a63c27f2898a9410100581f02921ab63b159e1a70553147d65418610bd3560b6574598f3a967db4fdd62d470e8bc6eda9266d03166ccf211f5efc2b2be57fe8711de296c34285e44b543c280e948b8fe32efe1403e2cab55e7b151d5b94881f5e41dc3f1a2bc11c19db4922c78870a3f7869ac020021988d403b54b05f1d647d21596443934d716a110ebabc1e80f34379f7087e303f6a738dc035b298fb99310ffc24c47f85596f098bd71f75345dd2046010f080bffe26ccd9a0358c5ee1386dc31f6e94476cc0495cf523bff55771a3864388ad21440bb6f390203b0b5c2b2cf157ff56e9e48ed55566a8084c0aa7d2eeb9cfd7f62273af69a1f800300d5008aa75cb1ded85ed0aaf81a90c7237e181bad4db2e6b1d55a1eb8c35d9503693853d5d822664bb142706a4189ec827e044dacd028fae381f62de11d65f32203a65ef28b70438d460341b4ac5a512ece33baebe38c12abba58a52e0b77cb1c92038199399b5ff356d5c5c592c6cd3719420feeea79b59b46cd98eea7e00bfcd3be038c4815b10a894b8f75d913b83d37634a4f8b35f2539ba74e7eb6fb7f4a5a8d9d03ba1bc4d39d018c0bd10c0781dd961583159dc7ef84276ee6fd9cdc521cf90ce403859efdbf4caabc71b69890ee7052b674f646948bbaa91f2791a65cb32ab4c10203625b6ece50986abfa44457400d0c3d7961ed4df500cbe6e55c696170877eb1160219ffff03f7cf60b6233c218f2a71e3128b46f193ab0c1248466620cdae1975e91bb3357c03749cb58f13d374bde7ebc968bf1833bbd8c8fe92adaae6e3ce483f98ebe88439034da425150dcd2daedff75e90efcaec611efdb1bd2e99f809b9a58d368a692b4203920dc456c3e2df9a69b6e7ad1747f1990209ea95dc33d6acf7b6495df02a110003cc2cc9d00280f4d5c622293ce345e9ce0618caa75f61090a0ecd1b229d544c5d03cfada93750f51480f42eeff247eb14d6edd636d7b0869feffab3204c0ec492d1030652ac12a14f7290cfec908d2e9a2b0152585de4344ba1834ab7afb5aaf8f1e403b64e9d6005ad5285568b2c0aaaac2905c6a6617b78c1264727229aae887db265030d4719ebdd6d7aa612c40dcea6128956cb6c99209f2d45b5f530bc63d1c9400a0344378319e138ff3c41e437ca7ce8e0c2f40de06520a5ed7a54e080d7fa1f3ea903f55bed5d6c1f9d57569d0df22cb690f06d535bea2b3c237939f9eae28a1b512403cd42291a3f33a31cb8e34610b20d5065ea09942aebce0ea1d88f54c003824a23035ac76fd77cf8c8f23685059bc043f17a45561970a19cc33daa11293466e7ff1a031d11d4407c2683175b43fca13ac06dcd9fa1fea0d2f969a03955283664df81f80219ffff035e16e3e7296c880fffc1f2622c990b861385a625e68b14817ff04579668956c1030c191f2643e5d978a18cc15222a5d4aee7f57a7a498fa3d5e44effaaa1fb6996037612dcb363277bd094c269fbe84b559439349df8eee1619e5abcfcc11419497703b63a46a9c4e7fc047c0cc06477e6942c8d3049631783eda370a7a804501c4d97033590addf33a8e8a48c62c9e9e85a21e5feca7c83a3be22fa634bb8447e262adb0398ca9159f0806d0179542e8f9878bf66429890ba5571847177d3f2a38463c6b003ec36cf3a6aeae24928e379330dd2314d4bac14b4b7b89076212f2bc960de49f803e720272800c54b61c5a4db96d50e7f2e4393e897e3fa15347607ecb24999ffb200581f0298b4fe25ae4167140e938c162723f8346c7409f06e01f6db9881c16e3210483782ff7e6a51c9d00327b99076e51f6bd3fb3a50400abb068bff0a5f5e8b781d366a16f7f6fcc59e6703c606286ed78f5710d9e437f5d02c550d40e8ae44505b5757ba28e639efc75c2800581f02107c1425e4281608d778ea80f76fd042ffd239fb98d740b4c434a53a9f0d5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f020d1b05d48a98f7719f2a1addbd341f6ccd7433effec725e3c83f2b77326154fafc9af3c0353d95244a53a3fc80e22295bec8a000581f02baabd0d17a2a95c49acf45f875e8b514b37b430c4f2f34c77a6251169f9942bc940219e88e03763d3ee21edcd999ec0622b176aa22b7d37514c5de6fcc7fc3d9ca46ddaa8a08036a965344563bd267ce1f505145690fd6164ff3450cccfc540caeedbd96f1c8d503381f27420f35bfcbabe18d784dbff6148988d9b837286efb368ec64e9c73bcd10387e23fca56d828956dcf7a2b61ad5e5b999fad3b4aab629e816407a3406663250384628f5152345968d622e1c45ad57a379663a47ab4edc533cbc30d1953d1152c03a8f72e7b6b0b85e34490f60dc9d3273c05e12ad774c55cee3694b69d09657bec0335cc4f51155d151f1e46599c1a2dcefe20a0451a268ff2ee5feb18415a473f580343ea4beb5dfd0c53a6a9739dca846aa95887f5ef2bfab660393a07e6ff14641903171dbee9ac0326cc27672fcaec5b976a2c94ec75cb5c6525d44d975115686b59031bb7fa96e90340e546f2701dbc8afbfd3197e2c430f0898ba00d0505cd0cfcd203854367aff76feb0cdd67177fa7a0ad21abe8e76a1df3676ff0d3fdd3d93c131e0317d22336b9f7c3431c7756b7987d497fd5defc3f49964d46c31c96fd9d40281f0219ffff032201a8a1b837cd47617e7dc14b6cd7731f8e2950c6a4bc020eed72252d12b66003bc30c7c319f705fad71e6a466c2ae6ac1ac71e2d0b7808fbdd72f50bd90f534a0385fdcf19a9ca5b30f93392a2c395227e51b1a80359c2c37e2589f1a364db78880318da6a0d3fda19c042cbc76ce033f240bc958db2e6643a18196bd67b77400e2803ca3dd179c84e108d867aecd7f28c61dedb4ab89b86f86dc6a680ddc26ab3bfdc037da3e3d74225ee44bcf9524c3879dcbfd1df63bbc7d6e7c8fb4ad18bf351ae77033a59a1d9b97c354803f3d52346033e570ae2853d0105c6bbad1829974267dff303c8304fd76d42d11501f9b8162149b22912ab4fbb7dbb65bfa3f4d39d18abfbf5034d3a39ef08e7b08d5b1529a2b5a60859b5eb0f1ba233ab0a8a168e44851e1e30005820039d6fe0e65970436430e9e1711f3c282c0a432c08b96520a64dfad2541c4b2042a1f203e093d73123d7f060681dd31ae522d32e5e42a0dd4165e59f9a9714e8cd905a820348a75626080bada971a2760e7e8871d6294ea86dee8578fb4e4f37d2b784d03903e85df9a0fac7374bd4f831f334f656d295544a60574cb9100ae4a070ecdbd3ab03f4c974465e1633fcec498a147d5d04f9dd40120faa3e5f298f2e705ba69629aa00581f024739f602fcf4fa97012237dfbf37a659119753af3fd9492a9b68bca5d75c480de0b6b3a764000000581f0274b3df945fb114e8da79163ab65c1a451d9f255e73dc52aec1fdb351ce135820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f0202980399af25b0455eeba2ce1930f06f1ac19899b9a20e113d18f89e78fe410100581f02d879f1b973c2290ffa2c3f4389f275b409945b0d185e1286b3ce88fd4b6e46450a3af1eaf103bfce1249212996a2567b5d336b332e2ce576e4d03487d451ecf6e243a6b2a40200581f02b81d9d4676d5133fbf925b1d4fcc3fffac9bc1512f6d0c29e52cf20146135820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02192545033e31cffec09dea24100b0f6ea9153289950c71e60d84894d06f6ee7fdc0649a403d5aa0af1d854925923a8181b0d75b504062aedc798c5ffac862fc11e61da0fbd0219ffff0308a95a7ef9c5259a793d23b36e335fe12b53d2b9cd3ec6463953b219726f814f033f80ac88ff26ddef6f0bebce5bd99a549f5bfc6c3dd696f41fd583da523b87430330259520d452087f2ee83166861dc63dc8116c6e15d0e3854cf04bc5dd700dac03ddb4cdbe0b687f874bfb646ec59dec7b26826859355bbced9e35785c9ed97eb700581f034a5de51f88d18f1af48faeda345cbdcb867b58a1ea361f548e70c7c043e04804a3a5ddbfd930dd00581f03e8d68f06979840048e1ea795f7fbe6c3bcbbb7147903dd9a3cb14f2aaf9041010219140000581f026b8f5bfa53fc53eb9188b91438b559361aa21a00d701d692285bab50369442711500581f02b0be825183b1319221a112f63c1029b1dda6ea65cda5de5d6956156eef434103034f2ae74c4e0689fd62d3a920e6e16d3644180616def7cf1757b65b78a00954d10304cc6cb8bdc14233a5987233bc8bb5dd4f2697fd7771072852cb3c0cfb08931400581f0214e59ad87c8048f7684ee76956306564d31b1f4dbb74f98cea8ab3a62dfc54384d0eeeab0b84641e450a4307f6f2de1c027fd00219aa490329ce0b10f31a2ba08d19483215342efe6d338b1ffe8373cf83de1f7931ef06c10369c08547f5884b17d445aedceba0fd85aef66d53f9dcaa34a1c489daf41d8c25037decc8bc8a507371e99df65e28037bc4eef88fa5d461337f43b224b3f8448787034026c6b08d082cc8c1895e74e66a7434773f238ff728131aae7a92d6ceb7b233034e692c473c53f5cf97ade5b1185b1961e7cb28df4a5284be8313e998f8b79baa036e8e4e559ceec00174a1e7dbe072e07d5a3c2ae48e80264b9182f94cc70a19ff03d5f13dfb1d36b00a82cfa7ee0ee2ba1e59e8ea02df31570f5e65891a966ea32c032e05dce72f3948598794e6f447965fcaac61b8c970fc0e8c2af0d170e119adde03ad31f51ce8a764dadd06933bf4e430ab46390621910b60d73b7538ad5acb16e003ede077a6abd29a3724dbd89c2141fd569e5aa17e9b450e3fd1f118798341502d035fdb8cdc1ddf9a277f74f1599f1d5a371f5dc9a3f97626fd161bfc6205f3006a032156617c7afe66029407fb60dcf6d0ec17d2129f6d4851b530f078d390f3357d03c9f166e694f5fd5a6b43392c3eb0060679e9675d16dad25ae254cb1c247033830219ffff03702e8bdc57fa309e34113307c35f18bdf1289dddc4bad770c3ccdbf2194e6fa503e6511465f0e736f839540177875a9cf9515fc419fbc56e4ed92de7518ea2c123037c810178f0cd382f0a76ac216cb3984f06744a9e2d74e1cf23b237ae15f9b887037aa8798f68e4c79e00daa625354cc7f3b5bd9132026f4b2b9ac86eeac4072a9d03965974ebec198d64e6bcad0304fb4f3be663213a6da1ac4469e3461b028645de03b670690b88c714461eab59209c43534525ffe6937ce7684d6ef2a74b4853d90403b8cf59fc88b34cf567751270cd7fa8478aa11a47e8923f03ceae293c87e4081e0368b12b03d54e60878db7959349875dfe93abd5784c31f0ef6da3db8e1c97caf003c12ae862cd4a7a6de7fe0786ebdd6825bd6f22765ae784b8e21063d51650e041031174f47970d79a136996fd196b858a3dbc6e9239fc62c3c600e1aac503eeb3930349df3c530498377c6bea965e07a07b146a3c2915ae788bc8b5d4eca3923b849c03836ac5af568d84f963ff409098f66788b5762b3de9ace549c76fb41ae97a196400581f03712bc8ff09eeaa3fc7e8f720b51e7eb50ca34e7079a470e22169ec338d705820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f0382571082fe6d4fccb3aed4aad7f1c33fda122f1a3db84e1a08c4de6b8e30410400581f032cb7392b06aa80dc060f242a1f6af24d5a5a85dc9c33b99fd974b8017f00411e0219088200581f023a9e9e2d8eb3802fa33c2310af99ac4bc8e5ff708b2e34eef9e0fa4827fb46583afecd5c7700581f022907afac08b8c4ef5c9ecf42041a175c666f601f6db263c3f934b7c5dd93540b5eafba28226aa16b356ce3722a3dd3eadb1f8b00581f02a8ceff34fdcfdbcfbe09fc424cc927db17f73a36b56ad5d0a9b940556d664806f05b59d3b2000000581f0214f9b9cbc4695d32142af07f29f8c626aa2bc00045642174e4dfbe53ca5348023d9f7c59829a0d0219a82403ed6993ba5dd3afb82cac51e135f17332670d2c7884fb89d3938d8ab5aed0869403f85fedca8aeb93ada57f53295cbc0d816f88b06efaab78c761a5c0a3b7354a5803af469372f98350ad34c58ec0aacc8520addca49b0e9089ead503cffc978afe7b035c27fcc3ad9e9a476458397181ebf64619e60e0954ba02e93695e0c2a4bef44a0373cb54787e9349dc9ec388dc69222ad29a0b16890d917dd8ac8f116d38c4b30e0219ffff030f2755207cae01bc1ccb7de999d2da83e6686d92330d39986589d1c033d5f630034a379bdbb3a5adda4c4301e33a23cdfbdc3fb1f2724da3ba6220ab7b89cad4e1036bd0fbaa362c8438beb8c26147815da7d3e3b3b4b7500160a81ff1f99a9abc7d03f5e41438beacb0ce4ec1254eeba247af6b039b923b35dd71e0361882a54e0f7f033ac63c5eb42c6cc8ac40db3272219a4268c7a15eecce43c555bba6cd270ea42f0219ffff03b2f7371f3a0c844b51cb9508fc4ca188e2f0aea6af3112ff7d4a75f6b3365a7503a0b384a67e1181db331e4365ddee6bfcdf0e3a17bbb833e3c7840c709e97ceca03708349fad6e13d97fe2fec4c4f856cc3e107217b79f0a0c97d56d3f2d9178870032384a39db6f9a4b4e2ab79a1e1091fd4fd5c6402604b728c5d947cf5a226c631037f86cae18c5e155d4527fab70de1c1c1c098ad167cbc7ee6d21aab65ff216f2e0328e5a1188ea21207f65b32fa56f36c29f4e3ee5805cf49b948bbd9d06a42f9d8039d252f7bd41a23ee9ef2cf37ad78a20a8288bfeefc2922910c7be67a8dfa53080347fa16a85bc97f9b0d43e502e6f3e3ec13cda5d8843d16f442c482b99ff20d0903021e9fa592e3fdee2bd9845e46d27233ed1c38a16f302fbd4d29928d2ce7f38603ee2279880f7bd5b0a2e82931483fd7694cc454d4ed4818af7ab84356a96b27f3032f4f64680413c87f0c55ca50f9d872571434e32315b394fdece15afb034efdc50312e45334e0fbef194e8c6243b9a64c2c45ec6e26cc21e891cecf574d365bbd03030cb0c92f6ab9cb1334561892bf2dc00a3f769b76102357d28846ca03de8ec5140379695d004af012a3cd39b684fb5b05d3319ec94987fcf283705ec39a0fa02ed703f3b7bcfbd6171a62714e0b7d2751f54de61ee934394279266ba6e2bf5663bc0803183b7a187248818b5f51752ee3baec6b2861baaf52cb458ba47cea5b118c207200581f02f0f49c7293ad3beb83ec054deff24d135b9f305e87d891a0994920ab476a475cb4fa8418a10800581f0283b1befd6746797ebfd927a4eb9162e3af8226113c4dd3eee0caef172b5048014ba3c1f77640d8033ccf9bacd6221f571922150616b3da21fc8ba2070a4de5dc2ef3b9c66390a6d700581f03df1121e732477768a8935edf810bd85f583e05e5e17c6f709523b6e83b50471656943982828800581f03231fe4ea1910c0588f24b6d5273f6fc3c355852c198542bb9322a859304054dc900845732a53ee8df737efa282a6bc56976e6202189000581f02b7ebde36bd70504bec3ce1b84a96558c575fbb1aa096eabdb7bfa2de8434410e00581f028983462ec0e2f1476bb6ef3fe34bac93792310b2970ed70841a610ed283254bdfa4f4492dd7b7cf211209c4791af8d52bf5c500219c426038462a8a555a73182b7eb069d5f241dbc83fd5e2f4f5680ff41c5f45c8aa83708038c6613f8401ea0906d72d6ac9577810d26606d1a20a0d833980eee8f01c3172e03be663469e275d01c1bf217558116ef6134ed2c77b6211e48a05ba49092c12411034e7aaf6ae38920d1bc45df210fe28fc2bf5a7062ae1c74bf131484d86da75f9c036c11eeb819a0d3afccefa5b129b0b2f2bea688eec4316db85ac3da15c8910dc30318ff4560ea62955872a20d9adadd0802ec50cb408e04c8a71f35321d07a9faf503212bdf17083d431325990fbef3139c20a5bb658d10c9da1b63144ae64843a4d60363748a6b18cab29a7ca14c8c866066be0465cfe69272c5ab9f78d469b5155b4403d72b9c6009661b893e632f390daab3bd6535e4e453c469db0dda2d25f9c5c36003607a8bcd48bb2c3ad1da0be18778b447929790c4d7a661a57ff41143e751b74c0219ffff0371ed0eb820a8eaed34df18678e926543b795641a0b0289cd2a63973869d19fb503925d3aeee1ad01fa51bdd9de71d7651e2d133e3c11d815ad5562ae2ec0e0743903cf219322b17b869fab7333ae4dd02106f34101f191945be032e2447049d96b7f032aee989a67858c8aee497440018d63f81f3d2250d88e97465f039c81941f3c8e0219ffff03118fbf223e930225d098284d0639b03f64532a4105ead55ee5b9eb018fa723400377f0e30e2db7c44d70222026b2ec2f0aab18b5b4214c115baa6566029fb2d69e03a580ed20255da47be0bd309a2c93f9e706525bd881d7db50bd21f84aac1b12f103bd87c4e955b9192ba4ba22b82f918eb5815dd14b40711721650121ba51b4838303c4940d7860a939154dc2158cc33a37638445121c8201409f19aa24c7d323028c03b9fb1bcedcab1c6aedbc59a1300c272d271c1a631a39a4c97a68f7bebcda7e7a03966a0bb8adf026a8e8a8fb916fb2ec6e6f35ba43bfa3618aca42ac6f51bb0d5a00581f02f155d219fd4cb07bc1e937732ec8c6c6387f92daaf2ae62c6454838be2d44270260331d6e3bd78022fe8cd35c963ed1b7ea352b700de7d4032e7c591a99b75a84d51036e974adeb05a074e0e160dbac9ab64a155467e787c18c09520000c92831def5e00581f02250d8bde6e707cec3ca8e26fd2ef279ff6d29189ce951898fe724e4bc096546cfdc3643b69b3d8f5c2356be18bdf0d06f8d9540324d7cf05e62f4829531e7a0640fa43599150d3f8985ae3094367fba6f783084d00581f02833afe7fac8f77d2f4d64b177469b60a4c6dc40b5383ffaa1ca5590d2d4054d5c93950d64250c13642833d15627297124f7ec500581f02fa57ae41656b137ec7b116f1bf98790dcbb4dc114f89393931d69a12ffd5410b00581f0266c776a299387fb2fbaf85f852cc1561d90c6ce9f51b8d71517e9dac41755820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02f2752e407ca34f0f47b93026dbf6d90e4e5fe696ef996b921263f280a7e242bf4b00581f028c794db429a75801e58c70650ae08564008d5781be9d48c1d5f24f751f2c420db0021987fc03b88034eb3a4981202e3f0eceef1e6e506b6d48e83117cb8a49ac2cbe6d98125a03cc2a64477822f749da4393ca00ffd6b153b9d68fff411f57bd55354b8624d16303b9d42fa495edb34f56bfc3d348bb9d5b92f13bf1246e70c37c6c6b910b2b47a403fd8aa42599a120709424f668af5e40f6c5e51bd3e705df7962de3b1602c8020503b1c3e59e0ac0e24c2a25fe380502d751dff61500b393d9c056832bfbd63d93db039b95190d075f29355d2fcdc4f6daca871147dd231044e384f564fb2773911eaa033940272b88aa71cc8d76097464f067731a49cbede952bae3e93b04adf868baf003a2af8c9498e016803f4aeda8f748349f9cba8d68912e72763e8052c1021a662903aa635db77c7890c8ac22df7f39ed8599b51b0875e42816da1bee718a1e6af15f03a57d2fc08c3b61c18209462952437bc9474e3091fe18ca84dcb09f08f23c378c034f3edcc6e9b51a2cdfb09a678adf57205505ecf31b6972ba431c66f9ff59b8b70219ffff03bed2cccab6fde693c7c52ec39583be2b59273651df0d81910d512e633c6709260378fe79d7bb1e6fae2ea5c88c9c9bee617de54e2094abda4fc97904ac24d4c32503f53a1323c1703f901f5dfc9bf295206380dfb0140795863220169202ed27923e03e0d4853689f83b358626a612cf1632f9c8445777f1b52118862d132b25acaf6b03ee3c77cba39c299ae4e3bd3b84a4112bc554d035fc7cd0b1edab9667b8779500033b8c2145abda546a1c1ec6def3123ec1d4cccbb0fdaea5de380d3c7af6da263103e45e4e7067e4f6e2926ecd61a3c1460434f719c4051f6f4d7da30d21063d801903892e9555e27457d13310e1e7dc555a1104bda77aeb69da787483ad350e1672a203fc7f37fd3a6a52c6f4a87a3a4057a25f497fa6b7a36bc7c43ece469444ef35d20323188c32f892c0ab4fa5d453a120673387c3bcb8e18307937f96d85e09f4d34303b135344e97a0d4990d24a1d797fc5bd00747c54a5be9aebd321c572a34e7352303ea8aefd73ea2a5a58064fd7d900211e7739849fc20c8227ddb55eb85750cd11b03fb5a9bccbab77beb60ed8e8f0c980e0c5de869f51a14653b4f522e355b3cb8300219ffff034674dadc26eea308d87e34a054a96a8b5c937ed0a0231868452944be38e31231035ee2992cdc0270d1624feedd991c56603564953cc9ebbe09cee1305965b8c26803759e6b50b6949f059baa8c1ec201e861afa7df745edfb45515a70174cef3ad9703776a099bb8a998d883f44c801e422a8eb7fea0d25db49e5f4b55cc67d7896edd00581f02a16f8f5c4ce8a032c38ea410c5076bbc2b242616286df18fb3ab7fd65983413c00581f02f40586af5db5b2825b9814aa3fe912998ee950b34866cd45e3110289aebb54a23f54e0bb57a6114d831c080823f5fe2616cf9800581f027ec23f1723b114ffa5bfbb9a749f0153ce0e174a71205ffd05b96931b9d95820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0333d6caa8deea9b2f0ee819cf89711d6ebf65d3c1fd203f57b795f77a48813deb00581f021b58347d47308a81942270d339c37f0330664428efa82f3f4a26a1765e155820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f029185c71de7e29b62d459e535e9bad37f1bac28ccf2c56e42f975833ed1d6540cc90076d388e260d550b720735d4efc41f98ffe00581f0259239bccf3ee8d122f783fa093c2bad708bea4206321ba11b8a0803f5c4742bd260219e2b203ceb6636ec5c1f8cd99e3df0127f4c8e35fbb060014e3371381ae55bf66ff84d303b3bc396d22cc8a4d156baa52f8822071747cf835db6a95cba92ee5e99ba281690357ad3f6b85aa41062de06393704f8d92b171433c8dda8ec458b23ec46757cada035891fb9799abf86b3cb68b5c38b3254f64d6c9447576f0e933ec4f2b43c9763403cbeb7de3b4df13feb43a216d3d2fc4d870ae96cc626837fe069dbd609d1ad09c03a24824b63af9fdaa3f1c09a664517efa1869855a2953ee5f78c97773917d640203741c6b42856b2bec55b98178ebbf8dfc89977011c442bfc133bb38261ea40beb034cc2c9a7c21448db287fa3ad1afab6885aa3b94bb1b1ab2ce8846e4052a32c3503d07142784f9bee8140a0dc68c99279f9ff791897d1c9132790ae8bd77faeae1203b80aed7c2eae8c75066749a1967b7dd9dac4b802d40d418ccac17bfc35e459ef0306fc68f6979849b8b4b203c2a3af9f6adf1bfa59d71c827a0de1b586cd3d7f81036d519e444b58ed383869fe4dfd26bf6401cd1c2b1cbe029f252fe69d4091067303655254b797175a53e2d47b2bba9773632a050782f43e8cac078ecfcd7fc8894c03811be60fe1a1e86861daa04d48d2f54f107378b0131a20aeb56ddb9c121b2fe8036719741df4f4c1a6db0cde726f01f3273762f65a48ba76d9a0d73d0efe0f87770219ffff03258a99d5b3a4969511367a6c6462e70731e200ccb568a08556bec0e4f361918e037bf5baf7a8b43470cc135827d24d5d73a595dd25fc49af90e91ad1ef60a11f0a03d1a9bc8a4ae584f539c048ef0d3a0bf216ac4dcb0270f3d73b415fcaa085e55303f398125f443d785b00d7d7c57b5ca010c0cc575739e873da70984ec3ddf3da9f00581f026b46ca68208dea7df94f6ff42b6a7917a25ee5b82f5a26a453ca5673bdb842887f03ca083267174b62154d47ae5e97eca25d9b1e77f2613557f81c35566d4f58816300581f020b157d7e836d7a96c737dd8071330dda6e168890bed092b2d7a0252d3a235820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f0227c2ef0e589c72ee1e12cd8ccdb7c91c00d9f81ef9b0cd4606ebf1759e4c494014373fb51a80656100581f0291d5c6733fd326f10f7f0b5b89faddfe45942da8ca98f377d15f7c64d867411c00581f02993e9d715ee1ecc20fd8c6431f4c99ea7231375c30e604af4f0a8bbe0caf42c259035732d56266758cd0e03c22b40a5ebc1ed515f2494bb7f820df2cbd519ee69a9900581f02423e7048f85d775158323249c547213f109039906cd0221a12af83c0a156472c397a286eccbf0219a1d6031c19337622be53fa38765119d33ff225b1b733f17cc20434d88c190dab7ae0ab03db8d67efe33c1bcc95c82bbff11436ec70eeff1e994ffb3f864e8204d2002f750341eac02e036c4e9821420213f2c7c3662eaf13d82552910f6d311a2a31e6dfa103afed3e087ffc5300574b306340dfe64306430703c0d826cc02f992815fb6c9b9032e2c474dffb52ed27c9a74a9100190e84e27c6b10ff33943cc2ef068f1c85c86039030f9108ff8f453540f08e772ac13c91cf76e8d5a9764de8edf28e221e31c8e034deac2c1045ae741076904dda60bb28a99544570b0088a4908769dc7cfff40fc0396b73322795e557990ca8aeec20fad09563d32c7b67bf7bd36ffc4ec5cd8545003ea32b94557992f421d1c6300034b3654c1dbf82cff6a55d55d031e30042b2bba0384da90aed64d3bc5e1708e19e96f13a5d56a4a911f4713ed774478a25db2f0810329270802594a7ac5ec2786f9a2bcd92e3e51dbaddcad1366492cab4b5895e805033b73968f61a1311446a837e4ae5b748329f1ac4c8675f033eb477a3dca088ccf0219ffff03293d3e2ae4a6aaaa5b9c92f9752d1b61626b88c9a8317b70b9461d66e2343fbf03845e1dfec502ee559e9adf8ff5406afc0dc209a7e10b73bc30ac58b84db3af7a039bdcb89b905c1c65d95d544b3d7c72bbf858139ee34752188c7d34357d2f599b031192712c840994c787a1b5a9d75462ee474bc17e9dfce9c49b27b6897fc174ac03a16b8641219b805296aa54e36afed4ca500da6a50442e30d06e18323bb78fa1e036a837aaa66683bb558aba7503b8da10eb4e9de050617f0b940a2ba5821deeb2603f5a5d3c38cb9f184cf7c6a66b6485b4c9d15ea880357b546ff0a43727a30c1d70316f8c10596844901e3033880944d6d1190bc4cde580b04b525da4923b8fb7e9703b41b42f0d50ffa64b710690fe5b58ef200c27a964d2023d84391758120f8e7d603f967e4a50a60035b903cf3e622f3e118988f51ef6d13bd3703c0983583196c2c0219ffff0302933a59585e23139054f3fa361d1b11d9cbd5358ee5d7cbe4ae18533b96bc6303192216ef2ed65e830eb12bcd69618c1339d2d6be4e84cc2af666707a30e3a816033d344c19e758c634365c3a855cb7dbfe13ed9606272cbe05c1a9ac14c0842fe603fe7e4e26d10495c256e41e692afaecec308740ce734ebcbc1c50209827d0ee990305c997ac51e4c8aa54ab622690ce3260f2dde54d2c4f7c0659f14a4ccdcc61a90373c4c5d65460c9f51f7aa0781d1bee033b57b8a3e6f80fb4d7acd37c3044f65a038dcc7222b5ea0a5985462c2960dfbb7bdf4bd11735919348998f4a0397370cc9037c7f78116b96de11ab0c364167da129a45f326577657ceeff782b80b299ba12303b8aef0d4ce6625c3e246a0d6e8b07c9b96e8ee937eded0432039e480a71360870325513fcaa3b81c7e277e01d6076e62bda71015d1792955d25c071e6b5e1260240336f2f0ce2206191fc9bc8adfa0e2f7de71f19ce78407e27437294e4bbd53b82603aa5929dff076e6be0a6f69828ef680ca1b6710e584fb257dfd28cc6ad071edf803b88c409de7c3f8adec5ed90133707f2d939c50e67afb19790bd4ba92e52c85f403bb0929200904f4e637392570ac4d0b4c67defd85b09872d26bb92c462afc5d7100581f025de823c1dc39c190aa6e32946f4490ba05b0d0b35acf48e1ce7ba07e7417480df2fce32d73f59e00581f02a12bf686085fce9fd1e11630b3c0bf8f18a1c4cbaddfe9530b4332b7aab4410800581f0226661afe80cc2626c872a6a88c84ea363fbed12bcb63472ddcc85c3424fb410100581f02726a48a6efd020c3f88195182b90108871b76b7dce663e476db18dfae0a75820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02dbc3b79c8155a4a643fbae2da01400497eeb50354935eb64886b69ce6d4c4723ec720f2ccc1503e90453e222dbd33a1d2c4939faaa0a5062c9099b258528e3bc11a3e4e8cd790e00581f02ef0db8cca8c32d1eb6e6dc7ad3fb87d853bc4cf9588522ad9a4ae36541465820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02810645c871bef6c35f9063f3056846de45de144e8679d768a1cc958b559841030219493d03f20d40c3708deb8ec124f39a207097b97dc5ae8783aeb55e7408d37e85812b5403c4380410b26b2a972dfdcd7b1c5f362675f21052ed3e449e7d7dc079936b804003924169c0f9886d4c4e431c33de6e10ea2ff56ad58071460844d1191acea35d5903bbc1d0e7e902301b1a15f099aa5f4a8991d87d7c5d3724e5f1674747cc4c54b2039710b5fabbba71480375589c52e54e86f2321816761da9fb5e437b0bef107bb003d7a144b52ac453830f777cdcf9748d0b229d5b74b0c0ddd79cd93a83364c0b9b03db82373a20226adf484b6d3049b026f1ed09d83eee2ce7434fb264b011a5ea080336c81b7fa6ed54643656acf3f92c304fe829d77fe006eec9e6a1186374973eb70371d002d04f5d997e9454e8babd6261cb5f09e78c5afb213382eb133171d9e01103ea3625118091588cd6c335a1e3664eb95690f28ff806775bd40b48b5ed2534960309b9a4e69aace230a21b1559218500b79101c78a93f26e6c6032d27337060ec1038f81152e7198e13632ec746377c894f78b3fe3a3c1d75fca03c3c6c66b2d34bc03946ddf5e1eb2acc63c4dfa4cb7a5384449cf6edfcd182a3e9f33e9cf53992d0903d0fee8c7670195cab6fc1060704e9d67bc738775c70960f02d0d5abb6b8410b80219ffff03203d91faa71dde46441405bd1c75365cb6cb112124ff92ae7228f7348c12ad8903fb69c170b99fc9b86342ed9a41a9086cc7bf80d71d9fbcb6dbf67c3ad87179e80219ffff0378ef866aaec9e66e01462f7e7b9dbe97b5248e92e68e39f7d73ac95f3f2a40c10398df71dd6375cf87d05ff5aca21a2b6597c572e0a0c37d3998bf4a0266188613031b3bad7876659e37624cb24383e45a367a42c4893cfbc4ce216b7fcfd3a338a9030d56a78a6c3349ffacfd5f7d8aa74f5ffa89df3f2fa3e19a5723ba7e66adadb5031c3427f11b411ab87f0da47d4ab206d329594bfb6217cffe4f4baba36884c28203e4238e078e3543ae76eaca74224564bbff9af7d3137310a99731618253fc4dac0336dd77ea10955c26d955d385d77e659ba9e896b527090c05fe5ef6f5c5f0379f00581f02471114fcda013a1af0a227617f3ba051df0ff7cde2ebd627de47b676124f428bb100581f02920120bd3ce48da15c85f9fab211b438c13103328e1b64e37ccad45c01484611bca2bd186600581f0266c4d34b1773096e8b60c28a5a7dbe615891e65d40e75f00c83219c0f257410500581f029eb9cabd8f4fc844ee624d041c99d99ae5f36004c2b2560510875919a29a410e03164d17701af5e97dae976a7748bb092df32032a6f33d69f7ef2e7fdf1727868100581f02fb268d27179d99688439bd12006c2354599180462c5fde072e23fef652b4544ce96aacbf4a605084d757141be016de8431b28500581f029a5ad24c7c6ee443bdfa50b5411227414c9acb0e313e317bb256935d3114410d00581f027a4b78e1c32fcf7fdb76163e9eef041cd41e2ddc93982e5efefd47a6970c54e8cffe004c8f5bbed8d4c76ea1519c5105ba51780219df80034bf4559fa42bfd8ba9febe4ef75d0fdec851142c3362a63a639b43e47dfb5d7b03c85d9ecfad1b9f58a91963c946dfc09f1099c1b6ff7c6aced726ef2cbb4ecdd0030634fdd6b7a2339914809f1a1a754d98f2bd1f59ea4b09998ec833bd2f59ccb000582003cf08d88696f6f31f1b5e03a7d47c4cf729ba8bc02c1e9712d96d51f80e4300410103ac99d757812b828f00b90c3065ff53573efd3fc34b9e073b82814a39e6292e1503e75092987b118459d308fb6fa3f7f1a27c7589b521cdf36e7b301147987b1c4a03d59944f30ca2f83f6e68b1e854d8d627ed23c124f11735923c3b7822d50c5f00033c6e9390dd098955847afd5ded49b1c1cee08dbe39c19def81457b3bf198204e039826e46c358736a06cd2bc94fdeee393164953aaa24672f26512e6ae18f82328039b2086dc4ca1e1067b4ea374d80628255b054861f69fbef3142c1bdde875e4e603df2cd6b79510175a7ab97098a53f72c6b9e8e57706db343cb7706e556ece8d000219ffff03678a7664f1ca23c2a35dd1f2e4137e4360ad2ec680ae68da9242699d4336c86703317c64c5c79e227bf439d51af21aebe5b7a0335af76e507c8423db40e24e801703ce39254e8055b184d0e006709fefd0b9ee2e716ff25555f260dc808bf19b256003de13a8cc504dccb5fc7adbe8e2ae5a8aa03832723067e2564482e19b806195a503b4aa6ed6f789d494c6819b094381b1c14ce1f0640d8f6c2edd2dd52d07329450037eb0fe3e2551be914cfcd2b454a9d4cf9ff01a15e57dac03e532954d99307eaf0397b7104f468fe21a20e9238a9c9e050646964a605526fd043b250bd60b18c7de00581f028e2cce6bfffef641ec0f4ac40596c3d9cb95e62e545beb92282a908eceb1423f4503c09279fc2cde9c51f4dcaf1a8f02268073b2bd6a147545626ee18c515ef08fb500581f021b95d1b49bd9faae4c947aedfc52c070c6bc2e49ec3ae3a2ac252928ab6b5468808e7822a54c098fed2265b946013d1020ea6800581f033fb7423fab411702338ec9fedf41f262def894c097f81950fca96b7144f0411d00581f03852beaa7c37a973020369f24e35f45c4eeac0ca0624c94ca8a9eb7895ad0549f41a7e24fcd572079a08af2530ebe7d9bd5c7bb02186000581f021b41a4ae1325a8bac4184e73185bbd78e14c86ef7c3ad4524de1f549defb4501f6eed4eb00581f02f27939b9f512aa77d11bfeca6c9bd3ed457e81c238de9f704030fff23bcf5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02933aff1301c6ae9cf956f585271b0fc1617f32328c069ce83d439a2e5268410200581f02f5f121e21548f67e3e1209b18d2f8ab7fb535c578d3be7c022706a4e23b25820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02194ea60398a309497d5946a149f5f533598132de8a2b7058a9c4f13fdf6e2f488d7bc6d400582003452bf5cf56d19600aebe0985b832f99211bb4c3ba606028ee84632f4126ef0410903f6c6f7afbe8c6056b4809bb5b11546bf039a2b5d7433bc75d0c37ab60520b2d0034d1db10df257dcb9eb1a4a47ed0d75c096bb07fe3a33c189c382dc76733c8f9603aa178b653ef12d90a22a91ad0d15d4826febe1a13d61e182d0251945131ca774035c3da35aebc70d15c460fba5c258b1c8abb97233baee07df984784ebc2ba5b9a03cc2eead7690fcc166a9fb7952924be642ef60309e24502ad4e0a692747a0ed3903688590ba272d3dbf78caafc270c59827a0869d85e31d3f6592d119511b0162140219ffff0371fde0406cb697c922ad82366c249f765c76ad124a817cd48597303c5345f28003fa0b15ba54540f2411156bd151bb9c7ef1cd03d5da76b7cc27158ac9d1bedf2d039e61bb4eb1c55261a5711a31d22b0041a902e0a255cda57c6d5d37c0724619ed03a8e52477b7188726d1808cab1c048d1fd913b7825a52eea04e53056a5b4224f0032e2f48dea5edde817d48684b1ec3d1158c5c2096c2941bbc690c4a96faa746f103bea1f317e45183ffa248a7536deeec904894ef3f8d7f71ba3644b59b53e63fec03656b29a7fc8270d4069eb49ccb1efb264a354d26b1be9af4aae6e0a24594d17303d3dfa42e9b77c4a21a5ccf606604b8f84a4ada1f0172369b7b4dcbfe2b6c85de03fb41ebd264546d5642e8164e2606590a08f7dcc6d84f29088159fea294b7f2ed038e64cc55b0615dc5ad2cc16881a27b2b5050cb08024d816a9d6a42d04c5baa0903e1e6a52cb9a0ac2de6126a5dd4f8b054708b040e30b26d596e1c28b6d0a261700219ffff030f88769df794d68aae3c9e65f8faf90c1a659dbdbeb0dee284061b81d7e10a42030f8a96252108c8c54250ee8b82d5fc2dd63979f65e0c58d1f913f0c87399061f03dd31d35a5d1a5f0ef46d741f73dd5c245d4a4b68ee5fb58dec029b001ff7451e033b445f4377a6f0cda78fc511575c3ee8d0e63607091c20dbbc9521d5ec5d214f03e2fcc5d568ee9e9e5ad2dc31fe4a6df850b0dd086e3b3f05bfa20644d160899b03892f1b22d56f1c8e47280d54bb339213c466bdafbc92076e5ad220140cc3319f03825924f86555e6d63249faf2b9eafed58ea0ab5c04c6fdc940315c596586b2b803c9e8eac7168764c8b70f3915d89a4bfc273b3d4906a1c97ab0b10a0bc61b2dfb03f3f976d291a82350fddd836bac387f77419e307cf9a6f070d7a02f9d425e5a3000581f023f414ceacf32fff17f5fcc778e6279a21c0649f58284d3da5a861f500613482b68ebc3f3ee8d4900581f0212f3b542812514136b611e5a1d7a376eef93210888e340a6d59e5361e153410203929dc327eb39d109b815a5d72455d750fca7e1e25218e12dc5ae3ea5b7076a4e00581f03a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b042d10700581f031ab664960f19d5b04d8bfb265f5d5198f0e55be951138b7c4aa848f378a0472386f26fc1000000581f0320533c2b96b1b0e92f3e0752c706f9db76c59f5964e80e5958483f019e40544554c4e5a971a25af0c29a162761d2a0cb855833021904a000581f023fc8e743015f63fe6838687e26900eef02eb75fe921b9ee91cdf3d54e6465820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02cb8c5ebf5244a0cd88e063d1a883ad7f80025be6be8b490cb2440c6a8d58415800581f0247abfabc9a2e441db9abc070516250e781d8ba5b23749f816ad010d5898b410100581f02298c44899077b2da6d440a94e801f6ec17c7eea5751286bbab864275f7fa42b4a302195ac30374b7ab0b8277e41e96e4e73e572c225d9530d4b2fd8744202f60e7d12d7e82b103e31ccab4d7b8b9cfb7d3bef282b1086c98c4aa9ad9f9aa10707a34935355cf20031215bae646c28eae3a87b45f08927b899b5908ebb8fdee3149be923f4d358e2903d6e681b38125841ddcc9ca52acf2834216ec6fcbb468f5d22743643ff94d3c550300f416e85bb57e13ddd571481dde5ff31bd6181ea0317320b6125d181e17516303c74df4fc939a9ac694bf450914222727fa79469bc6a29b4e76d76ad9a50df9d403052078053b751569426da5355284cec9047dd4c8f51c36f42ec441ec5fc84b1303546d146964a8fbf5598301981a5abf45fb45ff87156f32132f3ac3c90d4bb3f00347182d795dc93aa55bfb9ef642326a1a5a214158e61840fae79d3609cfbf50b003d978e6801113ff17b22363c9a11348724f0685fdf6aa59ff367e98149f6ebc0f0219ffff0335ba58953f823fbda866ab796fcd2e29213eea82f948b3955cec53e7bbe2ef0a03b7a1959c16b07dda158a173cfac837752f5a18a4c481602238760ac5d1680db703c297a0f953a0123a256f34ce8b2897d1abc9acf943ac9a141029ad2632b4fe2303bfc2983512d108dd897f3e10d3f0bb45c6c71005e3946af94372b0d27982406b03931fc5f5cd35d198e232fea9c050bb5f8175342a1a51ce5611d8672a67d3a8a0032b5334fd7c02a9a3e601de7ffd48f90ecaa7edb67423a5feb2a661c59bb33e9203eb2100091f55a28ad8a36fcecb8cb0ff2fba9a55d39c350522591923e92e56cf030ce552ba4994b1aa897b473634dac84a3b20717bfac31998b07ba1a8b1a6362800581f02aa6b03c9fdb1a9a0af933476dc80e79ddd92baf57dab20876398044a95a75820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f026a380b953855c0a06274a60d270e6fd4ab664ccc146ee895f0aee8bcb7f9410100581f029596e8e46152251cddfa894b4b9a969cbfbed09d406a126d0808313090dc42cc53039251acd22588428edcef4679cb4530b08edcf6bf7efe34d6b9c1416f91149aef00581f021d2e572b06395b693c8c36a5a1f7e77a16cd77440d4971a44727436596f44289a700581f026b49f5dac4b6e6e3c9b373c9150ee50578361d0b9f39934c41bfd19597f34111021918ca03e207438db574939f4d2052d1e62e2065a39a281f7c1cabc96bd3bf283fbf79d50381c81df0355763f75a37a8259ffdc2991402216c4568ad5cf2fae32c5f14eb150326504c4300aa1d323a3730c7ddf6d329f2c24e72f83f8e1c4ebbe304e3bd0b270350f58606e3f0f3309d9eeefd22dfbc565809aecaa9d44beb70da2a7df9c0a959034f0b00a25ac2eeab2067919e03870f1b4e677efee5718f3c9ede896bf5e602c303117e28c4dc897753e5af0474835e781a4c9630091b6c34062027f58c1e3a94ce03c15de6cbff9531e383e8b556b4d0b41eedbc2ccfff45d53e865da03188582d0203b1cf1d77144a5f8a4631521ecbc063e2f2fcedc2529547205829e0bd32ab694f00582003a9f5f7871e0eac180e7dfaae3be3a79b447d9809aea2fb2edef79f1eff9d0054b34a45fb62ed69e0066d1b60406463255e1638ca036fe21c01f1b75a380014eb1acc8f453dc737feb18e15286cd6605716b3e922390320b2640ab6d3a746c539c345ab3cf8e48934d498f71be2c2b926294a0fb30731031a2c5e9326602f083b520a5d572e764477faae25f7eed58a44af37e78c5f99f60219ffff035b276b4b1dae3b641c40e00d282530094f89cc291c0ac642b27ab0e190db842b03a2b89fb05df43e24fd25cd6189b5746a20b3c4c25200f499b2c9eae1cfe39fd9031a5a31b4ba343683cc123cb32d09685bb359809f7c59fa267f48bbbdfa2a4923034fff688375db2633a68275992427586fac2c2b8aa0323289ef4d0fdb89476a2403c99c77bc0ef92cc0593e8f7306d086a1b5d0651e5579aadb02e25774918d67d9031e7f1012f881b2c98cfe351fe10cd58943757509490a0e9aa133683917404f6e035e0f7fdf77bfe733a3795766bc08ff71436c7d1bac7d30cc2d39105cd5aa6a7d03b8701fb9ee4c31a0c8d9bf92399701ad2823b901fdf12732672fa526847f2171032a19be148b7373bca4a8d7235b063de5d8ee9c1c8a62c5674a50db2f856f19e50058200328c9fd55ef3f12a282c0cfdcce633a22466ad809913c3c778f600d18968bf047113cd18bfbde4103a6f6d543766a6e9c71d037ce1c91092e85d5fbee4dbd73b38e69aa1f4fe91d020336e782939236d8eae5148113cf84d1275d21db445a03906390d5bceaf8aa45ba031cc0786aa26223ac1c94edc7725bcb495fb881a5040591922b0d3e3e2a09afee035f9d37f32e6f5f1867dd4e9cdcc427262300e26b57fa88489586d8d17e823751039834e2bce97e609e0c3c6abcd82c8abd23aca21bb749a92aec70a45a329f669303664971632b65816cb5123a9d3fb70e8674eacd5a000d2f7033e177b66c6af57403a541c4b03c1eb2072a4630a08c012615622a1f18b9522f26849ee8989e0dad5f03d15ffcf054f1ab4cb4645e6622c5a235541a17160441f939133a861a3930dd1b0345c99075a5163920f1fa2a5a673f56adf8ee78d308acb27b4f73f9e80b0e67750219ffff03ca430210688ea6b3cbc9815ed8894cc526812385feed13bc92b80190f6d0015d03318821af0523ce1620833e15549995ca801607f8e56a0f3867e220d37923ec3303b42c2f794fd6c38f0c285a2ea1ad1a545ec311fe23163829cac7b0f0b93b10880219ffff03cdd05920f2ea207af6c3d6b4b464cf8d1d7181d072c9f7c92712d8ac82e539fc0343b343b1bc2cea4a6c0c394752dce599c6366d20d83909fb6e0df8ae3795746803ca2b002e52273acc4d95ee45753139c65859002dfa31accb0d085586b4ce8fda03c1eb924d3ae51eb84ba16c0695aa352d3b73612e9f285254b6fa5e3fc64e3fcf038a2abcb7aae5cff965958f5715692f55fc41029c1909787b1769207af3af04a3030402245fe71bcc44001ca5ce0003cf345db2ce4ba45fc259b1f82a0da2f7cd2f03551f0395b54db7ef2c626e898e7ac956281b224f5e709b2372db8623073b340d03e56be1509cd275079244afa0c362821535d63ea6fb598abe8dcee3074536d6a6033a67dbfcaf4951fd71bcb4de6b45e755df365e94279e90c21189c4434627481200581f02737ca34fb6114161ec8245c8f7963d6f3bf2325aff8907f1c39a7e4b09ed5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f023035c5f637e60e48eec97565d9f7b4800e071bb4a8625142462bd5f3c2cd5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03a86752199a16be89dd8c24ee324159ff991e26cf3d9d1b1a6cb45ad529e203d400581f02432f9455c9413d8cafd5d037c0158c68c8cc2a32461a8da7ae0b01933f784725803e30d08e8200581f0225328f4395e2bd6130b29f1a30afe77ee6fa43896b75c8be6c9aff9e610a42bf6600581f02c8790e98a22ac767ea0dfcba08f601f9f4e79f806fe9685595249dfbe95d5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03c5a37057cb7ece487c83b4231dda21eca33090b84797e534e584644d06d5ff0200581f025c67a0da73b02161ec58182b7069ab5df22262ffa172657e73ee0d5b6107410102197e8803d0f5c90e13ec4185a4ed416a4d9585e1466f3ac870c5d9b332071ac20d1049ae03329fec4a59c85559b80a67ec4062f70423bbbf54137c39798fa3065469f28c3f03009cd91ec1b7170b14f266e4907ec4e50c2c5c8fb3a47a5a9751f6c111907b4a00582003a97670be2590088a9a35f053bd00b423e5d8bb75be2ee795bbd6b53ef2daa041040314c0d5f541c6e26286712bc292b6a15d9cb8d83cce055a565643e1d27e95e4b203cbc74a078eb9b61921568d33d4c64260c77868141c44f54f6eb97781001bbe18039f244b362efd0eba010950b395f5b1ddb883ac204d7198168b754ebaeb3730430331aa5c8886d84e65e0048f1a8734858f4145e03bd24729f1ba3400fbdb118b0b0307dc5ba55317aebcff776ff29dd7250321b2d1d7fa0af0e43518e44cae952b6f0219ffff03faf6a32d6b702bf715d32a89ae476a9ade02d2dcd1a0a5cd578e1759156ec52b035e8e4345b591afa48a05ab6ae99a96f077fa82d02b7a9be835b3bc79f65c7c9f03c098301c481d6500d17135048e8b5939f4a62121e7b7500b9a61b1538b1d760e038762d7890eebe388425f7caacf61e4b941ab0191339b2c97348a98e7da80aa9103a6cb342487f148240cc96fa001a6dde12ea7e50b0ffa46502824cf53d17b98e803a3a7400685dbacdef3b8a3bc1a4925c068921a81b418031c496d911070cf3ff6038c0efe0212024b039cfb5ca04c7b2efbcc826dbee329a228d289b06eac264bc6032705110ae1a29799af9e5f8a39f1e033b569accc6bb64f762d9a0dec20fabf4d030de8e1687b4d892d2cf423dce37d2147ea8d71f41c1018f0843e54289e1ef331035bbcaa0619f99f84454b4531355c303ce96123c0f28e368889ac786d9c8fa48403c993283391df345dad85d14069bf90a36cbbd3f6965fe2fa1bd42218e5d4be7a03f0a138f3a825a3a10cba22f99ee7969212e22c9814c9e8e1a3f54bec2f13cc9d0219ffff032769143f77282ca6bf636ca33edd955766f55dd262cdcdf43871c412598ddaa603bc8b842beb575bdec8638d912b8671933f18ba7c365d55c2434d5b8163abce260219ffff05581e0369fb3acb688ec0833b76571adb8bec9d01192ee2c5bd41b51438b48280070119202a03a546b9a1f1b5222d221898a193f0546bd684da8b33f4cd85513383e58541461d05581e0375f6be4c94ec8db2ff43d669882ab0eec29bb8c0120b9f49a4dd503b600404030631bbde9b1f984125a7325a2a6a15403bc0250599094a57c034422ba83a62b705581e036bc29aae9ab1d575e9303ec7b8a7bccb66f352e16ffd847c2bbbc899c0040805581e03b241082d2135ac3ccec1e87a7f017ad6bf87934f77beb37a86d534ae700c014702f0b8f7a29b7803e0eda5d3a5480dc8ea5da0c85b538590b93e4d2f1f82da1f0961b8e2a8c7090c05581e03d442289d5db854fe2f45bf72f76ab99e937420745e213d4987526315b00c014677b0c5f2eb1705581e0362dcb6c71d7a63326527116995a809c8321c3d3d9ed190a5793aec0f100c04470be60cf3d5d5da0312595aba11f1bc6a8180d5051a4172b981b77cd82388b4475fea91ae328cdb21021999f6035798401a74e041e5bd23a00f2aca4913759e2bea42b7bb0502a086fc8f8eefe603db6f567a1cd62cbf00e6e4cba0c17eecd53765602f2a696c936c105a526f03fd03106918e83d1fe407b94f655299529fd05d72e273ecfbcc55d7058bace20a5e050376805a0317490cb460b2a955be780450f6836dd1bb05d8a0311534b86e4cbd8b0317e0520ee6cdbdf3000f978386f5e97130e317b013b2e637e52d52e70bba92d10219ffff03d1d4486e2c6bff5bdba36c57111df8161b46035ebe4a7feea12280efb7abadc203622246760650fc1eebadf40c41de6af008af31b75932edf66dd28a42cf6392b9039c80afa31006c3efef2127a7e68bbdce8aec15d88926e61d59c5868790abda2c0370d5462d7404481b04b145698b68aeb2231f6403e2368b89b416a31079713ee303836128bd50abaf5a48059e41f33c1cab36c01b7333b03270b06ce5e261ab630403aba33a9328146b5b64163d5ce01e95744d8b6ac6dcc3f2082bf9453e07fc359903e40e85229f7a4c2ff5f732f0007bb1244e1e4188260ab1abcf9687fdad76d10b03913a4690991815f6940d8befdc7176aa6ad9c18a08ac68e4419dee9b7c97835903a0a5d2719007da830314daa7aea494b3bf501dcf60ba746e3df67aad39d1db0a036cad949b8b70273203501eef9ecb81276415d4d21be66e2bfae218417c1342ad03554eae355e33b0f1ff9f4c04cfd8b0df1964d522cf1ab1a95a90ebb519ca123a034e8da133fbc1c4db5f5ec972e7f6b11a7ba43b57d5f3cbcc25efde12cf4974660327a87037846a9ad140b95de480c902ab097faf89bc4c8b701612cec33f38b6c70219ffff0382a4e2c4dfb758c117096d85533632ff5029373e9d8d952b129a41b1dedead650358d9656141e4dcbdd2f5f54390ea1afc7c5cb98f7766400013be155a5aa13a580356c4b7056fd10e48feb32c2dc3d2feefaee74d0524ad97b7dfec56dbdf0e23d403dbd626ed7b96456a5f896224b117de8b7ddc7b749c6b2d402d21d7438a8a0e3203845f6b71c30077546d85eed620eff91a7f45a2e3e2cf1f60c88e758cbc96315603e6f29ecbd7991b80570a28bb242c63bdd9cb653eb7596a113b99fdf14f97bd4003368c55f1fbf07342d8c323c738fb2ea9f2fabebc8352a279fd997722cb8fe14a03bdebdaa86a254e37a582155fb052c0f855a545e8ee61e91fd663b92dd5c53e1103c5f0447b2994fa864ec0df232eb80dcc384488291643071f774b9747f0ac26710219ffff038b015389fc84cda7709348e85846f4cffd6da02c1adabda10047c9b9da95a9ca03a3f9e82499e7674bb8c2e9f1a781e783a1dab71b19048e230bb58e5df5973a2d03333fb5bf5b23b1f86775a0f27aadcf9e79134ebec02fefff6051f9878c07f7c703692e61deb86e5b65787f5211be79b949ab6add0d6cdc4c81ebabe51f653dcf9703342d16fd6d25eec5f89690848c39f90db48e7630c455ba1822e24fdcefd8dede0357350819032baf0bfcb2089f1476b54cc4c185c32e30d20725b9dd45e6b5c21703dcf2cebccfb2c9b99f315428762e8487713edd7371ef4943d8faf8f81096755403bcd212c35ca52390cb70af312c0a2e8661c82402d9245a68961e28c9b60cfa41033335c588fe2460af946e5e4cf03edd7cd5888ea17c7e9e3955691cd7f6dafdef0219ffff03a163ea031c9ff8e641a73f154c1c71c9ffc513b6493c3f619a6200a0f4b25102035b4df2810be1536437ba2fcf506a03b9ac1ee5626c19f39a61e3f32ecb8b3641035e0f6b0543c94577d36ce472158db75597afe14df9f8725185b3ba9d4a9fa44203d369a2794f66e4bd041bf97e7dab817da7e83c3bd3581cb880bb6347636e5a930308f3158a611f591d497dbcac4462612e0d0f4dd07b14b124f72c0cda941b361a0370b32cdf3563202ae998180d3c1e78d0ac431450f193d88bdf7b4a005ef5a04d0219ffff0368d228a2bb6f501e5114668a22408ffe5bb23ca4abd6287073626b82b0cc7ab803c509156302f3d96b880a8b732eaacbf000f68350ed14f30eb207bcbd91dc33cf03b559b49383b2f2a8513a459b0ffa5039041233820ddb3beda9757fac8075904903827e2fb9c666b4acb2a77a11004e3a3f28e41e256328f1fd2aea356fbf95e284033bd5d1d8bd1bc47e3b0e5364e68b9a339b53d659a5c54f31b84d481441d9b765037c938a52efaf84f440f34c5e7083bc9ff3e10c463172fba369f45a660a44a0e303e8f34aa1a8d07cdf43a1bd3d33825a6db784ab7541a15153416748b70a8d45ff03af5e35086163e702a7babf11037a4edab68ed5818aa1ced9b8ef2e560c7dfb9603deaafd8cf800d4a3d27d08dd80e8b54b4e9cacd05678687cff6cee69798bbfd0030ad896cae91949a85c3e45fe83e99d91007ad9f03a11729d65cac061f583b19a03df17c3e88df7eb66e3bc42a6eff9226ad790b1acaceef30860193a69c371f135035f39e8f8e797cf94ff50c4d3e8612cc29ca20cd4d555bafd647fd750ce907e780328a438af36388cbb7355c4550a338d85fc90c9968ec8942c90047add703c8ba0038496b23088b87f4c247935c2dc0c117b79309cc8b7b429f6eb1d849e892522b10393990e42a7da40102323c7d777de80586e89dceb21cbcb4ebcb6074dc1780e3303f662ad4ac6060f9fa84ddc459c47e98009160b7a9c2a63fdbfd38d66f31072e103a6933d9379f9715caae168708081b65a233a6c2014eb525ee3917539d0f16ecb0355b5838de9624d29b324001d06d9d854210e1bc9b815d3cebb3730fb18da697203e17a5fd5f0258a79a7295fc349c35bcedc07d42f5cb371d822336abb513926190320954c325095c2fefc2201f0293f5f6f5240f85fcc052a5d8a82869a6172aa9a034570173bcc88ea2710d14ba572afa4f318427fea12278a73922298159cc5bcee032e0a36c7ef00d3650e2a628c2db0a90cf6348e8c442b4db3ac29f220276fbacc036e99d8d3ceb6afded473f5bc05e1c7b1c98c3f45222a1ecf01a99b9b4641e64103562d44997323f6b304ed9740a3025214a7afd24c44e13a26dd10ec7401440546030a3dbcac1201260432eaf194827eb27c6192a4884e34b7d8ec500c90a7db10ac0308c28be29d0cfe27ce4dcc22bb798c97692f50db909b2f809d8bbd97d6b95ea203b5f93339cb957efb1a03f248602d638122ff3ec5ab8cc5c9bdbea0ba48e30ae105581e038c0101236e268b917b5c0108f9f8370987816d98284c76b588798f19000c0147021bb96329ba0005581e03a9d5a946af9e33d51d87cee40544ebbfc39c5d3ad52b77e1b30786b1a00c02462155aa030b580459567e608060405234801561001057600080fd5b50600436106101ae5760003560e01c806370cf754a116100ee578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610800578063f305839914610820578063f30dba9314610828578063f637731d146108aa576101ae565b8063c45a0155146107d1578063d0c93a7c146107d9578063d21220a7146107f8576101ae565b8063883bdbfd116100c8578063883bdbfd14610633578063a34123a71461073c578063a38807f214610776576101ae565b806370cf754a146105c65780638206a4d1146105ce57806385b66729146105f6576101ae565b80633850c7bd1161015b578063490e6cbc11610135578063490e6cbc146104705780634f1eb3d8146104fc578063514ea4bf1461054d5780635339c296146105a6576101ae565b80633850c7bd1461035b5780633c8a7d8d146103b45780634614131914610456576101ae565b80631ad8b03b1161018c5780631ad8b03b146102aa578063252c09d7146102e157806332148f6714610338576101ae565b80630dfe1681146101b3578063128acb08146101d75780631a68650214610286575b600080fd5b6101bb6108d0565b604080516001600160a01b039092168252519081900360200190f35b61026d600480360360a08110156101ed57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a08101608082013564010000000081111561022e57600080fd5b82018360208201111561024057600080fd5b8035906020019184600183028401116401000000008311171561026257600080fd5b5090925090506108f4565b6040805192835260208301919091528051918290030190f35b61028e6114ad565b604080516001600160801b039092168252519081900360200190f35b6102b26114bc565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102fe600480360360208110156102f757600080fd5b50356114d6565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103596004803603602081101561034e57600080fd5b503561ffff1661151c565b005b610363611616565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61026d600480360360a08110156103ca57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a08101608082013564010000000081111561041757600080fd5b82018360208201111561042957600080fd5b8035906020019184600183028401116401000000008311171561044b57600080fd5b509092509050611666565b61045e611922565b60408051918252519081900360200190f35b6103596004803603608081101561048657600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b509092509050611928565b6102b2600480360360a081101561051257600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d83565b61056a6004803603602081101561056357600080fd5b5035611f9d565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61045e600480360360208110156105bc57600080fd5b503560010b611fda565b61028e611fec565b610359600480360360408110156105e457600080fd5b5060ff81358116916020013516612010565b6102b26004803603606081101561060c57600080fd5b506001600160a01b03813516906001600160801b036020820135811691604001351661220f565b6106a36004803603602081101561064957600080fd5b81019060208101813564010000000081111561066457600080fd5b82018360208201111561067657600080fd5b8035906020019184602083028401116401000000008311171561069857600080fd5b5090925090506124dc565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106e75781810151838201526020016106cf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561072657818101518382015260200161070e565b5050505090500194505050505060405180910390f35b61026d6004803603606081101561075257600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612569565b6107a06004803603604081101561078c57600080fd5b508035600290810b9160200135900b6126e0565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b6101bb6128d7565b6107e16128fb565b6040805160029290920b8252519081900360200190f35b6101bb61291f565b610808612943565b6040805162ffffff9092168252519081900360200190f35b61045e612967565b6108486004803603602081101561083e57600080fd5b503560020b61296d565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b610359600480360360208110156108c057600080fd5b50356001600160a01b03166129db565b7f0000000000000000000000009e9fbde7c7a83c43913bddc8779158f1368f041381565b6000806108ff612bf0565b85610936576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109ef576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a3a5780600001516001600160a01b0316866001600160a01b0316118015610a35575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a6c565b80600001516001600160a01b0316866001600160a01b0316108015610a6c57506401000276a36001600160a01b038716115b610aa3576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610ad25760048460a0015160ff16901c610ae5565b60108460a0015160ff1681610ae357fe5b065b60ff1681526004546001600160801b03166020820152604001610b06612c27565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b8257600254610b86565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bd55750886001600160a01b031681604001516001600160a01b031614155b15610f9f57610be261560e565b60408201516001600160a01b031681526060820151610c25906006907f00000000000000000000000000000000000000000000000000000000000000c88f612c2b565b15156040830152600290810b810b60208301819052620d89e719910b1215610c5657620d89e7196020820152610c75565b6020810151620d89e860029190910b1315610c7557620d89e860208201525b610c828160200151612d6d565b6001600160a01b031660608201526040820151610d13908d610cbc578b6001600160a01b031683606001516001600160a01b031611610cd6565b8b6001600160a01b031683606001516001600160a01b0316105b610ce4578260600151610ce6565b8b5b60c085015185517f000000000000000000000000000000000000000000000000000000000000271061309f565b60c085015260a084015260808301526001600160a01b031660408301528215610d7557610d498160c00151826080015101613291565b825103825260a0810151610d6b90610d6090613291565b6020840151906132a7565b6020830152610db0565b610d828160a00151613291565b825101825260c08101516080820151610daa91610d9f9101613291565b6020840151906132c3565b60208301525b835160ff1615610df6576000846000015160ff168260c0015181610dd057fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e3557610e298160c00151600160801b8460c001516001600160801b03166132d9565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f5e57806040015115610f35578360a00151610ebf57610e9d846040015160008760200151886040015188602001518a606001516008613389909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610f0b82602001518e610ed657600154610edc565b84608001515b8f610eeb578560800151610eef565b6002545b608089015160608a015160408b0151600595949392919061351c565b90508c15610f17576000035b610f258360c00151826135ef565b6001600160801b031660c0840152505b8b610f44578060200151610f4d565b60018160200151035b600290810b900b6060830152610f99565b80600001516001600160a01b031682604001516001600160a01b031614610f9957610f8c82604001516136a5565b600290810b900b60608301525b50610baf565b836020015160020b816060015160020b1461107a57600080610fed86604001518660400151886020015188602001518a606001518b6080015160086139d1909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b93909316929092029190911773ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116179055506110ac9050565b60408101516000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110f25760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561114257608081015160015560a08101516001600160801b03161561113d5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611188565b608081015160025560a08101516001600160801b0316156111885760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146111a157602081015181518b036111ae565b80600001518a0381602001515b90965094508a156112e75760008512156111f0576111f07f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28d87600003613b86565b60006111fa613cd4565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b5050505061129e613cd4565b6112a88289613e0d565b11156112e1576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b50611411565b600086121561131e5761131e7f0000000000000000000000009e9fbde7c7a83c43913bddc8779158f1368f04138d88600003613b86565b6000611328613e1d565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113ac57600080fd5b505af11580156113c0573d6000803e3d6000fd5b505050506113cc613e1d565b6113d68288613e0d565b111561140f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114e757600080fd5b015463ffffffff81169150640100000000810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff16611560576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611575612bf0565b60008054600160d81b900461ffff169061159160088385613eb5565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115fe576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff166116ad576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b0385166116cd57600080fd5b60008061171b60405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016117118a6001600160801b0316613f58565b600f0b9052613f69565b9250925050819350809250600080600086111561173d5761173a613cd4565b91505b841561174e5761174b613e1d565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117d057600080fd5b505af11580156117e4573d6000803e3d6000fd5b50505050600086111561183b576117f9613cd4565b6118038388613e0d565b111561183b576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561188b57611849613e1d565b6118538287613e0d565b111561188b576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff1661196c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611981612bf0565b6004546001600160801b0316806119c3576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119f8867f000000000000000000000000000000000000000000000000000000000000271062ffffff16620f42406141a9565b90506000611a2f867f000000000000000000000000000000000000000000000000000000000000271062ffffff16620f42406141a9565b90506000611a3b613cd4565b90506000611a47613e1d565b90508815611a7a57611a7a7f0000000000000000000000009e9fbde7c7a83c43913bddc8779158f1368f04138b8b613b86565b8715611aab57611aab7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28b8a613b86565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505050506000611b4f613cd4565b90506000611b5b613e1d565b905081611b688588613e0d565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611bab8487613e0d565b1115611be3576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c725760008054600160e81b9004600f16908115611c16578160ff168481611c1057fe5b04611c19565b60005b90506001600160801b03811615611c4c57600380546001600160801b038082168401166001600160801b03199091161790555b611c66818503600160801b8d6001600160801b03166132d9565b60018054909101905550505b8015611cfd5760008054600160e81b900460041c600f16908115611ca2578160ff168381611c9c57fe5b04611ca5565b60005b90506001600160801b03811615611cd757600380546001600160801b03600160801b8083048216850182160291161790555b611cf1818403600160801b8d6001600160801b03166132d9565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611dca576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611de460073389896141e3565b60038101549091506001600160801b0390811690861611611e055784611e14565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611e3c5783611e52565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611eb7576003810180546001600160801b031981166001600160801b03918216869003821617909155611eb7907f0000000000000000000000009e9fbde7c7a83c43913bddc8779158f1368f0413908a908616613b86565b6001600160801b03821615611f1d576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611f1d907f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2908a908516613b86565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f00000000000000000000000000000000000762d10ef955d55b7d038c7a7231cc81565b600054600160f01b900460ff16612054576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9841691638da5cb5b916004808301926020929190829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b50516001600160a01b0316331461210157600080fd5b60ff82161580612124575060048260ff16101580156121245750600a8260ff1611155b801561214e575060ff8116158061214e575060048160ff161015801561214e5750600a8160ff1611155b61215757600080fd5b60008054610ff0600484901b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff16612256576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9841691638da5cb5b916004808301926020929190829003018186803b1580156122c357600080fd5b505afa1580156122d7573d6000803e3d6000fd5b505050506040513d60208110156122ed57600080fd5b50516001600160a01b0316331461230357600080fd5b6003546001600160801b039081169085161161231f578361232c565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116123525782612366565b600354600160801b90046001600160801b03165b90506001600160801b038216156123e7576003546001600160801b038381169116141561239557600019909101905b600380546001600160801b031981166001600160801b039182168590038216179091556123e7907f0000000000000000000000009e9fbde7c7a83c43913bddc8779158f1368f04139087908516613b86565b6001600160801b0381161561246d576003546001600160801b03828116600160801b90920416141561241857600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561246d907f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29087908416613b86565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b6060806124e7612bf0565b61255e6124f2612c27565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614247565b915091509250929050565b600080548190600160f01b900460ff166125b0576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b918101919091528190819061260990606081016125fc6001600160801b038a16613f58565b600003600f0b9052613f69565b925092509250816000039450806000039350600085118061262a5750600084115b15612669576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b60008060006126ed612bf0565b6126f785856143a1565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b9367010000000000000082046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff168061275f57600080fd5b6003820154600681900b985067010000000000000081046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff16806127a457600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b1215905061284d575093909403965090039350900390506128d0565b8a60020b816020015160020b12156128c1576000612869612c27565b602083015160408401516004546060860151939450600093849361289f936008938893879392916001600160801b031690613389565b9a9003989098039b5050949096039290920396509091030392506128d0915050565b50949093039650039350900390505b9250925092565b7f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98481565b7f00000000000000000000000000000000000000000000000000000000000000c881565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b7f000000000000000000000000000000000000000000000000000000000000271081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b9067010000000000000081046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b031615612a1e576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612a29826136a5565b9050600080612a41612a39612c27565b60089061446a565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b73ffffffffffffffffffffffffffffffffffffffff19909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9091021761ffff60d81b1916600160d81b909602959095177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612b9957fe5b05029050600083600281900b620d89e881612bb057fe5b0502905060008460020b83830360020b81612bc757fe5b0560010190508062ffffff166001600160801b03801681612be457fe5b0493505050505b919050565b306001600160a01b037f0000000000000000000000001df4c6e36d61416813b42fe32724ef11e363eddc1614612c2557600080fd5b565b4290565b60008060008460020b8660020b81612c3f57fe5b05905060008660020b128015612c6657508460020b8660020b81612c5f57fe5b0760020b15155b15612c7057600019015b8315612ce557600080612c82836144b6565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612cc757888360ff16860302612cda565b88612cd1826144c8565b840360ff168603025b965050505050612d63565b600080612cf4836001016144b6565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612d4657888360ff0360ff16866001010102612d5c565b8883612d5183614568565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612d84578260020b612d8c565b8260020b6000035b9050620d89e8811115612dca576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612dde57600160801b612df0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612e24576ffff97272373d413259a46990580e213a0260801c5b6004821615612e43576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e62576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e81576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ea0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ebf576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612ede576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612efe576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f1e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f3e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f5e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f7e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612f9e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fbe576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fde576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612fff576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561301f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561303e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561305b576b048a170391f7dc42444e8fa20260801c5b60008460020b131561307657806000198161307257fe5b0490505b64010000000081061561308a57600161308d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131245760006130d88989620f42400362ffffff16620f42406132d9565b9050826130f1576130ec8c8c8c6001614652565b6130fe565b6130fe8b8d8c60016146cd565b955085811061310f578a965061311e565b61311b8c8b838661478a565b96505b5061316e565b8161313b576131368b8b8b60006146cd565b613148565b6131488a8c8b6000614652565b935083886000031061315c5789955061316e565b61316b8b8a8a600003856147d6565b95505b6001600160a01b038a81169087161482156131d15780801561318d5750815b6131a35761319e878d8c60016146cd565b6131a5565b855b95508080156131b2575081155b6131c8576131c3878d8c6000614652565b6131ca565b845b945061321b565b8080156131db5750815b6131f1576131ec8c888c6001614652565b6131f3565b855b9550808015613200575081155b613216576132118c888c60006146cd565b613218565b845b94505b8115801561322b57508860000385115b15613237578860000394505b81801561325657508a6001600160a01b0316876001600160a01b031614155b15613265578589039350613282565b61327f868962ffffff168a620f42400362ffffff166141a9565b93505b50505095509550955095915050565b6000600160ff1b82106132a357600080fd5b5090565b808203828113156000831215146132bd57600080fd5b92915050565b818101828112156000831215146132bd57600080fd5b600080806000198587098686029250828110908390030390508061330f576000841161330457600080fd5b508290049050613382565b80841161331b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613430576000898661ffff1661ffff81106133aa57fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a161461341c57613419818a8988614822565b90505b806020015181604001519250925050613510565b8688036000806134458c8c858c8c8c8c6148d2565b91509150816000015163ffffffff168363ffffffff161415613477578160200151826040015194509450505050613510565b805163ffffffff8481169116141561349f578060200151816040015194509450505050613510565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b816134cd57fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816134ff57fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561365457826001600160801b03168260000384039150816001600160801b03161061364f576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6132bd565b826001600160801b03168284019150816001600160801b031610156132bd576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b038316108015906136e1575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613716576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106137b757607f810383901c91506137c1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146139c257886001600160a01b03166139a682612d6d565b6001600160a01b031611156139bb57816139bd565b805b6139c4565b815b9998505050505050505050565b6000806000898961ffff1661ffff81106139e757fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff161515606083015290925089161415613a575788859250925050613510565b8461ffff168461ffff16118015613a7857506001850361ffff168961ffff16145b15613a8557839150613a89565b8491505b8161ffff168960010161ffff1681613a9d57fe5b069250613aac81898989614822565b8a8461ffff1661ffff8110613abd57fe5b825191018054602084015160408501516060909501511515600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16640100000000026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613c025780518252601f199092019160209182019101613be3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c64576040519150601f19603f3d011682016040523d82523d6000602084013e613c69565b606091505b5091509150818015613c97575080511580613c975750808060200190516020811015613c9457600080fd5b50515b613ccd576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f0000000000000000000000009e9fbde7c7a83c43913bddc8779158f1368f04131693919290918291908083835b60208310613d6d5780518252601f199092019160209182019101613d4e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613dcd576040519150601f19603f3d011682016040523d82523d6000602084013e613dd2565b606091505b5091509150818015613de657506020815110155b613def57600080fd5b808060200190516020811015613e0457600080fd5b50519250505090565b808201828110156132bd57600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216939192909182919080838360208310613d6d5780518252601f199092019160209182019101613d4e565b6000808361ffff1611613ef3576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613f09575081613382565b825b8261ffff168161ffff161015613f4f576001858261ffff1661ffff8110613f2e57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613f0b565b50909392505050565b80600f81900b8114612beb57600080fd5b6000806000613f76612bf0565b613f88846020015185604001516143a1565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c08501528851908901519489015192890151939461402c9491939092909190614acf565b93508460600151600f0b6000146141a157846020015160020b816020015160020b12156140815761407a6140638660200151612d6d565b6140708760400151612d6d565b8760600151614c84565b92506141a1565b846040015160020b816020015160020b12156141775760045460408201516001600160801b03909116906140d3906140b7612c27565b60208501516060860151608087015160089493929187916139d1565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614123919061411990612d6d565b8860600151614c84565b93506141416141358760200151612d6d565b83516060890151614cc8565b92506141518187606001516135ef565b600480546001600160801b0319166001600160801b0392909216919091179055506141a1565b61419e6141878660200151612d6d565b6141948760400151612d6d565b8760600151614cc8565b91505b509193909250565b60006141b68484846132d9565b9050600082806141c257fe5b84860911156133825760001981106141d957600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614287576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff8111801561429f57600080fd5b506040519080825280602002602001820160405280156142c9578160200160208202803683370190505b509150865167ffffffffffffffff811180156142e457600080fd5b5060405190808252806020026020018201604052801561430e578160200160208202803683370190505b50905060005b87518110156143945761433f8a8a8a848151811061432e57fe5b60200260200101518a8a8a8a613389565b84838151811061434b57fe5b6020026020010184848151811061435e57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614314565b5097509795505050505050565b8060020b8260020b126143e1576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614424576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614466576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116144d657600080fd5b600160801b82106144e957608091821c91015b68010000000000000000821061450157604091821c91015b640100000000821061451557602091821c91015b62010000821061452757601091821c91015b610100821061453857600891821c91015b6010821061454857600491821c91015b6004821061455857600291821c91015b60028210612beb57600101919050565b600080821161457657600080fd5b5060ff6001600160801b0382161561459157607f1901614599565b608082901c91505b67ffffffffffffffff8216156145b257603f19016145ba565b604082901c91505b63ffffffff8216156145cf57601f19016145d7565b602082901c91505b61ffff8216156145ea57600f19016145f2565b601082901c91505b60ff821615614604576007190161460c565b600882901c91505b600f82161561461e5760031901614626565b600482901c91505b60038216156146385760011901614640565b600282901c91505b6001821615612beb5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614672579293925b8161469f5761469a836001600160801b03168686036001600160a01b0316600160601b6132d9565b6146c2565b6146c2836001600160801b03168686036001600160a01b0316600160601b6141a9565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156146ed579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661472957600080fd5b8361475957866001600160a01b031661474c8383896001600160a01b03166132d9565b8161475357fe5b0461477f565b61477f6147708383896001600160a01b03166141a9565b886001600160a01b0316614cf7565b979650505050505050565b600080856001600160a01b0316116147a157600080fd5b6000846001600160801b0316116147b757600080fd5b816147c95761469a8585856001614d02565b6146c28585856001614de3565b600080856001600160a01b0316116147ed57600080fd5b6000846001600160801b03161161480357600080fd5b816148155761469a8585856000614de3565b6146c28585856000614d02565b61482a61564a565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161487e576001614880565b845b6001600160801b031673ffffffff00000000000000000000000000000000608085901b16816148ab57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6148da61564a565b6148e261564a565b888561ffff1661ffff81106148f357fe5b60408051608081018252919092015463ffffffff81168083526401000000008204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061495890899089614ed8565b15614990578663ffffffff16826000015163ffffffff16141561497a57613510565b8161498783898988614822565b91509150613510565b888361ffff168660010161ffff16816149a557fe5b0661ffff1661ffff81106149b557fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614a6c57604080516080810182528a5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614a7b88836000015189614ed8565b614ab2576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b614abf8989898887614f9b565b9150915097509795505050505050565b6000614ade60078787876141e3565b60015460025491925090600080600f87900b15614c24576000614aff612c27565b6000805460045492935090918291614b499160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b900416613389565b9092509050614b8360058d8b8d8b8b87898b60007f00000000000000000000000000000000000762d10ef955d55b7d038c7a7231cc61513b565b9450614bba60058c8b8d8b8b87898b60017f00000000000000000000000000000000000762d10ef955d55b7d038c7a7231cc61513b565b93508415614bee57614bee60068d7f00000000000000000000000000000000000000000000000000000000000000c8615325565b8315614c2057614c2060068c7f00000000000000000000000000000000000000000000000000000000000000c8615325565b5050505b600080614c3660058c8c8b8a8a61538b565b9092509050614c47878a8484615437565b600089600f0b1215614c75578315614c6457614c6460058c6155cc565b8215614c7557614c7560058b6155cc565b50505050505095945050505050565b60008082600f0b12614caa57614ca5614ca085858560016146cd565b613291565b6146c5565b614cbd614ca085858560000360006146cd565b600003949350505050565b60008082600f0b12614ce457614ca5614ca08585856001614652565b614cbd614ca08585856000036000614652565b808204910615150190565b60008115614d755760006001600160a01b03841115614d3857614d3384600160601b876001600160801b03166132d9565b614d50565b6001600160801b038516606085901b81614d4e57fe5b045b9050614d6d614d686001600160a01b03881683613e0d565b6155f8565b9150506146c5565b60006001600160a01b03841115614da357614d9e84600160601b876001600160801b03166141a9565b614dba565b614dba606085901b6001600160801b038716614cf7565b905080866001600160a01b031611614dd157600080fd5b6001600160a01b0386160390506146c5565b600082614df15750836146c5565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b168215614e91576001600160a01b03861684810290858281614e3157fe5b041415614e6257818101828110614e6057614e5683896001600160a01b0316836141a9565b93505050506146c5565b505b614e8882614e83878a6001600160a01b03168681614e7c57fe5b0490613e0d565b614cf7565b925050506146c5565b6001600160a01b03861684810290858281614ea857fe5b04148015614eb557508082115b614ebe57600080fd5b808203614e56614d68846001600160a01b038b16846141a9565b60008363ffffffff168363ffffffff1611158015614f0257508363ffffffff168263ffffffff1611155b15614f1e578163ffffffff168363ffffffff1611159050613382565b60008463ffffffff168463ffffffff1611614f46578363ffffffff1664010000000001614f4e565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614f7f578363ffffffff1664010000000001614f87565b8363ffffffff165b64ffffffffff169091111595945050505050565b614fa361564a565b614fab61564a565b60008361ffff168560010161ffff1681614fc157fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614fee57fe5b0661ffff8110614ffa57fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290955061506557806001019250614fd9565b898661ffff16826001018161507657fe5b0661ffff811061508257fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094506000906150ed908b908b614ed8565b905080801561510657506151068a8a8760000151614ed8565b15615111575061512e565b8061512157600182039250615128565b8160010193505b50614fd9565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b031682615166828d6135ef565b9050846001600160801b0316816001600160801b031611156151b4576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b03828116159082161581141594501561528a578c60020b8e60020b1361525a57600183018b9055600283018a90556003830180547fffffffffff0000000000000000000000000000000000000000ffffffffffffff166701000000000000006001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b038216178355856152d35782546152ce906152c990600160801b9004600f90810b810b908f900b6132c3565b613f58565b6152f4565b82546152f4906152c990600160801b9004600f90810b810b908f900b6132a7565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b8161533457fe5b0760020b1561534257600080fd5b60008061535d8360020b8560020b8161535757fe5b056144b6565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126153d1575050600182015460028301546153e4565b8360010154880391508360020154870390505b6000808b60020b8b60020b121561540657505060018301546002840154615419565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b6154d65781516001600160801b03166154ce576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b5080516154e5565b81516154e290866135ef565b90505b60006155098360200151860384600001516001600160801b0316600160801b6132d9565b9050600061552f8460400151860385600001516001600160801b0316600160801b6132d9565b905086600f0b6000146155565787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061558457506000816001600160801b0316115b156155c2576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612beb57600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea164736f6c6343000706000a03d17782c4cd36d05cdd223274e6f11f0bae006ace5dc893fe20d6aa29a4a3803903d1bb547bd6b5cbbea0f2fc3cc2aacbc58aabb8ba8656a4edcade9b7cff7bac7d03338a98e9989d7321d955cb2712ef2b05aef2828ed20e037a1ff05acd11b25d440337c09af6df0572cab700d07a6d4e17094409a90a622762065c74960eef6776ff0386de23cebd3b70eac96010c074dc8c528f7cb6c1925e0ef1d06a376f7bd3659a03c14777cc17916270deb514fee8cc463ff65551890a7c9816b5fe4338b703e6c00361066613e1f94d0d4345de64943b0be36fa2c8eeeef30209a965b84963ca8ff8031b54c9f810cd83202cee9ec361facb891cb4cfe6c08b6c1a77417e0852b03bd4033fb46b08ba86d1852f036d8c589578b66658493ecfc0a0784733a2ac2c610b1f037faa4d4eb9f99114a31dad6303c681191f6c2f22156e3d6d62ed421777380e97037d9f1fe27819233f385f571cb1b7f0df12930c9e9116143d509fb1911768c68b00581f02cb626d87046d8f6ee8ce20a08a646569bc433816e3507aa4385bbed101ae4e37e392663b4284210f7cbc6e8fab00581f02ecd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563581f010000010001000000441d0000000000000002642f000ae0305c97f5ccc3480219202000582003045a568ef3306cfd478deedd5ad151bbd143fdaf9abd51ca5c9bc2910cbcd05820ffffffffffffffffffffffffffffffffffabc8aaaa7faa5075e689c651ee00a9005820035fdd5b26e05594ab7f4573059734bc150752e47a50ac3c87b293ff60884b605004622dfafcdc2afb0d7aba966d2fca53005820039b80675edea1c97981c9ebe0973eb1fad5c785805af8052c3296461b55c4d0502cab60911e85c3d6b0eb5e9d0a1f2cd600582003e0745acaf73ddb5cc0b50544b65d05b21296b9f949a5c57f6839ee35cc7c105016a1f203601b8f04f1af74efd612172200582003f394fd8f898c934a91ee099b20c4220642002a802449a005ec6ecd04e1bae04f100157e1f8f82dd92e4f9c64dbe93803273cbc88dd8f6fef719fdcecb81a354c550cdd80fa750b74a202e9dc195346ad005820038ba7a39de05855ed18b20804f6c109c88c4654881536f73b8780815e9680f04fb3b56ab5d750c9877845ce6de3e93c0219766103a2588a2798a643741f7229005c93d8d7e0378887d7e019180f0671fb7b0daa3603efc27a949a5d727ccc7b4c152371d523f333c3e3c6ec41315b359729b8e77c30037b8984fe467633cc7930279b4952931018aeeb2c03335ef388287ad63b67c1ab039651e9a084d45fe30e8cfe4828a82b675176a58c84ae923e4907b00dc6302528039a2f98d9985f887de8fcafe355f0cb4e8c4737c6ab82be4d61e4fbebed3bc74d032917e09a215b532e77e7f11460834bb236c003d85da1d389208718ce58e81e750219ffff03112c019ac03a479740d3190de2e5786bab7fe86d3a87ec7f0cbb7bfdb37386f303e5d3f5040a637aa060111977bbbb22b1cf0c6c051dc4c99d0f56fae02ea3d98400582003fb44e3814ad2f97c355d30510921889d3b51c59bb2c833fe3f1b8834c989a05001e56d003d951e9f4eec6cefcd2c567800582003787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace050687e96f3eda637b1b9355b3d8a3de8e00058200350e533c0869bb8b21a47620a45b5269e041d538307ced18c6907c4112797605005cba62c28a4c1f716c9e25c1654b42a0058200324de1ff205b1e2e88f2a8b50d7d4b26235466bd23a5e71ea522f6579d988905820fffffffffffffffffffffffffffffffffdd0da2dad5a4673eb52547fb9791f12005820033714666fd6ff655a0ecd1548849423e04708014489371bf1d236d94bf6d3004805cd2318edbd14eb00582003434c8f71a411e0406d20ca91402a2f8017a7d300541032b08acf5de524e4e050021fd8d596112d85211cdc49a52addc20058200302d66bd6c59e40f948d57f037f489a5c9593dc8d50d50335be0622b98720805003005e435cce05767f425575c6c2fa8500582003f6a3a292d84b9b790282e53631d17b65405330585aaaf9ec67ad69f3d90f304f681354b920daf8d920149a09a86d0602199ce303a3e2828797e362aecae7f10515a1b12872e9f9e6f3ad68efb08fa9cdbe49461e030e1ac2a40e1773010a5b1dff658b6d0944134c347159a4f0feacd1dc1d46aba603ba036f38146114b9a61e7ab4f3c9a5118109e5045675f3e8fa1c1d68cb015462037fe35171803c405a480f91c7d2d986657c43f5c08467b049b78e378172b7b193030cccba7b57f509c3cb416c1afcae972b474f0da620aa5110725ad4d1ac4ececf03023508b931c7981574fefc7a77e14f29efb8c2fcb0c3816e53eb8f76c5e6291103a1e5e82f80fcaed0cb0ab828114df618fc6f0d62442f9b845935841646c1dc1d035196e7799facc0c78e231475f707c75dfc9b0e1141d7394d438ad30a31ffd98e036b8b867f824c816767e95b09f2a54763af3b807f387530e950806bf7552145b00303db908b36e289ae7b6f0873c7b0191a56a87668a9242ab2f6d12b2d137bcb3f034b47319eda20016069524f90ec904f3f97a4af2102a329d1769bbc8fdc19007b030822662fd4036dc70dfe7695626dbbd73dcbfe2007579afc6884849d3f6a4c7b0359d60a4ebbcf1f1b9aec2693e4208f9c2b9658f7ce07127d8043bc3ab6a547b603f619032baeb8f496342bd6b9eebb4e5a915de1a8e348f629a36c91bf8db0333c036b4d14477a4f27b352754db65610e600f9c0b4c0b71e3d9d793c238795731c370219ffff031bd47238d8bddcf384ad8566ec0d6b0d74b3450592c2a0982a974456a1e8a0f603f55a996c733d89c68ab21720e0e8180edc292b3d0c65c86357e81f64d2d7ddd803d2d47f1512a8f2d838b3d259e12b64d1ba99450d512642991440182c05aabc64037dcc6ca7e612eae155d5501a9f8d2f07c50f226d93b5ccb49eb0ab1cb3a35e160397fc2f4af53cb44f081df2f58de1ac7bdbf4c68b100dc1c9c2e4715b88cd2990030719f2233b134ea32f14094f33d137a8cdfb281384586ed7b28c128c4d6c4b9f03bca80a83dc94e4b907bc490772c462c6d62ff7c8bb3e6b1d42bc754495d2b16403496d83088e932f9f91cda9726e6a5f2e299bf8dc773a35b1603d948c9c5189850326a9ce54fc6c699cb12bec15ea9211e3206fd0a819cf5dc59f505f4353791896033fc4ad7d6497abfbf2ea5fbeae7c34f202ef965582c361ab8716eb9cd7eb6ad80320adaef509459786c17d48fcbaba1f2dce59d3dc9a229225b131db24a9b55d6303d8073b72e0142845326fec7ff529d7caa30389a009e093c4d9d5a5a81fd38b78033f2d7f373352561557d592b1ff25be725a740e079b79d8d8f723a8fb9f83687a031ab5d62d0d4b544adc462aa3d1e8f954d307cb7fc01147f0a2c5e56a6ce0b1b500582003fd805f52096804894e5a07e68210bceeab84539df9acc559aa8373666a25e04f726038fcdd9f9e0ef4408cd3310bdc005820035acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b049aab081aa14a00c686a005820039f5f0aa038d5e8d2a5704c0956593eb3f091c784484a4231b0fe5dd11cc9d05009c27cb3c2f65b10014179fae2db407c00582003e0fcf3cb208b9648f2f8742498b435f3f4cebca69579418d6ae60deaa7f8f05820fffffffffffffffffffffffffffffffffd2c8cb564e4737c9f1dbef942bed4ed0058200324cf913afe092ac0156af50cf4910626db47dc326445733a6776ff81dbe4305820ffffffffffffffffffffffffffffffffffb9659f3c63cc526d27961af312db0c00582003ddad8ca21662bbaf4b9eea3b3c567b39d6a9843ffe60ca8f5c4d27976042a05820fffffffffffffffffffffffffffffffff87f57bc2a0d4ae30fcfc078ecfbff5800582003a35ec2c8f1db4c0403b1102bd8d17267c562b1524f4ccc233a24959eb92a7050046d115139f7a497c793dcac8c6e8c72021924ee03fd84f52b565e0a75c6a32cff6479409a53b94c534a5c7d4570aa66b813566e9603cc4e859bb275929c9b83792e421a885df29b844f9b4c15d73055485d24a6d68d03c3daa779b945c1d000f5a925e3f09a1f115970cc2b6207b7c5758351382c1f60034f6fc5a0b4648cb2f725e4173c9508c41461f5e57d7e4f7cf8642dbd1474ccb10331c2111911e565873a4caaf841a5d9d3018a598b42e21736ef834a42c25f5abc0219ffff03cf06a6af59aac9ba0400b7c54caef60b3190ed01f63f190576e7f6788ad9976403f935fcdc07af3f5d0e74dc89f7dbfee7bb0b30155395dc3da8c7e992d3b8b079037f7010cfc513aeaaa019f6ac35f1e4390536ed6555caf3edbe7b7083e7870e5703f78e594a9e6c6a5c9cc4c450151e7081a898fc9324027b691ea5c5e06f6dcc0103e72db0dc7229be30cbc045f1fa7a2e1ddf45df55df4a7cbbbd9edcda63657af3038495915d832495e8b0423b8d2d88145f5d715105aee06e60aab1b9ef34ac7bf403fae3b6b0d6e1afb318939237aa7d38555b9bb126bbe89ad2878fbbbe91d92db0005820039b48f25d6245f73a6d02c822f16a3b341b9ee27473e32010a6ab0b428d4de048ab214e0f14da828b00582003198ec01d37a5c120bd4fe5160209d9a3fde2c9346fc768866de6f8715cbe105820fffffffffffffffffffffffffffffffff7bbe8d081ace812456729549b18106c030d10d363b46ce6ee11991d012aac6fa446e899f0f752ba93f7d76d084140570a00582003a0f4808f7f0c52440675894727c9e66265266cd1e1f5015f8b745ca2de5f30581c4000801081042502a1f7f99f57fefffbffefdfd73c80441912002a00005820030410f131d8cddc28b24725376dab161b7915d4683b8e007ea2b615f9850ab050020bad51054d791edbfb0f299cf327740219906403cdf49b5d76105b920232c5f6818018d2560318b3bd72b2e3a38ffddd231d31db005820036668a7514ff38d59f59871e4b6fc175cba51a1f1828673e9e8eb9aaf3e98b04f1a417dbc3160ad6995ebccc0eafbb700582003271299ab0ee12c543b81dbd4b4a3a97053fed5361578e4b11f8a19493bc9505820ffffffffffffffffffffffffffffffffddc99551dcbea3e4fcb0e86e5f1b68b803187d867583a70f83f6688bda2c62c139372760fc02d814dc8e84cceea9a8575e00582003778d56331fe985ae74ac425470f1ff1e13fa167a12a9fc4b0fa065ff2ae6605011757dba76046a475379d62c3def4d11005820035351d8672387b37d86550fdfc0070a44a82d0b6515e3e6fbe4e310bdbe37b04f047406d9e371eba09c51786d4a22cd00582003bc9dcfc21b7bdd18f4eaa4700547a41911ad8607abc59ac8a2935e9ee3ef40500b2e68606443fff717db43d196e13d1c005820030fab288735963648f7a27a02d18ffe056a8396518819d2520bf75923272cb04e48458fe5302ca815e9b7dead40f500581f028e06f13e7919f19acf2a388bbba12c34c25c3edb38325e8c24be4ba318a05006f80e36ca6a5280038bf2e001ebac1e00581f02a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3582001000001b000000000000020406a780e664d939858000003b2fd004065cf60270218c00219ccc5032ad796c18ef05ebb09657ff58fd63a4c451a7c3738f81ccb74cb89777a010dc103948d17c4cbfb5da1876891aa354068d2b2c08803719112bfb8163af00314a7f803413c6b4ce2b493b2250be11e00e7e71807d9b9be73cdd5207ec50634f4eb5991036dafe2c70d779072cc0727d2559c2d7e8b4ea11d52c6e938811e3530d2f7dd9a032e887a24ceca763b439e0ad3e3d6fd2e4b3660acb9e767582369450dfb2ae7f903b0dc4fc9641c999040d29cab56f176b2bcbff1ffe4e486c1518d2722f5198a2e033e6ca7e7cd045ed42b561775aebdcf4267e70991ade486514379a7b7840df7350372c145bebab08c9d89fa49b563aaf715acf9dc0d9e341c1cadf281ad0e22eb62038a6424a48cd52e972e39c994a54d493a69b93a8f7b9d276168d9e521d2f85a58035fe7fd0775b8f8b2f17239e86670fdb0f55714a3f0d7a5b69c123c6df38ca001035d9b3e20327c516ec9381d93ead23870134a1f421f694c991d1f2ce955a7c7df03923193e139a98d3ca0b7997e2777cfe77d67b1d7c6c224e7e912d94dac5155520219ffff0219ffff05581e03c63a2b39d3291db69424bed53d4edb18e94c1ba6115e52cfe72b31f2d0070119567e031b460c826a854d61dca82f718e088b8b4c4082ffeb93752d7691bc62c51dc0280605581e039eb67ea0b38e576078f35745444edb6b6e3e019574e1d2e56b0390fa5007011bffffffffffffffff031d93f60f105899172f7255c030301c3af4564edd4a48577dbdc448aec7ddb0ac0605581e03ccc849355732a0e83ed860e8e920243a9d3ae3e7cdca85673da010c20007011bffffffffffffffff03f2bf302610e990e0039b8b855a5f692932a2a20c6651cc866a1daee56ccbd57d031b460c826a854d61dca82f718e088b8b4c4082ffeb93752d7691bc62c51dc0280605581e037bc189fdf2ef1af5046626b500dce9595590ead4c1076f50d33880adc007011bffffffffffffffff05581e03bf7c22281b5791656fa5dbdc49952c0913dfb009497ad9512ebf4ca2c00c1841471e8e6c4337658d05581e03073bc5ec910e0655b4f432c018ac43cab6cdad628de03eff36f961cde0040102198ec703fe71f6f923c7be6dae9f9d758b69d418ffa1b1377dad2c97ed67c30cd585560c03794ae0c876dacd580e09bb89fdfff9d6d2c2568a3ba3c3d3af6a7e6368c2a3b503a46f94d8422db47f7ba34ade932ea9183ac91f09da501eb965f977b49247146b031c2eeb76b3262bbb0da3cf65cbe9ad22629bb1e32d3f43c6a825300a9155d0e403fcf6008b49a07304e20f4c40d5b0053b8f55a5a113755484fdb8ca5503de8c4a03d6328c614b778654039fa290b4a639307affee8cee4febaccf402920238e2ddd03a481c6eed67d93cc9ba1f3d5047150ea1fd5607fa5473e5eea507d297d3d014a0219ffff03977dc21575479ec24f0498941309561b4211e2548ca4fd6f9ef4864c4f2b99d9033536226bcdb1ef0b4af07084d7b56dfd5e9446fdafbaec7f9869b0674bc0f12a030f18d7c6021382a8d5680fec483b86ee0a1a52444b0c1c00d38f3a8e3fa8b5ee03da1b86ac746e92a6630199116a1482362feb638dbecde99d0ed9b347a3056455031e48c3afbbc5fd1bbfed53563580122c757d9575008fe5efcc4180dfd23c2d2d03b306993e2937c87061b1657d0450ebb66563558e52364b60ffc57593bc48f1f803b8235ff301f6d2dd225fd7019d99d8c71cba1ca725fcfb2b0dc1c5b87c13deec03a28e060988ec47791d2867be167b6f1b69cd5e9d36e073a97a137aa70f0be52503cab803cb75245ba30dce44660d29e707dbdd2009fd313a205358acec342339790396e8ab3c4a77e852f1a070e88de49b736105f02654fb4cc929b76bf11a5d5e670394b182ac301057c49d7dbd072513443ce8ad770ffc4da0a2e67bf1178056d81b0219ffff031dc4ad382a0820474944ecfa57c09d28959aff2c9fe5c6a5b49ebee6f0f1efc7037a67147e1c00ed66c4d1559bae7f02b52f17c7bf41c3c60dbdb1bcb2d39ee5c003d76cad2198d33449990f7477a7492b420bba303bbd871d8e0d4dd5bbea364b7c031c3f9bf2b1cdf9be6124abc2bb1269c25142149dab3ec6b0e9a5897fd67ecac503a0c63d0b3dac49820d4c32d10871dff681d650916d63b5e635c8cec332fb0bd703d25d4ecbe9bc37338b68d39b42418132b99fd3b75c152aa1028861c556c616f90360507ccea9f4d3d41db19c6735cf671dcb95e9bd06babf4937a73f06f9b5b82f038630b0eb1ebb36bbea2cc4342975e087412f7a1b0ecc2abdd8667b93d7d5e33703c734819e0b99baa3e1a0cc561c3a712fd5998956e669869eb84747da9af1cfa70371af6fbb0dc265ebb2c426a93ce71083623d58f72bb01677dc5f3c090f58a1d90219ffff0311685a7370180524cb1df19157a555234792aa4cd7f8640a96bae6ca1ab6070d032bf840fa28d97c3d2c11f351334dd3b1d1e006e27098513cc82df0e95e8162e503f795215251d3961912625390ef0931881a93b79ef83dd76ac120dfb570c7e3b803c7c5553ffb7def0babee9bd6e908ef8a5b0bdec17323c5170cd151ffc208476303b6a88dd2e04093960b267fc15ec2bc7c7098949ebfc5e89aa3379f9e653674c803cfa7e4e5628410de9ded9a94a3bfc0efa92364a66c45364346572ad17e76c14c031224eabf1041a6876d5b159d7bb859849b147e7ce2df27c3cb2b556007f54cfa0219ffff03364b6559c7690ea7a691588295f4f746a03791a95d929abf056a905e62cba94b031767f87c1747bc72bf20749d1630b4d8a6a3f3ec2c5efb0397c8d2b1882f2b9f033640ec5bfd1d31b099f28bf24ee00207681696bb5b5f1686c38d6f51d9c60f2103833873354ef23e5031de39206fd93c894f41e492be5abdc5b50d875b146f94be0368eeeb37450f0ab1647ea98248e195454722ad72924ae1702b76c2e665488e7c034b2504d65afe59cf239935f20ff0cc4d21238e98d56ed8e62ecb23bd9a98d82703b099bb79c2d8139ba62553f8d15b9b91d82dcf44cb9eb0463b1834154ac7cd91039333459f6ef0e57274cb85160033e40afe10fe12e0debeb996e2f2152c755a3e03a54acdca2baf6d193f4d2cdf0e3b1dec7481b7cae3827400d569fab81b236902032dfa9d212b30d11c5f0fe283ea6bb1f96a6ff17c8285094579b3dafc73c19d9303a6e20dad8ee3ac1e603fd82adf0ddf1cb46543a3abcd4e15d9d1b3bb60fd694503579461dc80c5bdd7be4240d7bec05a9118bb71ebdb48b65f41ce800aac27c95503d380579902d6b06bd5a41c9b54bf02048fa108f947d33ac139920c967ec1f0a003a788fdd42968f19b864304838a0be2392a57e18797fbf53a45e51cd417cbe50403b1c82d8c79fd1fae374f7a0253bbce1e08781d1e052f6e1b5258a6999b78e48703ae6e8ae8f84895ecf8923ba1e17a11ede67a0d32c197559b84ce80da1287696903e12082db6e1d9cf3b96e752ea4d505d02338da98d4f410d0cf582fc1f5804d41032002b0b0c2875cbde643ca757693fbaab3824fbd77be1d06e30422b55d031fd103043d0abceb8917e06bac76c366bd55330b2ea4702a9b7f11a73a14d93f2002bb03f797e1b101c4362da9a1b995a34bb4025a1c01bbe55811ed72f9bff2b4c7b4e203f8a3867cf1a6407d98075813b8b6504529dedc2bb0de505153c63f8b302199480316dcc2557c0182f5e5404e880e6c992fa4507896661fa7c541b5ba5b39dd795603de80770a5f69882a420b750e8b8f1ee042d1a71592173a1652bea7327f5d4f2a03d0a0fa4fea3a3b3c5c75aa7850bd3ed496680c327cb1db823d80bd0e42759df50328a148496cccaa374b36e98e88fb5c43e7c0b9ee5b0c7ab5bf6513352ea369e003ebc919b2b16e61d5022bc8502cc057fdf904d86d1312e6ac7dea952855d2c28103c612830f92e60b444d863bf182dba243d9061a2e374ddeba6b967b2cde1ae64d05581e0354746d6a091df4f940a2b869ce99873412140bf1ab5f16dae3b9a5f8900c0247016d70140db4f005581e03d7b4a7cba46d7b5224a93107596bb581653437eef3ef3d56a3c63231100c18394705216b6d7811ee05581e03ef25d3ec4c58ee05f86e4a201af1c17b5872aa69753b5d8fd07e499cd00c01471fd0bb9557655005581e039c5fe0cea5a718c6ac75f30d923843dbbdc140b5f06b6b36de9eaf2410040105581e032569341a494cb9aed9e2db5ce56a022162d0bf4206eef5336c9868ef200c19212a4826d09457b5a35a1305581e03cabe03eed53acf52ce1dc5ba8dfb1cd4fd167db22130bb4e40260f8b300402037cd4f0e9b8cf24b193c82a5b57e2d4b6dc215ba7e1a9a99c02dc35322045360c05581e035d63d992a0085927b0496407f5229bddb79b8dbd20d5fa6df29284b620040405581e03fe3a78cc7ae3c777f68a7c7dd74df344c5fc4952438796029602f33460040105581e0302c3738e36db439ba782af9948ed23f65d580ea8a7f27b424be874c4a0040103476ce0e26df74c8ebad1ab70192f5370e100e91d4e7f6416d50fadd12210723f05581e03f4cf097ad987ae738f3fd87a06b8b7de34b60cca553357313fc8a340700c03466cfe6d0f398d02197b7d039df44fa133f95e83bf4a90bc231aa2384cc41e6b1ff26ff6176e1097d9fd263b0345a5164166d7ca748add83d08a1a4a275e2056c3bef82d07a477ec061d1e040903bad73c92171efac5a520e4b51d7f012bfca64170d6437a3b7472dc63c5ecdee903ecb7f681173349607dfc4f08cce57a4d78cd9f2132ad791a6632ffd4d0efbda60357c7b3e63e9311d7d564e98ba06f83c8d9e9a3764fcc66d30ac569f53bb125bb0336549a7d84b0cca3ea5fe0b786ec3f3cfdc31fe165c9b0640d506caceff3ddda039205c02f90636159c69417e236e213d720a9b993773601fc942a8c8b475a01a8034572550d3f6d1de6860cfd6f02b053c38265704f31bf0566a2467026dcfd8d8c03fb1feec02a7335d3d61800d5532c0fe16ac80d50313a572e32162c78b05acbe00318738d58dff4671d2513a6302d83e20e10cdaf9809261294471b6152b3af023703a3bb603b0685f06e5cd93241339ea86446a92f12019e9949849f1e1928e268f90314f965c748ddfe77998987b77d51593ad96f1cdb6efad907f6a87f1d6f6a1eac03b9ddf8d13b6701c3a0867cae25e04379e96abc55b46e8ad785d5183fe20c20ae0219ffff037be1a9fb687073d612cbe33712871c72def307b689961c7c9bedf18304513a8003ee2b78cb8249a0d4d3055d50fd4eda167eacf9b722628851275e4a61a9efab1b0379db70d0e387d4338503a930c2f3efab6abfe7b1361c3b3504cc4eaf51cbf7610343d34c8c4c4be5723ccd42f61aa9e21339e1d27d0d6c2f76f99394e6a0de72320219ffff038e4f84f6195cc1938876df332e852970ea245127c2e363336da5f9b6a7221f5f0338a6da18e54a7c8cbd7f28dc1e96e6f0e705d0f009eafee982702834c9a3672803e18e5a68ff8c052e14b65ff4cdfc70febafc37246d52c47ea0775b211bc1ac4303a7e8d3c1a03b8b4878b6561de6719acaf9059e0359a7790dce2205d2caa3c83403e37545af314b26ebc1749eefbaa44d553dc183a83c712a06f914e6a0e0a0338e03d2296853913d9824987ebd935db84ce8f41f9ef8b1a78ce7daebafb0a79e296c033a225fa4377ad3d9fb72a61ba1f8c2efd4a2b7d82d469eccdd921047d9dff4030219ffff039777e7d98e1a15a70eb2a1b3c9ee58157c2fdf6e7f009bed4560ca8b11999d8603ab405f879c7e8c28154307d99dc11211264511d6d8c499452fbf477531e4c6de0352325782268b2e879f0ebfb29978df9d64e9f2fee1c3858beed953dee806b666031376ed85e106a7585758f2a7b8f1fc57a6250d8cc05c2b9df7ead9edd2f5b9fb03153dd4a6cb1d67f24e7dae95baa2cd1bf832304b43f7e003647ff365231ee0cc031281da51c1347c69f936229528efb15b1e3f386af7dca5a622d6034917d2543103226bf9a5ff46025a636a99ec1c07c68b3c4ea6e982c2d64fad53197588662486038c420da56d0edf7a84d928d828379e77a9a61d5c9aa22a5fcf9685a82c2bc717037bc4349b8fe5674c2f77ab8cf787da1b544af7dad7c7100a75e2fcacb4d8b0ab03e1a91d6327a510c419bb9eb480a7603f051ff356dcc7370e0700150056d2226f03d402e585d9d671310e9b66c5327f9fcb63c342ae4a5d104c175c933c2f4aa02003fc3922b7dfa2b5a649b771c922df839df68a712bee8806cfefbd14f5952bc358033d2ac8255991c176e9b0aab3c83507a3ecaf083c2e46f26ed04ed98b19787423033e3284ce8ce1108f7cf14b8cee7e235c514b1981dbe6171546585ec7a67d3873034d967638893a1a112568f517f41f15df732a81e1a27815b3c96345c1339240c803b91a1e9482cdca8caff7708ea722ac02cc69675d7cd91e7bd9759f6865a511df05581e035e10ff5e818b9387c9db668b17580ebad2ce2ae40b04a6fa2b318e8e60040105581e0362738fb5147d892c08b0d65b02ff8c3bf028b09c157d98fc6d1a31dff004010328635b9b2ad0413203f351ce87de544b80858f67181e10f894b7eee66f296b71031d93f60f105899172f7255c030301c3af4564edd4a48577dbdc448aec7ddb0ac0605581e03acbb55262039bdb50143383dc5c2c9018815bccf85e42c859557fdd46007011bffffffffffffffff05581e034ed7e7b9290e2366a749c2a65fef417dca73889ce344f53f504a74e5900c01421400036215a63275c53615160db0395ca2e5919c1739a4f0d57e7e64ab3a3dd741b58b05581e03895c3319e9c6c03ae3146c40240ffd65ba105d40f09d1da211efc46e50040205581e036b55ecd060a1b87fff27d57ab897e969059e096cc1a69ffe500d58d260040305581d02fff4f457f33dec751c06c3bad17bd28bbeb00499198355f345d4203c0849152de40539242f9e7e0338ac76c6b894b21842674517d8e9f72ab3926490a188f091e2a96084cd5dac4103bfa6f85242f2d9dd359c732732b53a9b0a9dd82bae0397b59b4120453134ada905581d022ec333acf02cbcdf3d719776a20a66883537123429184eb29f685fbc07011bffffffffffffffff02183005581e031c8ac17bd18c0ac59cd803c7bf2e9819307235169f2503ade3dda4e1c00c01471dde3a765ec20002197f92036ffc24be38d4a7cddefe7b00c6adbc83d818f5125ffc2fb697dda7b7564ff04e03cb50aa8845608636596143b3f6bd78dc603064fa95bcd36aca250673a0ab3373036a4d3d4739cfccd1f95405a2928a565bade9f964f642f4ae051949d6dcf89f6403ad15af9ef2228169ed5e56c37b50ad96b49e845177f5b4d010ff9173807f401103b1815d03175990d53d3bb54a390645a08545ce2ac83213327ff2e7843b49748e0365f047ded3ce3c5e811a51d708037aa9d7ff214ee714898d79664f23e8e67a6b036288f1e2b8c4edc28a00562e8596d9fd8a501d0001cad5303b370470db47f832036ae5ca5112cae34e8eb7dadd64bdd02a6dfd5b3e570618d78ab898552e98413b039c67d015188a13ab81cbc92ef694739f697a78d45e2942186e8726682b876a050316023d1bde4ef10f10d04cb3ab15510446dfc94ffea24f8261fd26513aa7727c035e829f145141b06124f4f46462ccabc8a9fdb1f7855e3a1e346bdfb08f87679503ccfac1f8355676751ff85cbe6ae1703fc2ca4cfcc33a80e466182dd55c3bc01d035327d9a3b8eb6cfdbe26a4c2c78597488139a5386b440be951bb636dfa93d74303c25cfdad9b35441134741eb8aba198ede579324c14da9b8432c30ea9f75caf1903ebdca6964c9d382504be3f2d4aa27104c26dee5f09dbd6fe9e857d62a11b670e0219ffff03b538060ce209273b322661ec5ca2e0b3ceca19678486272438189716899c4ffa03f2ba31e6d6fc83904c4039060bfad864e5034e2729c9c032e37b10e116ef21d9039b756b32a4ff2de285080994c8ce20ef4f8b422fe53686999b9638e42b071fd903c2517c71395213d9757444b81f62f9d648fee471315625a7b71087030fb606940386e87a2ca1342c617712768367f896e17a7dc1f46a66a3028467d6cb0367307803c027d634174a616d51f531d7120d77307ff15d8dfb3858ba6f1c124d06cecc350219ffff0304974c24f184cc3ac6b5c213ae5f2b4e920cb1afbbeb8d56a46505b9ff044ef70330ae87fcd4abd16cbc379495e479111a156c46abb3e53fb973d08fd82088f37203e494c982b7ccae6500cca80e6f09d4f96a5c714baf8e838ff251c099f09fb4fb037cba6bd53998591ad52a21d1bb7219878ad777e6eb2376c357548acb62d0b412039df6eb33d7b1ddd3ecd6a64b6007b5c906f4c6fcef21f6285365b47ace73fe95035a1963c24fcb5a6bc49c50c7743aec2cf59bbf129963040b6f5d3203d00929b3034cfa5eedfac55af9ac406824e5cc6846b0dcb9b62d93336a54c2f6e2bbcf74c003931de92f69c5ed20cba72e577cab4485ae3279432221110236182e4881662d7b03de9256ae3deda6eca5a956c62ec0cde32baf832b3d3622c68568dfe9f361e54803809399dc7754323ad003dab6d6e9c64683de650ace53e5e1c25479e386db6bd703788ad1f6248924a8a45ce462d7507254bcccd3776c96f9ab4d76b34c0294e372030295e531f41304acba79464ae6360ffe5f9af4ac502728c9f0f4fb8e535bb5cf03b8ff8dc28758b91e4df6c0f4b698a090d085ba8f692f4a901a52be54a5ee8d9b03cd062f1e61d91a810f358d89f6f5451e22252f9d9725c8876a33e5ee6dd635c80219ffff03396ac8dfd43ca5d01413bc6f8df65025133f0c01dbd7a0d8a704e089d3a0d2c303e23134108131d7cb0f65f56ab836262fab3c87b6e7cb2d438985093fb9b1aed80219ffff03179d8b1563fa8a5680d0b6c97e173fccb267e66dbc63188f30b42f60d81d02bb035ecb9a9cd095d029e5005fc4c0eea8864c2877668942633a372947380d493255033fa36fc5639c13f1dc4a7a16fb09fd92db8fc4db3f457a2a473a4dbc4735e0de037a5d9023ac6e87ebdad673236f3566589d793577e789b042da2ed5cf83b6581203d20c2d9b5b87923d7fdcf6e244a679a7379272bdab59f43cd173538102253d3a033db8efc8c221fe1f24bca291900adef5d9b32346261bfa1769eea16da75d28b0032640b075d2b6c362828fbf9559d61151e84d2e05dde525cba9cdc7f9aede24ba030011f9dd04d04658217da6f1caf48df20559f5e0b64978a309bd66c62fd258f303ab3ad083e63a3a4af637e0b2f300120071339a46a093fb2af292338e0fccedc003a87f12207f8030b45d1c78b17d2d9a449ee2cc54d1189794ac8797ebdce8a2b50337d5f260ca675994a7f39492b6a62c9ee685e2c7c2dee1f326657bed34d039e2032ad03a5db7b1aa15164a1044c75059f51d79f8b83b7a591e9a8e604e9257d6ff037b952ad125c30efeb0990ec3e9bc65ae6f0eb422490d45d5fc4092d36a967ded03ee5641774d1aa19c0945643c8e828c1063c658cb214e71bdb0d5336d65774d13032fc920942582fe8200b5228d4968f835799c5824659abb316bbb9ea91a066cc003609bfd3984a82f25c2f4faac561f101a4a46ba4b8500e1b5f280c5c2281abc55035fbb8896e284b6215e15e66d7e8ad6d54f4210a7deb2a8a8ac62be969cb017570321b42fc3e00d3c6a7829e0bf6b7016347ee78ec9d7369f7049d4f1d8251c06810303b303ec83ef8a1cbb53c3f9f74c73fbf62405b70a9149b01cb15ecf6a9045f1038509ff8dac14e41b233e39fc3c0736657e20183c42f7744891c06abd8f0652190372276fe284394b92af71a521c89d95949582153046e0be2717fe63d1b27bb8f903be0091b83cce2b6d8d0bc358025ca6a0e07f426205e662490786da5a95ec32cc03d93234ed3a82b09d3cbafa02562b56faa216e786701ebcc09cbdf959bd8a467403b54f1b4131fc4f441424069d2e0cca3321755b5ad1faea1eec21f277541f3ab2034a5d87d6c9ffe713516b77770d4073b02ad7f206f5c426ff93fc9690c54968e603c70a8010104e670988536f7e591355ee3bbb074cd33e5edef03c2c59fd353bdc039580312c4e71785e78736943d44242b373ecacb33ee03677dfeb1bc4fd63006903dee5e17a9d94b4adec65d4c445f8603acfbd99ad4aa9ae8eddfc86144abe979203c484df6afe59c7ea1d3377964d84f771355b1d3301472a1b97044d479f620fb005581e03bd37fd152ca264eb62ca42c9762fe745c21220c74b28a045255cf6d5b00c014709faa779c79000045955b760806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f89888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b1565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614381915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8484614608565b90505b92915050565b60008060006113ca7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f89888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b6000806118fa7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8d7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f89896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614796915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2916565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614796915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f34888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f89896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b5095945050505050565b6000610f44848484614b9b565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6000610f44848484614cbf565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f89896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614796915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9f565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b505050505097509795505050505050565b7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b60606113917f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8484613f60565b60008060006131107f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8e7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef2565b909450925060006132cd7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8e8e6140c6565b90506132db8d3383886141b1565b6132e78c3383876141b1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28b348c8c614ef2565b9094509250600061349c7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8c7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26140c6565b90506134aa8b3383886141b1565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f89896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154e56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615557602b913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000613f0f856103e563ffffffff6151f316565b90506000613f23828563ffffffff6151f316565b90506000613f4983613f3d886103e863ffffffff6151f316565b9063ffffffff61527916565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152eb565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9f565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614252565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f1576040519150601f19603f3d011682016040523d82523d6000602084013e6142f6565b606091505b5091509150818015614324575080511580614324575080806020019051602081101561432157600080fd5b50515b614379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146025760008084838151811061439f57fe5b60200260200101518584600101815181106143b657fe5b60200260200101519150915060006143ce8383614d9f565b50905060008785600101815181106143e257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461442a5782600061442e565b6000835b91509150600060028a510388106144455788614486565b6144867f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f878c8b6002018151811061447957fe5b60200260200101516140c6565b90506144b37f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f88886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fd576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614588578181015183820152602001614570565b50505050905090810190601f1680156145b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b505060019099019850614384975050505050505050565b50505050565b606060028251101561467b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469357600080fd5b506040519080825280602002602001820160405280156146bd578160200160208202803683370190505b50905082816001835103815181106146d157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147318786600186038151811061471d57fe5b602002602001015187868151811061406b57fe5b9150915061475384848151811061474457fe5b60200260200101518383614b9b565b84600185038151811061476257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614701565b60005b6001835103811015613e37576000808483815181106147b457fe5b60200260200101518584600101815181106147cb57fe5b60200260200101519150915060006147e38383614d9f565b50905060006148137f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f85856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d606081101561488b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d55782846148d8565b83835b9150915061495d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b955061496a868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ae578260006149b2565b6000835b91509150600060028c51038a106149c9578a6149fd565b6149fd7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f898e8d6002018151811061447957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aad578181015183820152602001614a95565b50505050905090810190601f168015614ada5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50506001909b019a506147999950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153d4602c913960400191505060405180910390fd5b600083118015614c055750600082115b614c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000614c7e6103e8614c72868863ffffffff6151f316565b9063ffffffff6151f316565b90506000614c986103e5614c72868963ffffffff614b2916565b9050614cb56001828481614ca857fe5b049063ffffffff61527916565b9695505050505050565b6000808411614d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154736025913960400191505060405180910390fd5b600083118015614d295750600082115b614d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b82614d8f858463ffffffff6151f316565b81614d9657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154006025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e61578284614e64565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9092169163e6a4390591604480820192602092909190829003018186803b158015614f9257600080fd5b505afa158015614fa6573d6000803e3d6000fd5b505050506040513d6020811015614fbc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9092169163c9c65396916044808201926020929091908290030181600087803b15801561507557600080fd5b505af1158015615089573d6000803e3d6000fd5b505050506040513d602081101561509f57600080fd5b50505b6000806150d07f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8b8b6152eb565b915091508160001480156150e2575080155b156150f2578793508692506151e6565b60006150ff898484614cbf565b905087811161516c5785811015615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b8894509250826151e4565b6000615179898486614cbf565b90508981111561518557fe5b878110156151de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520e5750508082028282828161520b57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152fa8585614d9f565b50905060008061530b8888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535057600080fd5b505afa158015615364573d6000803e3d6000fd5b505050506040513d606081101561537a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153c15780826153c4565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a26469706673582212206dd6e03c4b2c0a8e55214926227ae9e2d6f9fec2ce74a6446d615afa355c84f364736f6c634300060600330605581d02a7e8b8234a7992da2173c0d9eb404853fe85a65a0881149522e12b2a0f014758d15e176280001955b705581d024ace4a9cf9849185c4b4cd9d2d43e5360f36d915f743ac51fcc9c7f80c02450135f1b4000219042005581e03dc8fc5260164a847b23d38a881b05ec9e601d397d1188021168d7c0da00c024701923a550aa0c803fe15c6a27562a27ae904cb1b828dd828705d1507183fdaa98bcdd0bb1025ee5305581e03f23857a9fa3d0da9ae7310c160afcf49158a232640406bae60c29650500c01472296500eeb160005581e037f46e0bb2789267d0a30b8d43a6d3e2a2e289f0fcb20ea1bc8ee7216a00c024744d7c56d940be603da1a91bd88ab16e57730db064e35880953edf7a3e2f40ec22e887166b95f4b18032be8a5093959bbacdaa2d02b061939a3a07681b5a5351eef8de8b286f8df80ba0399cc8746fb4acef4aa25ad53d2d12e8af29520040e86729cf0fe867839a233a005581e031d2088553eaa5823aa330be942a76137ea4d7416fda40c5c72917239f00c0147028114c7f49fc0034277b3bbc296a60f66b308aceaf2f9ad4e766e1984e39f2bb1256df0c51448a70219cbde03821c17b99606f4ef0404c1e66f9b5847282857f6d43c1d1e2282e3e20358c1a203db467c50e815cada5a92eff2a2eacd9ea814c7a9ef7e9360b114df767836e0da03454a7715e43a8f5665f3175574c0f374cd68bdd08d8d39beda757efe065a1d01031b6cddd0884a393f6d5bcfee003d6dc52eca04e3674b628c1218c9df32da11c00319e2bf440d2b4f680aaafa688da47d7a6bb06838e97a74e1417448325e4dc2160353551a267211a18f437178d0c23472dbe9821cf53390b4846f5824c4479362ee03bd0a711bff7996b670c2882e6431d8feede57819c03c580eaa092d1a8f5351940380cbe31fb0e2a43ba18c77d189091732df11cdeae4b9271100d3c69cdaf18eb40219ffff03b903cc550db702ad3a61ba3345dc7be08f65f036ca37eb75de4257af49f2a5b50310081833d47de439dc5ca64722ddbe5b89d19154c69209fc433bc3f9be784edf0219ffff03574964b9c2c92f0c167e483ad13048a696603f618fe6161ff49526562d063c0b0398d864f93383e440938855e216914a7657f791096683dc5e1a95247526b21b7c030aa0afd682a694188ba1e959debc39df4164c06fb62c972b1efc58a37e5e34f30355696aeaa907d644a62566418115cff57fdbe7ea48ac28e27f4869a444b1dbe7036175a74384427131cd1f76af4f6acbaf7394eaf522902cc13990da252fce6c8c0309968c0b60d1a2dbc7fb50a199f6b0429722075e6b0899f82013e64c4990cf780367ea5b99fc8b8a0bc5441573d9f1e554e9ca7c73adbd4a0da858b344f296e887039bb8ef7a73bff7718ddfeec785fb40a054c0f139e1b4c27f9e005be644e7ae2503bb48e7ccccf38660763a13aee09fb1204a1d92f7eb889acd039aa2c639980e49031d0bc64efa9a6be7279538de3feb0257ccc453be6dc0bec1c82b6d02a71be63f03d1411b2200827453b7ecda10c407e4c2c75923be1eff4b5e2228c1a86027edbd0219ffff030c1697859a1f4f97a4a721f5db02c8071bb9db7ad42cfde08cf094475c85612b03497e80dbb9deb11a709e2012232d0d7be9790369fc329796a5a59b1884918c68039f3db4a2d6621cda2c5d7e47febac283f043f4c0050ce4de6e89c13e4f5a5b54036f6ad3356f4cabefd72b78e447397678dcac34b0372490dc9221ff9e4a99b8540302984fb9591a0315eab425106659d397b387d8b60cd55acb8c12d79c56aa095e03f4b9f2b1fd6f197d24401fc0cc88c43c80852e52262958dc28dd6baf71c5d5b60344316f26f6f472f93d4e822166523fa45b86896bdd678adebbce04734a9d458703c786754dfe02834ef85e4e92c4e1d8d8544c46577c2f635542f68713d591757e03f7fe46ee0cc93b9bbc66dafc8b1f953c5ce3b9ad93da258f962aa09cdc2c500b03dae4f6257c9870f274c2266fc3378b1335876eaf8c33d10a25a77918ba5e454b0219ffff03d56fdb0840a81c81618896f260607fd182de84071cf2c9c8a2e735b96020bff6031da5779b3491195e5b9bb6e453b2ae41e6335528aecbd9b2fe471334208aec260399b64342fb9a5620bfe08d6489b86a459469230ea6080730e64eb3fcad2381f60367f82a624ee855d72b7b5872c86d5d5bae35536e35f822fa3c77e72077d54e8903fd50202e175f774fb9d80e165c751df97702a69fbbcf8492007960e8e7cd83d003a3c387ed6e3b746e8a9a9f2cebc1de1745be32be6672fc7c633968a4cc848afc03c11c527aa48f8261cadb4cb77bd7decc6ec5b645073f5311f8a71489be3ded8703506b75f394ee75ea319cb6ce7833f057a59f044f02f3fe041ca6bac480f1bae903e694a6aa98d9326a2f6b852e10d16d017ebe1b4cd86eac0e32f5ededfa0ba6410314c24cee32e96a03e014c92582b9b06b1fdf7965d25d6991ba95c3cafb5d28cd0322628c54fe449f70317d8c59a87ccc316d72fbda30d91450e1965c0d53a4d39f031ea382ccac791c7ed22c500eabe92324592932054ebf167c7a68a9fa7e4c241303883f75505a8bf0feaba512d0273c135fae4c2296a998431c18806a701ca74c7003034536bafb25eb4772c1a534a41e122dac9db06e10c5b344064a858331dad01c037da1892aa2eddb9456e97acec022a46a4b9b25345e8ec3ea9adf4b57e0795d99036d6213a34cf76219b071fb27b4b8a223f354f9bf61afe9a59eb581d35fbf56b9035c35211ce01a56f4a4df3acc2d8352f400caaa2b8add891e0ab14b1dbffcb33a0367601633f60d748bc186c6a51094178512173ae94bdf88c57f1a2068c8ef41c403c23385e32ba4b204bb7a44de616b087c2fa9b145556a05a1cac7a53905a1458f03718c8a3151f1d369163217db26a6bf96c8554bfc20a42de18244dd4aa78d700e03348e158e9e1d18d0c341b7a84f07b9c569d32e557d28cadb8d493eff1a35daf303bcee5953df5b754319c5e5b9e7420a5ddfa0bdc966a818d96a76c72adac85ff2036b9c76d773a53fe0f704f73faa589e4c9e0f594082439a6aa92e87c3d7f5bf5f032c3fafda76b41c6cd2cd8698d986b6eb1e9cbbd1d60ae2132ccdfbf78f948364032d2517993d3478f3fd26bcaaedf64ac715a758ab75cccc3d743af3224a33e1b503a87c4e7c0a3a06211fca303ebd71048a6a0583ff27458f26783e8eb408d3070d03c79a87da9666b2ac91a5aff7f5c2a1ef6e2d5581942929201acc44e50fbfd13403a2cc83b1c270a01e2ba337c6986d590af10e1b8e5fb7a83ef89b78234ec4b2ae0333eec8a9f11f30c552fe67c43769813a16b6ce89171bba2273886fcbb6b1e43003a535da2c835bc890aa629151771ee140e34ba540272882365130815f6215f04205581e03419307bbc38dafaec9d5a761fc2f6c63052591bc312213f6e73ba3d4a00c181c4701341065474000031d93f60f105899172f7255c030301c3af4564edd4a48577dbdc448aec7ddb0ac0605581e033e3d3d31cd7e38553f13806a7892506a5e8227c3ca736cde5fe6f04a4007011bffffffffffffffff05581e035ac5be7033a1b22852896cedd2815b74dc857fc3347364818d356fee700c024734a9467026ad8003feeba8c0dc8c17c9e5b8ef65192d9895aa6f9cea2784f0c91da8ffef94e861b701410a038438e76d30c9789d7bd66d5b07f0025d57003dd9561e5d04b18888148450017405581e033d9438c9a7425c7bf95be9c6d056c4849318b3fb13a4020516c244a60004010323481efecfc7ea5580455535ac2aba13cebe77f80ced15bc908b7e870a13378105581d0200861828887e89d9886d049a802c915a7dd4bde40f01e1b2677ab5140c1901d04819d059fa26efcc5205581d028a1edf8919783af87cb5df1282e89f7b084fca90eb8bf743647eabce0c01470433d6a6128cf70219022005581e03591c0c07edb44b3526d4d5e83a87429b7e768410120ed4a5456fbfa6f00401021973cf03157473ac6d46081b1e902a660187f2837c417be9bba14455562c146ac5c0512403528cfd81a298da6f87441c44503f8854d9f1229add613b0e003d3ee679c032250219ffff031e7dad53c0835eb2f5fe2025f4854cd284851c812681835191bf08be0597a867034d526cb6e4ab3f77102fbcb0a268edd8563573d417ba6257a31b22c413e5e8260348f9f87edd58a4bc7c4bccbb1ace39acf93e487a6e1b9f09c120cf5ec9c7b82d030fc42acb6988c001cbc747fb060ffa2315e2a7e9f3858aacccc6045196670c6d038ede8ca57d89a0a97313c0815cb3241b7efe2bef8d7192f8976d0a0249518c0d032997bca7fa388de1fc5093059489071c5b1a28f1d45386a533b4fef71c7e4d4d0331c0b59f27ad21f521bf37738b4f6cb7e505aa79294696871680d98ad7a7cd8d03e999f11a6f5a89a542bec94951106e13561d791c54f714417c57ed04cf15c220030d725e38a69fe8015dde8be5f41bd45bad1da682ed126c6c2fca3d1654c076500330929c4223b2bf5852f3c69108b61e594dd2155e5993f260ff092724986ef40403ddad99eb8da0d6e498a11312d7539a3a36ddef8ea4da8f1dd83902d2f98a4d8703c393af2ceb55007ff36919cfd1adc9c792521940399b3cdff94c80a3a49d032303f061a7fee8cda1bada88835ea5a2b5f63b57c862fc31524d578da0d9f72466020219ffff03e950be9bf95656c93c6ae66ab70ee0c598a851d713b58ddaf9a37e34c60d14b503539afecaae32ec02c7df84f22d916f1d3a8f956a5bb374d41825c30214032425031ab3e13120968b7c89ec3f8dbd92117a2b9c7391645a3a1e25e9288ff7f464f20393da1487b94e19943ff6796aa3e9a1ae02e824297080bca3944fa2e6d7c7ca36039f1b09aa41c736693ef8a9f90d85cd15c9b651ca086781b534d4e04e9d2950e803229153fc868c8249c724b09f003e12043cb6c2d72b509cdbfe3c4b571ab8d57003a5336fc45d92838893ac2873a0b8432b69c360e04e50851ff7686ce353c7c84103259a41555d11c7e98e5eb5c59482f6c8e703a999adebd1b78f01d143b074f7ab031b88251269605bca25915c2f0cfe0ff60ac06609b9ad04a261ebb132f44a6f2b03b1ca108b6a1b156938c59e8d7f7e08037ac060a54045bca05b9b1786c60e477903e03318c169afd3b31fcaf79907b35760a71114e70388d5b451b267dbdec5cfd6038c41dcd5ee1c89bbe4ad2c4bf73361bf0f620f8f3a2c0244a5fba44c50eee65b0397e258045b6a8c10cea2b5e1e77463ed432c801aaa3e2b8b59f9ce60c37a4a33032a244bd691c84ca1237008e7039c6a388d80cb0dd59c6b8b172a4be206b6a0940219ffff036cf790a1cc2af37b416c6ced67e1b54bcfeb1a8358a10ed1ddb917a966c448c7036737d67f986616f7045e96a75fe283f5783109b962920c3fdd7698e65e661f020379906848b81a9b245590a1d6d4930cee0acfdc6a8f5825d6c39c32029f765ded03530cd52fab10018d5873fe6d6b24eb327e3c5f2c583ec52f9ae179aa69d8e7ad0328fde01e3d9c0a81bbb45c67013d9deae840204b0c90de4fa7052d94b62ffca30219ffff0392828d0673719a493348d3f7ac791e8653b99e6e031901d07ae0c57c1ac8d77603960708659d4b82694dfe60de7152b336e6572190548bd386c0b928fff1fe4bcc03d3bd095b5713f6e6c15bd53d3c4494cca0a204b3c413cd00e7b679e82e580ee2036113bcd717855633f80d58c72a8bc2ffe9cd03701279d3271bde31c3194e98c903f26e130f1e43f4cad27ed07ca29f6858979f910da41d87e7992bb0020a3d5a49032593d5f99161e1d3bb3aea12b8194d6f317fad4576418bd30df04c5cd3bc7d91036356c8d669a925ad3a0cc47d990a6f7c1f305d4ffa0b1e51a8ad7f6fa52b272803fff56f4887fbdc44e04e0048f3208e3f59835171e6881f513c1f76367ce5149103fa753ef40632f08297aa7b2531eb58b131919ce804459515b410296dd9dccb0f03071795b6907aecb9192c1cd1cbdc5a38513a4e99e195491598658ace0c96c54a0394aab02b7c592620eb85d1c78770192dba63070b8edfc7cb9231e597f66f6e62035f131f2046a50e16124ee7a82e8bd400b780da480924e680d88589a47ba5995303746c60068bceb5e847b8d807399debf9e20ca096dd7616d83b6c9c76f7df624203196cdd63eb142a5e4a30941888ac1bfd4aa55f338e4e7fcae71c3b157dae6af303a03240d602e94981102988a51ac0ad251d33e4eb64a118f2f4d2c694de7aa00f035c0598d574729d2d5ff70fb4df61f6cfc873139bf72155cbd90178302a00547f033c70d85319fac84a8ec0d1c665a785afd4bd13a1f1ecde4b8081f58171bb8d2c03c34ef342310f5630cdbe147fa1b48b48961fe134927a80f7c7e71e53156658e30364491870a4b733deceade048efca43e5267a3c4c296f4bc31d4d68a7c8b1659803f4af757870e6d965532386fe3bed87fef39c3ab113271733efac9a2729bbb40e035daadbbc20f1348650139be122db61e3e51785934a77b201a94ac930d68ad16603ec75c771a0e9f56ac875d8dd2f4838dd7251644e7431f9725e563992ca201a0e034c09ac2a11815e3fb42072b4508b313d3a9c5eab342833bbc9ba1848893a0fa1038388c5291c1969ccf1d6ff774ab9fec7286ec83b989a2e5d63d57e123c585d8403590cc9f8da2fead06f74d6d1bcd43b7a07ecfedbcf0d2a30124f575da1a586ed036018ecfb7ab41f5680184a29cf60f4107b11ffd7b5a7b99b7656c2dcb43c265903422610b6b652ab5dad44612a758aa7cd7b1109f8245293a66cb647f1143793380327817f61bd8fbae8cc0c6b912e9ccdefc11d1826a6180ee24271f3b712f44df003e3bfcdcd9f142fb6b051af72650b128b0b097d5a9bb6e61da36126933191296905581e036d484e86de5e03dcba47f4dc308188c37142acb756dab33ba0b59af050040a05581e03cb1c3c5d37502d0aa13d62b6424910ab952978d0b11fec6ccc3004c7e0040103d10c50a8f35a113076846ce372a64d64408d9bbc8a21f8c5de5b93a1ec720cb003eab6d090ba3fbe9d3b561c6f50e146a8465834dcc21748f143244185f48fc56003562d59a51820d47f520c975e0b2bcffac644a509749a3161f481f57b6e826d210605581e031979e8fff074daaad04439623f1b536865bdfaac7f39c16055f50143c007011bffffffffffffffff03d8be73740597e0432b0d60ad70443a41237ea3e32666f8b7a16b7e242f10dee205581e0317bbf8ba657e39871ab5852bb5d8ace9de7fe3ac599410ee2d50d0a040040104590795608060405234801561001057600080fd5b50600436106100a95760003560e01c80638129fc1c116100715780638129fc1c1461014a5780638da5cb5b14610152578063be116c3b14610163578063cc5183a114610176578063ef921f8f14610189578063f2fde38b146101ac57600080fd5b80630a5ea466146100ae5780631c6eced5146100c357806323b11d8d146100f357806348a4f99314610106578063715018a614610142575b600080fd5b6100c16100bc366004610694565b6101bf565b005b6066546100d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c1610101366004610672565b61029f565b610132610114366004610672565b6001600160a01b031660009081526065602052604090205460ff1690565b60405190151581526020016100ea565b6100c1610324565b6100c161035a565b6033546001600160a01b03166100d6565b6100c1610171366004610672565b61041b565b6100c1610184366004610672565b610496565b610132610197366004610672565b60656020526000908152604090205460ff1681565b6100c16101ba366004610672565b6104e2565b3360009081526065602052604090205460ff166102235760405162461bcd60e51b815260206004820152601f60248201527f417070726f766550726f78793a2041636365737320726573747269637465640060448201526064015b60405180910390fd5b60665460405163052f523360e11b81526001600160a01b038681166004830152858116602483015284811660448301526064820184905290911690630a5ea46690608401600060405180830381600087803b15801561028157600080fd5b505af1158015610295573d6000803e3d6000fd5b5050505050505050565b6033546001600160a01b031633146102c95760405162461bcd60e51b815260040161021a906106df565b6001600160a01b038116600081815260656020908152604091829020805460ff1916600117905590519182527f102d162d8690811b17006e6e7529e0e7ec6c7f357d1d74d3d7ceff35fd75ce0f91015b60405180910390a150565b6033546001600160a01b0316331461034e5760405162461bcd60e51b815260040161021a906106df565b6103586000610576565b565b600054610100900460ff166103755760005460ff1615610379565b303b155b6103dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161021a565b600054610100900460ff161580156103fe576000805461ffff19166101011790555b6104066105c8565b8015610418576000805461ff00191690555b50565b6033546001600160a01b031633146104455760405162461bcd60e51b815260040161021a906106df565b6001600160a01b038116600081815260656020908152604091829020805460ff1916905590519182527fb24cbb8005827c88afc2851884e834493cae4ef0d1302bf939281696bd6ae7599101610319565b6033546001600160a01b031633146104c05760405162461bcd60e51b815260040161021a906106df565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461050c5760405162461bcd60e51b815260040161021a906106df565b6001600160a01b0381166105715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161021a565b610418815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166105ef5760405162461bcd60e51b815260040161021a90610714565b6105f76105ff565b610358610626565b600054610100900460ff166103585760405162461bcd60e51b815260040161021a90610714565b600054610100900460ff1661064d5760405162461bcd60e51b815260040161021a90610714565b61035833610576565b80356001600160a01b038116811461066d57600080fd5b919050565b60006020828403121561068457600080fd5b61068d82610656565b9392505050565b600080600080608085870312156106aa57600080fd5b6106b385610656565b93506106c160208601610656565b92506106cf60408601610656565b9396929550929360600135925050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220cef0361026d143789d3a650723c24c713525ee432d868f9508fc5fe410faf15464736f6c6343000806003300582103164135aff1c548a9982cce22ebb8a532443ff7b3b6e3a417c5234f7974c9c46041010058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630410100582002501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545440aa958dd87fc8305b97f2ba922cddca374bcd7f00582003e5af7989af34160053c740614b9ddb3802b3053daf83245a1bb265a8bcafe0410100582003b2639b17bef0515027b53aeaf7e6afe7d7e132e00c9abd9bbdd0f1be746cc0410102190420021901400058210345c78e6cce5cffdec145e73ecd97300c6fd3c324449c80fc66d92f4c6bfbad704101031dacac7dec919df3e6de7ac4aacd07fad0b2afb26a93a66596e35672d9e4ec20005821032a75bdeeae8604d839476ae9efd8b0e15aa447e21bfd7f41283bb54e22c9a82054f2f0829018452a00435edb9cf6fd5158d2e92bf500582103fd6c600593df7046d05407c1e5011ba9e7b831a4becdfc4e22a3f9c313d38a00410100582103a012d18e3ab1ec8e0601d9139d23395f6626362a923c5a7c2e6839fe7f5f18c04101021945b605581e03f4984e1d911878a0ddd7f3a4c56797a98c41c9e65626fb4ae0becc9cf0070119079505581e0321f22ad905c506331d7f77323648114d3988003fbbf8da25af93037a700c0245236fd3b2000360f9c8120dca62dd1c723fbfad26b16f48c0799c1bea1205b363df3d8802aefd03e341c22cc41099ee3c0f967a9d5e94af7bc906464204782df8baa1259de0a4b80219b56f03fc39247169d68387fe8f2d369c8e98607eb364efc82e1033596d18048b7527d203e2a45e68759e1dd926792be7bf83dcd856d4dd670f974ae206ee6a4d5627dcfa032abc13497d9fc711f804b073617b9d21a594d4d5a4deb876e540b80929ea18a7031f94b1d7576f2582eb0191ef837530d6d1feebda22f870d136988de0a07412a403694aa123047e9ad525f9cdbcbb674b941e25772c1134d00eff1caaf9b1392fa503ca626fc94f8c99d78e79d3ea497f11cded8aa614a1ecbda86f398e8b4848e94103edd82fef0870913fd1d73b5e14b6950a8e0bcbf06097f4b3f5c435f45537135903e81381385db7a7dc530dea9fbc6c59e9d3f51ec69a9c654302d8379db9738a2d03c562a9d42afccb384670f065e0287167d809b1e537db57badc0ca1fd6e12a872031dcaf274ffbd3cc4c5096eb427a1bac8e71053d33979ee4983374ac5674c99c8031b25881fe51e16803e7fbfcbac12d3b25fdba9d8c3b5c7cd658da84c4276bbc303486a41219b6cbf03e815837fc2ce7bc2bb3f0c65e8cad72ef944cb95715b6fc60219ffff030122934164aa33fe3986851a13a079c54fdb7da9a63e1a4e4bf3e8ec74a8214a03bd0a2e4e1439ab57fd37c24cd33ce6837d5e254d54c7e88062da31c446417a3c0372c7689d8cedf4a68726f7c43c731eae4eba6a89495ea932a7ff09d94949f1f30383bb030500655869f5f7af9b038c9470630b34936e655e29360fae48fc12cc9f034f2c8ba7ae6bf8f4d46a780ca64de3c373922d2de3d4e32435dfd4bb84d930d3038fd0f00991c5137af676688421187712405e0fe4b657dfbd5d36c41658ec5f2b035c880e7a33da2550cfab9b40c9084cf944cf023e58221c8b0dd07fa12bec108b038d0f10a1ff8bad2c3289702a41d7c15ef442880ecc11ec84636181148cde56d303ecc19cc255272f7651cce2a83b6d9f7c3188b41145c0113c32c2a42d6dfd113a031090949f42ac5df0b0288574e3cb2ebc34d436e05466670a8c673161764590840219ffff033b5ea417612b816eb2e27559a01f474d4dcea6c4c0137512737e10ca86e576dd03fe78149b5346621279469911874510ecb529124dc198a00e8f6dab4ab98827b8030a642e46989b438621e525efd2b5c91a131099482c267894b34ac282678d2de70219ffff03cc7aa690272741c06dd2c0bacb46b20d8593c038e93027fd87aacf1dc60bd9a803e1eacde9ab111632be6d099fdd45c32e2e8d7e9b6bbbc5cfcae3d7800f1ed8a1032b1bdd7e77fa5eaf49c31e69d6297a85a27e0ba7f5f1653f2f4d77fa6feaf9b3030c1f30f385e6e7fadd3c080452bb1830f3fccb6d51943c7e3c39cbdaa3d900ad039b0a33545680a03e132c49b5199567c54ee3fe3d23664579b0a668e41f9f3701033cf2a552666499ad3ebb1ead95a3386987f48069de5c6114faa72b11a09b997b03eb0a5196b9046119dcace0cc0a671452b3710a48affbddbd9cc980df9e245913033a36ff92ceccefd9b136cf851f7dce6a8981528939559b0e6ada61f5a3806c040300f671dbc968f94cb7624a7b3f688337e4fdb64744c353dcd7f51955b9a8afde0344a6993e44ef397a4ac783cdd411cb5c00c55a3a5cd69490f455fe707b2d9b1f03933a1ae386027c9473af7e55dd034f21a22feeb8664f9aacda8cd5ab1b60d44c0354fcbb11430f75ee96323e498f115c41fc8c58f7ce10cc459252118b8362d8630219ffff0317f1d75f02289bedbd7e2ffa92e0039284fcaa96ddf79ecb0ebc6a28fe03eb5603b79d2e7990e83d1114544c8be30a90e55551b5c35105c36f8099ce20c78948660344143267c6955ea84b69da894b6ca6d4b17ddd34f4ba7ed9227f650cd971a5c103bc3a2d2a12d22ebbfc8a69081264ce6e61dcca60a707902192c588b70773df970392201e7e8bd2b81302184730c351bbe303f33a9bf27cf88555775ce043dd1a8803063cdd4d4c96dde3fc359f1c3b7e3f0761c696a8bad14aea7421313f02c0aee803031fa4d408dd95a87b9662357866e4efc80dfefb86d5aa95a3cca16c1ce405e0031279a24f16b3850bd07dad54754dd7d0953b4aec2cacb4825213514eb1c0f91303660a2dee8752fec8f33d533082034fd1749b9a15f76abb3f0220518dc751396903ae71c41f58f26059e0d50b96e4c9e4ec83e1d3ab71d862c1456edca4da109f0503bfbd33f5057c0832a2d28e2220088c52c8908954bf87e5f81391ec80faec1e8803ec86ff64b1bfe6f7775c4a8a00fb1b4e0a05f6c6db7d1804881c3b746e2861970385eac1ef69d9e4da96773c544852a23e718bae08410e6593475ecb17a490f89e03bb7e2f288fcdad39ea8e7c608daed81b75e920e60b5f74ccd4d7b4d6027a42d303df2beaaad1babcbaf35e8f59ab771434c9610487d2a36805b8b02e4e3523d2f803c5bf6a07fbcd88232a42444c59816b8672fa6a5916fd0493e7bfb2fd2ee28b1503b4274c7e527ede63c995a7d176506bf6b1fe929358d9d6aeea3b2fe5d72826cf03a1e2b7b4f627ce1ab92d777f4670f56bad48bd52ac39ff9eb9b309aeaefd2a7103f327f4c25afc8b4f7bd4ea1aef52ff8917ae1276c9e907b9f603e06d49a7afa003d5b607c3c91a574a6438fba7aa8e7a1a2a953e271ed0124f3c2f03c80fcf89540362f1ac5b1d016fbc7835544300b6244bde1d81326c511630202f877e2689a0f00381e4af3edeef59f2cf3f571a01f6129d634cc60f7f1a2a547ae426146bd401aa03168037d5caafe3a9373312d47bdc227c1a63aee2e150ad4d595c7c884ea042f403a57e9c016b928802d57b3e57db76ead5d41df4c3ab36321a3eb9d0ae76629ad20351f15bae1b2ee7dc7bb14e2b3908d42de86fe3a26089ec7bbaf502843d582ef7031068bb0daf30ab05600da7d3f48becf8aa5fb09531fda6121f578119f489decc0362ea0a8e481ea3c55adcf86f4ae5e7c4367eac629c3cd25f075d3eb62704c2d503981e91f1495425f666003a83d85b5afb13de3220618ea60decd6391e1166c8a103ac51e311939faccbdf933980b6bcbd99705caba9b4fe8059f726cf4888d49e17036635764f91aa7cf1eeb192af4b9457e95ffbd8eab658e87b880ac73e6a9e5c9a039087e809d48b949d64615b72346d874b97471298c26e2de2803017d9207d9f5c03da8cd7368a3e7fb6969cce2da56b0b68a87b970b68675b2c7c9371f762625baa03fa9e62c69d7b5ff3e8a02df2ef9f0f5f38e107edef839219d17179cf252287f203c585ed2e2c0bb6ca73cc8c2248b67bf0f1664b860180c5ec3cdddca9bb77db830382338bb913050382a0bc7737cd5046bffc95024c5add048b62594ab94facb47803d29ede6626dceb566c13b2b1e40f9acf41bd6e6cedeed721aa1e0e94b962723c03351997ef5bc48f6be427b910116d139c78c546919f03fe2eb7f2cb3b3cf05804039b9a8efdb4595f983b753d75024c79f3e31d9d112f0e9e95966cd548d19e4bc803a9702d2cde95a500901b6b6da8c3a9f50771690838daa6535beebb735451bacd03d5840232c74158a9a14d7b58b06c1550bd36b5151bca68561e6e0013f3b5a60a03135dc465a2a361eff7c35ca34dea3aaf1584077fe45cafbae059bc43c1d529490398149f677be4362234d2ea63618757368bd5ea43fd6b07de04d79b7a70318c7e03f345f29b2db301ee1067f97494dfd2efcdd41d67b0e4271eee9ff9afcab78875031a0821df0b458874072c96dc30a461eb5d92ea8225485cec4636953606da0d9003d81304c77a7d80401c94548ef364333dc271b14b103a6884651033eb0c2da97105581e038871115f4aa4f77693f19eb9849d4a71a2f6a0f7158b75a5da530f44c0040105581e03dd440cefb41d4fe7be24b1055857af4e4d7ce5284b20fe1eca0cfa0d000c014664459416240005581e03884211d834de3d11a80cd0aa7dcb1723d6569780353b2b8706c0a6c3900847025014bfbfb00005581e03fbef4edc995dfcdfe1c4be1ae4ed0a33fd4dd67096a5b898369ec92d00040105581d02cf56e7b9ab0f0368bcd6c9c91aed6b3d9d4ec1971397fe5c378ae83f0402045902e0608060405234801561000f575f80fd5b5060043610610034575f3560e01c8063199f72601461003857806341c0e1b51461004d575b5f80fd5b61004b610046366004610262565b610055565b005b61004b6100e9565b33733328f7f4a1d1c57c35df56bbf0c9dcafca309c49146100d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41646472657373206973206e6f742077686974656c697374656400000000000060448201526064015b60405180910390fd5b6100e3848484846101a3565b50505050565b337337aab97476ba8dc785476611006fd5dda4eed66b1461018c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60448201527f20746869732066756e6374696f6e00000000000000000000000000000000000060648201526084016100ce565b7337aab97476ba8dc785476611006fd5dda4eed66bff5b5f6323b872dd60e01b90505f60405182815285600482015284602482015283604482015260205f6064835f8b5af191505080156101fb573d80156101f25760015f5114601f3d111691506101f9565b5f873b1191505b505b80610232576040517ff405907100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461025d575f80fd5b919050565b5f805f8060808587031215610275575f80fd5b61027e8561023a565b935061028c6020860161023a565b925061029a6040860161023a565b939692955092936060013592505056fea2646970667358221220e1e0e24429d1e60a36a247a324ced67999a9e96a064cd7f127808cf22be29fcb64736f6c634300081700330605581d0255ac7c678e81a913bf853f5551a6bb0741a5c148c177e38869e6a92607011902e00219200805581e03ee7d86dc28e98a1a94067f177aee63e0e3603c812938bd0ca60a188df00c034504e3b2920002193a8b031f4ea396c544385575f7317f648795e8b46c58c88e63286b6d7cdb49c9c3c1a803db3f1a5be8536c50a796471cd3a45ceacd91a027c35246b92ef2ca358cd2deae0219ffff0367abee778da185894018330a9b993a0ced9075e19716f2a2c8fdd0faba4b4cea035d2f73bd1a95d8e49533b2724d3e36a4eb9fdb3d5175f4cec1c786199b939fab03387bd806613062fa40a63b9353022d151739c49a2b55e1686779f7fb302ec2c303891f81da2b6c93837993aad9b3232dfe4f93d64c9552c8bf3f1af806d93abcca0326f15b650c43cd2e0456972566f002d04b55f640f7e4867ed95aa9daffac4e2e0219ffff0380cdfb4f3c718d06c88d0f2895a92c79e5a88067189476166dffa0b73a4bd0a603f858f5432ee3ba1a47f0cacd00dc9bab165ededc3035f375b276b6a5ccfe71cb039d3c061db293c93958f66cf82a08b00cdaa7865a29c0a68a028e049519c5274d034d867d9c19d067babc065f20726ff1e9c6e05805149e519c6016f07894a09fc003115e2a8560bf1cdf5d5481770e927a28ba860dc1888e432a9e5ba3b5582c428f0379cc7a92c9810d6c8289fcd81323357b5c4304d58aca6c4b8c68fbdbfd06d68703e098c63d5f20b1b33cf5d02c6f88b5fab96fca2f5ae310c144b7e882b0177a7f03e581ff362d772c5b4405136673b1d49b973726b6605335c9171006ebb0b233e30219ffff036d100c89da2e31cc4d3042e3ca24cab018e80207ae34641ccdf590aa3e8e9e4f03e1dbfe9780d374748ffc030cd2d9d1492008d95e182a20b71955a2f308ef21660219ffff0219ffff0397dfa101fde59d7a873fd990067871a26228726da88ed82217e3082ae0de9d8a034c6330889e479e0437ec18ad4221495ce093fe8604ff53615a54fbea804c051203c5b2f63f9a5a5cd66618806c193ca68fda574c5a2acce1ed016e8e80111b1fe5032d204460a4f390bb930344eca9cb78f197f1d73a30cff59173fc4c9118776c1b03ce3b8e21738ec00090bab67c0e56aba701f1ffc91ddd75971e8d05dd66804dad03ec7b3addeff25a874d06a1823987b7e739f53b8f18dc7cd09854084f7c4a480c034e5b05d9793394f441511084b00cd7ccff4f9207d8f7be27350b6b51c4b9834503ff61f62f38c0852b0c058ae5a37e5d6b4528add10bceddc6ed38bc2ff6b1f17403b05058f7de824628c4ecc041b3b1c502f92ec252850c58da6be29dfbe4bc405703be0b479b2cbf58363b88356f31d1067cfc06ed036a05a4f25aa29a2e73128e37032fe6479680414852100ea1896a2a1a31b538828412971c0944e9ed52ee9110150397b83d111a61768b3a7487748d8fcd3cb37bafa09bd88bc052e03b49e02e7dec0317605621ec49fe11b49d03a0fcb10f835fe7d288078be6b914d4565f9a114bea0356f99e41ed032708486527a36e3c998b9f42fc60f1c6a0f9c17b0a302a16537f03f4eebbeab1524ef7bcb20a30ce700431bfd8fbfa7aa09d472c10d704bd3e4967038d0e099a44f7f94546d79cf2bc08f9624998397189445f243f46332f84f0603f03d05250ea90479b253866120e5392b2b2d868e340657627c07bf99a10a5f65cca03050921a1e651703ca31b8579a026e9156270ae517c8249a1c185d861e75d5794039778ab010a0c170994e2568b7a74323405413c121da2146dfcd06854b976d95003af2edf1c12a65a6a5653a836da344214334fc18125b1e63bb65d7471d8c90ed903e17e89808bbbe14f5d187c548b09996169580f5a86b3e8e76ca051a12be8d2f603172a2b898855b435c0138b47ff7b835c7ea32d144f279af470e0d48eff8fb46c03e000d2ad2e91a07ad7fb1c40401ee7ac59c21d4bbde16c36cc05b0a1b0fd39ff032e0291f83f615fc2ac9ab68d158a2293bdc9338d4809ee467f8df0f1c112859a03bcd5bf62f604e285404479e944ade8ea7d3b9c2d21eb70a4c1571e15b0e86b8b0398a30a8778f0ded40305ff797aca464ce00a3f9f9f1bd2297e14ac40d335171403a41ff41dd7940030fda9502f8b9a53a3defafb850ab91965a9e3f49e1fb7e5e403774102fbd2afc19911bbdb4ba13dafcefc8e32f587a39acda10619fa3bf38c8303b82abff063c918fd489a5f382932ac32fbc683ecdbe87a5194521b697c0bc35903d6d462a3c91aca34f28e8b63fdcbc28b529b2ce8372da43b6af554565e08540703a79cd05a1f27dc92c6e4320d86987c4cd923f0f6b7170081eadee52096da34fd0330118fa5d8f20113dcf45f6e6e4ee9bc57511caac6ad6e5bb21f2f6331cfbb8e0330a5490d0d74cdafc07896ad493593c24c3a83af3764ab2ac45c7dc3f2780c300321018bba01709f429872107909c38efef0e53e71816b05edeb20af661d0191e30332ac4c48ca2b7ea7bef1df4cdd25d3369565fa6c33677e5aa4254c7289da87a60317f64686f9e80b29c5e086d6650879d2e10b03e76f1909dab35c065f74b1e18103ff4188c921d9b6f1bee6dfed6f7a49bfccabccc6bcdb8b58d1499eefd6c2a028033046c8c8a219c4c65d33095a44510122196a261ddca5f310d7c30c660070c4f603307ed868f1a796746f0a45d2c164bf06618ff25eca391c4bb92ea3d11d11b33003509d73eae7e6b8a705afad9c8c08b58e8013349667835aa89602cbec28c468080376131808cf1f70f19ffb7034be1db0ee00656912fa99de431ff955106f6e298f038d5c83f672a553c76c6d3b8fb64113dcf651c5b0172fb0fb6de6385306e2999b03265f87ebf0f1e77f65743101e01179f2b651258e7e671a023fbb3a154a40a8d703337c29fd9976d67b66b28034c1414c04861ce13b19a267c6e01d66f2cdb6bfba03387d1af7fb6734d678da59d1d8eb7aa81f851120b36bed51bdd5ea46b2a2d62e05581e0374a9d461b6a9d2c0b4b8eec628b533d580ac7a40dcb6d6d1d9e2c0e8f007011bffffffffffffffff031b460c826a854d61dca82f718e088b8b4c4082ffeb93752d7691bc62c51dc0280605581e03aea6a37014af491452adb5d70fa3a144f2893d475b7d03d22a07b08dc007011bffffffffffffffff05581e039009f9fb7f3600a0fd6cce71411b0b2fc393098cf0f18c99ed4c3fdcf00418280372a061fe6d5ad391d8e81fccdd10fa823507f7b7728bfb7810690b10aae2e44f05581e03468b1bad7d17d14b3da7bf86b7ac6239887e52714e679390842b97d0b00401034c45c04bbc4da5675b38332226f2ebc2b47b1e0c09e31f5e33c98c37eae7b14404592c1d608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a723158207dca18479e58487606bf70c79e44d8dee62353c9ee6d01f9a9d70885b8765f2264736f6c63430005100032032e2bc0c0ff22609eac8f10e1c8736f3e780dcb85055451e7ac674e2667ce4b570058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56304501db03ecf300582103e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0552bc82346b125e21af9685fa629b9bd9d56348d32440058210366cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688054c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200582002575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5820b73002977f7a921d00ea2ceae62e84aa6c739ed1af5d2e827341affa6f651e99005820025a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85502ef738cbf907356636685fa416c08696ac5c309b402184400581f02e257e98749920f079c806953e0129df22aca1b5060fd814f8b684a2728b3410100581f0266c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7410102190204014200f600582103432903a0d939005005c35d6b3c91f991de7aaab2b261dabdd70424fcc29326004501db03e90b00582002f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3582065cf5fa30000000000093dafbfc84712a218000000000001a17653070c4e80bb0058200252222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f549e9fbde7c7a83c43913bddc8779158f1368f04130218480219f44505581e0376d2eac2897b11b32dac81b81fcb6fa245e571f0c1c23e6d28e7ed00500701192c1d05581e03e3596cca07971bee28d4f7363be4d8e6c720a382a8292af73ded53fdb0040105581e03366941e9597fc49d153609a888bdc75e5450deea087c5f0611f91827300c1821471485b42652f89e05581e0349b55ace9b37869628798c01d3a6cf4accfa2ced1c83e8ae740820c89004110373efca8acfbe544c8ecb7016b28cc776fd50a99ff19b848bc15cf31b5dc8ed0d02195f9e03e8c46238406f0d1b98ef136d648c28e2e8b8263391c554e9880c161fff165cbc0219ffff0219ffff03c47d5275fe855b7d46701da078bec769e285a35a64d77d91b25bb4bf251ef7bb03297c29d0f390b5b65f6ae34cd85557acd49def0190974947409845cb46a105b003d600f6b67ffb988d6770719115ac25d166a5618f731c2941b05c46257f0f765503ae450d3a7931a3c1a2d797fecb8b532b2a416b011c5b66eac4c7a83c5ae15daf03733ac70afb68cedd7251f39375e8dc794165c34d8992a28c1a6e5a01cb42f41803ffbb9d63f88897c6ffbe2aa9fda8b87dffec04851e6d8d3e0775d7b396c584130311d88e5c395d975fbe216255c16ca42c588a712276c49586d4ff3cf9fae1688a0219ffff033ef8ae4cd7a240131254d9907625ad2d3616109d08815fbbfd5aee912acab2b2036aa54ca1e4f12f7f0207d3e512b4ce190bc18ccae85dd73565d9242eb5e7c6c103319913649e465932fc2243ed0047dfea864723fcf47b7de527bc4e974e9f1d6e03cfbd4d08fd9e1de875ff093bb45e8a218788f5970a14a1e90c80b02c4e854aa803100eb15c41005be0b31fdd22d44d97c2377cd4f1c8d95741532724c06be01905036417964ffa371c57e6f395e400bed05db58f626794555697abaf5e16745ff885030831b0dbf4d1c827c664a972dd16c58cc551f8874c30ab70fefdc66525cea43e031ad2f3f9d09fe09f04845ed7ad6b8e1a4fc5647dd25b8b8304fcb7668938d37203bcae8b659ce47717542c4c1749f0a2c34be0d5fe9c46d103cdd66852fff07ba703cbc536abb71f20e84af17bea2cc3ab6eac3c2fe56962d098c942b1b1578616960362649e2b63c97826ba896d600683c001438d9b10adb8436c8e91073570fb444f03c5577f2182fa52a3b43ce239d0d5af1dd880d26d8175d0a8525c0732d8b96610033f7c3082081fbe4203fd093095d9ff976f09a8346eb87e2afb5c33ed617007c20219ffff03263e78c2c2ecb01c326d913ec44010a5949ec8d8e2b0483cd67d11d7b93e991d03cf8f99b839001afd8fca3d13b0bed66b9c96375bea0cc5ec0a1344c88ed421e703c03d2180f03d00062beee405ebab84c5be230cd8100f0de54866251f12157a9603d7ebd4ca0460d8102685c92e5d03bc95a785a25c63e2bc34a8886ff642ff10a5035a366cb6a84f62aef78724cb22841a25098531cef93c0dfbc987eab478aa8e040314f43643e29c03c21c20958f4db255d2b3a2f1888708ce8be6fc00256de8862003808f5b817c9ef3c39a4f17c1871432671bead67a2f433934348aa261ac0be77603f8a6aae111f30d1f0ed6666bcdb9f835266685113bc61459b35127d6887ba4c40316c1b019f7cd665ce6b3252c67a0858b88a147a7a8291870d780585b7a92847d03094265900c976454fe42db08b4d728fc462700183a2b3d446d195c55f4c7251103209b8c33ca4f1acfb8fa7091164c40b38a03a24510c24832ea0d7f8ba37467f603ff1422c5fce899621581ef95eab73efb46e5fd530f4c0cf0447d81a30956df6c03e2f6538d24ae024739b843d26699c7df0947549b27b8f2380d8cf0e55dca58ee031dd09da6c3f2c1e38b6f91f10f829c61a759e62bb9aa3b6d8f1de7ea08db46060398589bf5bd087a3fa0c0b2dec3a1089336cb7846696a0a392fee264ddba1cea003a735abd8fc0586fbceac1ac1a7472a2f4898b4c601a9a9b3f1590a3f69f4a1e903396ef29935567ea809496029d14d2027e8ec312ecf7499f280a203f4aac7014d03ea7f236df86cb2aabb31337600179807caef5bdea8c405ed8676f1d4bfedee0403623cbf159197c45f809d7167e876912c42640aa6629fdcad4cda3a0de803905d033d60fca5c0df5a9d9a70427488679edceeff74b88fb4a71e5256ca89b36011af03c1159efe6b581dd8726a3f5a892cf99a681662bafdb5432442537be893bef21c033e3f138dfd37ea5fda09897df32334d848ab83d9f95a5f305cf15b4ce1f90e25033f20574ac973dc6157547709cbac0cb7c31baa2da17dfab35e9c8da6b92134cc031c6bf571f4a6d789d4be859c7bf5d2a0ebb03f319b10b04496d622391d9d2632031fc1badfee7a6b662a27e0b182a3362d8dc0dffccb42eb4c827911c156482ebf03b8defcbc8f20b79fdce12b4f0c3a2e13ed8aeb9c4ee0621a411c8717cb50505803ed4ae5fa47b5e981e3c4d006dfe2170de7fca39862936d8910a2142ef0500fc203f339b60b343ff744c8f79351ab7b107230b38a99680343d862ec0d9f7429b9350373945e16f1ea6b13c393411c087e6d69571ff68e9578c5f2ebb0a3d8cee01b9403eb1dc98b4de131e954727735765515f50b9438fc94b08ef5a7c815e70a903a5103b3da505310032b1cef8b5f2292a85cc526e7f85e1ed1d195ad081dd85468e2d203f88cc9e4a2338b6b02e694b1e4056b464444eaf1d445175e6b4625ca0798cb21034c7a79fd5fa2bd35628d79c6a2f03c8535b634f4d74081f4ab6af320c412f59603a7a293a1699408e03be2f671049d440b8437a643fa20be6066fb5dbc0cc7b3ff05581e03db6fa8971ad16c5dff0df61c983a6c5735b13dc7d2ef55a5dff37dc6100c0147012ef35e16650005581e03829b8b434022a63cba8fe236649a2f2cc1c1569878795dc6ccc39487b0040103562d59a51820d47f520c975e0b2bcffac644a509749a3161f481f57b6e826d210605581e031cc3c1014051f7421eb11f39d4bdfafd216f161720ceaf06e74cda37f007011bffffffffffffffff03d9341e9a79236fcf78e02523d3655b8297ec4328c6f1577d949e7d07765db30205581e03d87c983935083aaf8af636694de96453713cee0fc83260aed3eb33b4a00c01470124efdd56e98b0459258f3460ff164360ff161473ae2fc483527b8ef99eb5d9b44875f005ba1fae13331416602857612418565b5f355f1a60061b5600000000000000000000000000000000000000000000000000000000000000000000000000000000022c0d9f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000005b00005b5f5f60a45f5f60246101825f393460415260023560601c806024525f5f60645f5f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150608460595f396004601646355f1a375af160fd575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b0023b872dd0000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60246101825f393460415260023560601c806024525f5f60645f5f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150608460595f396004601646355f1a375af1601a9081355f1a60061b575f5ffd0000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60646101825f39600486601b0187601a01355f1a37856002013560601c806024525f5f60645f5f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060a460595f39600487601601884601355f1a375af190601f019081355f1a60061b575f5ffd0000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f393460255260023560601c806004525f5f60445f5f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485af150608460595f396004601646355f1a375af160fd575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f393460255260023560601c806004525f5f60445f5f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485af150608460595f396004601646355f1a375af1601a9081355f1a60061b575f5ffd0000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60446101e65f39600486601b0187601a01355f1a37856002013560601c806004525f5f60445f5f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485af15060a460595f39600487601601884601355f1a375af190601f019081355f1a60061b575f5ffd0000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f393460255260023560601c806004525f5f60445f5f73dac17f958d2ee523a2206206994597c13d831ec75af150608460595f396004601646355f1a375af160fd575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f393460255260023560601c806004525f5f60445f5f73dac17f958d2ee523a2206206994597c13d831ec75af150608460595f396004601646355f1a375af1601a9081355f1a60061b575f5ffd0000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60446101e65f39600486601b0187601a01355f1a37856002013560601c806004525f5f60445f5f73dac17f958d2ee523a2206206994597c13d831ec75af15060a460595f39600487601601884601355f1a375af190601f019081355f1a60061b575f5ffd0000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f396004602a46355f1a3760023560601c806004525f5f60445f5f60163560601c5af150608460595f39346021525af160fd575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f396004602a46355f1a3760023560601c806004525f5f60445f5f60163560601c5af1506080605d600439344652600460595f395af160fd575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f396004602a46355f1a3760023560601c806004525f5f60445f5f60163560601c5af150608460595f39346021525af1602e9081355f1a60061b575f5ffd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f396004602a46355f1a3760023560601c806004525f5f60445f5f60163560601c5af1506080605d600439344652600460595f395af1602e9081355f1a60061b575f5ffd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60446101e65f39600486602a01874601355f1a37856002013560601c806004525f5f60445f5f8b6016013560601c5af15060a460595f39600487602f0188602e01355f1a375af1906033019081355f1a60061b575f5ffd000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f396004602a46355f1a3760023560601c806004525f5f60445f5f60163560601c5af150608460595f39346025525af160fd575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f396004602a46355f1a3760023560601c806004525f5f60445f5f60163560601c5af150608460595f39346025525af1602e9081355f1a60061b575f5ffd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f396004602a46355f1a3760023560601c806004525f5f60445f5f60163560601c5af150608460595f393460081c6004525af160fd575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60046101e65f396004602a46355f1a3760023560601c806004525f5f60445f5f60163560601c5af150608460595f393460081c6004525af1602e9081355f1a60061b575f5ffd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b4646355f1a60061b562e1a7d4d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b60446101e65f39600481601601824601355f1a37601481601c016010375f5f60445f5f856002013560601c5af190601a019081355f1a60061b575f5ffd00005b3446526004610aca5f395f5f60245f5f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15f5f5f5f47335af11660fd575f5ffd0000000000000000005b33ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b60646101825f39601481600801603037600481600201824601355f1a375f5f60645f5f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1906006019081355f1a60061b575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b60446101e65f39601481600801601037600481600201824601355f1a375f5f60445f5f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb485af1906006019081355f1a60061b575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b60446101e65f39601481600801601037600481600201824601355f1a375f5f60445f5f73dac17f958d2ee523a2206206994597c13d831ec75af1906006019081355f1a60061b575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b60a460595f39600481601601824601355f1a375f5f60a45f5f856002013560601c5af190601a019081355f1a60061b575f5ffd0000000000000000000000005b60a460595f39600481601601824601355f1a37601481601c016050375f5f60a45f5f856002013560601c5af190601a019081355f1a60061b575f5ffd095ea7b3000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff52bbbe2900000000000000000000000000000000000000000000000000000000000000e00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b6044610dbd5f395f5f60445f5f856022013560601c5af19046019081355f1a60061b575f5ffd000000000000000000000000000000000000000000000000005b6004610dbd5f39806015013560601c6004525f6024525f5f60445f5f8546013560601c5af1906029019081355f1a60061b575f5ffd000000000000000000005b6101c4610e015f398046013560e4526014816021016101303760148160350161015037600481604a0182604901355f1a60a40137600481604f0182604e01355f1a61016401375f5f6101c45f5f73ba12222222228d8ba445958a75a0704d566bf2c85af1906053019081355f1a60061b575f5ffd00000000000000000000005b6101c4610e015f398046013560e4526014816021016101303760148160350161015037600481604a0182604901355f1a60a40137600481604f0182604e01355f1a61016401376014816055016070375f5f6101c45f5f73ba12222222228d8ba445958a75a0704d566bf2c85af1906053019081355f1a60061b575f5ffd00005b6044610dbd5f396014816002016010375f5f60445f5f856016013560601c5af19046019081355f1a60061b575f5ffd7c5e9ea40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b60a46111b05f39601481601501601037601481602e01605037600481602a0182602901355f1a3760048160430182604201355f1a375f5f60a45f5f8546013560601c5af1906047019081355f1a60061b575f5ffd128acb080000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffd8963efd1fc6a506488495d951d5263988d2500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000062000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000128acb080000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a800000000000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000001000276a400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000062000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000005b60246101825f39336024526004356044525f5f60645f5f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af100005b60246101825f39336024526024356044525f5f60645f5f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b60e46113fb5f39600460166015355f1a376014601a60f037602e357d152100000000000000000000000000000000000000000000000000000000016101225260405f6101265f5f463560601c5af15f513460181b1160205160445114161660fd575f5ffd0000000000000000000000000000000000000000000000000000005b6101046112d55f393460181b6044526014601a60d037602e357d155200000000000000000000000000000000000000000000000000000000016101225260405f6101265f5f463560601c5af15f515f036016356015355f1a1c101660fd575f5ffd5b60046101e65f39336004526004356024525f5f60445f5f6084355af100005b60046101e65f39336004526024356024525f5f60445f5f60a4355af1000000000000000000000000000000000000000000000000000000000000000000005b6100e46112d55f39600460166015355f1a376014601a60f037602e357d16c100000000000000000000000000000000000000000000000000000000016101225260405f6101265f5f463560601c5af15f515f033460181b101660fd575f5ffd00000000000000000000000000000000000000000000000000000000000000005b6101046113fb5f393460181b5f036044526014601a60d037602e357d16a200000000000000000000000000000000000000000000000000000000016101225260405f6101265f5f463560601c5af160205160445114165f516016356015355f1a1c111660fd575f5ffd000000000000000000000000000000000000000000005b6101246113fb5f39600481601b01468103355f1a37601481601f0160d03760148160330160f03780604701357fffff000000000000000000000000000000000000000000000000000000000000167d16a200000000000000000000000000000000000000000000000000000000016101225260405f6101265f5f8546013560601c5af15f51826016013583601501355f1a1c11166020516044511416906049019081355f1a60061b575f5ffd000000000000000000000000000000000000005b6101246113fb5f39601481604b01601037600481601b01468103355f1a37601481601f0160d03760148160330160f03780604701357fffff000000000000000000000000000000000000000000000000000000000000167d16a200000000000000000000000000000000000000000000000000000000016101225260405f6101265f5f8546013560601c5af15f51826016013583601501355f1a1c11166020516044511416906049019081355f1a60061b575f5ffd000000000000000000005b6101246112d55f39600481601601468103355f1a37601481601f0160d03760148160330160f03780604701357fffff000000000000000000000000000000000000000000000000000000000000167d16c100000000000000000000000000000000000000000000000000000000016101225260405f6101265f5f8546013560601c5af15f515f0382601b013583601a01355f1a1c1016906049019081355f1a60061b575f5ffd000000000000000000000000000000000000000000000000005b6101246112d55f39601481604b01601037600481601601468103355f1a37601481601f0160d03760148160330160f03780604701357fffff000000000000000000000000000000000000000000000000000000000000167d16c100000000000000000000000000000000000000000000000000000000016101225260405f6101265f5f8546013560601c5af15f515f0382601b013583601a01355f1a1c1016906049019081355f1a60061b575f5ffd5b60046101e65f39336004526004358015611b13576024525f5f60445f5f6084355af15b602435801560fd576024525f5f60445f5f60a4355af1003c8a7d8d0000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001af000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b6084611b2b5f398046013560e81c60020b602452806004013560e81c60020b604452600481600801468103355f1a377f1af00000000000000000000000000000000000000000000000000000000000006101245260405f6101265f5f604886033560601c5af15f5182600d013583600c01355f1a1c11602051836012013584601101355f1a1c111616906016019081355f1a60061b575f5ffda34123a700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000004f1eb3d80000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a800000000000000000000000000000000000000000000000000000000000005b6084611d1a602039806015013560e81c60020b602452806018013560e81c60020b604452600481601c01468103355f1a378046013560601c60405f60a45f5f5f5f606460205f8a5af1956024611dbe5f396fffffffffffffffffffffffffffffffff6064525af1165f51826021013583602001355f1a1c801591111716602051826026013583602501355f1a1c80159111171690602a019081355f1a60061b575f5ffdff5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f000000000000000000000000000000000000000000000000000000000000000096e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f000000000000005b5f5f60a45f5f60605f5f60445f5f600235805f527fc02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000060145260285f206055611ea45f3960155260555f2073ffffffffffffffffffffffffffffffffffffffff1660446101e65f3980600452961c6004601646355f1a375af150608460595f39346021525af160fd575f5ffd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60605f5f60445f5f600235805f527fc02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000060145260285f206055611ea45f3960155260555f2073ffffffffffffffffffffffffffffffffffffffff1660446101e65f3980600452961c6004601646355f1a375af150608460595f39346021525af1601a9081355f1a60061b575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60605f5f60445f5f600235807fc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000005f5260145260285f206055611ea45f3960155260555f2073ffffffffffffffffffffffffffffffffffffffff1660446101e65f3980600452961c6004601646355f1a375af1506080605d600439344652600460595f395af160fd575f5ffd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60605f5f60445f5f600235807fc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000005f5260145260285f206055611ea45f3960155260555f2073ffffffffffffffffffffffffffffffffffffffff1660446101e65f3980600452961c6004601646355f1a375af1506080605d600439344652600460595f395af1601a9081355f1a60061b575f5ffd00000000000000000000000000000000000000000000000000000000000000000000000000005b5f5f60a45f5f60605f5f60445f5f8b60020135807fc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000005f5260145260285f206055611ea45f3960155260555f2073ffffffffffffffffffffffffffffffffffffffff1660446101e65f3980600452961c60048d6016018e4601355f1a375af15060a460595f39600487601b0188601a01355f1a375af190601f019081355f1a60061b575f5ffd00000000000000000000000000000000000000000000000000005b5f5f60a45f5f60605f5f60445f5f8b60020135805f527fc02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000060145260285f206055611ea45f3960155260555f2073ffffffffffffffffffffffffffffffffffffffff1660446101e65f3980600452961c60048d6016018e4601355f1a375af15060a460595f39600487601b0188601a01355f1a375af190601f019081355f1a60061b575f5ffd00000000000000000000000000000000000000000000000000005b610126611b2b5f39806015013560601c60c452806029013560601c60e45280603d013560f01c6101045280603f013560e81c60020b602452806042013560e81c60020b604452600481604601468103355f1a3760405f6101265f5f8546013560601c5af15f5182604b013583604a01355f1a1c1116602051826050013583604f01355f1a1c1116906054019081355f1a60061b575f5ffd5b3273ae2fc483527b8ef99eb5d9b44875f005ba1fae1314606060845f3760605f2074ff1f98431c8ad98523631ae4a59f267346ea31f9845f526020527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546040526055600b2073ffffffffffffffffffffffffffffffffffffffff1633141660e43560f01c5774ff41ff9aa7e16b8b1a8a8dc4f0efacd93d02d071c95f527f6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e26040526055600b2073ffffffffffffffffffffffffffffffffffffffff1633143273ae2fc483527b8ef99eb5d9b44875f005ba1fae13141660e43560f01c5774ffbaceb8ec6b9355dfc0269c18bac9d6e2bdc29c4f5f527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546040526055600b2073ffffffffffffffffffffffffffffffffffffffff16331473ae2fc483527b8ef99eb5d9b44875f005ba1fae1332141660e43560f01c57000605581e0301f6c3949c69f9617d8cada9fa07b6fda3ca62cbb047761f4b81f57f500f014701539d60bab84819258f05581e039d23217cc1d0e25898a08368730ce1c3b413b7c4726dac94a5bb635c300c01461319718a50000219b7960344f69efc96b5d710a1abbd3de340aa0c5b19f185f5f5af0aafc63564c49470ae037f71f69d7ffe6eae84c543710b1e63632992124d6efa05b9c9eea1cecde51c3803d30be93feae6122c5c83fcee4ade19d8593dc0e77a70a1352fbb785c9bf740e303408ff80ceb10dfee2c5172ac2b00b97725e08b421f8afbfa60eb18f29dfb64380300254560b9f93c0ae534fc8ef874e98b7bd17b8fbb1ff4749952add33408696503d16f183da84481cfbd79c3b6c17a2a7640a29d64af2305d38bded0603756548903afbbd44d1035934b2a5e002b0a9d4da379ca6bf12a26733a4a21b72bf308688d03d9904ae3e52c3563d7f895ec9d4c69693cbd56916be499561bea193442a13db30393eb3d942ea02eb0b8981a284886f44b6a1f2ca9529f288a0afe64f20925809b0346ca8f23a3aa58be5e6f8b317d0e816294011f3e17463ed636aaea1ea255f3fe035290850ee2daa65453f3c475815e68b6d6d7fc8cfe02ab05ce6a365b55f7e5580219ffff0308bcbe1e77152c55aeb289421609c72d4840c442f4814f04e70dc7562d1bf9db039d81891c5d2f490c3476628bd0dee50f0b2c59b04936e14b6504d3bc38de6ea5037e36898afbf03a5b22da3a7a344dab864c5197cc41f6fa21d21bd9b0bf1396150396767989914d58a550d23b6f74deaea46038390f3dbc86b11d27d8aaadeb38370219ffff0219ffff03e02e7a625c1d2b58c584c3faaa9d8d9a805a86cba7348de8f107045a566dfbe0038a21425582d206c56c0299fb1ec2ce460d7efc93c74782c4f0ddb8d4759b92d003ce0381cef54e33fd2879682803e2b3b61820073ad8267542b8f95dbfead60a0c0339c2ff07b8adb3428f1b927a455d7f08f8d18ea6bed4425fefb7b2ac5857393403a93670b3765ce75c4b84af1b1ee8dbf50a097a54cd03d7f2a0bc1170a21b458e03b15e47487a3e6b993f6eab695f5cec6d04e49eded15e09cdfa03eba94ab16dcc03b65efcb505f6da7cfca1ccc4547383e15462e2a415db205862d41658143a475e035fba676c58b437a5a5a64249fdb3fa7dbec751f54f167e240ded0a2324ce38880395973bb87b5d88ab4778580f0cd48d7698cb5bad10d3a72504e1fec61dd24da403405649a7a763314cd97968b58df25cdafd75a746478baa157bc483bbe3c7a1df03bb9920ebae59b43b3bccd50d7d160e8fb7f06ea9eff1c3c979f7c5a49153b43c03e5129ef9780100869a9faaf43d334c19b45707ef34c914834667d1ac03eece33031f359bfad93710c88f17c4170fdbcc623277b952dbd4d62748c6fc268f9047980381afdfa7774209fcb4bc07f91ec04ebfe1b89c69a9ae1ebe2bc43536e45d46030314ec32550afaeab1ed605a3a72100325cb76c0e8fa24e3c69438aa77a1a4f74d03c76fc44ec84125b9611cfe7b65ae97a94e4c3be48cc6d956ab81073e3ed5d0fa030bbf75bf642c80da34b73dc943a30c7f1b3be348bcb6d1e2529fdd51449e08a103cf160104d02da84a41724719c27da09ceb1a51b00928fefcda317edcf309825903430344155e34189a33e11dc4c8ad6a9404df9870a2e18ad0865721f7c1f1147a03bce449afc50e44019e3aeb75e9f2d6c72042d0a20464b69d61eb2d3f2ad96843030531eb4a0afef3cb404d7675870c3c49efd29b9a4b859ddaae94c36310b7ae0603e752d314fe049bd7c6ed39c67d2f1f639c45eabfeb257b9147fdd57481857e3c03cb64018e30deabc41ab7512bd25329679bec782bc7628f4f0a116407316e648303894b6c455abd1c361917145aa5eec85d66b43da4327f92f9abe6b738ba9323c1037231449890315a74a2d29846f6c25d573b12d5c1222989c4588d400044406d2e0368ebaf5ceb22e2bc333432b76718d6c36166d1444ea4dbb2dd5d53b77494290c030207bd1b438590dc2ea4773092ff6840b379c1206859eb63b419a18280273513034c42088bd69508dc161cf6548f23a976f09ba9bec3c446d4a2cb7bdbc95a323203c286dab82a74c887eb5d2eb399eb414c81f1083efb4af7d185086646598e62fc035b9e9801cb4418702c6b8d3be24d9ee539bee1721f92fe233a0d95ba588e81db033661a6bd0c24511a05b40f8ae74c737f47d0df70bbf3c7a0816810ed90a8442603d6b82b5896be46433e7349f5005e0d5958dbc3747435483d956149bf9a41740b036af61ac19cd4496fb6d376dc38a8165a2561022866ce6fef41f8ade0fd2a407b031d942c5f793bd295e61894015b65c2a0b772da5420e868784603db7d45fc38ab034f96708c335dd6364f8c5b4fc62edf32f5fd9a7107a99be1e9f6914b4093b88c03e3981f17dbc1a00258432c0e34232f267d05e271590ee7a9783a51870f9873c8033a7c4e1b76aa60dc9d631272c2ce6a72e82914e0cd8ffc759889d5f24cdedeeb03ca06c2b4c97d9941e56c3c752abe4c2b0b2cd162e22a5d25f61774dc453deedf05581e03da7d3b581a6515e83a053ac10dee614e37c74397b0001f77359de74100040305581e03e08b15e58c41c3c9db35bc5268e123e5e61f633bd60f8dd66ce320d4d0040105581e03961ea71a2092ede541a5313d58a72b669c614b45d7c9e73ab7f40b85d0040105581e036be6c90bff6b129f08f2d3732f40a37dbc9a95e1c60843ed138e4969d00c1836470135ec955aed3303235db60b9fecfc721d53cb6624da22433e765569a8312e86a6f0b47faf4a2a2305581d024eee85039fc9d8260336899b904d35911f52859f57c1e664281186f20c0147a7a5422d062ab804590c346060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029036aaeb1e0dd249b087cd1c940635994a67018a3efc2936343a1d5683dfb2222a003148c0f2304aec3353cf5ed7568766ce494a21fe011985cddb407f939e9e3784603b1a4e93c311e947a63c609299e2ba2d7c4366b66b7ff9f76a47a9f664e12ae8803977ff6ee86449fd9ebac8463ff545fdb4a38e11385e958bf6277974047b1d236036c4c151180a39edb4fc33f328395429f008873fbfb4e59af8b3efd262acb84e103089710c7a16e171320a10b6bfa611bcca0d1c600363d8b0e93026e86ccf00eb303f43a6e3544d2c39c8401dabf9a56c3833b0a6f076bb84531f56a458fc067e2af039c1e0323f514f23b03257afde58fa72cbe2b64f4b1fbc02ba92903634d4af557033c9ce9384b1306ecaf25eafd1ac442076e44ee9e517bb0309557f1dbbaebcdcd030a66e92eeaf801092919fe5c726811e2e2afc96552fc69f880d0375d795c2c070364e28106c325c81a6deef5895ded24763fa571f68be656b87c26f0ef0e73bd89035e65546b978b0a40324014c9c99e4c5cc66ede9d8c6f06a52b76da37e2dff7a403e6d2a3cf8466027d8ce6c3fd8b8137fcb5d3dc34221837a3c0052493d6d6aea003bc60844ba0c0f950e431ba1ae8f48914bd3615b148b2be4f0b205c62218dd5e603a0ad1e2e5f67d5d490f8de1a408c30dca01085e318971df5c131e63df2a836e403cb985a6e5f969d91cd70fd13601a14e12389fd9838cc92d23bc36973e136359003b24bba13c7f0dd576eebbd075439e3c822e4f06a125e1d43b71197e098555374032daa3bb00175af3b8e2990396fff10297352bd5469719dc25d3919f285399978030b91957a4270f52c4bef2a9148d90d5d7ac07d2edf289a0bb1187768c942a92e0384c1c153254938bcf5833e3266c69d11863f01beebc2172ef140895ab5e8137f036c73c87058593f7a4c5f34ed7a844533bf2ae21f0dcc75be2305cb26502e27d803a7116b013767ee61d04cfc7ee0ef0fa6eb0c6e0b7d9b21b78302c7452509581003a0555fa89a6ac0d1f753c5bc430ca1bd74595c40928b8eb150567bdc1a85892403a2f2c2f85b117e77fbfee593bc7f1a87d965760ab4ceb77e2bdc085c22b2c46403e87a120a0a27451b6271d538a807bb0085c31bfcf491f46298bf79e07f1561b1039504a9cb5fc23525872531ecc2f65ab0bb5b29115c62bc024a8912f1fba1cc4c03202d28845054f6fe6a50978ee6537cc8f29ea9d08a2b9d1c560a3a044f9e8be603ab12089e9f6f349abbebe4f7498455ee8410c5cf24aa2586edea6446e9593ab3036d7c1259ed661bf224d1f6954d7a13a9112f7eac5ea9541142fc8327142c1185034302512bd497d6c6691c4c6d78fdf99b51252c4cf34b284987001796c063680d00581f031843a5260f50654be60454888c12e1df9a8f5beca305d3643235bb2410105820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0314ac2a4037bb9c454b5ff1d341e61930d98f8bbf8d3879fb16bd9c75c9b180540391d0c3f554b53449edcce8701fb7941e35a59dc2ec26b8d30a92a204b5e6f6df03d3da91b634b1a7274b216a230bbcba5e24d92dcb0acdd9600e61d9d3e6a0e6ce034453e289c78c92dd80619ded94bf85359c38c30b8ccfbad693f38d7b6762751003a648a3a6eb8bd75eb1e2494b42f22a94eca6d6f608b5b7aa2ee9b5c0e9ca547d030feb2f389db71094872ccb0acb1ccff2f1aec23fe78ff388eccfd0000edba3ac0306c41f230bca0bff2ef0f2eee1e9f31dc74fdb942d2744b67227fac91ceee0ba03d05faf394c9234ac4e98e507310fdbd59c2580cd987c354cc84105e56caeaea5038101d8390f58e6e7da14d23c8005b95989c7ebde1a3c6982158464c2aaae60a5032e72b7f4dce792eaeeab1c5033624a348c0511b1cc58e47802ebc95995d428db038c233253a52c8d290c1cc6d7784cbcb618436a5b351f4d65c5ec53e05c7b2abb00581e02e45fa4a838b134c920a70c634c9ca44bca01a924b0040860770d1aed8947726d75c93f880000581e02920e6cbb93e03175c156b6576e7c589a7b95ec4418551adbe64a3944845820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0218280393d772a69697218f224549a9e49fe5d9bc8b9c7fd49e7ea79f9713960c9076380219fdff03125272869e4a25821c1cfbea8c449006295201c8a3b3dc92aa3406d39104c8a90349d115a4a345f8a268d6aee0628a37f606c4cd02adc99bee0d669911de16ff68031cac3ecf09fdfd75a2d143901f6954071b1174b117f8f904143cf0421911a13b0398a46da7dd993981a9a8dcaf22ade3299be2a26ef780714b027d49f654e022850219ffff03df92241811a831787efcac462fd390fe5b43ba9dff23ff8a7c31535e602b6ddf03132b10049085bc9411c024dcf21327de2162f0af350e374686035cd48fd66e540315d16c487ef535d0f173a49c98dee30280d70f178dcab63c169934921b6a88fb0340fb1c046cffa79a46c8dfd65d13fe4b7734d4f0de8e5db9b56e0a3c74e0f3ce03ccab9c6c1f535a5c35a33a1cf64e366963750b0fca755702b3b5c1417dbb2dfa03cbb86d45dd9af8dbb00aceafcc979fc30e5aa0cd791c9d803edf2c899c3ffbae031285699058db64b8b3582b409e3336dbbfdc4d9c652586f8071df03934d17e7903982f0f8eaf23a1e6644fd286aa80994e30b4776d9673217bfe49330d9430d6c40219ffff03148ce59153c3b6d3a51adff6fed05e04856b41a1b213cf618eb02a0464013c6003907445856d4e7bd1e631857782665c201d5eaf44a89e6dcc56cb91f6710699a9039b08d40fbd4f420c2c9ce0bc56f0bb68851bed1077a3ef9a09227b4d52e7f34303b079f07a552409694a69868e97b41a31d05b058048fc2b22c31afda30a32e4d2032def77a99f3cea53463e061361a4a5c2a6ebd51b4bce0183b47a2487bed4b9dc03c2b80bb8433cb5be1729135b7cd381feca3c71ee3f8d3081dd78e395521f43b103ec922eb0dd7dddd163f9662050404d3f517b59359c4e488a1ade52b41beb8b290219ffff03f9b1a3de1ddf51fcd02852b050cd82a44af42a31e4ca0431201232bab87fb2b903d662475b9dd7bc4fb29a113d47688b1610d5ca1d97cbe41a09e3c45d776e13c103e43ce858d3bb97be3f11d30381e4b0b5b5d495d4b60a720c4c76977075740a230342b92a6a02d43f2969169120f474850868a376a6f3baeee2b8ef27d72d00d5a70314f0018f0ea7622f10c9c16904d69aa082d2e697bf910dd5bd22c11e4343da810390fb0cdb6d73176293d1bd512a8eea879edc3f7761cfe65860cd54d5eb05da360323bc64835d47eba09af91d3d699dcdfc662f646e18e27614efa1cda0d15a885003d44a7b9d01e902fb5cea241748244a1ca359cd7b01b2c93c3561c6b8d715812a031d5dcc5bec9cee90eb95da8c3e5ae9554113c5620a4042832dc2f2a0d38bf7ff0393b1047e44528ddf116e8ed492a6c212860705c19664cdc6a239ac6bd165999a034b78d73443410fe7e26a2651584ebfd40f664016e64de6eb1ee5512ce60b8ab9035f58b8d1c6795c7d004b3a0d7d66693db1d42470826e7904aa11ac26ba5be1d903ada595f73bd0c03b8674369a0b872da7a416403a407fcaba17b7cccf8c441f0a035147c2b7234b7f98df9b329bffdef77beaed68d805393270b0bca31c0974e20b0341f585d1afa7058de9c4ff75e578cfee0547740d52761109429e1a500048b8cc036e000c659ba7400fa969a30b46bc8456a87ea85d4e8dde9a6d0a9f2b362220de033a4e8dae42372574bb9b956bed5599265ca7f77ef6ebc02fa4422734dd492e22036eee0803e5c6cdcdfcfe2d5d87413d3da3a75b981e35cee98f1b116321f6696c03432cbd7efbaa89401c5517539e8d5fba8caa121bc6bdcbd305cc8caefa1d05580345f92df33a0fd133c2dfc6d1d13eb684f07677d672c5f645508a620d143bd26e0323d9ebad29e4e7895ad2185bac3cbc7ce6fed69f4c9145fe7f2c7b25009789b903519e65d019ed3c6cef529cadefbebb066c1290e7d2ce262e11daf1fddcb1beca03c5bfea76dd60de9c0c9c74275e1780cf1803d2c1432e214659eceaa9ccd8fe3103f6ed084f430bffa399efad0fec00183805450aa056dbfdadc0101fac40bfcf33037b812d3d2422b715d9011dd10dc45cfb80de8d0e2d036c8a985d695bf236f88003730022e3f37dabd44ebae9f0b8ba59d9e9bf5d9557641ee8813b57f57b312d2b03b9cc9bb14776136d03fcb066764e3d75df42bed1fc4c2618fc0db7e3f472c0bb03268e78e75296e051471665ff51a2c6ee66688091ce14d4e4962d238cf183556403c161d822f7e345d1a803ecec4dee41f647129dd2e4b3e121b41eacbc90334e93039fdcf29c144697781256d8c58c8d5a4647f379da8b38c80046ab5e613452d68503563c67c676cbb02b118096b4986ba589cc4a0c80776bb11d0946f42769e815ad03adfef6aa619a9c61fafc73488a137b2b9067ef7f3084b589a2c36d7d85088a9b03192fb8d2fd62532e258d48a708c613ab0d6f749dec3a705ebb70f0980bffd6d5036ce7b69c284e4d5ff7aa7591172bad92c5ab6539ca0a7cf8bd5bab695707badd03cf71e2f66aaa87e44b06737375fdf40912da232d600f267924e7adeaef734d4e037fe6aa9028fcb17c4218228fa2205bad1d1265207801557f6b71143937908f0a031fce0e35b7afb0734361df0242ee908a9e77ac2e6eb64313dd6123339c4726d6035f95eec9ac279db4f8cbd8c6d73591e534db823119bf835b09e6dc0f91df7eed039a0640a47039e93a2cfda190fd8a488905fcf7bed4c9409e6ffb3ab864ae05ec03de3c56e17f75a7134788e2b302612a64e9cbdfcf2f6b80f576da8eb48e6c92fb034dbebd109c98fafc3ceccfd8d2f5a1620f174b97c667b83a89937ca04f9e0e6603a0a5fe05a71f0bf6cf1ea4b15415e886df2db11aba30e57a1d7a9cffb1d360f000581f03c0989249a6e0cc82ed453bf7ef7c1dc3d5a2f80aaf8ae6c92eb1e4b275304b4a817c417bd859b65ba95600581e020e15399fd39d541ab913f704b29f2ac5a0a1d7c8de1df5fc284ad5bc8e491df6e71091139771710375c66964d75b3c09922d520522ccc74fed954a49cce59678beffd1d6219548ae0219804003897b04fee6fa11c85ccc358e065296b5167fc4f1f98dd3f441739a1bf4f31a9a03df6e21134b4f253174b754122369e4a968a58a80ab8cd11a3ef309b19c4f13d103de9555841e4d38f19a907cef279ed0305a3b40f31b94bc562044c603f21c86bd03d282d00380b4627f3343a7bd6b304f79e9d11e4f2ffa6d682ac37eea2157144803f581a7918745d765bdd33da58b8352443b12956c816c6615b6bf5d46f973968d031c2ac99060a723d5528838eb2bd045c0f26dc8d79db971353ccc45e0c1cdfede00581f03a54502883d504147946f04c0bb6f530de60ef10da9c004d4d863c9e7f5805820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f03d43c201d1d6d4b455cc27e248ac5edf9245e40430e0454431678796079e05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03689ed8ccdb1d6c4d4f631a5783a46562d2ea4b506e0457329cb7e9e29ac7f24203748330133ace753c29d8bd2f4ac82b0a5dab4921cc373a94f99abe6554caddba0219f7ff03b9d58c6d54102f5afbd5ea3a11c75bfb789610fb1e0abd8759f55da391b2588c0219ffff033d0a0631da22140d9980b77198f93966c465732de1316f8e2079845add63833c03308f161e020fdd7549f9640621f1e75125002a27384c8cdd8e272d369acef5b60336f600d07000daed56ae4c73defe117b1a1c408e3ffda727d5120f2d1bac1b98035e7e8b146d15f0d9d5fe1866172ec6ab12738733364add3b5fec64932efbe69a034d3ad34130edbbd33810686af87380324b01411066c8b5bce9caf44aafe16a080219ffff0391753630219fa061da2f5bbe0ef5c8349f57b3babd94191807e262f1f828502a0359bd38fd590136438472abd7c29a908fa9661f015ce766de74144aa903fcb2790219ffff031b4f97035b883df174e26857227b2e9129fdb24b36deaa5a40eca236f51a94d603a732c44b4dc3a649b48836843a6198adaed7c237ffc671eafc13d7e64fe505fa03ba8d847864e282a991307f028f9b7281a7d7c586f4d165dcb09f56f77cfe78f6035c9e8f32e0b80f324d127c1758218bea79b6eeb81118e4188ffdcd3a81af3f7c032a0a0f882de87cddba79fabc4d0ba428d42f81d84b0b8a1a55fbd0ae63c5ecd303c2229cc1619df92fbc32dbdff9f0bf6dd4f0dd22208f9b05f5a7ef3c26467015037aae15e597f24850cd76419f4d056cd60790f99bc9e4f85c0a1082c850e065ca034a14ba77c23dffaf345269dfacaa6ef720cd9639d0850089be0cfb8a5c4ea70503b93a185db5df4e8a695fa9a15cc14bdf440116e6ec9e102adcc9bee22b93dec8032b6079aea46d6c438bb050bf5963f870e0dd4c28e9a43d877e623ac77e68a11a0310c1d6d60eaf244100f27a39d49930133dc409eb9258daa3ee72fb956ecfb57b037a8c38e90a9d3084f29661f023194abd5e179f7ac382372d4181fd11d6248b52033a7472560c188f46db9f91529eabccb22c24b91a87c8bdb67cbb2020f044ed5f031c92c2de4f649c5eb7fef1f2dd4a07b967ab986d7812f88eb85aef63ba7e60cd031ddaf463cc5cd0afd40d8405313b3841df1b66bcd27f84ad3d83a9765c44ca24036b30f6fb68ee486958d2908882abbaeec2e8215b507a05dadb0203df41b2e65703628c77db566123d1c06e8c8e61064897b53b6cea5c92bfc6b0590a83e78d17dd03e6a08caae2e5a19a6534699eaa45126089718006fadd56f2d9a00d729cf59e6b0367a2335b37fe2c18ab910b5192609091f4cf83bea3a3eff7aa1c8f65ae7710d303f39a7571154bce8d4066e6a8ade370697e1647a658257511b21a6133b6e6d3b00315d2e9a20cfbe215473da0212f0c12369a1f33a4108da61c7fea3ff06db3c7a70394afd1fa51d4b995f81c07c01c85fdcac96aa2a9ddec53ebe795e833c35e992903ac1cc00f3fe79ffe8d00762c41c60e76267e271fcc53f0238cf3559aadc86dbb038e184234b198d6818c586664b1e53c1e6d0fda0e337d14955a1fa07eb268a50d03fbd188de5e001d9973e5e272e8dcc3ed3186e90800b0776d3130ace932690fb003bc6dba6372569631c952556be8ca7cde85f5b5e9de0108b890be17ae8cc2c2e800581f03294f295afb1fb36ed7571fe230a68b51c5c3c4c821457dcc320532d1a5005820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03e0613854285ed12abaaf7127ff70f49a63802daac845d4557be198856d9ea9b90378cc22eee8530d3b50daa2823cfad4b4e5acfed898b9c28f95947beb99872ca800581f034b9a6da6cd1bcd3a9de67e96d96524297c2e634e18f3d3c1e138eabd25c05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03c3eb294e14a1bd5ad7baf12d63c1ad76056b46288afd261e3d8eae3a491d5e2a03d70c61dd6483b5bc2e54aeee9617f7cf1ca628305bfc238521ee56875f1713560384646eb05e060a331358a63f775212368d63e5a3985ab960a1f97443eaa99f0f036ad2d024007efbe9dcedf1b8458628baae16bb17b309b264cca6bad64217adb703bd15489bcef2e9989ef1298d9bcf70d3fcbc829f5718932d6d541d70cf373d8400581f0341e2803d7e5d925debf58dea57c47b45d238828f50f5a4d818f8ea3eb6104723bc46c94c540e00581f037b894c13efe501d77927ffae71a82cac6051a36300e9aaf3cf22b1b2ea005820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03b3eefa67d5ec7a16ae007f84831c4808e90ecec458a93473b25d75fc06da8ded00581f037a0bf43238cbbbcb4003c84bd021dc80e136a57d38690daa4456ddb1e2105820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03f4d344b699fc1351d2d5f811ab43e2955f8083919dc072cabd0f73a546b4036b03c38d53019c4c8a58fd13f428b88ebcc41669a692369557a1885c3bd4969e16c800581e02c1ffff3533ff4434a3aa1ff6351a7237cb7d56a977c7f3c5fc6096621e5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e022d362f510f31d6a1c57f07a71fec7b413c9eee230b8a1631f1d21b9ffb5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02b9a1bf707ee90667e23724f818453bc614d7e73dbd09ae8188c15214f44718de76816d800000581e0260c7e41aefd4f58ccebd698a2a4697a60d7dd9f37aa82afc17df08d6124a010eb8ff5c6ec42160fa0219c4480219ffff0381395b5b5fbc64d007974cbb411f14107821e0e4557d1fa9d1f15f6f11838f0703041892c1a86f45af727708f25863a0f5eb4cbecb7e4e4d5481db08c1e91573b0038d1f618fd079e76b67453db30ca563a9dc8ce7d42a6e4696cc5b906b83ce867703535c5bf3fe78626f07f85b8cc4f8236f1e4605de32a4b4b0f1459aa1f2395d90039f16b03bf2313e5fdc28dc859bae6824a6a1ebb609333d02b57c947de0c2762303d735b32cd1ab8993546a9f1c2da70b5d2f4758e9d580edfdab69545d12642bd2035f0c20453cab9d341d43604d67cb307569de9d9a45db2da03f696b8c3a8779df032689569be474a9a0f3d3313569234152f66c72a070261385e34865ee7eb16d7b032c07a96120fe4b00dc4f9a37b591a4fbc868352fa8880ec26d7fb7e8e725318c0219ffff0328d5997a2f8a381f43c2416233c7ad8e701fe7585a4ee9db2eafbc7619377bdb035308063446ca37dfee4ca6ecdd2b8a34b32bdf9d3c619468c7616ccb2446719b0312808edbcf03cdf71ba104c290b2222267b6437808b56e622e7f04fcf7f2781d035fbb6b7da7674abd79ec91a54337ce3cc8dd56a9920aac8f2d5862e36c46bda3032df05b3184fdfccfe950c5ca598b7870485656088fffc039590ec179bbe65abc03fa8568eb7a92fb2ec1396a3db34e28cab406031a411255321561a951f79574aa0312b0ba806aaf97816ba1107c8145a89294b4231cb48c88ea01562550a20e5c380318a7ac9e45ea8b80cafcc027831be415e6a219d0d055dac81f909378ddbc17f20219ffff03868664f06f2a5d68459163e168ad49abcd02ff97c45aaf00f6f93f6d61fc10c703a64769496f3f7f7a8d57a4626fdeaa73ba07c90aa25a878625e9f1ce63cd85b103d5a703cac1cf5dd5a81ad74e710bc8f48f66505b61bb20f361ce141fa53bbd0b0219ffff03f30f1db5d3a12552bba64d6e65873c89bf66da484742888fb4962ff4b97db4720341ac2d2df50f3196b691e14c3419de2c89e7f6b9da7be46e5d231de653b87ba403143e864aefa356946424dfffbcaa3c8a34d7552df001d2f93acb23ffcdb736a4032df267b1c58f1f13f86e0a84c4c1ed96731f853f4d58b835a55e930ee8d6e552038a696f36cc00865896affc2d7319a996c92d0b1ff29492868b8b5165f8d497d403a4c9a4448576278e481da8a55ce80cc8623adafff302276e0dc2fae9f02206fe0349609864e05a84269fe86659ebed5d97f831a8dc1b59567b64fbccb0206e18e8030cd72b209304f0e48b7460a1f3085bcaad25729efdfafb492e6efcfcb28de82103e218ec85a367b38d2e76111a1fab3d5ec3e8331ed48f6569af25528b9007675003fc6d8918df4e4caf8adff445099aff73c359e079f7f404db3804b5f6f1d1a64603b8b94dfa9bbd3c7ef07f6c604a1732afec013f501239155eba01de2a1bac14060397d0dca58d635f5296cfdf2547f135a3eb2484fee07345a431d7cd55e7255eba00581e02857cce08c663c4b566cb624ed8465aaa43a6829c5d385696eac1ba1ec25820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02001ba58aca587e5115aaf3ad7cc007018ff8061fbd30a715b71ef8959c5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e024ea07105559d27a7c0a085be03577d0b3be26521e7977b65a6a1e730765820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02c93de13262b30376bdeff424384505a1328e1f2f1ef28ebe40b171ee13491e35893f50e01f680702193804032eb60713a2a32f49d6f54454eafaeb9f270bed84de8501cbe10c76bf412508420312ae8a6ec23cfe12fb64c0445d566e763cf7e5a5ed89fcd52d51dc61d3b76e3f0345e0abb791a9203ea0ad1f00a6448bd2ff06de439bf15095873b93a7a4b48fc003c87edc3b1e07399a45c4e89c9ecaecb87bf107a408dfe5ec144c2d83a640fe1c03d74dd26e53e94e3b49548464fe1798b6704a9e5ad10b00069d67932385bd48c60358727b9aaed8c8de68b1483c2beefe7d50a67e12cb7dc93ca895afeb0cbcd1b20388ee36f1f7d375bfd12bc53efa34b34ae3f2012277ffd71b2e708795f8c2fd93038c0c39bafcf14b6468a868ebb540a2a32b05280295cc64c2998c0d1c9283848203a304a13714ed4c6c39ca2b649e1491da3ea0f09b9f069b06425707ef114e128003bbbe9f5fb48a04275c333683e1e2c859d52f17e0a4c8fa11f07060b47febab7902197fff038eb5d79437ae4753f3a6f7bd8f8dd625067bc48d0a30bce56863841d36e7e2c003ac5ecbb13e65cdaa794f562f372c4f03f2a1fc3a96ab47b2ac4a67757599d82e03e593b2132975c139cb7a3f15b1424dbc1dd432236a98e92a3541aae7e9e7924403fd39061f3e76fee5ac39908af4631359e0ada38938f2a91b01e5eeb04e7fa866030c279ed1d48a4dcc65f1117aef611aaa1371b26441abc123dace170716f263bd03759161ae64aef9ea7243d45a3d1c92c895172be221cc472760dd89c20a0d5a99036c6d8d4068c06c7be7676f2251004a09ef858d748dadd6a600105cc4d989a025030bee7369420d4df0b42b12cb91ea4390067c646b1fae232b4f5cbf62b7c31d0c03358259513b499facbbd32ac6a5a57a5191722d02cdc0c4aa38dcc07a1901272103d3d5dfd8b648bde2fc5c7708510de7acf7f81d687ba25930f752ff3c2889c90b031b45f6115b837e012a5b447d135ebdd153e893d0d3fb414262f6dfe598d14202037e6b8c0389015943d7a640799ef029e67dd93bef918d028b5e2708d1b36297550345ca8a38666165313ee4c99bddbcebc8315f2b23d44863e5b3c55eda4e00471d03e2dae0de86bef66aaf65c03259a46ef89afbe2ee582a6e69cf7819db0fb43bee0219ffff038225ea9e703d8bbb4f6b14051225fd3c46f2cda48d988e792d7cd6544ddc5bd20388c1e701504e631c9504100c66ee5f907fbd37691eadd5e0cce51a670e0835f10331e7fa9afe57fddb017453c3462c3b33f2876d7f488560d6df71913cbbcf2b2203ccfdc1bea81f23ff6f66f6ce7d1877991888b624cb9693e0f8a553f3987d17b60316193561c88dff80996927c305b461f0abb824513f57aa7d44b5efe2236dbf9903d89dc04c7a6fdec1db6068838377ef94533b1ea6d92e96eb15f874253020ebe80382a265fde8df439f535d8580d21215af31265f916867b8a9ea940af81d2fd094037871ef639c7c31c92357bc2e9b234cb80df700511f8765348c4f1808a052334a030c55f471f23d2a26e81a6d49f0ed32558417990024fde3b2609355e0dccc0146030afb0a3715f3b2372999d28054589bbb3c776f65c3498a8d5ba26b018a8b08e903b6a16df56eb6c2f25c244b1805554ecd417bb79f67c4723ad68a1d584e0a6bad0219ffff03abdc40a40d74c909d6c5969ca704a2c47de796e6eb989dbce5fb87abc8d48249036fd93fd4698121574a30b52e86d91cbe42f240cbc117e259f8f0311839e7032b03515ac5697ce3707644b69cf4206246c5517669520f654377275ea49bc4b2a8d103d0adb200f169d166e9e5e9d81af4e093b9041f3d0d1a958a01b0ee569b9dbf6703f94f2d084434d37ddeef352707684367afb4d47958181cfe051740bccbabe8bb03f0fbb7dd9b53dd7723dd25af7ab3de673e600ec3fe173d89367e5815ef07460f036c249ff03bedbe861f0739826cf58c51b2aa49d585abc685db16830172d2bcd9031af8f3406d416763f5a454c3badd4f2a46c6718ff1dbbf88c6236dc087f6a8e7033121a3e0234e42053ab25224b4542b6b0acd3747df58d5847fbb17449c67e845034326716a338902c7a9ab2fc3ea2f3246d127c3f93c431d9f131c813db570fc4b03ec0ae9cd3838fe503bc1b95f4ef6bceb787b61af6c35acaf17985ba22f10f23a035602f7ac1b3624f8a4ad0e267bde5d93cffa770f7692b569fce9041fb0aa5c8a0342346751f6e3da33637657399f21e36b01589b73c0892c5fa47d0cb8021bd7ea0219ffff03d1b98a2af1109990035484b831c6ac45c0fd5984d9d2f521ae969ff0a6a185fa032cac2a24829b353773ed48630305f361398623dda70988310944477c00b8cc5a036a8174032b088afd567906821b0d552929a62cd6abf5867a05c71f543cb25bfa032985f35ac048b808bafb691c38e0be54a43dddd59bca0e7b90cb3fb9d59c6c7b0329870c783a7db76ba69910b51b8824b8d3883cf91c777660dad478359bf9f3ae03b96f9cf6ef94a0ccc8559b5b1d07563d2b1e7b5c997eb4a2c1ddcaad242ee7c5038e5dc4cee2719f0ff12479753f2cb032bfe96eeed75edb399fa8aba6b32eef33036b085a429ae07a3324cb8a84c786b761d95206dd466ce3c8a9b24c03db04596703bc85b450a89aedd07d872bd64a380f41ac8c7d3b4b078b859e2ea6aeaa82338803539c4a0eb0d06a1e7265dd47029b1040de0df55af1c0d03203844500a09853dc03c34dbdbf1534b851000ed8704a263c51393a28f9d7236e2e29d5318b91726eec03631710005e4c266415ae96480ed91265996ca3f9db83de0537a72740a12f6b0c0317f5d82c586888f62692345f5c0a19daa9d6282a2f7e5b70d5e6405d61cf6c9b03965d7be8ecec83fb96be522c9977c8bdba99bd3122184808e3a69d2327f668190360320d27bb5fa06d28e1a1444c3fc79127232fcf89751968d304b01afe50605d037eeba4a194af59c1a397969be20fca14151ccbe8671110426680268276f4475b030ffa72f516be0d7c246c938e08b62f3029b22eb5bc2470e509364b0aa98167f9034af6aa1143bd52da01a5f674d6fd056eb3d64c4404c799da32aecc45d6a1daa0034db9dfc6c07be23ec3bacbbb30bd65da8b4c3375ebf67143a3f78efa8b6838ca0355b89c799b7367a12e3f36916c580a7c05c692c2d7454081332e73c1fa57fba203f426007ed69b6c7184c35c5a09961ea52c877882752c20e696713c89d3863b22038a046a9a03e046600ef64d62c4347fb174190cc68eb5c81d8680aaf6caa4e96b03e14da8e677d7bf1367cf4f82affb1d08dde4beae34d0d521989560196042014103b651ec2c50ab012c0ae178bcf78d72bd621eb995a4223a82cce3a2b37efe3d6d038c40aa81e345d742ac16f1847b9e923d01ba1071da92df0aa577accd62f2ce8e03cbbd81ab6eaafe10f46f41d716a332e8735dc6e282d130cbae6b2696c1f827fa0365e3c2140950f1882fa2861c42442ec159616b1c650b4201b9c5116ed271263d0384457af785b22b9927ed644b78e149e88d3e2f07c2665584210f69625824c1830323854148a2abec26ab9ea4ae470f21ceb558744f45ea8ec4c2190a97a08c13ff00581f034775b60761b266b809fe7d7ad099f545463806f29558e5339d6f60fd39b05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03dba806f7854e36e2d5a172bdad964f8c2ebe8494897a7f9201dc9d9617861f4900581f03369df2687b35cba76c7755753e5601d4bba7cffa868a0b7d5192914dd6405820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02379ca9937fcd73b8cbb154d52f12bb04c1c24981a6281db4d50dbf4d684755c19bc993344800581e02cdc6f4fbaf1017b1c49cf6308a872edbd711870c25826a213a8280fb015820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e0263462a3822bf8e70995fa3e5afb487c6ab731941329426ec54703d35395820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e022d20f4b110ec13d9092915f0bed4a9dfb442bdaf885300b5a183287b85485c318124cef2ce8b0219121803f17e745ef63ebd72f822d01488cc0904536de816367dc56f0876d6922a783633038b5469cc0b44d2e9db0b955f797446486be8fdcd9394e3774a948e833e7d24bb03072cdc30ac11e9c80b5de8e4abdf9bd36f24346bc6b2d15be33af85d85559065032ba8750770e5a4c551c4c1837bacc16df16f760c54f83e6d434955ef84379b3203860222e57f686c9ab066d727165c4dc48c74360fb76329bab343bfc0fd0f65eb036c3dae84239b7b12d856e7639b4f5919c4366fae4112938ef721bf8fb063b0f60380fa2331e74be8763f9943e30785578e8d6fb354db499af617ac315e2b08830a0219ffff030a6ce6fe02bff1b75de7cf089b9f07ec04fea3806600549d7a97b932ba71988803af8bde051d20c605930c1a02adaa96e2e050a242c72bd6052b313473dbca192f0390328e18d1816b34757e05be47f31b577730daeab53124da1113016c3d68a487036fa977c74341cce882febd2520aa642944b59395cb70de209cfcb125beb7984703477c7c06b93d5abe9f95777186600364782a600215f11c343dcc1816c609b3df033f0ff1dc59fc71313d4b6d3b01a04dbdd2d54ed5da0da9f348c0c06fcf3fe941036d9bc80807c8076b4414bc4a5af1d61ebbc018e182f5f515dcd2ebd0a14a78540339999a2010055e3a757800b6093475ecc0f408e01b671f3cbd0ba2dfe27e6a2a0219ffff036fd3ef41defb086eec251560fe6d9be4c6a2c5d85c4acc43818bcae23678b3e103f0464b03cccf064b6ba7c78abb1a444cae24d5b091069e8f82fc8e68387c6d20037746cda5e593d69d211fad2607a3701eb1b500a88b6e157f9ae8a43686e2bc000309e12e8ee728c66e0adf1545fa238afe1778136d7451b9719534e2f9abe1a90f0219ffff0334798a85a8a4acacd23dc115fc06d5bfccbf9f4c4fee0c2fa2daec26d2feeb910306b56e43eec239a9e51c0383d0862f74e379f437edbe1711e021dece3b101c76032e48ab5d19f621487d5aa22c8c3267c68284a97b8e631475d322d8e7b017789f03b2df841d181768846614ade1ced23ee1da3a820cb4950862d5d1883281a32c37030f610584c8d33201e59983875f6efc4b83531cd9df633c0b2e6a8ac20f9790e203c5ae38c7e72bb0d5d0b37e61e6608969ba0323a70bbf3ee8d78f5ad3c3531a6103161f940fa3be226289aa4c980589ed25620077f6f43de6c7ff780ef18edbd1bf039adee46b226a029846ead94999b4b8099f5e94fa01fbb5355ccdefb5efb14e090319ca36df4724f0c8caf8f31cdd13612e952dedd6418803ea9b4e011be5026d2a032c55c2dc1036b12f076fa6b992ec236feca41f26b30b05bd0f5d3b2c010e7a8003caefafc905c6482552d526f390e7fd7614e59c2ee750f25c381909a60c58547203fe247c1a6b28cff79a5b68288d61f141fdac830f8a108b512276310d37bf720d0319cb78c3c056be4a2ee7714342e0c2802779aee2f99757f0de6eac341918695403c18f7a552ea135f4f2554039ada3c883666a490247390699969e59f2bfbf592603e64d8444d9e807adac51cce58f39114762f56b7ed5d30cb7421198055576e90a00581f038b4aa533fabde72e405fe4adbf787c0d19b3136008a570a3edd8fdce05c0412a031429e6c8bfc0bf939d05c76e4948bb5f5576e5e53d58f301b747d8474d62a2ea01410a03cfa54c9c989a9d371dd8c0bdbae19816d7962a56cf291e9f75bd2abbeb88d8a203087cd2d74d19cd5b71bbdad6da34ba1a9d6bf232d331debfeb8ee8d8048fa90800581e022a00d6dd8fbf187cdac84c31a747540b69c14d0dd18e2cbc14a7ddb8b95820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02b530d6bb8fda542e57acc1c11c8ba1ed193508f93eb9e9da973e35c3245820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02edb846397b821658f7d758560f1cae33066b31cf7fde36d3692a5d26434907d33cd603004aedbf0219800603f1a4b63ad4ce62990d7e586e28918b0ae63876053e4a51a6e90c6519ad76dc160322fb464ca8582b6992a768ee706e9c97bbcd8ff9dc49e3811d34ea9925ce64fc032f0bcb70e1abe5ca44d6334625fed63282e90c091387b54cf011a0baecce7f7a03b699d748b04b3f8cd87ea98f4682176bc632756e1ce6df20d1c35ce77881ed97039fdfe7653b043f4a2b30896d98115586432b94c93c4d9058efd8797325dc91ce03e46ae2235f88f4559b28ebd9111d0544ed99e50570536a364d9be10063c2e4770374350f3cb77409d14b21070871db39e8bca8ce30fab0180e4edd2fe71e5771b9030c989f5f7329323ba31e737984c3ad1842b90acfcb292683abf228277a2d2e720219ffff03440341ebd49a41b3750e6fadad6b0111fd88987b5edf1c2a43701ece64995107038689b35440dbdf37d4c24931e4ee7f70729753d6d06fd72e286fd81e92b420ea034aa624ae3efe87cea4a0d70b5c994036de97c7a69c420085397af86c94c99a0503b103e0260c3aa0cb520906bbe7578e2a12201c715fa148b44d8499d3a47dd8fe03e466152c67b4fa77498bc599f85adacba8b17da66c9cb05e2bf7afc9b890588f0398c42f9ab9199b3acdf4d71d9315d5910366673e521a4b126c912f1fcabec6160219ffff034e6da7d288848fc9f0692e238c79442524c8629cc91db5e381dd2a3cc825dc6a03e75ee3343719d4eb14454785e4932fbc2ce32b6f56ccf5037ccc4cc9787863bc038b49c4fb5938072372edc3f07597e7625d0431c54927da065e66b6ece6d9bdf803f7f23f0b0dd52cb4ac90f64a78e7028d6f129c27f47a20f45315e57e2edb976b033ac46e89ed5ed4700af778961404aaa4f5fe9154a5969a42843ef43115a1be220311bc23d116d66567a018fe812f7ec1244541ace448316b670fcbf90d719f46e703058ec124a8ba88e15a4642e3d04f5c966eea80304cdc0064a04f87e5fde9de0c03a5f01eccc6c7d153e5815a603e3bfe5876dd2ed0cbaca481ba9d603cc05d202f035b9c5728daa8e3034b4987036eea0b66b4cbc5155fe6beda6e7b61bc6347fb7e037eaef7433e560ded6e234b96831cb8a299f6bfe0aa1672eb3f98510e523e0bb40307b626f0dde902ca6f074828cdd814064deddf6b0d575edf91a288f6c9488aa30395736d062244ae5f7341a95a209c2407e5fe9fdf5d867573288c38018277355203be7e31be9fdda6357c98c7f4853921cfaffbee74c23cfaafb375a05b1e15a9650219ffff0376ad06843397ef66cf3051ffbd895348e4f119285be382c7b0d57346056d5b100300f08fa889f8efd51a5a1861eaa865c32843ec0dbb99a2c467d59a2608466d1f034aeb2b91e2bed2cc16e45e894e4106c38d6ff4ad1e59a1866cf141df2a6cc25803a58eae89c1246c442ff5ed99d911fa33774c6456c77ad9a975a34cb266350bd50399360b1090000d036fc06eb0241d65ede1e22ed53e30b5f64d5911839b3f4f19039ed380b1fb30fdebe37e745e30ae555fa301efd04511798a2d64e5f9d806a5f4039e47b993b882c5284a354aa688abc1ac03780dcc06a00da2f93d16caeb5782d10219ffff03ac87e36e5319e1c55ea222d8bbc3cfd6d61b3fca4204db19becb37bcc451fd530315cf47f0538aca517ea532be21790318a2497f25330fe1fc2a4c0510eb2763a103d005574b8cecaa1e4d9020ed2be3bf92e3963ca43bf7f9085fa1c26f27d34b9d03c95110d5ede1b68fd2d86286ac891c691432ad13e85f22aab18faa1eb107d4bb03e3cc69ac2c2c22fbe8e9d77b32c9d75ac06bc9e83ed5c550af8111565d42c2ff03bbd0f4bba80ad8bcea192f20928ae6552fc48ec518ab9ede4b641e3f100ff8d10300f698b4cae7fc2b75b02c76adad4746ddec09d9afbda9aa690daf90112a130403986eb4f22080b9280bb83c62024c12c97cfb3a2e6a5526c9b6e498ba7c071a78039a8f171c4e5c11deebfe5ad3508f46a68424ca0d2616ac3df12355765bc7b631034989925510847f56bd09c145707380adce35187415f5e105e560b4b2aaca51a803cf3fd5ede6d1db43437bc4ac094848b2e2a34b90af4ba42da5c08117d351a59a03128bb3bccaffdbaa5ffda65658b5b08d7f774bc8ff81ff8e8e28e4d3aac7b03b03307fda99e8f58c120c563c670fe7c2f0ad101bf7f5d6a89aaf22053442b8778503aac1c3818b00e9abaff21a0112744c16198572117a018e20bd10859cfa9e5ddd03ca4a7d4366cc6abe4f706fd6455bde9278d37b59fc261eda35551b61520897d60330603e90563fc3e07272ce5c3871380a177c3082e0aa127caed87991b83af45a0333e96424605cafb689b3f0254626ee94a3e32d41c100effdf034643a4ed0809c03d73bc4af1f2c30dec11c4f2127f93d82b2a3f115be149655964f1be54c4b7add032c2d59312df5b0c914656274a3b45dd0fa4a1b36189db319dab2eb78d11bd790033934a79507275815e8afec659a1e59385809f95687728da50d63ef2ba60d1f7603ef44482550df95fc65f1337ec178e490dce4d0abee7856b472263a89006069fa034665419d82307b0978a6b7eabcd95a085e7cf9340312d414658ad93ab115ae010325d48c247517f7ff07647921f64636164cfd36fd0628cac68452edd1f6c92867030baa45aea7db304b53ac53851ee1dd6ef1106b8faf5519e468c5823e8ec7afda03d4e7a777adaca7a7033905e4cc9919712165bdc232d0779b1a0069ded4a53ffa039c4f9c6946a2018e67d459586519108179557da575955c41a9116acd4babd92c03a74d51eada7cc555f32e6d06f2b6b65462f63eceda9446d6b489a5e84f15bd3003ded394ca4fb7425ab85f2b64f4a9a1ad50e769ad160b6c4abb242fe2302125b3030b2feb92c8f89d1fd4025b93577577106b6b1cbe33a4ac2378d36ed96e7cd3d400581e02bd9d4728554bcbd11ee64fef531a3622b099953d0d71ee541aa1d878a64706c00a3912c00000581e0262b8218fc769b3ee83f01d809e12a5d65ebfd8369ea90806c48057a93c49093dafbfc84712a218021982020335db81c736691f8496a34dd621e525a010ec7ad11ac9fcaef2dbd3725c05328b035743b9e11402254c87ec03f9ef1db818f8b03b57bb76e536c8d6aee2b37f8aa403154c167ea3200785ec18df7f3761c5f0196bc4e179dcf7e95868a21785ae831f03b25db63b38b7932b8b081cd68e356792a24ce23cb4f8fbc179155b3931cac1610219ffff03da750471e3ba4d760089ba23cf7c57f3a37d74fd20a0c8617f6faa45674c0b450374045cb59a5cce2c414144522708a6b01d53bfdd7c9a143604129552e0af2cc0039732be93edb7e1468d085a5086e922dd56790acec23c5633b628f4c91122484e03d6cde307dd180285b82bd662e39a9057f864540394342e0c7a3de2c57a60f73e03df00b2d3cc9aaf7cf3878464cc9d7a14f61c7a8666481f18f7b355860f06f83503ebbba500edd5e0d799f678b7a28e42873e7c4ce400273b68d26c4680f24dff8c03f06cf93cece3769a3f458ce042494d2d7563c69a10575fba35a0355531463c520219ffff03605369d2326789307d9e9cbe34a0447ac06d1bd8cd7e290d08cdb06ab043f4550330057cd576f23de643915f853f1a956809ba703fd7e1ddd8ac2b8522b0aee3ab03a408f882d2b589b5ebed914d522c7f2644a96b0ad3f1492c5747d615ff3aed9e03581a9f6c9a9ffebf499a5a737e8c6e3751cded1a3fa4923a92aace00405b375c034596194b49e83ffa76a715aa8cf195918294c338ba5984f5c572001e9c2c5ee2031f7cfa7f83d6841a7e1fc616342945564fa285b9798d2cd433ee8d3ba53a9f6e03c9ad4200354ef9cbbaf9d937bfafc89d1c70bd64b57feac214797ef494a45d1e03ea93fcb2ab53463f68ea1aaae813d9694a878c8831f38e708986aef73c5717520345c2a4341ca212fa64da70bd29bb1bade3359622257d90cbee46f95d2bd65c6b0219ffff032a0b3467f188c5dc257b3f5027762867ea0c8e22f456b834bd0e8d41c32ee09b038cfc902c1f9952b277fbb430bc80c0a4b35df7b073f854b49355b17fbfe36edc03ddd7e926707a0b7ee5115a82668cc7e2ad8e1aec8752d80b6e840e0ecc57c1f703b9284afa5f001baf4c6829083ce0527f19c3875ed1b0b2cda94e4c62ec04bdb0035f4f3b66f94d1daec51651e5b9a33eb8dbc0ea90f0a88f23dfe36005236a47510305de4330bf407d7e333d22cb367cc9e40da789b71d74ebbb906ac5272e110c3403ca26f3f2134469b7c3e0b4c71a4befdda217bdc6da8a2331e9c72bd85959fb4503b35005e34eccc3d639b90785263ea33d9e02e8634c70b5d76f3f8f9c37b91cfa03f09490d56b9721f7e5cf1b817de0388ae73814bb8ad975cda7525f207c7ae0ff03d2f0691e78eaac4302c7dcb1aa81e997941d8d7a121a37d7c0be91bf03d46ac3039b2b8e335cdde04f21804cb124b7a3269680fca8294e6fca53fa74b729b6efc50383fc3cab9e24b99e91b3e98105e29975ad7deb3712756c02a08cbcedb519f562030019d418897f88c1b72bbcfb3b156a2c5d9e9601a3fdd927241f2a20dd9a73fc03b4fb4ac48971e0c21a1e4e77602697b4c8add96964e4984cde5d0ed8cb2caf440301a7af6d4770b9591cdb9115fce837f1c32a6d1a1ac2df8ccb5fb634299fb7ac038122973066dbc6f3b8d5266f5b1e0d71c669f766e43d67dd021c53b2e81ab7d803512346813a9fab291dc9c87125b0b84c905ad7779f9e6b1fcc00ffa91a5e5bcd03c3964da07c5d9a5f441c5c4ea3fa85458a9de17a4377a733c0bf350ca313a1ca0302f48797c0b0df1a974a9aa027d4f5715c1d3f14d9a1f584d3d3b025a5ee5bae0333f8a1b6bb14d23cc94fc8dddb95e10002f1db6066132372a666406ab5e20f8103490e8879fc4f8a90265b865d5dd58f7fd5a5b8650793beeeee1d822fc9d7985803f2fe190efffb9379d26227926c6b843388580ada0b1ac97707073b8590ab9d1503197557c84c324d352229b51fc3490f858bc0118ed0333fbcd5dd23d1e4072f9103ca80b505aa62463c9182cfa3e9f0c28292112664d8fd3ea753896c79f6626d4203ef540ba75184e69b0cc004d495f23b89ee474939fee3f25b105c5b04f7a2127a03c75bf5c5e7fe7ca77a153124fbb30a4f0747251a934f89942b0b6007e7429e0703c83fe45ca5c6bbfae8e8f08f2dd2764fbc69afa3add4f1982b3e1b746963a21603cc7b26e623070ec97b3e645d4a4e32258bff6b0597b13923dba3450501a1e1ba03a72571c1a7548f7e4d279cb5673acc2ce560f0e49b4474e6fc250813a33df499034a589c1ff7c954c05f7551736df580c4e5c1813679fef8b09e13bc2028e6826b037c522072578d99241a8cc402e952bd4bf4e70dcf7f7a30d8eace2f084eac40e403a68d56d07484a77a04ffde6195121db303e2733c6296aad526784d1fb73d01db00581e023c8e0285cf1900e405e4bd465e219a261ce68dfc8bb46bae3a7ec61bb25820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02a8075e9efe61170e277642bc016106cb05fbbf530bb940c05351b2d9e95820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02030340c3eaa78234b5a8d7b6984550b7aef4dcddf380f80fd41bdd8f57c7a34bccb903f066e73a5ab76f356582aeb52015e96dda876e378db9b82a07ee3c11c925852203d528008d14b0ea68d1459f570ef0f1e2e6cf1ae4fd51ef8249636dd9dc2b8cd6038f2e37593761dcd15cda6c816d6491084b2d00ad3c1fdf1deb2abab4522ce3ed0361d9e735c3026a7766ebf912d3aebee68b957be15a2ca91ef96781cd527d0a320219ffbf038435cac3808c37786c5115fa740d8f4559645332fb324bfcfa5a0a2eea6e64090327cf05b796df0db9d7d45f3b0170992c4fbd32069fe722cc894340ecae0280080346c6ca1fc27c397199c13cd957220a4d2617afebb773ff19d6f36486b76c0d5c0369c03bdc9c9541c21db422d9fe988e3bc61936555787ddfaef8dff6648b2bf220219ffff03e75c34280a1e1a0130e7aca3e8672d1a3bbcee1d77d44b1fd22a72974ca9e40703f0a73deab7990a4ef86a318cc01a26746704d936b0b0dc140ffb3e195bef06a703c4f3db34293882bbd4c735c48ac39a4e2585a61e323d8e6f71e4394ff863917103f6f723d8186b7ca6cd8f7b552bd18ca43b70dbffa812da9692845a9d484d833203f406e06e559bba217b95d19a281dad191745d1f36baed4c23c7ff8d4e82aade003871cad120c9f525378edf9a628a263c745a78bd4157a599beb30808a69bed50d0219ffff0371a332e4e5fcba54eb9513711d6e5685c0bc49580912c50d8a0a329621f2fb4d0385c456d6052bafb3bf7819655386ba3d910f492c2910a5111f90a0d19d25c6540339308781ad8bba05feb2fa8448d8ce898fb892e3a48cd020fca1a5b914b8c0890373385fdf1d4cf0db13bd7b90b8de76d16225ddac8c8b5a2c7f587c271125df9d03d057cf424f960ff9ff7100981f9e78d44c4eed75c72691814fe7655ceab1e5cf03ed7fc30365b94dc3117660dc1ff1b6789d6d5f69c783e607e2d4cd5847c812f00377fdeb53cb20bbb58cbeabd6ae9dd945425e031379426655fdbec582d2552e8403e9d17e85f6f306f1a2cb53589f236a9010da57697a22055661a069ac9c23bdd60219ffff03de55e752f85277160ca0c958b626d215dda2b2212d932a332ae210d513f420220393420ee59f9e46e777f22f2358d112c200fbb0f857c38cd49ca1743f67c8e11703098d5cb8af66482cbd329f87a5d36a565123ea86e1b84c053b7da2f8a3df91560387a34ccc7a808911c771e3c6e0f5ce337c532a15f33acb467e187759b488a9ab03b2bf7e8e41c5ebc14f6bb25502940f7602f6401d83008ea5c632284b1b2ab51703a5e5608821359e2dd7899f2ccebc5996a15104708b6d0c176432961944d5d98a033a2a07a4149f7abcc62ccc216d108236eaa6ca25d8995492d3df2c9393e2464a0366cbf45c2030fc6292e3e3ff8d284ddf14dd52877d8b70e993377084239cb60d037d8d41815206c5f0cad4c7efa74b25b017fe4e5dbb78602a2ac33ec1f6506f830310bff45f08d6a3e5fd85c78e86f91ceed9e687c6b1caefba6c9822d98d37581b030e9e87024dfe942f3b54c682455583cde6a346774e0f5cf51d6d4b3a847374fe0319841636fd348885958e3098a09a95a190606045a882596044c74916b03cd757034b5ce9ea738066a055dfdb67fe913c40460dcbbad771a4c817de558bdb93693503ac86b5dd4c37b7cbb4174d27ae198c911eb843f2efaf8471d9c751bda4ca4e6a03fafb58f2da9159118ca12d3fa5e548ed08a3b97dddb0d0a23ca28abd9c825235039d01197a47fb946a137122d34dba1f2088bd3a645c0f25bea9d91f9979f451fa03af32d65d8776aa64f530b288a53827ad0a68b6b8157f1a823c6d23976baf863a031f6c3c8629190b2e0c674bc3526e5bc6ec2953df6d69b81276b88a5c6914949403c0d57044b0fcd1b905d766f8c4a370225a9c0cf1dbea99831bdaa530f0ef998c03fe67c8924abbba53dc3fd138e374dae4bd48c787de1e3c458f8180b4d99bbdb103fb9584fcee4828d57051389fd7b0f858d3a384e1d1ea2708d3dfdaf5f2b80ea203b1f0e0252caf7e384e90ec52e8c1088183cac7417ad0b3e28c0e044a5bc14f6303fb41e91bbdcc5e1aaae8df9700c1c4e7819a4746b2c96370b9ad4c2eb73b1f1f03a9170a06029ee85bbfa1a4425671ba86df9ffac37e893f852610d2f1e9d0b82b033aee03ea2757fd5fb1c6b2be9a825a13e9964d77d39faea9e74fadf47da10bd30302a018df65c3e244c004f44dfb8f6a437edad43b9d07ae320d798459dedf70b900581e03113852dee74ad8febfa99ddea6af9ad2796f28f1631cbf4791ee4b4ef05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e03f1a75bcbe79e3098dc1337e44ab01ae65d8210ebf501375c1c9014b3304878f317b5af08a25d02188400581e022ed51b8a614df515870318e87c7f683fa5cca9037b05d7b8f57e449c835820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02caf77d292916f019559fa894479f878f9f7fae27bcfc38a5954a7ed69c47366144e47e735e0219020900581f03d1c48fb50e219353cfb47172db25c0c309d78b14d3ba912ff01fffb798d05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03d29663957ee0dae4aa956da6ed2655e5edbed1c8a415ea18992553ffbe0c0eec03cb5c06ca8a269e346691a9a5b5903b3521bf2b08cb0e6661b7406a2953e1c13f039f66cb897dd12ce94dc946ee9277c9609d94911a5dda51adbe78d4ed46694b1e03532dea9a2d486a38e9238aa125fa46ee5cc58beb6d7a140f930f915112d6c0db031f1ece742481bae0698023fd5886cf5be8b7efc86b6f3fa1c8b78c04f9abf6ac038622397967cf62d43a0bc5a799a1c0a160d875cb0c63c2246d45fe0e9dead2840328dad53e94e600e16331fba00fa2e30a45d764f3fe65ce9a537955d5c327dab1033ecea7ac7af0166e5acab7f99de2092ae2ed28d4015a6bc72b73dcae4572e6d30351dbed0078607a2932fb8fac6b051c9c4150a861b920f6e3e2bdaa7a41905f1903e99f98c6f3057b4118a9fa16b370da882c431a6b5d86a02c96cd040604240c550219bf6f0379670dcb9e05d5abb8f0ff91dd92591197c03b8f3050666e87a62e6b06f763ed03b2af213d7f943824d7745f371bfd477c502954958fcdb432e90768b73e6eda980342776febfff8238bea4a5d07080bd59e7dc2920558b4f034c2d3b5e1b190cc9e03b2ee05bf74b2778eb42aa92c2684dfd96ceef1c13945e2ee25f7892ddf580e97034887b53329e1649f98c8ee08051065ea3b6c3208996b9cd777f604e6f28d51fe03a2fcdc451317b41a57f41c642f5707440bd1f6cd382a34679d78575c5213ccac03c4ec75b0dc750b522c5c275a92615aae28a91c304bcea4166118519bde6e0dd203aed03054438d58d9df8ec7379daa953507733b8588edc30ba8218a53a2941b110346a749e9c085bdae32057a23737e9ed4a2920181c86b095a77b8fece6bfc3a180219ffff035ec2a3bdefc77a6e28a5a9c9e0cd2f44e4dad8541a45dd7b19eaabfd059da102039781c273b709f60c5e002faf2f2e575086140368fff0d5a78e55e875551e406b0219ffff03f6505eec45a3333e967dd07a2fca6c4c46022ce3ef7f1f8284c48c2b2f652af6036fec3b9b8e8424b1f5b734a10d70b5c57bf279903ae7d6fa809c9945f7384ad0030dab9bfa75821e67f2d346e5fef4f99c9ff4fb9ebd9f3a2fa96e54116c72ce03039d99969e57379077a76ac460eaf793d3ae5dca1a363d0fc6ae9943faed37aada03af2c278a9c2a5f9faad7fabb5118899aeba061c7496d5004b5f992d8ed99c4b70373f9e7ce8f604e3cfd98b6450327c48fc4e21e0723fe24cb36f307bfe1d6f7c403e9ce92ccebae7e91013a85b5f9e5d9c214b8b10458e506b444763e41888079d3034abc70ae670a98f36b74e3270a7d835d2062a8c808475c9556f6d587af86519d03ea39af5155a5e6756def4154244450d0b92db15ce575eb8a374e0c64d03d9e6203e0fb998c3862acdc676f1b2894ead0ac1c3806268a0223751c26aa528fbf7eff03f162f10c99b896604049cb0ccb2ea774a6c2f3076348a00166c18541fb8e851d03798160a5346fef9a5a70373c7f67f81224e0471e9b86ed337d38ede03bc6dd0f03a8a267999fcb620a60c89fc18cb70c8703e0ce206065f37dcc94e99d44d71f810337a13ff13fd898079357e9bfbfc3da1969b18da365c250fbccd565cb97ca34e700581f03ce7b1f7a132ac95b7202aabb486604ad8af10d8d747dcc1dce47302965105820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03c60801b4048bc95de2b37eff6b641d56a07b4ab863938759f922b53be9677be200581e02988ed9ca2b0ba1f0c0d9f294b947e56f4ee65613fa7c968917f01d51c448019e2e804b251b3a00581e026cc869e4f53917c40b9bc6711be7923f6b86e5538f1a6ac40f8b0e28a05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e028ea50b7964fc041a4159fa03658732c3b4a06d3b2aeeda165050c706655820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02cfda133e13b02bd74fbdd9dfde0c7f9494d88c6ab54613416b0ecaa9925820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff021908700219ffff0353e1e00ae1dd51e6ab3a5fde1ea00a8ff2b0994c2a745397ab9fcae937a1fd5903a30c74e204c070ca575e639e41212a182219513cd6dce7ad60874b5e6fad2b07033f0437d0ebb7a6a456fdd7db2df487a65c79e0c91ea0e7fb519b2ac25e204b49031cbd5a1a4732ef718f81684227017c2b4a7ce3ad3b2bd20fdd5091a7906d303503c93000deb024f09068d8a9463ed48ff7a096f648f1e62e2455cf16be94d3f75603f53525a2b0f99fc11945e3c1d81053b2d33c70f0e631877a8a52be10b348718a0348b75a5f195d3c23748bc35234850ba86d51e1def297fac3fae5605d05b891b9038aa1b95eb47dd925991ed5fd636394c36fcb697700a51b45ff314bb721d7de110310fddb29756d0105eafa0e69e6d351f111a5cfad8c16ec9f796e654cc01a32db03f0060441275f6fdd158cad5d7e817b4d02de140251b437260052a94854d41e3103dba02deea77fef3f1b7a6835c27cf1e3a81b573de948b52246f68577a16c889903fb6b7e10d8c011e0393959dff2c1abcfa3ffe6dc464f3b7a924176163010f01e03866aee14e2ad5db877be4c4351a929d4d9a5dfa6cb9c808c5f00c28268f5938e035c111587844d5280e8c28f1e91380e48707b766df0e2c7e4bcb5724d9e2020280219ffff03b562d57b698138248caad5fe7d788f137086bbb7e702f65f8cc0b6da6cf9f7f8033b83220e9a4fe0fe402aa51973f429f72c4e3b953e953effc69d8d1a9c1cc0dd03e0033db505862409002f07627372b672d3b457dd4d86009318e2285f7f43280a036f6a677a6c0e41718528e36f72fd7b664921d5e5d22668156a67d31646da7c80036c3d735c842d0135fad8c3e1219ee373442eb6914893883715fa0522a9b3c759036b5838c406ae0ef2ff13983ef1deefa05bd67408bc8cc80ac33f2d82008cc1660368a400940a558d6d57b4b7f290d0b4669f3653c7c470d86e5d7ffdc351a58901034efba55309c9c3002d965639e077fd37b9398b4e07637b6b490479279043167703f91e8b11ea7761c23ca9b96640f9981bf2b2dd055a1e8948d591b1d1b4b72b4f034cedb855c749a35ae794e2adc0defc755b377f9562ed9826fe753b8b96dcf76603102d61ef180da5d8db7935707a75cadad9201ad415eb3a6815d204736e6acab5035fc353e2cc24154b48ae2993ca7726fad24c813a0005b02d69bd49b622a95a2b03f755c3b5f5a853db34fe9a5c31d752203d9a644a76221de7f4e433edb1a77aab031fdcb4556e393069eb4f7aae10f491ee67a3c89958a49b5308ee1be3894174b8031096cbeb607394ec2434509c8b42e35ca9644f553924415077e307811c61850c0219ffff039c2395aa57704810c6bd7ea9100be41361e694277785d873815628627e2d5c000304dd5145b61bf1f675c1fc74aedfb1aae39d1830195aac4770d141a5fabe1b1b036034608003c389afd9e1b7e398ed580417eaf7e873e6df88d3061fe2441cfe6903edc737da248f5341e69dfab21930ce0a771192006622408e7da9b0762d078a53032ae50479991369f968359a1df049a4cd1b03283f2c90a2be9addda0f36f37f0003da02bac192c1ed52df9220552db01501bf269f350f724e728bab0d6dc8f0b3ab035191ae25e23d4de6345142ce1e195a474bbe11f9e31cf4a74c284a0f3c2ee233038ad125d0706137c066c450f6d4404f86f009b4d6f753a0e6d9e4e894e69c89d303d09c7a0985eeebf3f9027155156efa71aa0cdfed7ff11a35165cae6f75b14acb03f69dc43cd31b14202764670122d65e612917f6c5900cb46bd91d6725bcee27c703148bbb8d4258920138ed95efb7a12a2bbc03efb059d37bda0adbdcadd14bf7b603188b308f812d3f0672ebc7bc63c3f53bbec09a1dc319bee573194d3a543cbe150350db007108a5880682fd05bcbcd3af967afc8192c59cd2d4a96d7baa5149c3a10322ac04c0ff22460f8a6ef7d1b6604a53a2f688724023ba23ad882978f16cd6c9032e5faef295dfd37a99fd1b71078697e66a0b10d8c7cf7d4faf4dd81235315f6a0390043452ebec4718702e627de30bade7e35a106b5834c9de26de64ebcd41270a03ef86792dcac18b4e4c020bce4c0ea5987ed54d16bf66dc38196be5e8d95d6853034535f06eb1130ac507e8810ef9a9a092f4b9acfc52a67cd20d4579f19cc1bc6a038d2834e8e8a9cec36e516e62b90071707408df491f37e9244a28e2108c44db7c037c7ca4181c617674a7c655ecd186078c969798ca2fe9039b92460d0930680f77038713b7a825a71321dcf7c292f2c40be7414c7ec024e286ea3d0d116ffc509e90030736740e39e719e21361c3c2e3f81dccbc4ecff17565a1bd66dd3ae483c3f8d2032c231475bbb652d4f007b0bee4293963a50a478924fee75be1d20f98697826a603acfd551c78ae25cc2fd9c455124950709a62368fe8f90081b4477ac83080cd6f03988162eeb7c20d15a4c8757ab1a942c89f19e600aaff9140e87f22bca2b0882d00581f03bd2e8969365b59e138a43bd6028aebb6e1ae6c1bf688b47f5690eca068405820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03cd2cdbdd277317f0879de0e587972741b1d5ea30cbdb41922dbebb8dcd8ca9ba0394fc8ddd4575c57ef2f26e86ddb0da30663f2e3f9439fd25edf36ebf1116522f03abd03e0c212f185e288982fede0707be506c43ed17f8025345c507b2456f9058037db57be4d023741d7ec4c9f988abcdfd47e9f7f71ee39f0658cfc508aef7c57e03a5b3a9fdeb39ca6dccf0273e45af7eb7b1702712feb305c26f1c8a6d3b387362033d4894abd5c32c34694f0bd84f6c73a35b96b8436241bacafb1c03a9fd998fc900581e0217e0c219b58f64a42415630cf12d88372e03bc059c78d09e53929164ce5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e0276792580cc0a0d0d92d8bfddd4b046a897d146dd1c3ed2adf47ee91219410103b4ca22451d6cebb0403e28af7e0d10f8e1a4c586cbf72b3aec3fb58e22ea5eb601410500581e0209c41b130d387db64e89c263f03fc31592b58296965f22926c6e65e7205820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e02477dfb476be7a7b7076f810f756bc4a4ca1428cb07b43fb00fc96b66225820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02196c01038a7f2ea0249ef9d9932004ca6ae817d60dcef0de7a5b779b5e18fa3b261fa64d031c5b9a77c3a56ea1a7c67fc85a6c459acc694e21f656a6ccfb4ae23aa93fabb9038cd47fc87a17d1053b17e8d16337624a8b4f7a365baca77e7c7e1a53ae000f2b03b2b714554ab9a03fe0ab43171830c8e70062ee9ea5afb293b930255ca075074003ee242a4525c914fd13a36f9f74cac20134639aee171169323ab143f8b50642ca0219ffff0366358a9127e5e31cbdcdb9728077c4745a895fd9ea393a1b61e977f963a8222b03f727cb9c56f63545e244a546199ccde51b1048210d2ee77ede7fb497f641d12e035795e1fa4a049bd2d272fae96e6ff6f62961bbe0a7f7001673602dafb20d454003e479f1b45a2243143459afcb42fad806c42ee7207bb69c6229cfc12d38b874a003dc27c605cf69616e2768afab44a8b68e8ce8e6b1e3664de3076be1a161c6e44703db17c079d690656965851ba06985243b71d9abb8f579b0c7dd489eb1694dc4fc0320c3042795c65620661ed9cb43b2e002222bd6f48d90002b24c6c093e5b8c8940303d55cbb7723636f728f64a3baccb17ed429b0f2f4fbb610a159f808e099a59803c0ac67952593fb4325ea46fe54e3b06624fe55f3aae0b301ee25fc22907fff1c031137dc6a2c2e4be039123610f21f16baf855c5d96b16da4cb61100bc5413593e03df213d5d4d8b5190cbc8b1f4b174c00d94687e58f1faaa75a75a29f71d293eb903746467d98eeee27c6b363904c85ed02406963503b32e2265976dac34ad03539703e69113cd7a565a6e46ace0d88d15d6d6893538bd734b909160ac6a6cc29223ea03df988bdb52b7ca0f8f22bac490b8e717a40eb6979cba13397401956ace3c85910219ffff0219ffff039c91d5ba33ffbb5d6718d31eff358060eb8b6a8c8f4ad666117293e0e01fc6f8030c4c048d99e777514ec10b6ecba5558a5152e67b92da4e8189eac88059c4456a0219ffff039e731799f3d5234faecbacbc47b76fd3541b8cd20f05e9b08188b85248cc284803d4467e5aed6b9be8da472b53710151e59f8ee6d0fb89dbe2cf0369a7c7b6e9b40348de182ea2c070654bc20284b1f8444c8c521890e389e3d3cbd18f7849e1721c0389e7a6bca3cba67abcf573d394d98e7b7a854ae30a28cb3ab57f7aa611a0356303d8389a7c55e94c40782429c1eb1f233dcd9974c17b809cf8ea4b850fc78e28ff035bc900f5ae94420e9cfa583aa6baa555aa0e5f04905905f625936adba2497a3e03b8cc707f5d3552363afd64c3756e3f6c6a23cc827bfc524e9d546c68d7ce5c2c030e78ca90708bcd69efb3c822d7dffa9a02d0b66aee417a5c05e441874a2307520378e0baceaebdf2b11d212f273d1f31b4ea9a0db34276bc291915166e3a76f66f03b096515a642d0422bb3e675280674692800833ba308f6175a3c3a5f511a7c9660393a8b74d9af3c2eb2ba928c3f09ff0199f44274fe1b8bbf80e6b00bd2e0bb28303cef340e78e55fe909ab1cfc7a0392b09dd51f54c3d79e6194ad8880fef0541b603b72ff83fa705f04ec1b81dd4554f64a3e33f1d4004007d23b978466f9a36b4830364f72fa1c2622a567c0d3831526e42ded6c4a6f2344d604a5dba80d6a181fd4003cffed49459425b0d2da7f272441098c41282ee65b532143924353989cde8d1ea037e0be922c58d532e35b8cb330c97cd2c028be4cc65a66628df8f663dc5dbd81b03e0d4dc333d4ffea0224bc146974cebefd76edbe6ac28c2cff2e6367b936780d103240529d170cff5d9d4c54fe762757d24d0cb8aee37f756e31b7865f8ffd59588035b6f1e49eac2a2e0f25a23ceed3427eedd124ad8117e2a0508aef9b7138515f103b52155e3c1ea78517da7f0d3844e824db72df6e5a01e1d2518ff6a02845d55660379f983383f08c8dd59cd430952e40476e95ea6a23e19dc2fa9e81a397973718003172d0eda34b35f60a6d5395fea8760c024d2ae393f58cb782f67aa2d05bd4cb00371812d80ed0ea3f04f8f2843a0b140a15a8934864fd740bc0f8881ab77875e97034f7116037000ea9230be83925d5edb323c31b48868f9679d80c98bf6092a81d30385aa49c12cdad808fbd9a2d1692cced2e17984f731edee63ce7d6649c3cdf016033330cc1dff7e05f7b6ee23c730968fd49674c20d3982e99ad6be3f62c4fe1b0b034e77ce884ffc656c434d2299effd3e211499df5c963d9121c4dcab6a153285b900581e020b1755f3810eea0ab86fb07ec9cdb847e45e49803dc72c82a7d66f3afc5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0342d061d07c0396c02cab4f74cd41f448c48c43434582c32fa002b229b105692400581e02ee713f4e03e4a0d7f2a90ae4834f72106e1e65e42f3b2ec4f517d6b367470e35fa931a006400581e0238d98e4c3b9cbcc40eef1ee76986b6877984a0e7b6956830dd2f3455af410100581e027ebfd882c0b8a8b5c05eef33dfd0345ca219820a3cd0af31450dc691f15820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581e0238a5bda3c70246f0914c50983e21f20a805be98e6276310dee8b8495c14b4a817c7f2a2bf142ec876b0219160b03c8e521e04254386e003f7bbd99556ba574c609b0e200d359604b0cff7866af3103237f5a097edad31f1d89d2cbaafbf83169f6eeb404e7905b712930d926270bf803ecffbdae71e859f97752b3d56e3c39565782f8bc17b669aa3ed61efbfb5161d003b5022cdda3df9bc44253c9bad5ebb86c3e3160898cf0416a98136e59dc7f7c380219ffff03d5e1b77ddebb082898e4e23a96213d93e1eb466fc26a6fde217b80525b2dc1c1032112e772020f83d545a62ceec7a1168c695f36325b9c3039812afd53d43b5bba03f0368e6ab233f0e7ce6aa4cf462e55df6998b01f54015d2079dd8ede97bb816a03c0a8c690ec681fc2e26239bf1a1047f52326a3b8315dfa726039ef901a3cd074036d35208b96ff5be93018275342e980f6bbd89ccad3d048f824f5cdd625df1ffd033d865cc0f302bd91d0e0ce07d0af72c0e2e107bb2de7538216fa025e9d83e8b103c82c48fcabdc7541207d54fffbf2cc608a0fd984551c05c188651757081fbe0c0309e04c9e6909ad7dd039762f4e30c83f7f20e0dd5d98d9b9c91dc0cc984572c2032a62254e826db842766950715f6c93927e4b49d055802d6396f613c00091623c033778ef8d23a6da68967ac5470a395c4e26d3de8eb442f511693d302f4a3cacbf0219ffff03ce89a44639931f8f1fb8962782ad52d56c979306c090d5043e04192320888e5503f17e89d8d1202c099d84a67fa39c4fb07af2de100ba4e4ec1949532582b54c2b03724e93400753ee59606ec1f83c8b3838f76180391db0df52d98161e2ac91272603b8872eee1c1c88f0b890e9d1804673547b13bc750b60acb2a10349d38ae22a750219ffff03539ea2fd00723098869d28018a3b05fd4a7fa5693296792c4294a7524e39a4bb0398cbb06ff100e9ea192dcb248c1e4e9cd44dda37370e9d94aa039cad5158a0ba038fc6c323e79dc6ffa32384532ca8df63d366d203852aef524efc5b0b1f2fdc2b034216bd61b4676f39a50e9abe414960ed3b79daee20398525467e6489cd0f29b003b6c58b078bdb68dd95486753aebbd418e8ee8bbc65fec3756d1c25e23b49e457036b6ad326b5def7225704c129d9af40f4642951813d1507e319fa727ace71a05803e6c42ebc271bcae4d7c8cfa012cc434d0ac312b27c4a0df426270393e89136b0035e4082705a1fd46fae9698c01fa449b296acaf29118af7cb109b2ff5e135322b03bd26937e13ce92f3911d1d5e1fac601b933e0a2a6a57e95434010807b867f340034cb41f2bff31b91eac04c1a4c2a3f84f8978b1e803eb859993bdd96187653a510356ae8434c3df25974936e160002949712d0b8dbab2d5850ec750bf490c779417036ad1a806b81b3d7b46f13bde63547d8f5a828ab8ea7a616066982f14761aee6c03ff0ab0fbb69bbfbe938fd7de76f40774049d1c379882a13193f944456cf6cdef0372b29bf841025a0ff6e03499ba81204a17fa79a70a325227d6b7937d45ab8f6903e4821aa975f63f622a5beea12e61130e06144114d296c6de21b81a1f426db4fa0219ffff03d7c6b3fa4aae186f4d4be482827cf8d5334f21f7113b6fe392414c7b8fa1b9ea0219ffff05581d02a65bd257638cf8cf09b8238888947cc3c0bea2aa2cc3f1c4ac7a30020f014b02987192535af43b35a8e0190c34021920020219702b03c07c4048481c07b118748b2a30e851cf5c6c87af6212257f8845eb9ce07a02e403012fab999f402d6b302a07d3f7973ee8c357d5db8c7991903bd54d54d507cc23035923155adc8cd3aceaf27c07858d290a3b85fc378fdd98e9f4f7f70d157f28ba03c55b2981a6fe08260cb6a076c76858d56aafdf255d0a12a2c50abe35d468c7e7037975ea5712162b9b7339943572a7180adc20238024a429eb2e0928128e39556d033909e6c87be78bf54588e521ebdded1d467e8104d18958f7dd079010ee22155703867f6119f66c88787520dc8899d07d0e49598fa8dde1f33e611871eff6cd04960219ffff033307aa27831bf49ba78f1d47a092c180664e709902579fa9b13f147523cb8d0b0219ffff0329d6f7d3c1260b8be12e0e506b6f090a20038b4006ff80babc6c798e50891df503e9c47c8bccfa7364ec6c3d5dd71ec05a15da0ac8111ec3a218a963843ca4f44e03c26d4fc6efabc1fa16b6b91e18f6ad576e156cc6506af88d5858488a5d4546eb0346df579e8e01b9f5eabcf5a8fb9ab122c02677630ebb8b718ce561efff51cf770375030fc96c9b2aaac9c3270ba8b807966d58e1033d6bc3636bdb330f148cd22e0395ca7850aa3c51492680ccc0d0847a4ef39d48df817e4e66b6fd64c35ca4485a0219ffff036c9c5ea6492f79beb757ba4a5a86cc21ecb10dfec704dbc42196f01fc3bd8a18037e2386574bdde6a6241ac226e77aed7fa0d3af0e85efaf721dd0f7e1703307a703fa3f5df803d4b34d35d641a4dc7c594006e285e44e7016fb963ffe7a5af1e7bb03649cb983132917b142baa50fb45b8bbcc6a3bf860fb669d86262ecafdfb6151a03dcf8be433f6f3140ba294e13c78baa869b70ebf53b5665dc0af407d111b87fde038f61eddde7c18e54c27deea077463181fc47c571d2fcd0a3a3c880a576f5dcaa034791d02f3d4ed75e8c1322183b29a62125ba1ae9b7b95a81632c0368b454158503076e3c62327fc9058e9af74bc1503790e7f5b23487c9b243bbc76cf2185dc21e0219ffff0386070c501d2dedfd5854e6b427ebd511b9ec12864f64ad25f5724bac6070a7a103005aef95f8f141a39d5a05154e82c0fddcae72797c4f2b3d538a444e6d86edaa030bcd7829abca6ca5289405b6be80fb7528e08fa8a499119869499f3fc466ea04035650135745bcd57372655370d488d77a0656a86c0527a839dca211dce4c7157e032705742db4d13cb35652dd66f6824dd9e5571040af9f1f93df3d0a4a6642b51b03a8dad6fd934641950fcd0ba0a94794ee6018e4e7be54a39694c761e765589348030214f4c71b42e0fd99a2c5a0530ef0283ac350b6601e9ad3a1eb33757971c34803a8d69241ee74452bba003dcd989c8d8d4a17c7ff876cfcc980636b1f8b8e30fd038979a102cc529bf29218092a80e58205585d7c61f3e4c76095516589e5cfd81d038ed46910ce68c811cfd436c73d73e42bb83751a732f9ec608119772b78e311a803ab19ce157de5de4ea44218001dcc7edd121a4b61a2f01154bbe5ef646fcd9ec403ae323f944161990d516b671c169b34454c56c0dc2895baf6b8843d6d6e5b5abe03cecc35068fde6bca3cb34be29161ac3dfcac8cf6c528d92017792da172e94a7e030d6bd1e0b89ffc54168f8cea45193aa51279799a2ac9ff58917fdda65e71ff3803b2091aba4f213da33a192510c2d17984526962bb7ad1560b8dab9e3cd5eb1a87030c35f6d742e4ac57da4e8698f5672e14809faf4c4fb9afae45b146cbc41dce80030afd0d577712361808587052750e5ab6e1bcb666c02b5d9c2d6fcf566b6ce02c0308a98f938a979d6532460fca9bedabd238df73a3abde35f5d6fc67055d8efd1e039c67fe8d25b4b72281cef0dfb313edb0627b653cd7d1700059e09d118f5877bc0341b53daa2cdec4abbe38794b75882c81df0e2bdb4c5aae9d2aa86db9e1822523032cd8f70d4281067697a228979f4055c5aae3bc5d42b61192cd88352ead70bf6903bb13dd1706c920f0d825dbb556b595d3c6bf1bf06c1b455b8522cd1c81ec36b803a3f11fa7542504a039690a679d4051556f3996ac796a0953180c2b110c7205d4030b28257e7aad2fe8ac5a0dd60bfaff0466b4a33d635d7d312aafab1205e90c5a03c11239c2c578f6366d46479fd0aaf7e0933bb97898d6f278bd378df9f58b6f74033fa79b6f6e5d3296eccddd86063f7dc84503f1761aa618448e5c4303c244568c03c256e8ad5ec9824e212ebbaaaf50e3793df293f71b97881eb947294e1b85becf03ec4d1da50900fcbdd12bb5dc83fa1dd4c8c623a12695587ac68540a72b3e9c0803b3c6cfd25f6d37c228028a9ec88dc3f9ecb98f7a776202355fcfcaf46e0f8679039ff2ab8d80bd7110f4f88109deec8d5fb382c8dc4aeb48a3659173bd670249cd0327e3795bc5d6c5c106bd17fb530630f081282c18727149ffbeeb67037b6499f903b0dd521afa67087841f751fd06a91792fc2e7fa10a8b25c0434a11fd6c95c77f031aa2715fc3749ff71e27d28322d4e9ebe587dfb722332a2d2fc48d654a34ae3a05581e035c606158f0440c668481a4c457cff85703e1e117cb3d6c3f07c19855400c11479f2c230a85174905581e03aa9705b369190b5183f2b073797e29cc07766928dff9c307e9ec9994300401035713eea1764d8f2464447ba59fba61e15f1a5c4fc8cd610f8fdb3af4505a1a5a0141080300ead19e58881221cf02e877c91f01944607fa694ec5d1b2b5d1ef280c9acde103c07be3267e504d3a12fee2d6d54cee3a2fd10362112fd1e965df3b27e1e320ce05581e036bcc20594481b8d81021bef54a7c6be4b7ddd6913563d0127fe99d6ab00c0f4701af438415655f05581e03248da3b8720a2784a17616c093aba16d03ef0ee6535979bab7e32c4cd00848047e4d4c9d366cef05581e034a1b12a03d5a86cb2528dcc8f7fe3dbef88565541101273545612d5a400c1901d448511d91f23b36f55e0308a77a72a67a37a2f70a706ddb1fafbe055a13a156d9967ad677da6dd1aeaf3a05581e03122e75bb2c083f1d2d69d81675788d63efeaa7e70484159369c5f76ed004010219dd5a03a2396a9ed6f1c26f33f287eff0b756e1c4b994aafd76e682c3b2a3591c382ad003ee08a098b615eb35befb53490f2e05a48eea3d0b79878be9e07fe72f119c7a03035fa10b9debfc6b215c5d850b2637b12bf01758c6f468f6de3efb6b5235518198036354dd74770a90b0d36cbbb832b80408fb6a1a3a95aed95705a71c4004ee0c5d0391f07bde9b9b713dec0892f777b4171ab5d79550fcaa3f727ce371a579fbfa0803d9be28a4b11068c97e32cb61b4689e9b53027c142b734b29e86c44f1a717f798039014a6aa6ef1f464bfcfcd7e5e69d23d6fdb70a7c59b82b427994389859a137d034b7136d8b9196da29a931889357bca83dc5024a19980b3a823609e027a7d28cd032bf1c60f958a3208e625e38b99c425ef423d2d7e6fd0ad28ae077290d064590503af42f0784bc62c055ba67eeb07d6e2803bdabdacdbdb587fc41d024053b299c203081ec485bf3270f85c3f65fb49ec4a39420946da7614eb7c2109341b49b2df0303850504463e8d8be67556790cf187db8dc166db818c2f622b532f4402eeafc13f039995ac4e35f0c738509c2e3a662cf588bf3532cb3b4c3b57b2252f2bcbb8133c0219ffff03a0dd053e237402631c1143d2b091ffe2cf8976c51ecfd5f3a4ee9ffb1fd492090307b915372335d8d439892834230eab0a74e5c2827bb6eb9a79cbd84b3e126369039a105c4238c5da6415135af7116574a5b00d0e2867b3275ceef2805350da77a303aa054982670793e2e90bd8e74dc603327b9c0f10b8f203385cb270105cf983ae03238821def48781961b4813b105941038ecee6859a6ff51e71adb08e529d4124b0321a15b14aa1d0922ca24e3e859d45b187674666180ccf4bf3f23278f6ffabea803815cf9d7ee19e93844c2d8bc2ab65392e26328a99c052bf932e423006bbb78fb03366d5a9588612a223872ec3a857dfdcd6eef3931c5a1df39671940984a8c402403ca3ab1de8fcc41d12a6f1164d49e77969d0862d7f81924fe6aaf920c0b3a384d0219ffff03c0c27676d2bdf8a48899317c9bf382ab7e493c966646ddac1ab7713c3ac146950353c5e32a2498ca30da94de8c49896e0f01156ee9b1058165a41f2caf07faf450035b3dfa50f1cb4ff47add88abbda3f85342cb0eed97d094ff357a562a0c479a69039a8417bb2e45e35071b139b3545afed10937c9a7078a6708fa30b9c8e2238426032543d287d0df869ff2ebd4a0b7e3d1a777bc9b2c297d072f6b428325c1757dfc03223030562cbbf3dcd031da9a069ee99aacac77615f929eb6921174149680b27503bed7f41065fb7c01a4e94ad082f3d1258f36540b42e577950c6d1f9992cbb7d60219ffff038783f41b3afdf0834e6a42d4c4ee38346b12998e6b243ac58d1fca79eaa149b903eda5fb657335a57ed988a60795f3216d92542d298d68de9d5f66a011532e7d0e03e903bd445461327baa0859bd0adabdd1f2dda510fd398dec055ae0b41757fdf903a5f5a931db46cc393e56f3469dd46c6543554eaad090d400478dc19a3d3dbb1703dc3a394c7d9680788c8d952bc714676fdd073f1bbfd42957decb5147a35dfea80219ffff03e74b1af12d32d6625b6e9af4f108418707cef62d83099fccbbb77a12fbd553d10219ffff03117181bdd1994c779539c2ccf1d27bb08dd7508d23b4915ee591310e0070a25d03abee9fa26290e923ce0bc1dafa074085b5eae1d5bb8effca8ff89de5ae704945039c84c4f87921f21e03bacbcfeb05c06b99de3e380a9c5ec7d8c8496048419215030cb0e65e7d1e87bd15a2a912fbd6771cea78c87c087fe73a89912fad93803727036df5a4f057289010386d89611b6ca8c655a8c8f78edf787727f867059ee2c39f03af4d4fc041a2b67e93e67f442db79ec8bee16442cb66ea516f8f82466fa49e79037fa0f837c9938e7ff15a5306e65560961f1ac260ac91680af1e4f0ee1911c2a4037740d45f62bfaf1c66da3d3a07222f3f622c0d2e7a925307ed728ecdd91aedc203727b28ea80c0ada3ab2c35d8a40ea053fbac57ef7a6a8a6709ebc2def29b78f6036891cf8a17095faaeee8445712dbd95e1759044a1a30748ca820bc33478807090307c2247f223e3931da22f0611b887e3ac718c1043564e6af6839069253ccd4dc03dc7cc1c5ce71194bd006b743b09df24f69ca172a082e7a45e51973f6b72ef68703db4fa5455b0496bdea4b760e7fcfbec45a997dcdd6130e93f9fa80000573713103b6a0772933ec89fc42f219ca5a43c929a582ddf2afde8555ce60169533959097039c86eed3ec1498d68b170b938357713d93da8b9b472d49f746603980b657824403ff8d64d37a029eeb37a76a4306b670a63819ee6917678b83569baf2be3faa09d03dc194815f6d22cf0ba77425bddf4259fffb92c5801e90249fb833ffdf00bae5103bd92dbe09bd257b339440f07a0ff827546e6402ca152a9fc38b2f871a8652e7d033bd217dea5a41592a72c511bac28c0ec5846214e05dd0d18330af19aba067b4d038aa6239758091c9df09d3afa7af3adfdb3c39d85e99fe19bc680f10b474c33720318f9563305fb9ed27279b34d068f8a9bcf557895cccd3c8a61a8b3077fec99740325117ad1f37de8a2f85959655b16eed70d9b58735e22beeb113f192030258c90039c2a3950f0065d88a122be2a64186b3598fdf5927995c1185be74765a3c434b10315ce924bd41bec9366e0e121f751cc6986f3954d3146b667c6e9375d54c95e0d03d00ef616504882a2e0afa8d87b056cc18f658a799d3a62481b22a66a6f5d246903579be1a5816ff5940887ac3cc29986ccb9f46712b6b7d3894c137b8a4d80405e03e06f96fc5f9617497abe22fc13fc3f561521fb8c70be3100cf6a44b47e54f6d8031110c4a2cc01357891418fd9548aa4a1ec5ec1a46b26569cc7a2f8f6949e6039031e3f4c3898c6c6a72f51ba78478928b33799f08a33f4632e03b5ec16ebaf017a03c3ad48b1fd0bda8c5d6680bb2921da7fde7fa49b8ca2dbb556bfd50173ddaa410335f0ef42cd0a70dcdffe95b132101256a5c5f23c8d2118fcf8c6d07cb191327603040ea67430a4d66e71add4552c4582eca4ea957ec08e628cde7869041ab9b6ce0359b871c2c8f973525863f18c2f6f18a44eb2f8840fd6a1bb919905b4f01e421d03be833adcfeeb21b1c9649a72411a8f3433f3a15c6c4d9d1a0117cae337ba000603c56db9c25ca86dd976de4d2ac3ca14db6b8281bc197cbb57d8e487330fc885060354bbade28616422c37385e189a28fba5409bee41180fa08089d58145e9f4d7c20302b5f2df1cd36888b2cfa5ff5c19a2c210f0d1472073efc437fefe9493c2c9cc0313581fa11ad687397d4912c381a6dc0ea10ea7cdc13c29e29a0a1a0dce53bc9103dcffdc07401d5fadd7506f43499428f144476c02796d82fa09344dce86d660fe0332dafcd2dc2d255c7ca2c926ac6fbd0e91a7e9ed1e0822e8b285058d97a013e003264c9e0ff37d87df9a6155c0e1551697e3d3674db6cfb3ef341df887bc6d75a903696bdd89d8801a173361a0c73a96198e7c43ff939323719910dd788f2693597303f1d900423b5b8f5c83c62d8b7c5c8ac90337d4ca82a44e36151a42a391dd0a31033b89c27479ecffb8887c2b739e31b8723a3001b740bb2ffe7d26379e90be9a0404595a8860806040526004361061021e5760003560e01c80639871efa411610123578063d1b260d4116100ab578063f3dced3c1161006f578063f3dced3c1461061f578063f3e144b61461063f578063f6932b0d1461065f578063f851a4401461067f578063fa461e331461069f57600080fd5b8063d1b260d4146105a4578063d8837daf146105b7578063e0af3616146105ca578063e99bfa95146105ec578063f2fde38b146105ff57600080fd5b8063b07482d2116100f2578063b07482d214610528578063b3ab15fb1461053b578063b80c2f091461055b578063ca68d8f61461056e578063d13a35e61461058457600080fd5b80639871efa4146104ac5780639989d481146104bf5780639a09b285146104d25780639a307391146104f257600080fd5b80633ba7cadf116101a657806373679b6b1161017557806373679b6b146103f3578063779e45fc1461041b5780638575654f1461043b578063869c6b4b1461044e5780638da5cb5b1461048e57600080fd5b80633ba7cadf1461035257806341f4a9591461037e5780636aa476451461039e578063715018a6146103de57600080fd5b80630d5f0e3b116101ed5780630d5f0e3b146102e157806312a0ddc7146102f45780631afca626146103075780631bb943fd1461031d578063355b97181461033257600080fd5b806301617fab1461027557806303b87e5f1461028857806308298b5a146102ae5780630c00e013146102c157600080fd5b366102705732330361026e5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61026e610283366004614c00565b6106bf565b61029b610296366004614caa565b610a5c565b6040519081526020015b60405180910390f35b61029b6102bc366004614d76565b610b6d565b3480156102cd57600080fd5b5061026e6102dc366004614de8565b610c30565b61029b6102ef366004614e29565b610e5a565b61029b610302366004614e9c565b610eb4565b34801561031357600080fd5b5061029b60215481565b34801561032957600080fd5b5061026e610f01565b34801561033e57600080fd5b5061026e61034d366004614ef3565b610f35565b34801561035e57600080fd5b5061029b61036d366004614ef3565b602080526000908152604090205481565b34801561038a57600080fd5b5061026e610399366004614f0c565b610f49565b3480156103aa57600080fd5b506103c67370cbb871e8f30fc8ce23609e9e0ea87b6b222f5881565b6040516001600160a01b0390911681526020016102a5565b3480156103ea57600080fd5b5061026e611006565b3480156103ff57600080fd5b506103c6735703b683c7f928b721ca95da988d73a3299d475781565b34801561042757600080fd5b5061026e610436366004614f5d565b61101a565b61029b610449366004614e29565b6110d1565b34801561045a57600080fd5b5061047e610469366004614f92565b60046020526000908152604090205460ff1681565b60405190151581526020016102a5565b34801561049a57600080fd5b506000546001600160a01b03166103c6565b61029b6104ba366004614e29565b6111dd565b61029b6104cd366004614e9c565b611241565b3480156104de57600080fd5b5061026e6104ed366004614f92565b61132e565b3480156104fe57600080fd5b506103c661050d366004614f92565b601f602052600090815260409020546001600160a01b031681565b61029b610536366004615050565b6113d6565b34801561054757600080fd5b5061026e610556366004614f92565b6114e5565b61029b61056936600461507f565b611547565b34801561057a57600080fd5b5061029b61012c81565b34801561059057600080fd5b506003546103c6906001600160a01b031681565b61029b6105b236600461507f565b611611565b61029b6105c5366004614e29565b611784565b3480156105d657600080fd5b506103c66000805160206159f383398151915281565b61029b6105fa366004615135565b61187a565b34801561060b57600080fd5b5061026e61061a366004614f92565b611a9a565b34801561062b57600080fd5b506002546103c6906001600160a01b031681565b34801561064b57600080fd5b5061029b61065a366004615236565b611b10565b34801561066b57600080fd5b5061026e61067a366004614ef3565b611b5a565b34801561068b57600080fd5b506018546103c6906001600160a01b031681565b3480156106ab57600080fd5b5061026e6106ba3660046152c0565b611b6b565b600160ff1b81166001600160801b038216806107125760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610265565b81156108aa5760405163052f523360e11b81526000805160206159f383398151915260048201523360248201523060448201526001600160801b03821660648201527370cbb871e8f30fc8ce23609e9e0ea87b6b222f5890630a5ea46690608401600060405180830381600087803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b03841660048201526000805160206159f38339815191529250632e1a7d4d9150602401600060405180830381600087803b1580156107f457600080fd5b505af1158015610808573d6000803e3d6000fd5b50506040516000925033915047908381818185875af1925050503d806000811461084e576040519150601f19603f3d011682016040523d82523d6000602084013e610853565b606091505b50509050806108a45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610265565b50610988565b806001600160801b031634146108fb5760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610265565b6000805160206159f38339815191526001600160a01b031663d0e30db0826001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b15801561094d57600080fd5b505af1158015610961573d6000803e3d6000fd5b50505050506109886000805160206159f383398151915233836001600160801b0316611d53565b604051848152600080516020615a338339815191529060200160405180910390a1600080516020615a13833981519152826109d75773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6109e7565b6000805160206159f38339815191525b83610a00576000805160206159f3833981519152610a16565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b604080516001600160a01b03938416815292909116602083015233908201526001600160801b03831660608201819052608082015260a00160405180910390a150505050565b6000876080013542811015610a835760405162461bcd60e51b815260040161026590615312565b610a8b611d83565b6040518b8152600080516020615a338339815191529060200160405180910390a16001600160a01b038a16610af05760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610265565b89610b44610b03368c90038c018c61533a565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c92508b91508a9050893388611ddc565b9250610b5560408b01358b3561216a565b50610b5f60018055565b509998505050505050505050565b60405160a087901c8152600090600080516020615a338339815191529060200160405180910390a16001600160a01b038416610bd95760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610265565b610bf16001600160a01b03881687878686338a612390565b9050610c26866001600160a01b03891615610c0c578861216a565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61216a565b9695505050505050565b806000816001600160401b03811115610c4b57610c4b614faf565b604051908082528060200260200182016040528015610c74578160200160208202803683370190505b50905060005b82811015610e0e57601f6000868684818110610c9857610c986153c0565b9050602002810190610caa91906153d6565b610cbb906040810190602001614f92565b6001600160a01b039081168252602082019290925260400160002054163314801590610d2d5750848482818110610cf457610cf46153c0565b9050602002810190610d0691906153d6565b610d17906040810190602001614f92565b6001600160a01b0316336001600160a01b031614155b15610d4b5760405163203b1cdd60e21b815260040160405180910390fd5b6000610d81610d7c878785818110610d6557610d656153c0565b9050602002810190610d7791906153d6565b612b73565b612baf565b90506020600082815260200190815260200160002054838381518110610da957610da96153c0565b602002602001018181525050600160ff1b838381518110610dcc57610dcc6153c0565b602002602001015103610df2576040516311b18c4b60e11b815260040160405180910390fd5b60009081526020805260409020600160ff1b9055600101610c7a565b50336001600160a01b03167f2d978b051248279fa3127485450ca814a26b9b0938be9f714eda15eaec5ca881858584604051610e4c939291906154a0565b60405180910390a250505050565b60405160a086901c8152600090600080516020615a338339815191529060200160405180910390a16000610e9b336001600160a01b03891688888888612be2565b9092509050610eaa868261216a565b5095945050505050565b6000600080516020615a3383398151915284604051610ed591815260200190565b60405180910390a1610ef73380610ef1368790038701876155c4565b8561307b565b90505b9392505050565b610f096133f2565b6040517f0b3b40bc6027444e59029877c53be6734ca3724242753ffe5aa1a6066635211f90600090a132ff5b610f3d6133f2565b610f468161344c565b50565b610f516133f2565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03841601610ff657600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610fc4576040519150601f19603f3d011682016040523d82523d6000602084013e610fc9565b606091505b5091509150818190610fee5760405162461bcd60e51b81526004016102659190615604565b505050505050565b611001838383611d53565b505050565b61100e6133f2565b61101860006134e4565b565b6018546001600160a01b031633148061103d57506000546001600160a01b031633145b61106e5760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610265565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fede97de789011d2becb9fba8441864c3b17f4a20f7ebf0a77e93f30adc30e207910160405180910390a15050565b3360009081526004602052604081205460ff1615156001146111055760405162461bcd60e51b815260040161026590615637565b60405160a087901c8152600080516020615a338339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa15801561116a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118e919061565e565b90925090506001600160a01b0381166111b95760405162461bcd60e51b815260040161026590615698565b6111d16001600160a01b038916888888888787612390565b98975050505050505050565b60405160a086901c8152600090600080516020615a338339815191529060200160405180910390a161121d6001600160a01b038716868686863333612390565b9050611238856001600160a01b03881615610c0c578761216a565b95945050505050565b3360009081526004602052604081205460ff1615156001146112755760405162461bcd60e51b815260040161026590615637565b61127d611d83565b604051848152600080516020615a338339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611302919061565e565b9092509050611321828261131b368990038901896155c4565b8761307b565b92505050610efa60018055565b6018546001600160a01b031633148061135157506000546001600160a01b031633145b6113825760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610265565b601880546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c9060200160405180910390a150565b60006113e0611d83565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6114056060840160408501614f92565b6001600160a01b0316036114525760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610265565b6114626060830160408401614f92565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156114a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114cc91906156c0565b83526114da3085858561307b565b9050610efa60018055565b336000818152601f602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915591519182527fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c910160405180910390a250565b600087608001354281101561156e5760405162461bcd60e51b815260040161026590615312565b611576611d83565b6040518a8152600080516020615a338339815191529060200160405180910390a16115ea6115a9368b90038b018b61533a565b8989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508b92508a9150899050883380611ddc565b91506115fb60408a01358a3561216a565b61160460018055565b5098975050505050505050565b60008760800135428110156116385760405162461bcd60e51b815260040161026590615312565b611640611d83565b3360009081526004602052604090205460ff1615156001146116745760405162461bcd60e51b815260040161026590615637565b6040518a8152600080516020615a338339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa1580156116d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f9919061565e565b90925090506001600160a01b0381166117245760405162461bcd60e51b815260040161026590615698565b611777611736368d90038d018d61533a565b8b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508d92508c91508b90508a8888611ddc565b9350505061160460018055565b3360009081526004602052604081205460ff1615156001146117b85760405162461bcd60e51b815260040161026590615637565b60405160a087901c8152600080516020615a338339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa15801561181d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611841919061565e565b90925090506001600160a01b03811661186c5760405162461bcd60e51b815260040161026590615698565b611604828289898989612be2565b60008860800135428110156118a15760405162461bcd60e51b815260040161026590615312565b6118a9611d83565b89356001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed19810161190f5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610265565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197a91906156c0565b905060006040518060a001604052808e6000013581526020018e60200160208101906119a69190614f92565b6001600160a01b031681526020018381526020018e6060013581526020018e60800135815250905060008c8c90506001600160401b038111156119eb576119eb614faf565b604051908082528060200260200182016040528015611a14578160200160208202803683370190505b50905060005b8c811015611a7a578e60400135848f8f84818110611a3a57611a3a6153c0565b90506020020135611a4b91906156ef565b611a559190615706565b828281518110611a6757611a676153c0565b6020908102919091010152600101611a1a565b50611a8b82828d8d8d8d308e611ddc565b95505050505061160460018055565b611aa26133f2565b6001600160a01b038116611b075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610265565b610f46816134e4565b60405160a089901c8152600090600080516020615a338339815191529060200160405180910390a1611b43888484613534565b610b5f336001600160a01b038b1689898989612be2565b611b626133f2565b610f4681610f3d565b611baf565b3d6000803e3d6000fd5b80611b8757611b87611b70565b600160005114601f3d11163d151780611bab57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa611be657611be6611b70565b6020806004808501335afa611bfd57611bfd611b70565b60206040600460088501335afa611c1657611c16611b70565b6000806000881360018114611c32576020519250879150611c3b565b60005192508891505b507fff1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314611cb357635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114611d2557826014860152836034860152336054860152816074860152611d206020600060846010890160007370cbb871e8f30fc8ce23609e9e0ea87b6b222f585af1611b7a565b611d48565b336010860152816030860152611d48602060006044600c89016000885af1611b7a565b505050505050505050565b611d668363a9059cbb60e01b848461369a565b6110015760405163fb7f507960e01b815260040160405180910390fd5b600260015403611dd55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610265565b6002600155565b60408801516000908990611e3d5760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610265565b805160208201516001600160a01b0391821691611e5b9116856136ed565b9250611e6681613778565b15611ed5576000805160206159f38339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611eb857600080fd5b505af1158015611ecc573d6000803e3d6000fd5b50505050503094505b6000805b8b51811015611f11578b8181518110611ef457611ef46153c0565b602002602001015182611f079190615728565b9150600101611ed9565b508260400151811115611f845760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610265565b508515611fd35760405162461bcd60e51b815260206004820152601b60248201527f74686520706172616d65746572206973206465707265636174656400000000006044820152606401610265565b895188146120155760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610265565b60005b888110156120865761207e868661203b86602001516001600160a01b0316613778565b8e858151811061204d5761204d6153c0565b60200260200101518e8e87818110612067576120676153c0565b9050602002810190612079919061573b565b61379a565b600101612018565b50612095826020015185613954565b602082015183906120af906001600160a01b0316866136ed565b6120b99190615784565b925081606001518310156121085760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610265565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020615a138339815191529060a00160405180910390a1505098975050505050505050565b601f193601356561aefa81eaab60d11b6001600160d01b0319821601611001576001600160a01b03811665ffffffffffff60a083901c1661012c8111156121f35760405162461bcd60e51b815260206004820152601b60248201527f6572726f7220636f6d6d697373696f6e2072617465206c696d697400000000006044820152606401610265565b600061220182612710615784565b61220b83886156ef565b6122159190615706565b9050612229856001600160a01b0316613778565b156122d7576000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461227b576040519150601f19603f3d011682016040523d82523d6000602084013e612280565b606091505b50509050806122d15760405162461bcd60e51b815260206004820152601b60248201527f636f6d6d697373696f6e2077697468206574686572206572726f7200000000006044820152606401610265565b50612347565b60405163052f523360e11b81527370cbb871e8f30fc8ce23609e9e0ea87b6b222f5890630a5ea46690612314908890339088908790600401615797565b600060405180830381600087803b15801561232e57600080fd5b505af1158015612342573d6000803e3d6000fd5b505050505b604080518281526001600160a01b03851660208201527fffc60ee157a42f4d8edbd1897e6581a96d9ed04e44fb2ab53a47ce1eb8f2775b910160405180910390a1505050505050565b60006125dc565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b828152600060206000600484600401865afa6123e8576123e86054700419d95d081d1bdad95b8819985a5b195960621b612397565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61243657612436605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612397565b600051915083836004015260206000602485855afa6124775761247760597c1562616c616e63654f662063616c6c206661696c656400000000000000612397565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61243657612436605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612397565b668b0367c240bc6b60c21b8152600060406000600484600401875afa61250e5761250e60587c1472657365727665732063616c6c206661696c65640000000000000000612397565b60005160205186801561253a5789156125325761252b8786612483565b8390039650505b909190612551565b88156125515761254a87866123f3565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca00929092028201910204905084801561258b5781600484015260006024840152612599565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16111d1576111d1605470041cddd85c0818d85b1b0819985a5b195960621b612397565b84602085028101858061260357612603604e6b0b656d70747920706f6f6c7360901b612397565b5060405182358b15600181146126ad5734156126395761263960557111696e76616c6964206d73672e76616c756560581b612397565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b606484015260008060848560007370cbb871e8f30fc8ce23609e9e0ea87b6b222f585af16126a8576126a86056720498db185a5b481d1bdad95b8819985a5b195960521b612397565b61277f565b60018c3410036126d7576126d760557111696e76616c6964206d73672e76616c756560581b612397565b670a9059cbbd0e30db60c41b835260008060048086018f6000805160206159f38339815191525af1612724576127246056720499195c1bdcda5d081155120819985a5b195960521b612397565b6001600160a01b03821683600401528b83602401526020600060448560006000805160206159f38339815191525af161277f5761277f60587c147472616e736665722057455448206661696c65640000000000000000612397565b508a9450602084015b838110156127de5780356127d26001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b6124c6565b96509150602001612788565b5060009350600160fe1b811680156128c2576000945061282b3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6124c6565b9550672e1a7d4da9059cbb60c01b83528560048401526020600060248560006000805160206159f38339815191525af16128875761288760577c13776974686472617720455448206661696c6564000000000000000000612397565b600080600080898b5af16128bd576128bd60577c137472616e7366657220455448206661696c6564000000000000000000612397565b612b05565b60009350600160ff1b8216801561297457600160fc1b83161561296f576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa61292857612928605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612397565b600051955087846004015260206000602486895afa6129695761296960567c15746f6b656e302062616c616e6365206661696c656400000000000000612397565b60005194505b612a10565b600160fd1b831615612a10576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa6129c9576129c9605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612397565b600051955087846004015260206000602486895afa612a0a57612a0a60597c15746f6b656e312062616c616e6365206661696c656400000000000000612397565b60005194505b50612a488763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6124c6565b95508460001060018114612ab157600160ff1b83168015612a8957612a826770a082310dfe168160c01b6001600160a01b038616876123b3565b9650612aab565b612aa86770a08231d21220a760c01b6001600160a01b038616876123b3565b96505b50612b03565b6770a082310dfe168160c01b845287846004015260206000602486895afa612afb57612afb60587c146765742062616c616e63654f66206661696c65640000000000000000612397565b846000510396505b505b505088841015612b3757612b37605a7c164d696e2072657475726e206e6f742072656163686564000000000000612397565b8a8152826020820152326040820152896060820152836080820152600080516020615a1383398151915260a082a1505050979650505050505050565b60006040517f5d068ce469dcf41137bcb6c3e1894e076ad915392f28fda19ba41601d33c32a68152610120836020830137610140902092915050565b6000612bdc612bbc613b71565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b600080612f7c565b6000846001600160ff1b031015612c0c57630b3f79fd60e41b60005260046000fd5b604051600160ff1b8516156001600160a01b0386168160018114612c9957630251596160e31b8452600484018681526000602082015289604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152602060a08201528760c08201525060008060e4866000865af180612c8d5760206000fd5b5060206000803e612cf5565b630251596160e31b845260048401868152600160208201528960408201526401000276a4606082015260a06080820152602060a08201528760c08201525060008060e4866000865af180612ced5760206000fd5b5060208060003e5b505050506000519050600160ff1b811015612d1b576322323ba760e21b60005260046000fd5b19600101949350505050565b600181341003612d4257631841b4e160e01b60005260046000fd5b600080600080846000805160206159f38339815191525af180611bab57611bab60577c1357455448206465706f736974206661696c6564000000000000000000612397565b604051672e1a7d4da9059cbb60c01b815282600482015260008060248360006000805160206159f38339815191525af1905080612de657612de660587c1477697468647261772077657468206661696c65640000000000000000612397565b60008060008086865af190508061100157611001605571045cd95b9908195d1a195c8819985a5b1959605a1b612397565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080612e6657612e666055710459d95d081d1bdad95b8c0819985a5b1959605a1b612397565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080612e6657612e666054710459d95d081d1bdad95b8c4819985a5b1959605a1b612397565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8085612f12578235600160ff1b81161560018114612f0357612efc82612e75565b9350612f0f565b612f0c82612e17565b93505b50505b86612f48578335600160ff1b81161560018114612f3957612f3282612e17565b9250612f45565b612f4282612e75565b92505b50505b60405182600052816020523260405285608052600080516020615a1383398151915260a06000a16040525095945050505050565b83601f19602085028201018480612f9e576333f3e07b60e11b60005260046000fd5b50600034118015612fb657612fb289612d27565b309a505b88606052825b82811015612fde57612fd18a82358e30612bea565b309c509950602001612fbc565b506000600160fd1b833516118060018114612ffe57801561301c5761302c565b61300b8b85358f30612bea565b9650613017878d612d87565b61302c565b6130298b85358f8f612bea565b96505b508886101561305d5761305d605a7c164d696e2072657475726e206e6f742072656163686564000000000000612397565b61306a8183888688612ec6565b945050505050965096945050505050565b8151600090810361309f576040516387741f3360e01b815260040160405180910390fd5b826060015180156130b1575082513414155b80156130e357506000805160206159f38339815191526130d76060840160408501614f92565b6001600160a01b031614155b15613101576040516387741f3360e01b815260040160405180910390fd5b8260800151801561313857506000805160206159f383398151915261312c6080840160608501614f92565b6001600160a01b031614155b156131565760405163591c75ef60e01b815260040160405180910390fd5b428360400151101561317b57604051632b32713d60e01b815260040160405180910390fd5b8260800151613205576131946080830160608401614f92565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320091906156c0565b613211565b836001600160a01b0316315b9050600061322f846000015187878688606001518960800151613c64565b905080156132535760405163f70b432d60e01b815260048101829052602401610265565b83608001516132e8578161326d6080850160608601614f92565b6040516370a0823160e01b81526001600160a01b03888116600483015291909116906370a0823190602401602060405180830381865afa1580156132b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d991906156c0565b6132e39190615784565b6132fc565b6132fc826001600160a01b03871631615784565b915083602001518210156133235760405163a7c6745960e01b815260040160405180910390fd5b6040805184358152610180850135602082018190529181018390527f5018f79d04d45a1d0ef7df4f8a02c44c1b0b59cd11983e44f1e9dfaf071db2199060600160405180910390a1600080516020615a1383398151915261338a6060860160408701614f92565b61339a6080870160608801614f92565b6133aa6040880160208901614f92565b8851604080516001600160a01b0395861681529385166020850152919093169082015260608101919091526080810185905260a00160405180910390a150505b949350505050565b6000546001600160a01b031633146110185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610265565b60f081901c6001600160a01b03821661271082111561347e57604051634bd934b560e01b815260040160405180910390fd5b6001600160a01b0381166134a557604051633480121760e21b815260040160405180910390fd5b602183905560405183815233907f04e0c6a722afc105ccf81d8792757f388d3dad9bc137b2e269cfd6ee99faba999060200160405180910390a2505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8015611001576000606060e08390036135d5576040516001600160a01b0386169061356e9063d505accf60e01b90879087906020016157c1565b60408051601f1981840301815290829052613588916157e5565b6000604051808303816000865af19150503d80600081146135c5576040519150601f19603f3d011682016040523d82523d6000602084013e6135ca565b606091505b509092509050613644565b610100839003613606576040516001600160a01b0386169061356e906323f2ebc360e21b90879087906020016157c1565b60405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40e0cae4dad2e840d8cadccee8d606b1b6044820152606401610265565b816136935761367a816040518060400160405280600f81526020016e02832b936b4ba103330b4b632b21d1608d1b815250614102565b60405162461bcd60e51b81526004016102659190615604565b5050505050565b60006040518481528360048201528260248201526020600060448360008a5af191505080156133ea573d80156136dc57600160005114601f3d111691506136e4565b6000863b1191505b50949350505050565b60006136f883613778565b1561370e57506001600160a01b03811631612bdc565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015613754573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa91906156c0565b6001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b60006137d4838360008181106137b2576137b26153c0565b90506020028101906137c491906157f7565b608001356001600160a01b031690565b905060008083815b8181101561394757801561381a576137ff8787838181106137b2576137b26153c0565b94506138146001600160a01b038616306136ed565b9750309a505b30613826600184615784565b82148015613832575089155b1561383e57508961390b565b613849600184615784565b821080156138945750878761385f846001615728565b81811061386e5761386e6153c0565b905060200281019061388091906157f7565b61388e90602081019061573b565b90506001145b156139065787876138a6846001615728565b8181106138b5576138b56153c0565b90506020028101906138c791906157f7565b6138d590602081019061573b565b60008181106138e6576138e66153c0565b90506020020160208101906138fb9190614f92565b90506001945061390b565b600094505b61393b8c828b8b8b87818110613923576139236153c0565b905060200281019061393591906157f7565b88614265565b508392506001016137dc565b5050505050505050505050565b613966826001600160a01b0316613778565b15613af3576040516370a0823160e01b81523060048201526000906000805160206159f3833981519152906370a0823190602401602060405180830381865afa1580156139b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139db91906156c0565b90508015613a4357604051632e1a7d4d60e01b8152600481018290526000805160206159f383398151915290632e1a7d4d90602401600060405180830381600087803b158015613a2a57600080fd5b505af1158015613a3e573d6000803e3d6000fd5b505050505b478015613aed576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613a97576040519150601f19603f3d011682016040523d82523d6000602084013e613a9c565b606091505b50509050806136935760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610265565b50505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5e91906156c0565b9050801561100157611001838383611d53565b600030733b3ae790df4f312e745d270119c6052904fb6790148015613b965750600146145b15613bc057507f568575351b1514757989de9c786c66097e2ae26e38a5fd1b885ac2dd02b8b0bc90565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f9569cad29571f225e7f2c73ecd677d78be383da74efd13f4af2bade05dc1a8de828401527fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b360608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000428460e001351015613c7a57506002610c26565b60006080850135613c8f60a08701358a6156ef565b613c999190615706565b90506102208501356000613ccd8a83613cb860608b0160408c01614f92565b613cc860808c0160608d01614f92565b6145a1565b905080831115613d1657604080518281526020810183905291935083917facd4baa7803154e33bc54ca36afe61420bf31d5f1bf3587746c146d2f3a76e50910160405180910390a15b6000613d24610d7c89612b73565b9050613d8281613d3a60408b0160208c01614f92565b613d486101208c018c61580d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147cf92505050565b94508415613d935750505050610c26565b613da284828a60a0013561480c565b94508415613db35750505050610c26565b8515613efb577370cbb871e8f30fc8ce23609e9e0ea87b6b222f58630a5ea466613de360808b0160608c01614f92565b613df360408c0160208d01614f92565b735703b683c7f928b721ca95da988d73a3299d4757886040518563ffffffff1660e01b8152600401613e289493929190615797565b600060405180830381600087803b158015613e4257600080fd5b505af1158015613e56573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b815260048101879052735703b683c7f928b721ca95da988d73a3299d47579250632e1a7d4d9150602401600060405180830381600087803b158015613ea757600080fd5b505af1158015613ebb573d6000803e3d6000fd5b50506040516001600160a01b038c16925086156108fc02915086906000818181858888f19350505050158015613ef5573d6000803e3d6000fd5b50613f89565b7370cbb871e8f30fc8ce23609e9e0ea87b6b222f58630a5ea466613f2560808b0160608c01614f92565b613f3560408c0160208d01614f92565b8c886040518563ffffffff1660e01b8152600401613f569493929190615797565b600060405180830381600087803b158015613f7057600080fd5b505af1158015613f84573d6000803e3d6000fd5b505050505b8615614022576000805160206159f38339815191526001600160a01b031663d0e30db08c6040518263ffffffff1660e01b81526004016000604051808303818588803b158015613fd857600080fd5b505af1158015613fec573d6000803e3d6000fd5b505050505061401d8860200160208101906140079190614f92565b6000805160206159f3833981519152908d611d53565b6140f4565b306001600160a01b038b16036140665761401d61404560408a0160208b01614f92565b8c61405660608c0160408d01614f92565b6001600160a01b03169190611d53565b7370cbb871e8f30fc8ce23609e9e0ea87b6b222f58630a5ea46661409060608b0160408c01614f92565b8c6140a160408d0160208e01614f92565b8f6040518563ffffffff1660e01b81526004016140c19493929190615797565b600060405180830381600087803b1580156140db57600080fd5b505af11580156140ef573d6000803e3d6000fd5b505050505b505050509695505050505050565b606060048351106142335760208301516001600160e01b0319811662461bcd60e51b14801561413357506044845110155b156141d357602484810151808601820180519192909190614155908490615728565b61415f9190615728565b865110156141a75760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610265565b84816040516020016141ba929190615853565b6040516020818303038152906040529350505050612bdc565b6001600160e01b03198116634e487b7160e01b1480156141f4575083516024145b156142315760248401518361420882614899565b6040516020016142199291906158a2565b60405160208183030381529060405292505050612bdc565b505b8161423d846148c1565b60405160200161424e9291906158d7565b604051602081830303815290604052905092915050565b60808201356001600160a01b0316600080614280858061573b565b9050905060005b81811015611d4857600061429e604088018861573b565b838181106142ae576142ae6153c0565b60200291909101359150506001600160a01b038116600160ff1b821661ffff60a084901c1661271081111561431b5760405162461bcd60e51b8152602060048201526013602482015272776569676874206f7574206f662072616e676560681b6044820152606401610265565b6143258188615728565b9650614332600187615784565b8503614399576127108711156143995760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610265565b8861440857600081612710146143c5576127106143b6838e6156ef565b6143c09190615706565b6143c7565b8b5b90506144068e6143da60208e018e61573b565b898181106143ea576143ea6153c0565b90506020020160208101906143ff9190614f92565b8b84614aa8565b505b81156144d2576144188a8061573b565b86818110614428576144286153c0565b905060200201602081019061443d9190614f92565b6001600160a01b0316636f7929f28d8561445a60608f018f61573b565b8a81811061446a5761446a6153c0565b905060200281019061447c919061580d565b6040518563ffffffff1660e01b815260040161449b9493929190615928565b600060405180830381600087803b1580156144b557600080fd5b505af11580156144c9573d6000803e3d6000fd5b50505050614592565b6144dc8a8061573b565b868181106144ec576144ec6153c0565b90506020020160208101906145019190614f92565b6001600160a01b03166330e6ae318d8561451e60608f018f61573b565b8a81811061452e5761452e6153c0565b9050602002810190614540919061580d565b6040518563ffffffff1660e01b815260040161455f9493929190615928565b600060405180830381600087803b15801561457957600080fd5b505af115801561458d573d6000803e3d6000fd5b505050505b84600101945050505050614287565b600060f084901c6001600160a01b038516806146c35760405163e6a4390560e01b81526001600160a01b03808716600483015285166024820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063e6a4390590604401602060405180830381865afa158015614617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463b9190615955565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561467d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a19190615955565b9050846001600160a01b0316816001600160a01b0316036146c157600192505b505b600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015614704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147289190615989565b5091509150816001600160701b03166000148061474c57506001600160701b038116155b1561475f576000199450505050506133ea565b8360010361479757806001600160701b0316826001600160701b03168a61478691906156ef565b6147909190615706565b94506147c3565b816001600160701b0316816001600160701b03168a6147b691906156ef565b6147c09190615706565b94505b50505050949350505050565b60608101516080820151600091906147f1856147ec888585614b3d565b614bac565b61480057600192505050610efa565b60009695505050505050565b6000828152602080526040812054600160ff1b81016148305760035b915050610efa565b8015801561483e5750600083115b156148465750815b80851115614855576004614828565b8085036148755760008481526020805260409020600160ff1b905561488e565b61487f8582615784565b60008581526020805260409020555b600095945050505050565b6060612bdc826040516020016148b191815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b906000906148e99060026156ef565b6148f4906002615728565b6001600160401b0381111561490b5761490b614faf565b6040519080825280601f01601f191660200182016040528015614935576020820181803683370190505b509050600360fc1b81600081518110614950576149506153c0565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061497f5761497f6153c0565b60200101906001600160f81b031916908160001a90535060005b8451811015614aa0578260048683815181106149b7576149b76153c0565b01602001516001600160f81b031916901c60f81c601081106149db576149db6153c0565b1a60f81b826149eb8360026156ef565b6149f6906002615728565b81518110614a0657614a066153c0565b60200101906001600160f81b031916908160001a90535082858281518110614a3057614a306153c0565b60209101015160f81c600f1660108110614a4c57614a4c6153c0565b1a60f81b82614a5c8360026156ef565b614a67906003615728565b81518110614a7757614a776153c0565b60200101906001600160f81b031916908160001a90535080614a98816159d9565b915050614999565b509392505050565b306001600160a01b03851603614ac857614ac3828483611d53565b613aed565b60405163052f523360e11b81527370cbb871e8f30fc8ce23609e9e0ea87b6b222f5890630a5ea46690614b05908590889088908790600401615797565b600060405180830381600087803b158015614b1f57600080fd5b505af1158015614b33573d6000803e3d6000fd5b5050505050505050565b60006001600160ff1b0382167f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1811015614aa0576040518581528360ff1c601b016020820152846040820152816060820152600080526020600060808360015afa505060005195945050505050565b6000826001600160a01b0316826001600160a01b03161480614bea57506001600160a01b038084166000908152601f60205260409020548382169116145b15614bf757506001612bdc565b50600092915050565b60008060408385031215614c1357600080fd5b50508035926020909101359150565b6001600160a01b0381168114610f4657600080fd5b8035614c4281614c22565b919050565b600060a08284031215614c5957600080fd5b50919050565b60008083601f840112614c7157600080fd5b5081356001600160401b03811115614c8857600080fd5b6020830191508360208260051b8501011115614ca357600080fd5b9250929050565b60008060008060008060008060006101408a8c031215614cc957600080fd5b8935985060208a0135614cdb81614c22565b9750614cea8b60408c01614c47565b965060e08a01356001600160401b0380821115614d0657600080fd5b614d128d838e01614c5f565b90985096506101008c0135915080821115614d2c57600080fd5b614d388d838e01614c5f565b90965094506101208c0135915080821115614d5257600080fd5b50614d5f8c828d01614c5f565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215614d8f57600080fd5b8635955060208701359450604087013593506060870135614daf81614c22565b925060808701356001600160401b03811115614dca57600080fd5b614dd689828a01614c5f565b979a9699509497509295939492505050565b60008060208385031215614dfb57600080fd5b82356001600160401b03811115614e1157600080fd5b614e1d85828601614c5f565b90969095509350505050565b600080600080600060808688031215614e4157600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614e6c57600080fd5b614e7888828901614c5f565b969995985093965092949392505050565b60006101408284031215614c5957600080fd5b600080600060e08486031215614eb157600080fd5b83359250614ec28560208601614c47565b915060c08401356001600160401b03811115614edd57600080fd5b614ee986828701614e89565b9150509250925092565b600060208284031215614f0557600080fd5b5035919050565b600080600060608486031215614f2157600080fd5b8335614f2c81614c22565b92506020840135614f3c81614c22565b929592945050506040919091013590565b80358015158114614c4257600080fd5b60008060408385031215614f7057600080fd5b8235614f7b81614c22565b9150614f8960208401614f4d565b90509250929050565b600060208284031215614fa457600080fd5b8135610efa81614c22565b634e487b7160e01b600052604160045260246000fd5b600060a08284031215614fd757600080fd5b60405160a081018181106001600160401b038211171561500757634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015261503360608401614f4d565b606082015261504460808401614f4d565b60808201525092915050565b600080600060e0848603121561506557600080fd5b833561507081614c22565b9250614ec28560208601614fc5565b600080600080600080600080610120898b03121561509c57600080fd5b883597506150ad8a60208b01614c47565b965060c08901356001600160401b03808211156150c957600080fd5b6150d58c838d01614c5f565b909850965060e08b01359150808211156150ee57600080fd5b6150fa8c838d01614c5f565b90965094506101008b013591508082111561511457600080fd5b506151218b828c01614c5f565b999c989b5096995094979396929594505050565b600080600080600080600080610120898b03121561515257600080fd5b61515c8a8a614c47565b975060a08901356001600160401b038082111561517857600080fd5b6151848c838d01614c5f565b909950975060c08b013591508082111561519d57600080fd5b6151a98c838d01614c5f565b909750955060e08b01359150808211156151c257600080fd5b506151cf8b828c01614c5f565b9094509250506101008901356151e481614c22565b809150509295985092959890939650565b60008083601f84011261520757600080fd5b5081356001600160401b0381111561521e57600080fd5b602083019150836020828501011115614ca357600080fd5b60008060008060008060008060c0898b03121561525257600080fd5b88359750602089013561526481614c22565b9650604089013595506060890135945060808901356001600160401b038082111561528e57600080fd5b61529a8c838d01614c5f565b909650945060a08b01359150808211156152b357600080fd5b506151218b828c016151f5565b600080600080606085870312156152d657600080fd5b843593506020850135925060408501356001600160401b038111156152fa57600080fd5b615306878288016151f5565b95989497509550505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a0828403121561534c57600080fd5b60405160a081018181106001600160401b038211171561537c57634e487b7160e01b600052604160045260246000fd5b60405282358152602083013561539181614c22565b806020830152506040830135604082015260608301356060820152608083013560808201528091505092915050565b634e487b7160e01b600052603260045260246000fd5b6000823561013e198336030181126153ed57600080fd5b9190910192915050565b6000808335601e1984360301811261540e57600080fd5b83016020810192503590506001600160401b0381111561542d57600080fd5b803603821315614ca357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526020808501945080840160005b8381101561549557815187529582019590820190600101615479565b509495945050505050565b60408082528181018490526000906060808401600587901b850182018885805b8a8110156155af57888403605f190185528235368d900361013e190181126154e6578283fd5b8c018035855261014060206154fc818401614c37565b6001600160a01b031681880152615514838b01614c37565b6001600160a01b03168a88015261552c838a01614c37565b6001600160a01b0316898801526080838101359088015260a0808401359088015260c0808401359088015260e0808401359088015261010061556f818501614f4d565b151590880152610120615584848201856153f7565b945083828a0152615598848a01868361543c565b9983019998505050949094019350506001016154c0565b50505085810360208701526147c08188615465565b600060a082840312156155d657600080fd5b610efa8383614fc5565b60005b838110156155fb5781810151838201526020016155e3565b50506000910152565b60208152600082518060208401526156238160408501602087016155e0565b601f01601f19169190910160400192915050565b6020808252600d908201526c6f6e6c79207072696f7269747960981b604082015260600190565b6000806040838503121561567157600080fd5b825161567c81614c22565b602084015190925061568d81614c22565b809150509250929050565b6020808252600e908201526d6e6f74206164647265737328302960901b604082015260600190565b6000602082840312156156d257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417612bdc57612bdc6156d9565b60008261572357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115612bdc57612bdc6156d9565b6000808335601e1984360301811261575257600080fd5b8301803591506001600160401b0382111561576c57600080fd5b6020019150600581901b3603821315614ca357600080fd5b81810381811115612bdc57612bdc6156d9565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160e01b031984168152818360048301376000910160040190815292915050565b600082516153ed8184602087016155e0565b60008235609e198336030181126153ed57600080fd5b6000808335601e1984360301811261582457600080fd5b8301803591506001600160401b0382111561583e57600080fd5b602001915036819003821315614ca357600080fd5b600083516158658184602088016155e0565b6508ae4e4dee4560d31b90830190815283516158888160068401602088016155e0565b602960f81b60069290910191820152600701949350505050565b600083516158b48184602088016155e0565b650a0c2dcd2c6560d31b90830190815283516158888160068401602088016155e0565b600083516158e98184602088016155e0565b670aadcd6dcdeeedc560c31b908301908152835161590e8160088401602088016155e0565b602960f81b60089290910191820152600901949350505050565b6001600160a01b03858116825284166020820152606060408201819052600090610c26908301848661543c565b60006020828403121561596757600080fd5b8151610efa81614c22565b80516001600160701b0381168114614c4257600080fd5b60008060006060848603121561599e57600080fd5b6159a784615972565b92506159b560208501615972565b9150604084015163ffffffff811681146159ce57600080fd5b809150509250925092565b6000600182016159eb576159eb6156d9565b506001019056fe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba264697066735822122086de79ead0fb270f5ba155e53602dfc8ed82c71fdd9d09db0688152e77f6d3ff64736f6c634300081100330058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563054d01b673cfc6441b0ab383327afaf3ad1019455170058210310e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6041010219080405581d0222a6136796a4543993032dac350fd03a38b21b9171733dc96a647ab90701195a8805581d02213db77e19bf46a10eac2cc934eb93da061b24922305d34507e19ee704010219040105581e03bba256d6d66ad6a711d3b9d82772be67a8ae407e1ef7a71ac166da7fe00c0147024d62d7fa523b03c29ba103680f2a5969c810900a54d65ba114eed252f3ae79dfc831b53274327b039e570bb9c762292ffd1b2f83ea25d6e68fe1bbb49af4b1150d02da3b75be4a5c03ccbc414f180ccbae836c4938ca3a85fbd0d4e397e809418d8f7cc83090b1293e0219e70e03602be9dd1fac2a83b31fba97e30e5b2a5a50938e05d7481aca2b31bc07b7892203709c2e28c97713ea6148c8e927c4722871ffd908dac25a47d178dafa57d663a3039b5ba9e59aa720b27edbc05b9fa3e64efbdb55af554492526bcda64782150e65030d51868fa67dee90cf565fa6c40af4d7158076f082e1bedf7e945875a6ee141903266159f6836de0ad1682089250b2bbc8e74dc1cf6cd35b400b4b1c9c62e76e5703cbc34d9bf51c51134a309f40826de0df7032c45eb8b284b0834c98b5f1d5bd450219ffff0392d8e422ecb7684fc0a26c8435b32b7ac8ddbbaf7fe98e791574fc0a903de0a203d6f67c08eb0c6a50267b76d5462de5a980dd1f3e2f57d19626b502a2ce0c2ef10219ffff03232c4dbea54b335fb249e78d8e339ee85b5b27e73593ebb863e5651b0e7bb755032ca38a9db335d0c2c4ed2548cd13f6c82ab82a3091244015576d92565b9f7cf203aa476c3c11097a9f3b1f966d4de9099ba3f12116d1c3ccd06de020aa1c2bae110329c2bdb46590464736286542b8ebc13d6f0bfa783e014cc0e5ea0f4d87790a4c03a3f3ec44330da199cc9aee219147025a467019432243870c18c5ee3a0a9da9a50391c7829d9771305fbfb77ece2bf188feaeffe9f6f198c7a4517f4636034e19190350e1a621487b30bb20f5e7bd90109c9157056e364528f3d1b16a315ed83ad6b20383dc8af67a6a9fb6f4c8c203391c79253cad71f068f42fde63ac37c162e5014c038081a43121e0d7b60a3152555f57f301c2c5f57656bace9338c310a2e86c78ae03574da74d6a833d7768a0699f1f2da04ef8d8719b3625097d1b78feab812d2f6a03f547d3c32ba3662ae6e98ba4c148ef9796f6086256b59d4536d2e3f3182249cd0352fccf30626acff42e3942ff6c08910f20d6e0c332bf16a59455a3c6f2bba4f40219ffff03257f83834752baa02f3f0cb8a3c127ce5990bb64efe47f5876edfaec654fd5ce036ec5c147d9e3ea880d313758aeaefd7c14bc5cf3a0735744eb03c0b79829338f03b0878c3343b0ea28fabda80e52b8a60185ae44167f2413d43d60def3d092da7f0356b562989d209ee78cef362c80528dd149be50b28f83915d23ce8df6d49a5ebe0219ffff0349ce97e9c2b02020f71de457b4fd73bf80676d90249dde7c38fa347917973cd203154fbe70ddf0efa59c72a9c305741f33914e799eb71984f2590c8d0c9b40625a03cd3c0bbd7b429a7fd430c125504797013a14d24156388a797958bb66eddfa55a039e6aed648d2d6c2ac8bd1eae86119a674e5186f7e5046042d5eecf015f42addc03518c12343b8ce2f24450df0350faee263c805d516ed72cbf2b02d0ac48619312036e729dd98f05ed4b1fa191fb7b6c402fc70538e1868b08d47a5b042d8ec9ddb303cfe7605319cb8c5f88ef238690a169e2edf5b10a4c6727b1324b6b2d3c411eca038838c5e639b37254066a4ce06c6459fba5c21b4020330439b95aef88948cd6250379628250c9072cd159158f8e51d42319612854bdea7608694adb730e09d52fa203ae4a8761d78258107512f30a2038c37858c50c59f07f74a749c8f5a48f100a8303c6b21bad4fb2594c31f5db1d16b8f056089fd1a43bafb6c32018580c2c5f691e039a42a31278925aaab12da31f2fe2e0bfe38fd576e3c3cd12bc48b8d756baadcf031fdfba3891b08eee159846009c73163245e8e6f732ff819e16f612beb3ac7166035ce9ed1903b425c597ba87be016cc317017822098755e8cb8ab07d79b039270803727cae139dce2cdcf0e2d49f929e06ccbfad5ece5241525246e471f015c60a8503f7d2c336ddebd273185925765dab08951b9fd55635b55a8a5c2f75315e0fcdcc032ce120e4ce4c254f358fe3ad34db1b6c566870d8a1dd0cca3a72faa2813c230803b88cd32743aeb99106a87a77fc3b9a821015233292573cde2a4659c02368610803fc92c7bfc1671932a11b81e7c44c059986429415e7f9fcc249dcebb8bc59fa2203d6698ad8ba52a3106b99fb545526633e05ffc5c406f25c040c8b37b3386281f303629c5990bf3764aeb1768b8a1f8b71d1e4720c81f00ae4dcfecfb7b4bff1fd81033b453516a9ba5391419658b076b9b1092f4819ececbff53cec68060254c08b68036adc78301061192388d0ba67258acb37867d27e1c9a664ee93117ebd90e8e09603d5d9983329836384c7deaf218ac2f73894ee0a81a4eb63952cd14425827d7120033da8de781a274bd61312c7586c666e2d1c889276b29deb1dc7969ef35de2365103f0863f63f355d774c34cbb4a245511f79fac3f32ee99a2aa71b2ce440d7016f6038d8a5628e350b5118482dc6b2d351ec67b0a76266094520b7d750ca2eeff938003f0bd82a1cd66dbe912fc4a096ab0c83777201a4d6b9ace21dbce76afccb7ad2505581e03742b224a6edcb0a9f129ed15434b0b7b5408f082172deed7dc98e207b0040405581e03e4ca577fa2ceec4a0e2749e1067e15e86f5663f9e98c8145b75299eb200c05470162271a39f47805581e03b19f14fc0fc0ea8e5f25219a175153b2f664f557172f1784203f51e0f00412030a4c1f9f9eef03f672308acf0a75b362600c8ab4c7fc4658adec29bc3e161a1103d25ede967d060a280ad631b35ff60a7fc955602ac67a8349dfe7bb97e2ad09be03303931f8ef9df9270c30e0ac139957f2641beba9374ab0f098cd92ffad96d5cc039b742f21ee655c278b19615fdd86646d780cb6ee8868d9f74ec47eefdfdfc99205581e039069a7bd827b1274fe127505b670752269dad387fa9dd70f294014367007011bffffffffffffffff05581e0387fa54e0b582e59e4f9e1b6732c83d747ddb4c8034997c058c92da15c00c01470bbbaa940efbbd05581e03634ec721d2f5bbc50cff2667067a75ea2c52ce0b48947f42ce740e19b00847b1a2bc2ec5000005581e0350aa6615051b1f0e68f9dff8f78b938b489f07ffcc35acf0883fd4ad600c0146f87a35f5cdc0031659de68e6a279da28599e113109376d848bf72a54b56d945750294b8c97e773030657e508cc6d404d8cc89513d451fab06b3288013a5753906560d9cbed22571f05581e037ea481148d8073f5fd85415b3199575687070ac2add9de08b0550ba57007011bffffffffffffffff05581d0234b476ab74923dfbb6d9f870185bc95b906637066cbe90ef926995fd0c014711dd178485ea4405581d028e66375e8296cf37782b3f6253b0d09f95d8e941dddb38d66cf4a54a0c1825480abaf0a0561af54c0219480002195fab036214cc2422b5238d998607365f6ba91c81041b1b1594798bbe2c40b88e6065d3038161b27953d99ac839e6dec507d3a54643fc5fdd7d55bb14f66b53ce2be7279503a683dd096527ead19dd5097f3f5f171b3f3e5ae41c38900d2d641ccf0ca5ef3d03d73f1917f1afdc3d6b8c7be40146d3c6b9202e953eb1a7b965c03c8a49a2477403217e20e54f67c98f1b3685e7135ad86cadde7182b87f23c3db1a26445f5fcfeb0300b5e71df20a3fad30060a835062aa03cb56d6a8f37d05020345a548ca34e42103be2841aab895ca6de6f1a8027195a3470d8ca776ab1ea3b2049ac3451a7f4a0d0219ffff03f619dfca387897d0cc58cf42ebff0919a83dbb7792e77f004f0f69a549b3f228034edef06c66a69b4d26433a008c58f6815086323fed87e6d970271d7cbbbc1ce903c36b426ed13b2175a2718139841b8f93d50e4a59f04bc4cc5b83d745bd9aa50403a29d8a0054b4ba9c9dcaf39040bb5e0b75ba65679cbde316722c1719b404db5c03b0822101606180f9b736f72a8b509eb72e6d03de220dd4d8a9ee04c91dff9ea703f110526b7cbff2ab1b18e41d13d77d8340444851bc0e3881dc82cb3542b0ee91036ad4e077c3790da5135c678eac503a4ba998fbdfb3c868bccf5d8d38af5e4a9f03ee9d74c2977e644a27d084e82379a24210e5f25bbd899676a9516b5c805663d603f431f9e9c1b51abfa3ae4297e108efb5a2659a471276403c92bf39ac3f0c877f0219ffff0376345ae39eead2478f982585513e5e1d3ec046667a3ecb7125f021af070634280380ade4c28985b1a4d643f0ad055e38875d78857f0c37d7286010fd9c71b94b1803f93fbb74647c68b924d3646a382287da851a215f2b23384859fbe69ae00d8e53038b629f5765d9bde88284fe11a5d2093a999c3e50121d2a6a14d0c7c639874db20359565e3c218af56fa85b5386ba9d2d82d0bb4612a9be37c4d4dff6ec2eafbfd103f9154e2b7fe7ca97a80ced229c533c2a5557c99a25ff5eaf93603b9558444164031180b35c7bd750a709897a1652b8b3245be6ab2cc56fabc5d8219c24b391f8320361d9250b4872c1050da3945662e41a90a4af1d332b434b89164e005945470c57039882f0851f2f693e63987b84049a8b0feb09fb13cfe9d0548270d8ccb0dc839003986e9c704eac18a88b1a61dd5b2d69a6c1bef7bfedf9a4afb0470471a648329d038e116b8bf6289bce1d0fdc2e153f4257bda89f163e52b39cf11e499b5a2fa9e30346fcf93affeb9a54246f56918c7ec7830f668e1c02d8895be615399f4f1de5c903cf1f9544a9fd15022b6e6fa9c19ce328b05d04c094fcf478ee7c69ad12a8507403c2068113db16d9add34b850a02da9f2f1825b5c0ffe522fdaa4aae533aa761490219ffff03d6e440812ff7521a1cdc4db57d5daa75f7474f7a30d6d523d06bf2716d914013031ffc65b58502f0f29d80e56074e90e194dc3f3466269fa4e85dcd92e4926bb9903da7ed97ce37b93329ecf410f40bc4c42f125be5b51a3bd4e74649854ff1be5310371b29916e622ab02a09862e73312899b7436a21d1b187ef305262cd36951285103db26966e425cceecede9e760a41fe08e2aa19924fe20dbdd8b2c0649a1f2dd75036951be3a029c12811c8cf4a5c435d0ca0cb751fbe98c1ad35d31fff00c41a68303361af053e1aac4677ae269ce65b9762b28a84eb85eeb089ac3bd93c2a089df3803f2b2c8fe553497f6caf0ee03cd1b8e20063c87119bee941f51c724ad59eec2f803921f49412261702f3e24801557774fc1c0de3226e51a2da3b90b56db171a7c140314339afa49561622f3a222ca2060b173d46ca618e0f1ef1f7638b56445c453d703832d72c0852c2b424c737865182109ef00e4e4adc8f4e80789ebef7bf2a9eda403d55279bce2eef5a1ff56c08b8cf79b34d129c2f2b654a48b46de529c46ee3c950219ffff0219ffff0323e9399d30b73eefed7059d98eb2a883d525ab0f400a0b7fedc801117b00cbdb03a8423c0aa3924b34931b35f5153e0f26c2f63549484b78075badc5133173c103039068d569aa9f5b035b9d960999fee29f6174dedddfd9ea528b7f02f545921ee9035dd93f54e96e3319a9b679afedcfb96171cc269301334688fd068f6eb44766970321786df8391fbc0105cae1b1bea6e8d57d7631e87ab87ceacf6cf8ad8818c24c0313465819dea42d0d17ffcf44850c6196412ce9aa17226e149baecf43d0dc86c103b10ac732b3621366730ee74840659b5ec6c067b4543e51fd5d02e9fd4239804503f1d891b68ce222bf8ece9d28aedf2b86412bd5afede74d74d61c62d0f79603c4030b0fed4ecf9edd189f63fb3c58bcf9eaa818b14853e4b41e4a14306eafae9c7b033ee47e9f4db8e86a475bf0e50febfbd9686f58cdcb677f7ec2bfc55f8f80205503eaa17d33a872a4a0262c6227e9b96f1c219c8fb834531b5a9e0f43a7f26aea14032c28915b8bc9af66c7ac778b85ec27d69bd4ee1e52d98f7dec2bac3bb79a6bf503da64b91fd87b3d7a3747ea0bfc4022236d20fba7da1c5f0837a6158d75927c22037c6578681cf86c872ca1eb809b50139d91f642c59eb4b2628297b3cf3c724fa003b18f54015abcefb3ce1f273d5adefcc1482bf9722841544f2f600c7b0b23e1bc03af00583ecf31d24a169f26061d68808fbfb4cd16f170b3444933f0ba58a7cf2a0353806ce8bb7f52271afbe0b1b7a8020655b4239bbe37f7f92e189ef1fdd19ddc03044f14c3e292b6afbab7343c4f4b0c6df56e0a17e5fac6132e7f068e0df93bf303cd822db56b3ccc0172e6eb0b4a8746026937afaff23afb59585fbe61f3df04da0381b633ab987db860eb2400ada1d7ee5ac92d39e37819ed4f50a426df4791d8510303a057b36a5455eeffa44c26dcfaaa4e999db79c12b0db9d20831bcad7c9cd38039852b8665d2a1e54578448c498eacccd15209b3ad8502c5160ae6655a4e4dd3a03f979a240acd281a7d1b3fa8c270ca3e196b307d6ef5d7340e73d6594e9ca79c30365e5952232f1399cd5f18a2a5863994ad529a0781b96eb41910c554ad021b666030fe28cc9031498cfe367d9e4a5337390ddc9815242bcfcad7494e5101443de010391d46d87a15aa9288ca0299d65048b2a752523a5146cc1f10195dced776620b803625b2c5a8f0e05e2123897ece5a951f8a5fe4e8afa822e935d265982cb09958a03855a93f294bd1325d5bf38f68a9bfb9a651f2749cc54b3fdd9bb58e0095d9936032b13b5d4b69480325b9d0358b71d027767816ca0b64354a271b1778bf43f806303fcc90e4ae3d374e2b9311e2ea551c2f610d26d1f3897694d16e81aeff5301edb037f8c9057fc832a2298bd992b22b7f5ef238b46d521751b81de5fb3105dbd58250355f1996e75df98cfb8ab9c4505a49944be23d45c3e4f9e2621285f3debbe96cf032f9a959730ce118a9ca97f8f98ce9d1b5f125dd13a332d3166911a48906f0f7803248cf22050293cd74a31cd77bcbc615fc48780e5127e4db90f561c2fe5ade88c036f5c0728eda9f97cbbc16a6115586eaed85dbcbed48390c4f2c607b1946133e803f930756eab0a581728fcaf851943828e16798fc52107aa6407e16ee43509d2d0034e31bbf7855bacb924329ec5e58c715559ba6aa408702a73ac850a2e9410c7d205581e0312036d9faa424ceab1ca58eb6d82293145300d480bd295e609f9d40000040105581e030d144d1690a0587d192755c76f7226e0c103d0d777191cdb9d68233c200c02477cdd42821dc0d105581e03537c5035b8dc527f66b8c82f050460805b210bf9637652831df5f70f700c01468a4f3539580005581e03565b4df2c5957476d2006aac2d1c5c41e343b98ef339abc02c4098fcd0040a0399c99f1a6d65a9097e0f8ca61683878ed26099e347359f5cdc600bd194dbe908039188efad72c6747c1e7f1e19036c430f6c4291fece213788dcd97857028c1b5e05581e039c512f91e21f13ebca1e24419617e8054943a56245eb3ee3ba050d533007011bffffffffffffffff05581e03058602b1552e19ad96578f935466a24f25fc14b8709982b7e8cc1e09700402031b460c826a854d61dca82f718e088b8b4c4082ffeb93752d7691bc62c51dc0280605581e03f69d4cd590481a229ffea933ae23c87ffd52e58dab86e024a8beb852d007011bffffffffffffffff03ce33220d5c7f0d09d75ceff76c05863c5e7d6e801c70dfe7d5d45d4c44e806540306b487d15c028b6df56c3ebb9b7086965eba3a240857a647faece2ff13269f2b05581e03fa7069cd405b5b8c7800fff1718aa9a388c02157288dfba2776a26ab1007011bffffffffffffffff03224ac66d1d1839d1b253d6323595fe5dedb6dc1cee7e965d8d5a6e0ecc207fcf045904cd6080604052600436106100225760003560e01c8063972fdd261461013e57610029565b3661002957005b6000610075600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610174169050565b90506000610082826101c0565b905073ffffffffffffffffffffffffffffffffffffffff81166100b0576100b06100ab83610219565b6102c4565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516100dc9291906103ee565b600060405180830381855af49150503d8060008114610117576040519150601f19603f3d011682016040523d82523d6000602084013e61011c565b606091505b50915091508161012f5761012f816102c4565b610138816102cc565b50505050005b34801561014a57600080fd5b5061015e6101593660046103a7565b6101c0565b60405161016b9190610427565b60405180910390f35b60008160040183511015610195576101956100ab6003855185600401610302565b5001602001517fffffffff000000000000000000000000000000000000000000000000000000001690565b60006101ca6102d4565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216600090815260209290925250604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6060604051610227906103fe565b6040518091039020826040516024016102409190610448565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b805160208201f35b6000806102e160006102e7565b92915050565b600060808260048111156102f757fe5b600101901b92915050565b6060632800659560e01b84848460405160240161032193929190610475565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b6000602082840312156103b8578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146103e7578182fd5b9392505050565b6000828483379101908152919050565b7f4e6f74496d706c656d656e7465644572726f72286279746573342900000000008152601b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b606081016008851061048357fe5b93815260208101929092526040909101529056fea2646970667358221220266f45dcc0f640b86b617d19d2affc31f4b5547fd56bc2761d8eddc74675491564736f6c6343000608003303b0ce7aa66408c3e7c3cb5ad2b76775e06bec75a1b6d5386510071db70eb0437a036a3f3d9ba908faf011efee911b9495d4403d775e868f6e4b4b5348c7d5c0d06e03fea5236bcdfdfc14af4f01ca11cc002f5651d11990cde1c39f2587c0dfa06f4703e7d7d230b79241501de03646b5a613ea9c978ad5840e616ccb707a3950c4de0d03764aad7aca29b0b2b32170434f282b68bb95f1f16d44c395bf689604cef9360f033fade95b5922dcfca63297218058b9c75281c0b11e471fb585b9cf5364810914034e581e3ae3e2a0586ae6aef7ea845857b7dd6847d7275063b1a9c7aac271cd2003fb9a67888c547e81c8337bac148c4a1271d5648f5e168e281a3ee0e8ccca2a21033e4751e3a41b77ddfa5a1d15fd330853739815e3ebd264af468b8c628121236203fe1a116115b375e9c9f8b2afe20a07290d8946cf6366b22a7c159304c2fdbead0340a140437e792074fc9e1cb7e999def3022b9573c545c106d7198c74dacc6998034d3593c3d462a09128e25203f283583e0325860b6cbdf6a51ad8dc956ad833dc0377ce61b0981afdc148ecd4e2d070bee088cfbae1dd2af355e003e92b7cb9ef4e037710344a6afba5117bca6533ce620550625bc0796ea7190fb6860f59746aa41503d34eb08b660b2bd524ce8d3ab784790d90ab0a918335098becb59fb3ff9f025e00581f03ef48a3fb52a11df1c03ea5c7051fb734ebebb68fcdd31deca84afb9a658044651d86930370dba42a7fe66539f010324b2f313a19edf4cd799d08ef9b6ebf4a41bdbd948700581f037bf2db81923b8f5b02dd0daf5927e9d9080e51874aa01594f6f09c31181044650f01270323ca7cf3546296a9ab2571400d830b382f7c1b60b409b70817f04d0f9896786500581f0311ae6b56fd6e9b2f627611bb223f25a2b60883eab900f7d0086ef7b9a410478000000000000000581f034db5135beadada975c08ba9087c860849f9385f41ef363afceccdafb77804904d9cc0dcc16ae42d00394fa14a6e5c3e25d76597089442f9a56955b9a4a0099041eb5e9a82821147fc600581f03e9e3f2883729911d62e713a21e677a2e3735a59e24490a5eb3f7a73229804464d8b8bf00581f033a817c3e25e3a65a760c8a4281bc1be71818c9b025564ef05408cc3d7ca0450129bbcfa503469612a97156b3c3a9e00fb050f1f2a9598f8abfb1bb1098c5863f5c9f6c5dac00581f032e3768645bad16ed4f9c612df5f874db229ec7803c44b347d6791306cd904915af1d78b58c40000000581f0370f9d7c131062107c4f9a83b02773a52294fd54e2b7eac591579cb9adbe04803da0e412568e000037e8f9280a145199c0b08889b13de9ff893850de6667ed0fe4401c3c5f7ee8ab900581f0306208e5be2d375302728d7c1b7b0b07da01ef1c8c7bae4ded935b76fe770540e992c001e375785846eeb9cd69411b53f30f24b0219febf0309501aa967736a5c0b37887b0ca835b7d9be92538669ae6caf195dace5a893a9033d6086c99427fe19e85de8782c3723f97b7d5f6f5712a3055f5dc2d2bcd7c1e8039be4ec0b15f32f121f6b347e0730ab0ab1aadba74e246f9450ca9daf24499d3803ebdc2a749844963f78344065362320f763efa87cbfcff0c5a5ffa647bd7647f30315092680895a68050316717f2fa31af0feb15b385321a6df73ffc25e166edf7203ef587a81463cc6ad7befa70bae1a566ac5833f5282cb71b8e5a0d5fcd4189c5603a53956cafec2d4c319c7a30c5a55b30f7e0013c7d39cbf3a85808575d2720f3503da52aed619e5934bc3ea0c6ca4fcbfef2f2af2830355c348da5059fad4024eda035326791fb2c6a73c6423dc5960dfb8e168c8f6fef2b8c805c44ae912ac98f5cc03fa236c4645da7d2747ce04befa6986d171dde3afa9e3e9d470da986218907b240219ffff03935b913becd96efcdb38b965666c2f507106373f5b2fbb4d8f7d477957f6b8da0337d0f8bd289ac087fa9f78ba720886b8217879fcbc60223f151ead6203f4585d036940e73578730a5078b3c98db6c9a6b316f5596ad7f9d398b3ef458b234f2acf03a2fedab75a7d89211c801a559c98044113e493eb11bc60dd286e5ddf5a6eab2203bff6bf01af5b424ca85f58424fa607212a10c82455f79079f3f0dfd1074fa3de03e2a67fc965767aee64d5496d389c3bc5f6398e609cec95bca7078ef9b8958c3903b9aaaf64b71b370a82b79174d57bb0aa4c8076a9c5619e23c25933f06fbdeee803fb04c5b408521c5c5e2ca0376b7d6974058bde92eb13f60c0676a263f553b87c0338fb7e5e12ded506211f8c670e4c1b52476051ba1a9a33a03bc9de8ab921c53f03b08ce4a6d966ab2f78fa16791aaad71cfbac083ac853fa572fcb227a001f8aab0219ffff036691c7380cd6b4c48eb70c9a20f73dc82e8a116f5368173145f6984b870b9f3403639ccab01467513cf5ac3bd0e7568b6869d4be6516fa97b47c244f802e914332037bb429e3b830c49c9ec71284eb611ca557d16cfdf2f0b8a1f435842163c268790308c62167dac8e1d6a35d4fce8b31a2860f32f40ef94ced1a48d6b9d171ee415e03250301ae6a8055b15b5513e3222a78a64c3adf5b45273c96f7adf0a3ed6eb24103968c38445fe34521242de5c0beaa6226780a4a06c4ec681af4f541580a969310031ac86c0f0d51abe16d33b74bdf374247c70dbb30eaf329f7e1652a6eaa5adbcb03ef4f5bbdd303df6a8ae454912eca5b8bf0cd48a8164861c0a46934cb2c21976d03a686bd137bcf4fdd06b47b9855d2dd7563dab07c154e35fa5648d1b621bcc4cb03f90b13a07201d96a03850a1d9b0d0e261cdba9a8689d6c0b6cc7c54cdab68fc103ed976c5386acbe7ff4ce6b7fbf98f35718c698aebab41bf2ecae23e7d05c45dd0219ffff0382ffe01ff71d2f482d053c3b4a04328e398f13ac820250a050529c079de34cf40325e587640dcbe55ee70a48e35d923b19890b7f770f5869474032981159fefa600375cd4b16bf931ef16a9eeb86b1cf0c187ec70d4d6df990d234d62dde7497aba603746e02d9144955ff6031c708770c4ca0ac5a227345154a47c083aac1fe4df26a0314d111b847141a125fe83ee3c2c4683a6ce355fad8a6b736b9a0139910b6b20203ca4b784c21ec8ea78d95c07e063165aab1827c385003575330458c930835ffc8032fee87bb5bef0335bd9673be6a30c090c7809ddff527b63bf52b13bd7df762bf034bf125a75ce551e89859c492021d8bb0fc21acf3a0e71658cb63707e92cc48aa03e0b4af1c012469191b6e4527ed435ff166dcf0a18188a797a0a573cc6adf55a3036d4b9d07fe6e1faeba3f963553cc5f3edfce90b8f1d44671a3077c88c3fe47be030078ab74644281326df8fbfb042134616ba46b2bd415eea8050dffbed288eda203302cd5879977d39371dbaf9b63c1134d4ed847e98bd3253b509cd4254d0500ae03838de2ae1baf946091f7178d4dd5c229c299e3fb4a518716394a5e00b7e225b9033e91f0a7357fa3b16ce59e13851da289f6f957a1aac19092cc2dea3e9ce282bc0343ef56c10b89611752452c9d0e6eb47e22259faed6dfe85f0f80d0fa80be7ae6034174cca3fb7056b58a09531db1e2eaf8078cef843dc1d906e2e119386114f08f0383e6c2c18f3788b74b7ce38a011127b0205015db2d8f4932b55a91c0245e082e0307038aad54071664dcf1905d50ec04e0f39c249e6063ae950c8332afdcd35616037d75f916da953425db4f36a311c9fe999cd29474de591edcd692876287d59bb20392666def05af80478a07277c32eb9b0528c0ee847e189fd65b3f068a4921faee0359a6b7facee3e4fb70ddbccc1ce142d6171fe55ae4cbf204419869eb964c7d84031a62c74fd653731a52f9e927033b5379d36877033d98fcc9d52d927ab3c717db0355b3559bd8a26f1d5c51e17894b3883c2590dbff4b4530a6511309b9a11486fe03633b4fe4206fd81e661cf112844e48856de446033e8144b23368abe9a7946aa2032529c989a41cbbeceba4847c601bc84d6ca0cab9910fcfd684c88ec21bd125ed039463ce90a8f70cbdabc4e3ec1a4d38a3f209aec2d3b6525e79fcccf40b93f31a035d3dab3bbdb4a5884db37c747cdf27d15110a542d50db8933e73883600eca22203c995099d916a943b6e190ca082d50ddf6aac3494af7a1e454d5732a6f9f79b0203eb88687f58295ac3ca65828c179424443dc8737398a283e3bf251af101f699f00388fc8f3ed60085dd651eebac041347788bd91e8d694184d1dc3797dd7145be4d03c04cf7fe8a0382d34a5ed517e8567177c7597dc3dc129c33e7a32a6afb78977f03ccbef0ff94b8039c1ef95f5a779c52c65545b98cd5aea65e082d702a368647a903ceeee71c9636aed7ea0eae407563d4ac6a0aae332442fb2353edf0d4f9519fbf03d1dbb275ba6cb7847f0b2623b1435a35eac5b75d28f00a58a7c42dff523a7acc03121bdf8dfcc2d5ba70cf575785f5f72cb8324fd06919510c2ae257b377f1d0ed03e151c21d3d092120380d3353dee89e9e2c93e29b781b554c74363de9e7c656e6038f67d49ee74e465e309e3bfd6da15543b1f2aee598077604d9ec8af38cc8fc0b03e94d98f37b2095a469af358578365f0a56b997bb7303dd0e42cba247f59ffa6703d396137cd4d892ce8dac00d33e02c6cca3e65eb5f573b710cb4b54b0d1558db303ec9cf0df3dfe42a5de0a4357709ffed25311ed0e010281ce1bbfb8403c5e3f3f00581f0354be5236b9fac774814b48ede6d10fdeeba4bf92e0505d2af4541d57f7f0482447c78effe6720000581f0371681d4b4dc0b85ad0d65eb3f72ca54ee9cd025fb17670ea469877cf9540488ac7230489e8000003081cd9eaad2e17f42b9093bfbee07362be69a76a0e9074ffb6664f51a5935f8300581f03585f6099e8d1fd8b63b2f60c29aee197ab900e201f27ca4cf063bd99bd904464310c2f0371a230fcaa184372107e8c14b23b8b0c2afa378c33c1b072a00a90d88eed7cb0033bf5e5f8f27c256c19e6697ee09f9907b709816eb2112cc087570e5936f1802c00581f032ed27c54b87de968e370534783582e249679e93fa7ad68b3f79be12ed3e045694fb3456d00581e028618dae0befd3457f6aaba9e53df1861ec7833ae7ef9409e2468a303d3540e992c001e375785846eeb9cd69411b53f30f24b00581e02fcccb0219c51184bae6d7605cbced62226204abce5fd1e67807f7efcc848c39a3a66a988664c021908400347840a15429732620a2f50feed7b6a75c929594cd0a9a4336fd7526867cd311f02197cee034b15000bfb3753651013aad17ecf138ce71112c9ad8dacd3d69155edde5d225803f9a574498ed90510981724e50853a5fc8a27a81847abfdfad66db1e1899d4e0b03e7d6daf5644fab0c80b70d1b168699e391884ac64cd03c918b9bc95bbd15eb8d03abd9c5830e69719bfdf089af61be70241a4cac54a4587bd2955896185c59fc7703253aeb97303f761c6d5e6baa695bc7766d65f457604ee6a69ea0f6595a1e05070352a7bfc93ce4ddff689b6cf7a84f06a6612bfcadaa04dcb80d22807c28d2b46503934f7bc4fc38980c98259b6afd7263bc8ff3de945fe148069ffbcf83ccfc0762039b3f9cf6bab7ff6af7c282f7fb39e8f81473a8a8dc5ad86ff9bf794ce085bf870219ffff03b2e89a7983e51892267dc0706b4d8bc50a7427b3405f202b01058fd4d6a71a3e032d8b1450309f2dd2ead1d92d5ad3dff017023cd948ba9e1013b943d4994bd908035a1976fe882aa4438566a528be1e4c5f11a0e2a73efcc9623d1bea6a317e2dfe0219ffff03acee623287562deb59489922493adbb5917b5fbc6027bc84bb55f43df7f0eabb03e6ace9270deb37b6338a2a011dc674b37b27c4736a3906b5c943cc9f5be15e870302b795b684a11dfe1eb4a375e4241e1d990580a0f8397113f177543a60251f1f03feda25294423f4db79e8ce8e274770649eb2cf89186aae275c29d0f93da76f870219ffff0355ff479beb067a17a188b8e1e95c680cba012f02e60a063fdb994e62345f63a203cca27c0a3508a98f0b3174b6de7faf401a8e76b7cb5cee9e9d9769dd3fe7104803b123fbefd07f62885e9b6355251e12a3480f77591c29db11e8c846babbf1a10a03a219dc14973ac784cbd20251fa31e2ecf432d905ce4c6b0860b9f5ff9290e3be037063292cbc30c2367c78c56f27ff163569fcbb0acb3c803f573cd988f61dea510219ffff05581e0376206f0ba778b536f8b5c5571b9cf6ee4279b8082d1545b9c5dc0b90700f044804d2f05f318bb64c1904cd0219f23e030356fb2ec062e1cac458b921fbccbb3f4d3e48c2378b52e2e7ad0bb69b841d93039db634b3587d75d5bcedd67164e02fb80e249876ee8ccb7d819da510daa8800d03dbbd8a3f5b6df75b02b6cfa04c5f3244530dfc6108c90878f96cf44d6b3d133303fb497226c81384cb04f0cec78c93195a3cda400a7fefb13d310fbcfee70e2989036ed959e1743ae41cc34259baae5586176885e7eedf1452848f99b8f3b2fb52e903f33c1db47d18c2ab2e22b62c88f06c74359cf0a56ca85f0ed7103ba68be169da035900fb625ae3519ac78bd5a805103fe7b33e5537e0fb38d1683425cd4343a1a603584688d03e2cfa0fb39b152f4f085d1db6c95a8ecf981c3750e1127330aa0996035e46e1a0c95d09e927c89cbf8f2489a2c6dcb777b20101704498ff1b0f70fe6f03aedb26cca64ee7b46ec7072a40ecd4947cc1d0bd92e66d90132c00a3dc5f6280036a0e3bbbf243120a51a4e87edc44dce0840fb7b6c272229677afe82b6f407b8b03409d731e3a813ab450dbb4cd3850c51edd88b2e4eb46028f46b597b4aec15a0b0388cbd79e3594bbdef0a0b565d3b67c7f3e6bddf6f55c325d1f409e3ae535b1020219ffff0353ac907a52ca6c934573ee1a5179fb1cb6220924f8949d3717dda710b231eddd032050a42120acda39c75a857eae5651522f6ede8b78ddebc63fadd2c32ac06ca9036eb058f6f920d9f4874b30ad114b3be2de4dfc24913f2fc5c04cf8942fc8335c03e997ed41248d3d0de834819f6ebf42fc5bfa3dbeb9ed9675ea3fa6d0366e4cf40219ffff036ad4a1b0a179bfde73a46b859902c41f8c3506f2a6ec6c9155649b0cde9afb0603a564bd6f99d5026abd352578955062d995caa6e17d2e47b5e901bb685b9c03f303d66d49257915128eea087bda816dad21b6a61e4cc02ccb41c94f4833319fb38b03c5920674fcd25a5f40660771ed3af1e3ae4a28e72cee0349c066b746abd0495d0333e02285b0a8892e1293f692f145153fd14403540a655428cdc960f9c45913f1038567acaef04ab488fc6b5b3c50758b3b4670b11541b31cc1899807d3ac203fe203476e59c93870ce4c4d81602fb7439cedcedd1ab457ca62a20a86b18ca0bb12740219ffff0219ffff039e11e0b2e60bfa240fbc4ce5ea38a02668cd86f2d95d59f355a9225f52b99fd403fc563fb961a4fa575a897d9f4782cea4aa3bbaa736c014846a0bb11a4c5fe7e303132b0f35cc84603c40392e2fc0cc386c9dd21e9b717edfa1e7233d07c3dd4789037e0555ef45379f0651b5487f7c8ec7339ddd94265bc4674e2165045383d2e84d03e4bb075ab8fdc0ded8002d558addeddfe14edaece1f6d9c0ca715724af1dbd0c030a8950f99b532a8e26ad2601e12d70cbbf37f09579a05e361ab7417432537bb603d41651365e44d8fa6051a9179bb9c72785d20b7cfe477d492f941119906c5a0e036aa2f522e1d31c6db622aa08cccc87d69268ed80f745cfb15e8ffee818f17a9c03167168664087740699af7559845849ac5d2c37e46993b1cfb89030abd5c5678e03ead67f4b130256083a1b83fdd04133ad9587aefc5bfeabba82279eeac7e267c40337f2b0d48efffa5ee07805b36ae00f303d7d733b689d94b57ebf5a549731289f03fe25d52c1c69a9921a8fb733268eed66ee4c117e6456906d450b8bf45e6a1e420366dcbaaaf02e05ddce1c2bfff2013b6a93766c8f21102573d938981dd158d8ee03360d70a8c2f3d19eb886827a94e14d2e0fb61f923c2ad48070c06658b615565403e2b6989696eca188b2c8d6864ad190ba03e031aa0533cfacd4b18cc78901f98803993741b583d063de0b616b9c920d773762cd0687a6522cd375665e06a29aa2a9037e72d0b2925079fee15d1123a14d11d701e0fd67b8c50cbef908b48c2959f2db039eb03468ad91edee4e9045d619225f0e1c5c0f4728c08c7f27baa3b545fc292703c86848378e6702f77fbff2c72f86ce7afd0d7fe1b36aa537374815fdc91bf9d103a54f7e603147f631c9fda221af8c6dccb7e779426106355aae344f823241f99e0387e56545f25e0108be617fc86753a719d67c22c067dbd73005aae352ca8807c0030bcc49a91a110ba428956d1d628fa767f5a2b651d8e7249ec5fe339e3181ab0c036d790bf3be4f64e13ff88dda3134975b7980278851590d32457f7b89fcb23668035b27d8065caf2542fafaacd95073cbdf2e6214d322efd71033c6342ba61f4bfa0380508373e59f16e54d9ecd555e14bb44bb73609243e83971aabe5991c494416303c76bca48687403bca79381d53238adcac50af92fe15112cf6844ecf70e95d575037ffeb11d9cbda1b66d2af1aab1afa8bc5e5ddc0044148ee0b44421bc4ba4bd4e03e26989cf74bd4873d24eced20cce94e0308e045694eeceb26de3d4043016d49503b9b2b2c21021fb7e0b634ab25e2e3b83275c74d2384c642920d3110d21ff094c03782e6d908f1b076c71019bdd818bf8b1bc122e2a110e3943e9b03bb3aaadc480039b546ac1aee65f52f3d153127b17e99960b5a23394478abaf78fa154d0fe4aba03ddfe845d47c377e9cfa9e2187c698f76a802161bb3f42cfbf8ed0febb4a6f956035774f1fc435893c448d5fe018c80ae6996377929bacbc50b1d23fc33e12c235e03d8b3e513eaa136ab7feadb9a153995b0f421a0a364a0f416feb6402f5856217203a812aa0a90d8dbe124172185f9c305a0f9fe5b067001cbbac74d62a194e93dbd030466bb6434638e3601c4840f4b7373ced2a22b6bade1a68706ace14a4afd1f2d0380b155e133453b70b4ab6d42a9c094f56ff4ab9040b2204b7bbeb8e69a78adb5039afc1e6b6080903add242c438e61ab2c7894c20ca514c6c482e17e8042c4a05003844fea85154023e42effbb9fa5305924efd745b47a5447bbbe88785b92f847840386645c304aff70b12c503395ea59f87ccab97a025073028e6ba658790ae87aa603d08b1ef6a8a1592d093bd336d381f626a2adc8e88c49e72a87a05fc4191185bc03f02fda2c46476f7c34bad85b77afcb7309c0c33445ce9acf1ed3f2bfde892bb403e300efdf76b150c1ed4fb63faff11276dd99de69de5c346909a4449d8f4326f703ec52bcb262b565d0dcf6fe93f3e4a8301056fa69690c9f40a4c89f2cde2bcf710375e776360f21abbee70d76d3428d96feeaf626f99fce98b5a55f3dd32120e43c032dff75f85c7eabfd7160762a43e6dfa465e31f1b2f9edef25e775e472a5c2a5f033025352304dd923ba987ee6116c11a63e6a0f183bf0fe058f4f9b241f425cc1103cd15b9a0da894f89fe6724f75d2c9bd8dadcfe907c06182982af2ba68e1d809003f99366ec7c32fa666d98664d415069ba3e7885eb942619859ba4609c72e774a10388097f0f375a04b44f762080f0e88e346e6b031772500247286cdbd63e1b4fc603d81597f66d4bfa4898bce568ff07b7b8fbfb766e2d8e4b0d33464d79c779e6410357b167d35071fa4302eb90e112aeaedf2831affcaf58bf9e70f1847da8e1e9ab045908b360806040523661001357610011610017565b005b6100115b61001f6101b7565b6001600160a01b0316336001600160a01b0316141561016f5760606001600160e01b031960003516631b2ce7f360e11b8114156100655761005e6101ea565b9150610167565b6001600160e01b0319811663278f794360e11b14156100865761005e610241565b6001600160e01b031981166308f2839760e41b14156100a75761005e610287565b6001600160e01b031981166303e1469160e61b14156100c85761005e6102b8565b6001600160e01b03198116635c60da1b60e01b14156100e95761005e6102f8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b61017761030c565b565b606061019e83836040518060600160405280602781526020016108576027913961031c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101f4610394565b600061020336600481846106a2565b81019061021091906106e8565b905061022d8160405180602001604052806000815250600061039f565b505060408051602081019091526000815290565b606060008061025336600481846106a2565b8101906102609190610719565b915091506102708282600161039f565b604051806020016040528060008152509250505090565b6060610291610394565b60006102a036600481846106a2565b8101906102ad91906106e8565b905061022d816103cb565b60606102c2610394565b60006102cc6101b7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b6060610302610394565b60006102cc610422565b610177610317610422565b610431565b6060600080856001600160a01b0316856040516103399190610807565b600060405180830381855af49150503d8060008114610374576040519150601f19603f3d011682016040523d82523d6000602084013e610379565b606091505b509150915061038a86838387610455565b9695505050505050565b341561017757600080fd5b6103a8836104d3565b6000825111806103b55750805b156103c6576103c48383610179565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103f46101b7565b604080516001600160a01b03928316815291841660208301520160405180910390a161041f81610513565b50565b600061042c6105bc565b905090565b3660008037600080366000845af43d6000803e808015610450573d6000f35b3d6000fd5b606083156104c15782516104ba576001600160a01b0385163b6104ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161015e565b50816104cb565b6104cb83836105e4565b949350505050565b6104dc8161060e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105785760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161015e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101db565b8151156105f45781518083602001fd5b8060405162461bcd60e51b815260040161015e9190610823565b6001600160a01b0381163b61067b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161015e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61059b565b600080858511156106b257600080fd5b838611156106bf57600080fd5b5050820193919092039150565b80356001600160a01b03811681146106e357600080fd5b919050565b6000602082840312156106fa57600080fd5b61019e826106cc565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561072c57600080fd5b610735836106cc565b9150602083013567ffffffffffffffff8082111561075257600080fd5b818501915085601f83011261076657600080fd5b81358181111561077857610778610703565b604051601f8201601f19908116603f011681019083821181831017156107a0576107a0610703565b816040528281528860208487010111156107b957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107f65781810151838201526020016107de565b838111156103c45750506000910152565b600082516108198184602087016107db565b9190910192915050565b60208152600082518060208401526108428160408501602087016107db565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122012bb4f564f73959a03513dc74fc3c6e40e8386e6f02c16b78d6db00ce0aa16af64736f6c634300080900330058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56305437aab97476ba8dc785476611006fd5dda4eed66b005821032df0bdf5a5f92d8037cf11e50f13d8017aefc99d20a73c826416df79570d4810546e38d4999fdb6fac24973e508cde9397e369c5af005821035b20eef8615de99c108b05f0dbda081c91897128caa336d75dffb97c4132b4d054bcd3a47e4d0000cf170e25d1bd3d53f7c08be0a60058210310e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6049011d6c8fba323ca0250058210328a5566b8a884201ab44e2d991177ce8b88325e02e52cbc3da6e67b3ecf29c604101021948a405581d02beea506e63d9311b0eb23c6ed86e7ddc2248d7bbe9d3d02bc17219010f0149011d6c8fba323ca0261908b305581d022f5dce6d993107338134f4048a0ef5d2430bef1a1a61f0a9ab5c5fa60c01450572bfaa000219a0000334160b2b3414a1b448458100361c64bdccf5936cc939e8b2d592200ed19105df03da3cc90ef62d3ad9e255dff552fa7525c31d06eb64d5df5045e56a7bcd3538fe05581e037013a88a4a324f330a934552003c0ea9bf3bbae161c26003b4f849c0800c024701383b84a9a17005581e038a68ca0de222757ad180dfe2910996104dbdf45e510d8b7f8ce0c729700c01470cc8aa441de58003562d59a51820d47f520c975e0b2bcffac644a509749a3161f481f57b6e826d210605581e0334748c9b864c1a7503fc03dd1016d10f8275d447ebcd45d257d242560007011bffffffffffffffff05581e0349a7d5dc763a3e1a8fff885943cd752edfd2814de2560f113870c7f4400c03480c2d8c1449f7162e02191ce403f1f0fc1c77adf0e1cb5abf0749989e5eb140c12723125ae612d53b5e650713530219ffff03ee5a53f74f94eed211b1550315db61e61ec4bbcbf88d691d9ba75d007b0415540219ffff0326d411259dd7a816b3e4416eccc5f9f3f8797f60e9181cb62c60f59668bb20890323172268bd2a09f78c3552b2e5469c6b05c29a7d95b51d92028cc3bbaab691340219ffff03872087c58f60307b4963d61f7279828d9659dd62ba57be08be4367c53f688e5f0342bd50705846793c09d7e345dbc01747561e7615b92d9b5568466d332d9cb72d036746d7523176057df9ab50e4124f7f615d7d18f3773c220e5a3269d2b3a9528003e9c64ed05da18c3ebb4debb8492489dcf5a681431a2901138f51a6bf6346994b034ebd4a376a2edb82cc2ddad312403e5665f5d2af52367cb74512252b2605f2dd0219ffff03a6839ce079f60fe5a0bd5ee110ebdc668f09e876aed102b15594c44975775c5503e086e477c41fadfe88bf76baf2d04aad8f1ee57ac9e0b5ded35062eeed59fa150307a6af432a815dfc18260a96302efda221a50d09284c6bc818d5b164da9919bb0382257a760af0178efb22ff1983af08c955bf92062ef7dec5d694d64b657a4824034f06e32cbc687a439d9a12eff4a36118fd188bfc7901f79c7f7b98f0287e603b0317f36a9ac825f2fc8a2645631bb1beb8516c0f0e7cfbaa06010b5c7a151eb1ed03d48abe54fa6f199c420e4917ab4c765d23eb852e22d547fd55c37f01a03546410398aa75631e6b1fc7e191c7aa3619ad11b8267b977d2cf4e894f3a69d109c9cb403a185050c2dc07f8446343fd835edba8ff120b78c513555065d08a8c396089efa03c4a450ff4fe0b60bc2f915baac2d659226e8a53c97994a59fcbb80a0084d4651032d17c5617f0ad9fc4ec576c97fa75b32b239ccc37b2d8b4cd22a90704b2590280312e5da494b0bddf2f9118e2b35474df3c516dcbbf861c95f8500c817afa1b4b9039530abcde320a8d9b39fb7d51e409f4304d8060a4899be848378f735aa90b58303fb5d50a431f418aaa71dd484241df04246e654f0e67748321b19ae6c78ec327303f543828ef2845f2c8cf51ae72a1dd5fc2faf6263bcf28ddae421b63805feac21034ead60a6ac6264a2d238cddee2e5f1e90cb3e2ba7689d3a75b50ce80830e079203678a94c99d74e1ae18662084e14b8893f74db93efd64fc26ff0e966ebcde173403e192c69a516ba6c70068c90d97ed4c2033e55a3a2586c8adb19df29afa2277d503a51b07521882854afa78ee6e331b5d517644356fe8b7234873c1bd8a3b87d64603b69d810acfa81e692d1be7318ecce80bd30cf020b36925fbc2e7de498d64cd2e03eb75b2d973cf7d6f68e3e94ea6a1da16136ee04fd939beeb25970523fee36129036c8b0f5ae48859f90edff010e930899f9b9c69e2831edb176f9606f1a5ee7b7f03153c9b0963e63277b37ad32e7292dd70fe80d17355d5072f7c3743583570c86403108c18059693942247bd69adb0df426f8d4da285a2a65ae8aafe230335f49a1503c18819da1e1030a0a57e3e6a8e1c7ab1ea6d1dd9e5a84ab1800695f8041485c4037071502c6556c483a799c2a51ce6ec3844e25bf7eea6546cba9529806b4b19ab0373cdcc78853cf441d75a71aac0cd2c192cdb7b60969e74f21dc3b6c93ab32da0038cf2110a8ad3c555e4f0a8f10d16cbf380090ace829f5b86783f7210c7f13b2303c6788ad3233c4c8f782a2b38f8853c6f6162cef4f67e5e7f2dbbad9add5cb74805581e03399bd41150c10abeaf754ac321869d467391ef5decd21b75fff4219e700c0147012e2dd507d14003ff0957529f4b0b7086551af1d2f543907f305a6618b6d43e042f333e0ce4648e05581e035cd68627a90d1ca3dc18b99862721b2278fa98386e6d523036ea949ac00848046ad03e9b97ae0003ea8e8bd08804ae9b32373abc45eb59d48a256f042146a09f2538a2d3034eecb601410a039d09a5a782766c68adf3c29606454c5274e07e05c4f40bf0c376258caac4537f039fc58d92eb043d53f3c41dc5169b576520a8aca309d69101b339122a14be7c0d0368d9ef9c32c6355d5ce1cb3803f4f20debc1aacb6619685de20bfe9763730eda03907c071fd61daba3703da934f69afbbd97123740e1068cd951252cf29a291651035b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce503e2a8b47e80f9bfd9d571a0cabe7497fbfba8e0ca15a24d21f33b9ab0c56b993105581e03916c2ed2b6d5339fb36af92813895bba1355bbeab9ee10542daea391c007011bffffffffffffffff05581e03206138f42a11cde77dd412a77b978ad37f6b4f570aec86e0a1c790a2b0040103117189cf78bcaf818810f233e4ae673fcd70f45794330df8e3bb714cc316772c0219dd7903f54c9cbb3080ff1e2bcaef7ab712448d665da3956026df1d171dfe8bfffe0b0503ac2cd5329fbd1e6fd22680a56158b22fc584751834b48f69bdc0836599c0aded0366979e47a7fe99007395a35155f9603a06296f7e6aa6951a2220751dee62515203dc8883551a971349f5fd8cb22867c6743eee07a1f77d57b0f9d907bf1b879ede039fd8eeacf6465b4d38ca65a9379dbe44b2d293f00cc09a33d8e1283f7637af5303210b5c315bd98a298830bae4b2e60431d30619b36227a1183655980059acc58f038cf582082fb608aabf9d2bca983532883fd7e3eee95529fbee0d1a758eb2c4ec0219ffff0342bf1e11d8795edf35957bbd2d61a7277b438beb12af11648267c35ba3ff374703f5bb67db6cda6a25812358b5f708e4dca91f7f8462eb0be9601ffcae8948177203e93fd382cc1bf408ed0706845b918c5720cb36c7c7941123e2b7bdb3d758f89b03f9400af720ef1840945af5b36d0e4f3af5766ee8d0f4aaf8fecbd418fa7eec39033fd6a57415a27e5b7c4bf731daf7286537ba5639a9567d88c478c0b137cd7262030456ab8efb69183cbdb8c63c71cd129614e9daadf2e7b9b8a0c4101e8e9c453003e018d814d055c7330e3ab9b3359d7db7734449adf4c178d26028e75a0c1ac45603fd167e2b0bdf5f0c30d3529fb3e926c1d267e84fc9685901f51a90ab331466bb03b1242b71b64b3bcddd4d3c1786d54af1b260ac4f7c2066f6fcdef568365ac7ef0357e5b239bcc5ad5717ffd615c344856b3d6c9dd74f704e1e7856c0e0585bfdf303cde81b38ca1a223ec508f1f226792e3f12ac056747bf684a5d603e01cfb2d2380219ffff0364defbb9a6fbc924bd567cf3387a6e25d055042845772fa3ab529b3a9a5828000301f3e8092a01718f3cd47c56de74d8b98559038dea01eedda183185be80d86d003aab320ecf5d16d33bca1122f35f9e17316adb65c2baf57353709bd78c03a25d103270c40a28a22bec1ad8f14c07a11f95a91a16458c14557c276413c96afe8497603bdeb8754d7f1164e87019989ed477d7bb1395164675e64500e47837dd1b31747031f49eb284cc882e095eb09dbf642eb60badbf48a2f372ef44fb15153cdf521210387fa81eb2dda109118258ac34d94ace4af4b2dabfb2d41ae4b6a35ed8071da09030d2f75caaaf51b3959469327ffe70edceab2d58e08207a099eece96e1f869c2c03842ab4cfaa843db0bca6aad8d175f3f2eef317e140898c42b1a1c9fd550991b80384623c79273883912ad178f5da4bf9f91dd07b4290b9352de96e0bc13a2bae4c03a57b5dc0dfb8e51d48353a5d2087a71218013b0ffc8c6e3e3edef4601154ee7e032ed3744231ce450bc20761a6a8130d754e72fc14184506042f02b4f78bcf00bd03077a347e4b1dccc359665872fcc3ad60cf7e3f23084cdea50e603cf38fc257c803503811ba352666fcecc55fdd0d3ccc2b75d7e4bb8e1d4b9bd7d772627800fc930219ffff0219ffff03108ffd2a8772789b9ad3335cdc989a073af4088847ecd9f1514520655118ea17032ec3966d3cdefccd3e2ee6e41d833259f813b7ef7475232c6597eae911de2f6e03aae95c40c66c1d5a14f791e81cd7a17534fd3b14c0b570a7bda842fb0e93b30d0363ee859bbd97767a30a408024f7d5a0686599706654a20b0d17a182c943bcecf0343af6e03f204c12ff28e52fa8f46d4a35a3fac06a19a9cfd6beec73080b62c8c03990fa8491a1839f504db72a498614761da84a9b28298a81be1a040445f117644037ceba9a733de1c94bdb8c0d50df46a228e927b52bc96d136c6a88c103a345d210337f9558f1cfe7f448830c8480ec60c9930002ed48b30ccd9e1ef4c5d8caa2aff03083af68cff161b4a6e1ffbe01e0b05d8eb71bb08413e8c06df21ae387642755f0307e13e7578300b73dcaadb5416304ab2219a78b4cfa3d45ac71fa0050a88ce410398769ee425eb19b8f0f9e72f8803cf909f9f3f6af05803274fb51f0691a89477034d116c0489c6a7830a6e71739878323d8fe0faa2bdc6d5f7b26e830cea8d7fe403cc9eb9d3881d2a179b91f6fc872a850802f828800678bf13fcac07a4db7589820314e53be3d411ae0f3f9ab05bee4ffe840f1642ea1a0b1b565bda279fde68351903b1754f87f0a900d340be549a6b15a0f30d55ee636a33e46943a708770a99d68303be0a1d3868303e0e13c4e3659a46c1b5c9390f34478ada9522f12a5aca74ae5e03a790fe17be277293a34810538b9673d4fbe3d03a0b035dc498fb87edf5837221035d8423169fb402a507758ba4d194af340fece08129070bccdaf0567e012712d103ac5779f00db1f3779385ed52fddcdb0742f5596922e73917a14b39851f20ddfd03311db8afba9fd90bd253ff2e853ee56485612c83bb4e6e86fe29a8116427a94103682bf118d6c7588275e2bf659f49f9386a9cfdfdb62c8f1974c6b83ddcbda7cc032a005fd0432915d283dc5acf30d7d4ca36354c94c959aa5d87869f4758dfc3d8035b0cf0b4fc18610cc5234a6742cd07a94fea25d89e41220758f6b59d2257483e0329343f36760cbb0951e444492e04d89771c8905af0c8705f5949fe5157a4e38a03a7282ad3171cd6a8b00a6fe5cfacd2fad9db9d351ba4f0b846d26482e1b8f9fa03da4be3855117f77715adc181a7f4a881cf1ed8293ae0dddefe40f8a5d12f886f03f47b99538fc4e2d7d6fbb8b555e79f69dea2562a70608ec8a76ad665845e4feb03a825017dc238633febb30917c45993c6063432aac186794af783bbb39f398d0303f8280644186a3b896527ba7062dde863bcbf66dee141c4d8c7d3ade009d461860315f2adb176e17ebfd73c507d85e6c1bff295f733e4a4618fbf47a15b73148a650360dd50876647af16ff77e424f71c5b94a330919fcaf2932e738a9e2c4efa4a5805581e032af143968bf17c4f670b868c298a55e7c5c16991bdb658e3eed3cd4c9007011bffffffffffffffff031804e5cd0675cdeb28d9517d51606517bdd557b39a1b48aeec456ecdbec352fa03645c169e00b675096fd330b389d954736e724467b40f8111b68cbe1d8ca8ff7a03edeacad95a6c7b2ebd8060e27a659b4b3f4b863f34db539070207ca072783b4205581e03a011bcf3da4861819cd38306db473ce00a0f7ab83b5f017d398e28afc00401035fa8c6f35c8fa363a6451cf6d5134e313c0454d707dcb36c9e01e8a10578c468045933cb608060405260043610610138575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b41146103eb578063a9059cbb14610415578063bf474bed14610451578063dd62ed3e1461047b578063ec1f3f63146104b7578063fb201b1d146104df5761013f565b8063715018a61461031b5780637d1db4a5146103315780638da5cb5b1461035b5780638f9a55c014610385578063909bd599146103af5761013f565b8063313ce567116100fc578063313ce5671461023957806332712140146102635780633395f22b1461028b57806335949eab146102a157806351bc3c85146102c957806370a08231146102df5761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a957806318160ddd146101d357806323b872dd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104f5565b6040516101649190612377565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e9190612435565b610532565b6040516101a0919061248d565b60405180910390f35b3480156101b4575f80fd5b506101bd61054f565b6040516101ca91906124b5565b60405180910390f35b3480156101de575f80fd5b506101e7610555565b6040516101f491906124b5565b60405180910390f35b348015610208575f80fd5b50610223600480360381019061021e91906124ce565b610579565b604051610230919061248d565b60405180910390f35b348015610244575f80fd5b5061024d61064d565b60405161025a9190612539565b60405180910390f35b34801561026e575f80fd5b5061028960048036038101906102849190612692565b610655565b005b348015610296575f80fd5b5061029f610774565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190612692565b6108a6565b005b3480156102d4575f80fd5b506102dd6109c4565b005b3480156102ea575f80fd5b50610305600480360381019061030091906126d9565b610a5b565b60405161031291906124b5565b60405180910390f35b348015610326575f80fd5b5061032f610aa1565b005b34801561033c575f80fd5b50610345610bef565b60405161035291906124b5565b60405180910390f35b348015610366575f80fd5b5061036f610bf5565b60405161037c9190612713565b60405180910390f35b348015610390575f80fd5b50610399610c1c565b6040516103a691906124b5565b60405180910390f35b3480156103ba575f80fd5b506103d560048036038101906103d091906126d9565b610c22565b6040516103e2919061248d565b60405180910390f35b3480156103f6575f80fd5b506103ff610c74565b60405161040c9190612377565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190612435565b610cb1565b604051610448919061248d565b60405180910390f35b34801561045c575f80fd5b50610465610cce565b60405161047291906124b5565b60405180910390f35b348015610486575f80fd5b506104a1600480360381019061049c919061272c565b610cd4565b6040516104ae91906124b5565b60405180910390f35b3480156104c2575f80fd5b506104dd60048036038101906104d8919061276a565b610d56565b005b3480156104ea575f80fd5b506104f3610de2565b005b60606040518060400160405280600881526020017f536f726120496e75000000000000000000000000000000000000000000000000815250905090565b5f61054561053e611305565b848461130c565b6001905092915050565b60115481565b5f6009600a61056491906128f1565b6461f313f880610574919061293b565b905090565b5f6105858484846114cf565b61064284610591611305565b61063d8560405180606001604052806028815260200161336e6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105f4611305565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dd99092919063ffffffff16565b61130c565b600190509392505050565b5f6009905090565b61065d611305565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e0906129c6565b60405180910390fd5b5f5b815181101561077057600160045f84848151811061070c5761070b6129e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106eb565b5050565b61077c611305565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ff906129c6565b60405180910390fd5b6009600a61081691906128f1565b6461f313f880610826919061293b565b600e819055506009600a61083a91906128f1565b6461f313f88061084a919061293b565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61087f91906128f1565b6461f313f88061088f919061293b565b60405161089c91906124b5565b60405180910390a1565b6108ae611305565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610931906129c6565b60405180910390fd5b5f5b81518110156109c0575f60045f84848151811061095c5761095b6129e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061093c565b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a04611305565b73ffffffffffffffffffffffffffffffffffffffff1614610a23575f80fd5b5f610a2d30610a5b565b90505f811115610a4157610a4081611e3b565b5b5f4790505f811115610a5757610a56816120a6565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aa9611305565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c906129c6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60606040518060400160405280600481526020017f53494e5500000000000000000000000000000000000000000000000000000000815250905090565b5f610cc4610cbd611305565b84846114cf565b6001905092915050565b60105481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d96611305565b73ffffffffffffffffffffffffffffffffffffffff1614610db5575f80fd5b6008548111158015610dc957506009548111155b610dd1575f80fd5b806008819055508060098190555050565b610dea611305565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d906129c6565b60405180910390fd5b601360149054906101000a900460ff1615610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebd90612a5b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f633060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f4e91906128f1565b6461f313f880610f5e919061293b565b61130c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff19190612a8d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109b9190612a8d565b6040518363ffffffff1660e01b81526004016110b8929190612ab8565b6020604051808303815f875af11580156110d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f89190612a8d565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061117f30610a5b565b5f80611189610bf5565b426040518863ffffffff1660e01b81526004016111ab96959493929190612b21565b60606040518083038185885af11580156111c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111ec9190612b94565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161128c929190612be4565b6020604051808303815f875af11580156112a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cc9190612c35565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190612cd0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90612d5e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114c291906124b5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153490612dec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290612e7a565b60405180910390fd5b5f81116115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e490612f08565b60405180910390fd5b5f6115f6610bf5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116645750611634610bf5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b295760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611707575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61170f575f80fd5b61174b606461173d600a54600d541161172a5760065461172e565b6008545b8561210e90919063ffffffff16565b61218590919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117f6575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611849575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561190357600e54821115611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a90612f70565b60405180910390fd5b600f54826118a085610a5b565b6118aa9190612f8e565b11156118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e29061300b565b60405180910390fd5b600d5f8154809291906118fd90613029565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561198b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119cf576119cc60646119be600b54600d54116119ab576007546119af565b6009545b8561210e90919063ffffffff16565b61218590919063ffffffff16565b90505b5f6119d930610a5b565b9050601360159054906101000a900460ff16158015611a44575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a5c5750601360169054906101000a900460ff165b8015611a69575060105481115b8015611a785750600c54600d54115b15611b2757601554431115611a8f575f6014819055505b600360145410611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb906130ba565b60405180910390fd5b611af1611aec84611ae7846011546121ce565b6121ce565b611e3b565b5f4790505f811115611b0757611b06476120a6565b5b60145f815480929190611b1990613029565b919050555043601581905550505b505b5f811115611c2857611b818160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121e690919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c1f91906124b5565b60405180910390a35b611c788260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461224390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d1b611ccf828461224390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121e690919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611dbe848661224390919063ffffffff16565b604051611dcb91906124b5565b60405180910390a350505050565b5f838311158290611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e179190612377565b60405180910390fd5b505f8385611e2e91906130d8565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e7257611e71612556565b5b604051908082528060200260200182016040528015611ea05781602001602082028036833780820191505090505b50905030815f81518110611eb757611eb66129e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7f9190612a8d565b81600181518110611f9357611f926129e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ff93060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461130c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161205b9594939291906131c2565b5f604051808303815f87803b158015612072575f80fd5b505af1158015612084573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561210a573d5f803e3d5ffd5b5050565b5f80830361211e575f905061217f565b5f828461212b919061293b565b905082848261213a9190613247565b1461217a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612171906132e7565b60405180910390fd5b809150505b92915050565b5f6121c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228c565b905092915050565b5f8183116121dc57826121de565b815b905092915050565b5f8082846121f49190612f8e565b905083811015612239576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122309061334f565b60405180910390fd5b8091505092915050565b5f61228483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dd9565b905092915050565b5f80831182906122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c99190612377565b60405180910390fd5b505f83856122e09190613247565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612324578082015181840152602081019050612309565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612349826122ed565b61235381856122f7565b9350612363818560208601612307565b61236c8161232f565b840191505092915050565b5f6020820190508181035f83015261238f818461233f565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123d1826123a8565b9050919050565b6123e1816123c7565b81146123eb575f80fd5b50565b5f813590506123fc816123d8565b92915050565b5f819050919050565b61241481612402565b811461241e575f80fd5b50565b5f8135905061242f8161240b565b92915050565b5f806040838503121561244b5761244a6123a0565b5b5f612458858286016123ee565b925050602061246985828601612421565b9150509250929050565b5f8115159050919050565b61248781612473565b82525050565b5f6020820190506124a05f83018461247e565b92915050565b6124af81612402565b82525050565b5f6020820190506124c85f8301846124a6565b92915050565b5f805f606084860312156124e5576124e46123a0565b5b5f6124f2868287016123ee565b9350506020612503868287016123ee565b925050604061251486828701612421565b9150509250925092565b5f60ff82169050919050565b6125338161251e565b82525050565b5f60208201905061254c5f83018461252a565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61258c8261232f565b810181811067ffffffffffffffff821117156125ab576125aa612556565b5b80604052505050565b5f6125bd612397565b90506125c98282612583565b919050565b5f67ffffffffffffffff8211156125e8576125e7612556565b5b602082029050602081019050919050565b5f80fd5b5f61260f61260a846125ce565b6125b4565b90508083825260208201905060208402830185811115612632576126316125f9565b5b835b8181101561265b578061264788826123ee565b845260208401935050602081019050612634565b5050509392505050565b5f82601f83011261267957612678612552565b5b81356126898482602086016125fd565b91505092915050565b5f602082840312156126a7576126a66123a0565b5b5f82013567ffffffffffffffff8111156126c4576126c36123a4565b5b6126d084828501612665565b91505092915050565b5f602082840312156126ee576126ed6123a0565b5b5f6126fb848285016123ee565b91505092915050565b61270d816123c7565b82525050565b5f6020820190506127265f830184612704565b92915050565b5f8060408385031215612742576127416123a0565b5b5f61274f858286016123ee565b9250506020612760858286016123ee565b9150509250929050565b5f6020828403121561277f5761277e6123a0565b5b5f61278c84828501612421565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612817578086048111156127f3576127f2612795565b5b60018516156128025780820291505b8081029050612810856127c2565b94506127d7565b94509492505050565b5f8261282f57600190506128ea565b8161283c575f90506128ea565b8160018114612852576002811461285c5761288b565b60019150506128ea565b60ff84111561286e5761286d612795565b5b8360020a91508482111561288557612884612795565b5b506128ea565b5060208310610133831016604e8410600b84101617156128c05782820a9050838111156128bb576128ba612795565b5b6128ea565b6128cd84848460016127ce565b925090508184048111156128e4576128e3612795565b5b81810290505b9392505050565b5f6128fb82612402565b91506129068361251e565b92506129337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612820565b905092915050565b5f61294582612402565b915061295083612402565b925082820261295e81612402565b9150828204841483151761297557612974612795565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129b06020836122f7565b91506129bb8261297c565b602082019050919050565b5f6020820190508181035f8301526129dd816129a4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612a456017836122f7565b9150612a5082612a11565b602082019050919050565b5f6020820190508181035f830152612a7281612a39565b9050919050565b5f81519050612a87816123d8565b92915050565b5f60208284031215612aa257612aa16123a0565b5b5f612aaf84828501612a79565b91505092915050565b5f604082019050612acb5f830185612704565b612ad86020830184612704565b9392505050565b5f819050919050565b5f819050919050565b5f612b0b612b06612b0184612adf565b612ae8565b612402565b9050919050565b612b1b81612af1565b82525050565b5f60c082019050612b345f830189612704565b612b4160208301886124a6565b612b4e6040830187612b12565b612b5b6060830186612b12565b612b686080830185612704565b612b7560a08301846124a6565b979650505050505050565b5f81519050612b8e8161240b565b92915050565b5f805f60608486031215612bab57612baa6123a0565b5b5f612bb886828701612b80565b9350506020612bc986828701612b80565b9250506040612bda86828701612b80565b9150509250925092565b5f604082019050612bf75f830185612704565b612c0460208301846124a6565b9392505050565b612c1481612473565b8114612c1e575f80fd5b50565b5f81519050612c2f81612c0b565b92915050565b5f60208284031215612c4a57612c496123a0565b5b5f612c5784828501612c21565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cba6024836122f7565b9150612cc582612c60565b604082019050919050565b5f6020820190508181035f830152612ce781612cae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d486022836122f7565b9150612d5382612cee565b604082019050919050565b5f6020820190508181035f830152612d7581612d3c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dd66025836122f7565b9150612de182612d7c565b604082019050919050565b5f6020820190508181035f830152612e0381612dca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e646023836122f7565b9150612e6f82612e0a565b604082019050919050565b5f6020820190508181035f830152612e9181612e58565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ef26029836122f7565b9150612efd82612e98565b604082019050919050565b5f6020820190508181035f830152612f1f81612ee6565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f5a6019836122f7565b9150612f6582612f26565b602082019050919050565b5f6020820190508181035f830152612f8781612f4e565b9050919050565b5f612f9882612402565b9150612fa383612402565b9250828201905080821115612fbb57612fba612795565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ff5601a836122f7565b915061300082612fc1565b602082019050919050565b5f6020820190508181035f83015261302281612fe9565b9050919050565b5f61303382612402565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306557613064612795565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6130a46017836122f7565b91506130af82613070565b602082019050919050565b5f6020820190508181035f8301526130d181613098565b9050919050565b5f6130e282612402565b91506130ed83612402565b925082820390508181111561310557613104612795565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313d816123c7565b82525050565b5f61314e8383613134565b60208301905092915050565b5f602082019050919050565b5f6131708261310b565b61317a8185613115565b935061318583613125565b805f5b838110156131b557815161319c8882613143565b97506131a78361315a565b925050600181019050613188565b5085935050505092915050565b5f60a0820190506131d55f8301886124a6565b6131e26020830187612b12565b81810360408301526131f48186613166565b90506132036060830185612704565b61321060808301846124a6565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61325182612402565b915061325c83612402565b92508261326c5761326b61321a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132d16021836122f7565b91506132dc82613277565b604082019050919050565b5f6020820190508181035f8301526132fe816132c5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613339601b836122f7565b915061334482613305565b602082019050919050565b5f6020820190508181035f8301526133668161332d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220faf31d25f5bba3321231e05d0088926b459202ad60fd4c4f7681424d8b8b286064736f6c63430008170033005820035b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db904114005820039d0e332f80d1cff51a8a4d8865620006c19ed620818900cbffcee63890d910480cd157e3580065c40219108000582002ffb05fa7fb6a86937d01a672ff01821f7da270655c75053d497d06c32e5346480c7d713b49da000003255f32ed2a6bde98002da6e3cc0e58b70a5c3aff988ad5ddec23964bead0189600582002bcbd2ca84c64596a5f4a56e37d84862dbe3f7b4f8e487005029c09dbeb1e9a48519b8da754b697c80398d66d4877a1fb465b7a78297794c425caf898b8e7350b4ba0127bea651f55a5005820023c38f9d0b8def738a80423f5265f1ada8d30b34be15c19bc3a3fd1df57d55a42029703314b929e13059b976b44aa45bd1151392160875b85ace22641d630d3164429bc005820025f4b1b6e2ee5136983d50c8431bae54e98f73b1caf7d3e17cd5798afda01635820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582002ec4e4fbbcb6da7b80a630e152dca58edc7dc693b288741bb9c8ae9765a20ae5820ffffffffffffffffffffffffffffffffffffffffffffffffaa9621c7818547ff03323eb01f87ce6292295fb80c6386ed7dba5a24992ddb40d9f650a8c5b91f786e00582002738f9317652af9a2f8d98a36d9b74af5d5efb3005bd748616a3951790c1be1481c0e9fabf28e665200582002a83e01ee189236ea420c06c1e5ad90ee0241afac784f6f77e49865ae28d7ef4807588688d615179a0219afbe00582002444e3cbf73033e1b3611d22ec5d580e428dace4b6282de44d4e8f3155962cd4802e368fc01683cf9005820026311e91d717d058f799f715c63bbb3bc375e51d8f7465b4b47ed7e710a1af148183f863632009b8c005820026847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672483a4965bf58a400000393fea7c248e1632707119833e743d7b4c08d7e8e83edc0d635aef8ed23ec0dbc0325c25567ee1cf657c32e1672aa17e8da341a31e8eb483e8ffafaad1683bd875202193a400323c8c4e0df9d31c4cfcd74b19e920aef8a6be3f58d833ba46ae1fce01c10da790058200233f2dabe70191bf91fee4f9192ccb4504339a8d7408b1f65a4903f2b916a115820ffffffffffffffffffffffffffffffffffffffffffffffffeb9013c7aaf39062037ffe4e689610cb88f86a56212b1816ca45df612faef8d7976586254db00649ff03cda10e5391e9264228eb2f0bf034f1ca9f26c78abf2cee8fbda3a8926dbe0b78038a2670b1260d74eceb27bc089fab9138528a3cd6f144f557d44ce7b6a9d02a9303a874ccc003f5fda475569abf6e38cec1a397e3481c89767abd60752450da87670058200200adfa2d10f44031f716086e8a88b410cbcddc45a2423c0b1dad37c1f3b1a85820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff033fa7a7af3e3e272ca70a6c5bd1899dcf9ae5d1629e59b68a7e7ca4b5ab14ac0201410d00582002a8cd92dfedbb1d839e6d78cf6ecb71f14d547134c79c2ee1efce9a4eb1fa624802be735d5101ab6c005820025afb5375241c8723c9b801292630c2ba18cfae58963b95963507b1c2642db9481d044d641b3ff24602190fdd032f98a28fea9c256f312526db825f1e1def4919d6c7838f156cbb1f2d0b250ffb035ed1b9a0abaca55b8185639f555671606960c317025b1d03df6efde927741b8003732861e026d5c368f4f63aec23b05e6b935c100c04105bda9f7cab75346a245000582002ea540327ac56e8c788686a6063618ec78e3c1635660cfe53397209b174133c4817e50e2ae28be1f5005820021877b57dda2f007e1abc736d6f26bebe6633bd8d41d03cc915856d2336eaf45820fffffffffffffffffffffffffffffffffffffffffffffffff48ed2e258780baf00582002e2f9063983567252a650cc97a252926147af57153df0b458bbc49d82b949285820ffffffffffffffffffffffffffffffffffffffffffffffffba2662f0eeb654ff00582002d2e02aa0f5af8c37b4ddaeb0e96f6e7e2e7317db11479ebaf39e8a7ceb5b294864a151da1f0decde0345a5a859c0ce381a99a5c83df826c5e1b0480f7fa3b081275c6b15d9a7152baa035236fe8186bcdfa1066327db9addd460af663f697163d0f382fe12d1e9e1f21900582002de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09057010001df675ac7eb6a7053e6988565f57dc3da177661ef03818b287d07bfe7ad6b072e3416af9f7e5717f5d00548b66293da464f6d9c1a0d037352aa8975319123fba4fe7c7f8b6249d3595fef4d7962b0aef9887769ad7de50058200296098a2446992373a77be9e143670314335ac28d9a1f87c775d7af694a61f9485ee43b728c07df89033e320bde6d10d065f028067fec9b1f739fe03bf81b6b09158cf371d331e8d3b9014106030530e71f99b92abc4c27d827fff142800b5b0a63696a0b1c78438449f07027260219d67f00582002dc61613003c2437d393fda5248af1d077f6825b1a38e61033509f051002e605820ffffffffffffffffffffffffffffffffffffffffffffffff8ba0eb582bc2595803bb48d01868b678d50046f4e696f719a436968e1d491c85f4fe62c359e13edebd03eecd73caf6493e4be7c603e4e1080383ac00d3dca01db6cfea259509573099d8005820028452c6f95a7f9525d32f33fb2253d40897cb9cdebd16a9b4545e99261edb3d5820ffffffffffffffffffffffffffffffffffffffffffffffff8b984f00ed0e6c98005820024b38c10e058d274c6f94ea67affa92614db48fcddb8170c5c4031cd8090813480e95a1f178897cf500582002eb66a969808d62b1afb823795ef60ba0bc917f35815ccff6bc8b36715bcfa05820ffffffffffffffffffffffffffffffffffffffffffffffffe92c7ab1dba5df5b038ef189089c02ce0fecf07f5c7a057d6b0cc76cac47d5e03874a5da5033063d5700582002a34a87882315cf2fda3dda6cbc2c1add4016ca5c8683d0f6f71d79fc3e66195820ffffffffffffffffffffffffffffffffffffffffffffffff9112c4cde760a01700582002150f4ac141e5ec5504f6b4a2d8401fa1aba4d7e8f68a4f65a83dde9a58161b4806bdf88e5f71b78a005820028d876d584f4a8242779a0975855998e30ee37efb2ae467e24cd62427ecb0e3485b3339c8692f3ab9037b387dce82f7e3b3e7b4b6278f4068f3df3554e5ba3580af6ae2641aeeae7f6d03a5047a3fd6acc6d8505bb01d8738e839b8e6631ea2448ec35ab1043824b83e860219ddf6005820022d974797b3b46e4d943da9dc92b06cb2934a6e91fbbf97a119cb77b4a24fc94847d15e72bcc28a8f00582002585ff0d8ce7cadeb77acfb034dcd8dd3d7689b2aa97599ba171c777da37ec15820ffffffffffffffffffffffffffffffffffffffffffffffffd4e053a6dadbcef903969c3fceb182b762ea8ba65a0f993844fff06bc6fe4bf7ccaacb0c925be2bddd00582002565112902a4a5a91fde59db5a2e801b4c4e8cf0168b26eb61ff2e36ddc7308480b3b9bbd30ddab9f0363f80b925ed26d77c6bb2d5519b19ecc3ed20c468c3bd58b978e944048b7981a03cb1ed5e25447d7e02fb23549f51223ddd7160b5762875ed2f10d4ba4d501e33600582002d69c03cf5551cc8b0f393cf43bc578c22eacc469dc716b10f867636dfa3ebc485569de387e7ab80003a7416d4f5229ce571c29639c4f74b49b7048cea0edf9073cc2cc9793779c7e31031b2806e68a9e13dbe98d6823e61ac80e368b9c5e9eabeea806ff1a0d5537fcbf01410e00582003108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80204916ce3f1e16bf15000000582003232da615b5c033fb8d0072d39388965f67cfd9d0dffb0a0d3ba04e20168eb0481b5723013f013d3a0058200328a345034a2aa0ec6b4a56d2b1342ee46f38caf2955f4a47fa965abcf9e2604807588688d615179a021902220385a752ad25004391b2e3475e9818c51e06c1a358e3956514a4066fb56709450500582002ae75c1fa39d39eeb533514396d24cc991109978850263abf852c80bd46c60d481761df2327e5224c0219fbd60058200258223ec9b1cd060e6e88ab61ffda14222c82576a2ca0fa217f4daa57c732345820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582002ce2b00e67e51b88f13a6faf65dd6bc62d933dd14c707e6edfe4e50b89b59715820ffffffffffffffffffffffffffffffffffffffffffffffffeae8d50aa59cd3e0005820029fe2a24cce1cd41ed05437c7cbb96a7b0f02c9ce00289d521ddf59df9f60ac5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ec97e91d18ced98c4f01522a83906b723bd4bb6d7ecefdc2cadf056f1ef9863800582002496e4d7297e0f840d838f0719c8eb46740450f6270da99726357c7a43a983c5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0058200274a36c3cc810528bb60d34384c32d51c09471d004373bfd0026e8e123497925820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0314ed59207e71e8cbd5b0d38dd79fd663b25607297280ccf7d34b7fb7929a5c3800582002ab67acdc83a12e0782c15bc4edda80c36929b792dfc9f0fb145cdfd10857685820ffffffffffffffffffffffffffffffffffffffffffffffffaa9621c7818547ff005820025f4baa35c70a3bf96cb82c8401f63c407096104600027e70f86be6ab32aad5483c527bd8a08019a70058200263acd56fcb2f339fb3f7dedb16a10f2aff189c738a182fbc77cee7ab5608a8481e581d85cc30c3fc03e31416e8abf81feb5b727d7831fa6e9b25289a671a142053739b7835283551440219f66e038fb6b20c4f0d9e12c5d002661372e3b5056893bb5d49ccc36d760b85865c63e001410400581f02d5bf52c97786f6d49f6f5af64808f5c05d84076b253a3de803687a314a0d481def1d7d83b212ba00581f02a5c4a82f2f74ffabf6e51c5edc80dce67d50982c0c165e3df2feab8b12e35820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0219100200582003ba592b733732b5db407258ebb5f6a11046235e770a179ba85aea1fc8ce4e905820ffffffffffffffffffffffffffffffffffffffffffffffffaa9621c7818547ff0058200393956e6942405ee084e8f6c832ab5f163ceebc85c317e8948788711f0542b05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0219880400582002327f18f1218f10e5564604e6d6600edb492beb431010fa198bd26022b6dc145820fffffffffffffffffffffffffffffffffffffffffffffffffb7b8c0e13e5518e032eedc573beedb59e9330c854fa29681a521acbba2288950aa204f0839c4412b9005820028a8b5e3d47b1975e30e71e509c5f9fd93fe502bc38ae124317652ae0d182885820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005820026cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6884118005820021d605fb637aa8c7717aacaacfc49ecdf5769d052093fd56e4aceb4ee7d0c0e5820ffffffffffffffffffffffffffffffffffffffffffffffffaa9621c7818547ff005820029e766b2c698518b98289a405279a4de84dd6049c5fd4f813357bc1c8d1685e5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03d1c19c44f8e052c279743d3fd7a358f7d39ba32d90a75c475eadd159c9e5cdfb005820027bc50f9564b90b48c4a65061f356ccb7748969d2f2c7aadc9d031f3623b51d5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff021954df0311b8fe0315e564bb30976c75a52bf2f67198847f07de5384a1c6d877862a6f6b03bcbf5bb710b84a303bfaf20a232a23452e0ece6c6b9a0d5952ace144304d302d037df575970351f0066f502bb0d6caf8b56ed74385c5fe0a3615f8928d79f38a0103b646890cbbc31e7d49846d22d5688238637dbd95707d83bf4ad7c6ec6a39944a005820022f7a27493622f61e3365374a4b634aff849db10c60fd5427d6aac4a047cbc8480d8f7d2d8c069aa0005820020f4b0cddebca23d2ed385dc7e32cfe59a1c0e4e1c97fb80d935e0fe34712d65820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02172cdd55898a22955a9a0bf9d6a3758d8cd8106521105c3f611f0f4839dd4817b084268bda1da600581f024a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd4916ce3f1e16bf1500000219082000582003a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440547a250d5630b4cf539739df2c5dacb4c659f2488d02190180034abb82ee5c29edffd45e070956f328bf02b4216fc5c37694dd75e4f711ff53820377995c8950a268b647f0ca6953df0e080c9f78d6fb51ace8028d8dc8dfd234f10058200218b5cbc40af393a10dbe47c36bae4843a3ef36c8129535c1c7096168e6be895820ffffffffffffffffffffffffffffffffffffffffffffffffa92a820890902aa70219be1e0339e20ef5060e7fd3dd24308efc8e6e35150efdbcea62054f41a213c021f45faf03f842b6ac46dcfa019f4a3e561ad924d1b2d26087f6026da5251b82ce67ef529d034ce8525f58614a21f7ae593d6fba34483581cd0f66aa21f66c783fbba535715a005820026eb630cb900483fb16f5cab455ea908fda88ac470ae123e060320544e2101a486d558200aeb3acdf0058200273550101a06d06d5938f124853d15593bdf0736ad246da599d0e98e6c6188e4803cf5b53b3533b24005820031ed3604650b2aeb65f74a72d2bab8f72eeedaac2dde3d554b57f413b8aab404801fb17a92d5c32c9005820033a7de1166cb53a7600f7f9f52a3a49a00c5d436df6773c6d20bb1679d33f605820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80411402183803b91326e6a2c9fa047c8bd798ec24236687ee90f1cc5d50ba9c7f9e69798324ab00582002005d929aa278bdcdcd39219e13c566064d0561a8b8a8d582267f88589cca36480f6d31dd3d2352980379bafa2283069cd505dd6ea8267925bdec7f80721e379528c51b2bd5d65f840c034ec13858d2fff1f311b6d74083da8a223c8b0e917a7171d3cd0c29743d10297e030a9397b9c4e5e7d21529d108fa5271073f7d62a476f0cc1b2507438167d4de42005820026d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec410102196eef00582002d3e948e6a5b56dcc9b4a7e103ac01e6b059cf285482de8fcf963c25efa2f7e48013cb4ef34e4e36603beefc61f2bacba252b4d25fc4c4edc3e6014175d31d78bc8d528e4519b2a974d00582002d16192d0a6798e6197663e1f89ada19483a35605ee10b968f08fb595d373925820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005820036990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5041cc00582003710088d32e4994e46679566ebfa9500c14ae78be6b520a091f2e6cfe143850480b172ab904f4cd5502192800005820029786cc93ad8f4f91813264000043a054e66d1caf2b2a86e8fd975c8cabfea249013234647c72fce12a031db3ef4b0c75d2229bf08141ace300d5c7ff3908ff9d36cd6a0d59e352c913f100582002a547f0890839bdcd4fc4b7c095db256dd585339efed8e975a8d8e139c44eb4481018d652aafb29a100582002834e2cd19284199db710501916e3b1b362ab824580275d16eba52b782f536a5820ffffffffffffffffffffffffffffffffffffffffffffffffc52a055048a39e9300582002768a983e211af9d796a60f857a3644c23d0ce4d297bc698ac8ffb79c12492e45010000000000582002005169355126d939da883c623da688a0969e2222ea9815f3710ed05dec2289482154bf545a4a471803524e3202caab6f56fa6441c66caae9c37955b753c46d43907c5ed605af8a15f00219fed103a519b11272c1bff29c32df6014f39228cfefc8a073b9b1cf5fa4a4a78006715c005820027f48010d796c29b5aad4fc5c152f344d68cff517aaf3a0996cf7904d4751b3482608543101313c2200582002aa4d51f69eb291c140b6f9648f4b61562e4e404d95962cfc5765453118372a5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0058200241aee9229b07ed4a400d1a4eed9976238604d36658acb418ba0d9cb2b27e8e48778f0792e84ce2ee00582002af5c5ddaee0bf4a15c3d1893e01ca63c840269303f9e66f7094e75c6a352b45820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005820024142445b2301e4ea5611d5eff4ef981c2a07acb2f2187a32467d78967ad327480852de72071daaf600582003880657d58a62b40e3c027ce8416fbc66be9c9bd6bd42147e86f83511295a405820fffffffffffffffffffffffffffffffffffffffffffffffef9c83cc5b48dd83e00582003560cffe9526d74d63aad97dfe4aef6b7ce300b64c7455023396b3491c352c0490215a2f25a7370a09802192200005820033ea59b58fdba855a6d190cf5caec5f93aaf864767b0eb6a809c2c132afa4c0480f581fa2423bb638005820036e570e2f67c3027e9a44bb16d8755d39e52de9fa7f65d34e01103a2d169e405820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0219400402194537005820025a586a4be78b8487e653b2ce51fbf634a768207dbb99eae5de4249f1b9d0365820ffffffffffffffffffffffffffffffffffffffffffffffffda71d1de03e7b7da035d1555ae00077dd648143826ad3a913a9df60796dabffaee1bd8ed3beb46b3c70399e7a91a6ea447ac45fff256751ea1dfc09fb45007ed19ebcc282abb48cb935800582003d5e7dfe2872d00c84c6ded1428c95a5f1705f3fbb70c1b69b3bf25b9ca66e05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003be6f2cd22d3f34de208228f5d6491b41f0804c063d65af6d91b80283c98a30410102190801005820027cee98442ecc82d8b2fc9984bbe567211a7c044a168e7e956ee5d8eca2ba3f481ae98547ada32e3a0058200215e13cd9a0736f20dff93fc118b1c5b5b8c250776e1e58e0132b32350e09505820ffffffffffffffffffffffffffffffffffffffffffffffffaa9621c7818547ff0304e7710c47796243b8124fdfc4a9d5789acdaa9f5e0acdb1520683c00d9e249600582002d5365ea1cf3c3d39d64a115840ccd8cf9b55a3900746c637789b2bda5b2b155820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582002b85d58da4ed176bec88101a805a50d36dcf3039a157fd91fb47c9b269e36e55820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff032e9f907bc5708238e7e8f8042e7b4281eb5b1f7126fcaae1ea5e46b7416d176e005820022319175196c6c661f7dc69acd2dae315270660e5b82d974d3927861a0f935a4802c68af0bb140000037a7b8f7d64d739352c13ebfb7ac406872c213eb7b4114c8835ccc9d607f13521031c3354ad087b5ec1b99fc19cbe4bdaf3d8fec168e6347368763f3dc963b9d1cb0219b9ff0219ffff05581d036a101de4a9179825a19e13659e6a8011fc585d9a332b0a91c55d8bd007011933cb035b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce503d269c60893f40cff1e32d7b1ee8d3c5c1e5964a71924b5ea49b1c5fd7f23a52905581d031789bf6cb26eed1e8b3ea56221825a9a063fee0853cede07567c520007011bffffffffffffffff0218a005581d02e7824bdaf0cd934e9b787c487e492997289412ddf18c36543bc19a370c04467e679e70b9d802190180030ffba86baaf43f22a3c9e6955d19b5d1941aadd2526da81285b43a5b06039bae05581e039b386b408462161eca34e768554d18247a6de3f9dfa2357f127ef09ae0040102199d5d03579eb1a0c5fda29de507f6ccadb25a1d9e40feeed1155e6ee160345f4bb36dce034c0f88f6a61f35409e3bfd6386c0f231ff1326ebf7ad956106c1d4b3a57eb704032cba1eae703deaa8a59d070015c15615f90a5035bc46bb83c149733de25359cc0377c271c132870a0c67aa96e8c294f2452b80ac9422c50f1ad883c6c88b478fdb032f7cca978d052db1905e4412a490f6df4a1415bae9f7ac62f8ed67abb51620970392daefbadd96e0f7bf14ae8dd638700dc283e6d07b90d8ab72271a8ecc87587f0318370b4bcce959f2b92e13554182edbd205fc43a085090b8bc76520f10f157e70392f9ce86473b8dd6ce65badbbba5ef9dd1b3bbbbec130fcc0cf116e34076e50603b91eceeebc4bcb6c63ce5c33299db60b7e4ec1746d0f1fb2319485a779788e68030588bbb02468329de2c189793cadb6bff1c1473d61180d3421171361a0b179d0033eb9fb02ce8cb36b9730882518128fe21f35822d6d27ff4cb1432d01d30d83c603016829d72741b5c4e696abf5e97b3eb0ef26f4d43e5a0abedf42f03aba85a7d103787876d959fc11caed534a7ff6ffaad32bd9cf10482ade3ec346e9ecc0f688b10327cb206460a3f405532a4f9a10364271fa30c6fe828e323821d39b521be6b67d0219ffff0391a12cd7409df898675c4418e51a7c6ee68824b9ffb530902009a1ae9fb2584a03075dce743e152e052f1d455abd9b05c24a4ae1eb09bc014a601e074a7e4ad8e90360abda94d0df1ec0acaac7a9634066c7d0e0f1a1e5e665013ffcf9c73aa16dcf032a026ae2ae6a04edb8f9eda104ed855bf7b9f147cec70c74b85ef40d1ce084d603f5c2a0e4033a23e388662d5443ab193dd15a49bdd2c6270094124e26ee2ba245031108860c6578591c8ab169774409a78daf2a3d3255c457c048e40234f337d6a603d7fd24453059eca52a9ee481b65b572f9eb62bca2cb14d11c67e49e8cff27185037371e732b040f195f6f43304dbbe5cce11365f46e7e305a1c5fb61d75247f12003f4c979446bd2c4df50c9a6648c0266ddacb5ea09424c794358d8d5dd6206a75e03f512eb08a40b6707e3c92265da1e517ff76245bdac0064752384b59f8b8c10f20219ffff038d84ffac5ced83925b7d25d4435341583fd92996e11c96c4b670459acae91c2903cbb03de33fb9c93b91bcc3e06ceab607a217e3d812a4967be3702c00efac481403bf512ee7a715bebf95014bddd6df800747dab07221266e72a06608cdaf8b604803276d5fff5722b14e381d8f7a7e1d69666c6fbea6d9b1606df0d73970be43f6cd03927062299b451ac2cde2a21636fceb63fce372945d608049da9366ad6a1a0b27034493bae9040f371425960a86181ee9459fb3ac44e438f745c709bb32b4365fc80219ffff0306b9d9597bb88c2a7e54a170820830e89fd66b952b83e8945de6619ee77d4f1d03436622163e4bd309b7eccd939228a3adf0e67d288873277b9e78e4b541e569bf03d9c575e36329371287799908185b427cdef2dc4012d6230ef61c9807e388e249037e8ce31eb7f2b3d015aff9f4db69e1417d3fd190d182e57431d61a035a87371103c5ff1b14dcf4f3ac7f604d78316bf1bb7adb0fbd55fdcde06c3dfdbf6d1ea7b10350d9e07c72f3f1f779ab0bea062811101f0ef247f8ec5b3e501cc5d497597d0f0302ae5747f5d2cf20f71b19466b11f9935c3abfb87915c5b8aa17b838cd036b270219ffff03ce22e0e8bd02fe2f895584073998da27559fcdb454695c1a7261f18c2bb7ee5d0393dcf20e65a10053f4be33b6ac52cb83fe7663137f14161417e900fd84be10fe0307ff7b9935fb7ec7d573d602ad01c7333bbaec414be46cd4c57f7b148ca043c40344f8e6e40359686ba47e772410682d3866fd074b66df440980351ca2881ef3830219ffff03d985500aeb04d748b77fdf3529ed53f5b96e5d62d8695e1cabd35e713b030ab20374ed45e771a90b9c346408e68a46b520365e5d5fa3e31b8e2397c8bb0e1a2bb903f1812756ceb667f0768e9bfd77e1dcdd1b70b51a7ac877fb9e3bf585b6320e8e0359df74959093d8bcbdae18a658ec4768b976093eced86a45eaa2938ec145664a031fcbf0e0b2c9801c6b95fbae34c93a4fba8916bc98d3b40c20ad9bc3f988f1ef03a791d6eb706b7a03ee89d4aec801ba1abe78ba0184bdf26a7393e963af02e3d903f1e04725d8666dec005379be2a598668daa4631deb2b61c66f60b31c0d666ec203832044ae9da4a60789aff925e579ea62c18d19add19fe9a75de943207ef836d103d87e272d291952c6a3aba1001b3e3bc351787b7f5c1f40075d5fba2a5e89a30903d9c1b14bf49390a6d9438255d7d40afb609662bdbc6b97dfa25dbb75ac8af860033efc65323efccdb204dcf0f1d4e071d9724cef9e754a3adb4dd94b333199ad8f031a9ca299e6ff942567b671f96b002aacbcb721831fb3ed19eb240ff286670d9c03fa968972e05d55fa5e86742095610f838c988e1aa33bee115912cd48cc05370a03e4c834dda4865d4352847e41eacabe7bc026c4da4cef1b80d5a6a2ceff60c11903f43bfd4e34de0e209000f6f2a1590bf0426f0bbd0e8ce227159a3aa616f1253603f68366266b81e531ae24279788bea5e3d55934dd98109295909015ccb3816bd403e6f7389981151a19524ea613e6a519a8d34052aaef594d09a25c69b7fc1ad676031ede4af18d0341de71353ffd896eaf9ce710f7656d434231e9ba88616a85050e0393d2e4bc8e2b87bc799706ba945c393a0ee6c842a20a34467d322f42334e10ac03eaecc2733ee91b9b4892774eb8819c27a3649de6eaf8ac96ef4145dbb2e95c89036c6af24ea6bc200566430d73604a32f32d7625e80758598a570069b765a7d15103778f23d77ab44cc721554dc9e941c59b4ff786a5cbb7cb6825e25e5ef06d65e303c43c0d36232b69c73fa67104219ca36496a38deaf51eaae544a7e112c847a36c03b99e6909083df3ec81d9a19d28e50069659b6b6f7a53a017df25f7fd5edab2a303c31216239384871581825c62351a89a895010848fd7b69838737408e533f74d4039fd1fb03269d90e32c78a6f32f292110656c63c62cfe97fec04ed386e2c4c4a6038ed1638ccd76ab0d2b7a278eef4dafc660bafa14915c9e0e8d82be4126616e9903ad5961095c525ad009365123e53882e75e7b6076cb6a4291cf3112fb010f82620305c14c02a73b21663459df1965e083c0e2b5c82cc6bbace9c5dc828dd0f438a30325560e7762f28c0b68b0ab23e7b4e0d04a3ffcc19ea363dfe49060afdae3573003e5d0902d134148bf46e0822eaaa001b26652ebad372cdb396c30ac560a4eafc603aa06cd35e038f80a907e86a29daeeb605aa805fdfeb2892ed2ecc30c5699d76c03d4bbaee488e57a11254fa86776740ba3f70e8b548861da474a1eceee71710227034005d5a0259649602499f395e7c8d68776d223f6dcbae17abf5b1b8e037cfcb4032123bb34a10b37ed16159b0756bc1dbc07e9e8da2863d31b78c355dde2d3123103f0bc15ae09b08ddb6e2cf6ade1f7c1944bd252b7f97ee96bfe23e907d1d7a71b03fa32fac57fcee6bccd2cb9876caa66647e085fa7d0afa02160c0f72c63a67a0103cdba035265b99fbc55bb8d9dd98d21bc0bd5ca643abdccc24b94001962fa312503c6932c4a78ce64337acc9de5887ba1a18d1203c7a5ad40f650b662b3b52e3a4f03fee5b9354f7afa3b7926c49e77d204b4c687d1de0a6ed5cbc60d01c24b2a773403a1c1f0e0e3b9fc91e4ccaab0529836713baa4e2262c24de893185f24d1b3b4ab031ba5342dc7ef049089d5472d2709cad094a2aa69077cfe6ec32eb8d5be0552620357a94bebab69c48d97717ef7f9c091c8c4fff761812fb43dd9dcc72574634e7303d20f80191e58a26e4b72dbde7d20b494c7c955967cef2fa17d412983023c127003fb635ddcc5bd902288b57c6d190ff1e0befec811d0f452dfa0ef329edefeb0030362f10d279ce64a2967891eac21fdb25bc32459e999e5c3a8234c0dfbc437d2600305bba7e2adb1af2607a51fcbeae91204d8713c2e3b7913fe5e3a32d33149185a033d4b58695c4ef858e16b907987c43ab32d3d4b01611fc12b2cbc8c69aae34406036b09308b2f5ff7329af362444d57e70a44b9998e69d1e0c2de12f15690a941a603a2eafbb8df8f6a5789e9a39f131cfdc75d65d0426d1fdaef88aaab5e1ad513eb034d7d7549f2c4654e772c170f01fc80f34a60463d7f5993c57069f690f09d859703cc92cc79decc6471f4b751bc0ca0ecdd3c2b12c28aafc100405ddb1a589fc66c03e4d66c6365e4d8425e5f4b90985ebec8bd4e9ece873e9b9d5ac10ce479a49d7f03034ee1eb117d05caf0d3874025311bf768f13f9b2ef7ef91b2c216b94d9464e003b991cfe7777d20c44e924b20c3b95d48944e27014ade9ea4ecdbf11213d08dfc039f7f98c70db192293bda936097b12697b00a30955e4669264da63e728a4fd4b80325ce7fcb4d0f24bad6c80d3bdcd1aa759bb064f6b90d74dbc4c9fee7d68ab43103cb942b3ba64b0debd84c6d35917bf94fc685703fd82639ac3fa7f5a3bae2d5e70308a93def30c398f4e67bfc028293514a33225618616a0776ea0bd11a7d77678c03567309f3694e20d08eb905bf2cc396cfede8cc06aa11c765add2013e62eaa55603f88c60914869cad3501f881b02bf278caa7188d19c94a43e3df52eb026e1323503b34002a9c8962b973709ce8518d1195888bd047d9d1f10f61217be7a7834db670318f218c6f0601ab4a3b5f123233d3c9828646813554c9f31ed2c21fb04a4bfc805581d026da1572e969498d2aeea7890749e291e3428439d62b97a9112bcd2f70c18404783ef33385aeac5031af4fe3189f1941a1e227b6d38354818cf82e57978a7bf9981911f0ef35fd5d505581d02979b35fb846ebe67a2ee86ffa3b044acc5629bc837f590c6801592470c0645012a05f2000219082403278fdcfb64cff6b6a8edb8dbe115ce42d7f1ad26d01bf944d929bd00fd5cdadb05581e03471313e3dd8816e34201436699edc90918142f363b4f358abd93a7e2400c05472c84cf74b75230038302ac6d84b493efc5789f7626f30a186f1970b65ace5f5bb5dc82d0045bd21c05581e0376327eed36c4af62b611494701a64ecb75b54417609bca443d25583c700402031a573896010463741f44a9e53c7dc1d07b66dbdcfb756b68d716e54e968263230335d419e98b5308eea4be2e9af37c934f7db1c679b57498ec0372f3a5e9782bfc0302591673bd9f1a2df27d4e5c0fa507178045d7a767661eac189e0fcd332068a70398a00fe4a9347a33bbada3aa60eee6ce58f11dac052cbde4008ade269ac7cdba05581e03830c219d3451d96b97bdf300a3b88072ffba2545956ef8cc07f6a1a56007011bffffffffffffffff02198bb20219ffff036cae310dc347d0f1b2c9f71d9d3455e85783411a10d73ea0a1657943983bc4130219ffff03e62918726fe53651863b398b7d280a948e18f797df2df91d81c52f5bd9c2bb650219ffff030a328b4bcebc9e6af48f4c8dd7d6c82a255b432c0457eb625b2341d99eb428da03e61e596012413bbc10e2364c6383a9a373be32f5344ffe4c49c9d8e7f0133ccd03ee90bd82b2f384a933f1841c528e6ce163ebfa1cd1dc2e68a0362ead3703836003ec9db5e28ec1b4cbdeab06db0c7f1e3318c35661f5aebcbcb72955bded7c5244033e82e48cace172f9ede7867ee2a3e335c0501d72ff644bc3132f79e08b72db4903416a5c6720b6a27fa1ee6153b1c4693bf9a7011a1f672f6a50bc119e5d5d28e303c74aaaed70f29903d95047f75565ebdc86284bc1006158d469f8f00cddabca9303783b0a8d0cc00c837f2646f608d77a0126f6e40886e34fdb09a8ba43cee7f4d00219ffff0350d9488c8b2eef2bc676c7203c6ee1cdf00eb12d4b8b3ca97f372f52397b452803513b3cbcf8e5dcfde4f0b1a986f1952de9b0732a5197fac4f7befd5ec9a47d360219ffff03d3427ebdbc516db4f8ce553f34cbc557e7cd57611179e29ddc53b1dcf8ad69c703345cf3eccb164b180e73bb2246cd67b4360856618c81557cc40f9653c0b582bb0381ea7f05444ea211c97bd82797dbe729f0e304e4022965acdf887f695752e66303eccd85d47406a08d88690764ddb96460a922ae92e877c2e744fb634707a9967c035386a932fbd7fa2a93f3135daf702fdca185f266a6942aae08d7fe1de2d99f9603e345f5a4c4c6a631628c369e20d8398ce73392638cf8082360b460ebd532b8d703a2f1f51124caacea9a6c470d360ef751e0f4e85fbe4ad714e6520967cb1c7cc2039707f03c56818da080eb3faaa395f9b4137f6923db4a996cce2bab36b56117e9034f73cee25a48791596a34b406fce65158bf9b6b6f174b15fb9845fcb1122a29e03c835dfb8b6526e52bbd52570d0b4b7c9d4d762d49f764e709d29ce2aeb0122d303a4c849171da0cac4b5ddd2fee18ad25f5f827db7713896c90c2f237c497431410399f82e838bb52daf79aa310078e31adb5ee59b51ce2bba2c37967d4c90af88c103b0c912339bb39f60578e70f72700682c9aa101d5263e914eaef126e8c96f610203a0425eeac624b2862168e6b0eeef819bf535191e9a9ec19e88978d0d8c28fcbf034e0d8b09a41be87bb0eb3d0d0710929ab7d2fd19bc1dadaa4a1c4177b6e09ae6035f8779eba8ecb7358928d25b9cd855ccd8df417a0a5075654e189a6db129c0f8031d4628e211da367227a23ed36650e830d55d8f2745bca6ad9d34debc6f3ef1d503720640896ab527d6b6ba2b2cf776044eb2f66baf107c968aa9a9457dd6ed05ba03569812b1252887a1c6c10dc083a79a5199d3d8e90069e18c8da94b05c2f9ac13036e2d0bf8dc6e674c0591c720eb9f2f38f77fa3a356bc0df6c8616dbe91eafb87032f954665c63fa1f176e9761e51070de59bf20347f5f5cf30665d3921ea50e45503a2732e7ea3395ce910157e40e3c7cfc53b745458ce4c84ff0920d614fc3ff00a03ec781d7a2f1f305c5b21e32fdd5016e42aa4b361855cf803416f5aae057e975f03909646b313b078a40086a6414a4c3cd9b4594d3544d160df9572f8c580c8f70c03755ceac27a6c81ee7b10f41cfe33ffd31b6bc34cba389f6df23e5569fbb90c1403ec5e98e14dfbc90eb46fd51562e6b148ac5ded713c0a94f730e5787d54f252950326a8b434661dd7f751a0106d730678ce3805fa572295336eb8ae3c0f952eeb050317b4c10d2ba669947a31a3deb5c328775561fa60515495d3b12f04788fb483a703faf9d803ab56773756298c25904854f89a5ba23851798b8536f50ecedd04587303ec3e90542f1b2073ac50ad0a0416650c44ed8a597291670fbcb9242ed21c6d99033411ffbdb84e6d4e59f2a7df103f50408914066c73f3f6f53632c27635eca204035e1482193dcc977cf58e7108ce2b32587dc42ea8ec379fe7172ec7f74da5442403622483e9dfe82dfc1d4a81adb651ec6deaa031dba8ad452643fd6ddc4b369fdf03776d40cebe5359b85f62f9170889a8aa9a516ef5342b8d6323f0420b40483d0003900ee424e0ffba5f1f83ef94b59592b63fc7393635d57de49b81a3c64d5896440384545919f1d8aa7dd6f919584d3c8cb85ff96b43ce464d71ce1d998340a226fa05581e039e91f3985aa9356f17b1269ffbea7276bc875c1f87632a88b1df07ee300c0147277af8187b7cfc05581e03df83fcf7887910a3fa90b9b14c8650855296c438aca012151c87b173f0040105581e03f1b426288cac2eb41e81d7068c9b47936f232505ab58f39977656f365008480320db8cffada80005581e0315bae696893ace6979b9463b8af411e9e7ee73c6e6a773ccaa74ba26d00c18224758e3312d5514d803702d223c6e51ac63ff8ad1620c65e768a79f24c12c9e82a52b20776e7ca189f205581e03c7bd9bef4670c155a21164dbbf8528317624038383c62aaadf8687efe00c014609184e72a000031271f1a3c827e8250ce21f4c5501d4b57e4c30e3a914445a92447b9aed8a04a705581d025a3c668361a652c79f070961fac3e9dd7eed911a6d6eca2b37de71a704020459462660a0604081815260049081361015610022575b505050361561002057600080fd5b005b600092833560e01c90816301ffc9a71461093d57508063150b7a02146108af57806324856bc3146107e85780633593564c146106b1578063709a1cc21461044f578063bc197c811461038a578063f23a6e61146102f95763fa461e330361001257346102f55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102f557813590602435926044359067ffffffffffffffff918281116102f1576100db9036908301610a97565b919092878613908115806102e7575b6102bf5783850186868203126102bb5785359182116102bb5761010e9186016136d0565b5060208401359373ffffffffffffffffffffffffffffffffffffffff938486168096036102bb5761013e9161415a565b959097602b89106102935786359260178460601c98019561016d62ffffff883560601c9660481c16868b614365565b3391160361026b571561026157508186105b15610197575050505061019493503391613ac2565b80f35b9395945091929091906042871061021b5750505083601711610217577f8000000000000000000000000000000000000000000000000000000000000000821015610217577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe961021194019161020c33916141b5565b6141e2565b50505080f35b8480fd5b91969550929391508454841161023957506101949394503391613ac2565b8590517f739dbe52000000000000000000000000000000000000000000000000000000008152fd5b965085821061017f565b8483517f32b13d91000000000000000000000000000000000000000000000000000000008152fd5b8382517f3b99b53d000000000000000000000000000000000000000000000000000000008152fd5b8980fd5b8286517f316cf0eb000000000000000000000000000000000000000000000000000000008152fd5b50888813156100ea565b8680fd5b8280fd5b5082346103875760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038757610332610a2b565b5061033b610a53565b506084359067ffffffffffffffff8211610387575060209261035f91369101610a97565b5050517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b80fd5b5082346103875760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610387576103c3610a2b565b506103cc610a53565b5067ffffffffffffffff9060443582811161044b576103ee9036908601610ac5565b505060643582811161044b576104079036908601610ac5565b5050608435918211610387575060209261042391369101610a97565b5050517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b5080fd5b50346102f557602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106ad5783833567ffffffffffffffff811161044b576104a1829136908701610a97565b90818551928392833781018381520390827f0000000000000000000000000554f068365ed43dcc98dcd7fd7a8208a5638c725af16104dd613675565b50156106855780517f70a082310000000000000000000000000000000000000000000000000000000081523084820152907f000000000000000000000000f4d2888d29d722226fafa5d9b24f9164c092421e73ffffffffffffffffffffffffffffffffffffffff168383602481845afa92831561067b578693610646575b5081517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ea37093ce161f090e443f304e1bf3a8f14d7bb40169581019586526020860184905294849186918290899082906040015b03925af193841561063c577f1e8f03f716bc104bf7d728131967a0c771e85ab54d09c1e2d6ed9e0bc4e2a16c9461060f575b5051908152a180f35b61062e90843d8611610635575b61062681836135fa565b81019061388d565b5038610606565b503d61061c565b81513d87823e3d90fd5b9092508381813d8311610674575b61065e81836135fa565b810103126106705751916105d461055b565b8580fd5b503d610654565b82513d88823e3d90fd5b9050517f7d529919000000000000000000000000000000000000000000000000000000008152fd5b8380fd5b5060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102f55767ffffffffffffffff8235818111610217576106fb9036908501610a97565b91602435908111610670576107139036908601610ac5565b92909160443542116107c0573330146107b1576001958654958773ffffffffffffffffffffffffffffffffffffffff88160361078b5750509185949391610782937fffffffffffffffffffffffff00000000000000000000000000000000000000009586339116178755610b54565b81541617905580f35b517f6f5ffb7e000000000000000000000000000000000000000000000000000000008152fd5b90919293506101949450610b54565b8585517f5bf6f916000000000000000000000000000000000000000000000000000000008152fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102f55767ffffffffffffffff8235818111610217576108319036908501610a97565b91602435908111610670576108499036908601610ac5565b9290913330146107b1576001958654958773ffffffffffffffffffffffffffffffffffffffff88160361078b5750509185949391610782937fffffffffffffffffffffffff00000000000000000000000000000000000000009586339116178755610b54565b5082346103875760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610387576108e8610a2b565b506108f1610a53565b506064359067ffffffffffffffff8211610387575060209261091591369101610a97565b5050517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b849084346102f55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102f557357fffffffff0000000000000000000000000000000000000000000000000000000081168091036102f557602092507f4e2312e0000000000000000000000000000000000000000000000000000000008114908115610a01575b81156109d7575b5015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014836109d0565b7f150b7a0200000000000000000000000000000000000000000000000000000000811491506109c9565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610a4e57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610a4e57565b359073ffffffffffffffffffffffffffffffffffffffff82168203610a4e57565b9181601f84011215610a4e5782359167ffffffffffffffff8311610a4e5760208381860195010111610a4e57565b9181601f84011215610a4e5782359167ffffffffffffffff8311610a4e576020808501948460051b010111610a4e57565b919082519283825260005b848110610b405750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610b01565b9192909260805282810361350d5791906000905b828210610b755750505050565b8382959394951015611b4c5760059282841b60805101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe19182608051360301821215610a4e578160805101359767ffffffffffffffff8911610a4e576020836080510101988036038a13610a4e57606097603f90818989013560f81c166001976020821060001461317157506010808210156127b4575060088082101561187e57508061109157505050610c2a908a614198565b92909860a08560805101013560001461108757610c6173ffffffffffffffffffffffffffffffffffffffff600154169b5b35613854565b9960408660805101013585829d927f80000000000000000000000000000000000000000000000000000000000000008314610fcf575b50959c95505b7f8000000000000000000000000000000000000000000000000000000000000000811015610a4e5760428610610fc85730915b86602b11610a4e578d91601783013560601c9083359462ffffff8660601c96610d1573ffffffffffffffffffffffffffffffffffffffff92839260481c16868a614365565b169084881015610fac57806401000276a4965b602b60405199604060208c01528160608c015260808b0137600060ab8a015216604088015260a0875260c087019587871067ffffffffffffffff881117610f7d576040948288958688527f128acb080000000000000000000000000000000000000000000000000000000087521660c48a0152868a1060e48a01526101048901521661012487015260a06101448701528160007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4088610deb610164820182610af6565b0301925af1928315610f71576000928394610f2f575b5050610e159310600014610f2857506141b5565b9a60428510610e5657309085601711610a4e5760177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe991019501949b610c9d565b50985098606091969597949392509160805101013511610efe575b1580610ed1575b610e8a57506001019291929092610b68565b90610ecd60409283519384937f2c4029e9000000000000000000000000000000000000000000000000000000008552600485015260248401526044830190610af6565b0390fd5b507f8000000000000000000000000000000000000000000000000000000000000000828501351615610e78565b60046040517f39d35496000000000000000000000000000000000000000000000000000000008152fd5b90506141b5565b91929093506040843d604011610f69575b81610f4d604093866135fa565b8101031261038757505160e092909201519190610e1538610e01565b3d9150610f40565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8073fffd8963efd1fc6a506488495d951d5263988d2596610d28565b8b91610cd0565b60149192501061105d576020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301523560601c5afa908115610f715760009161102b575b503880610c97565b906020823d602011611055575b81611045602093836135fa565b8101031261038757505138611023565b3d9150611038565b60046040517f3b99b53d000000000000000000000000000000000000000000000000000000008152fd5b610c61309b610c5b565b6001819d969d9b989794959a999b146000146111b7575050506040926110bf84836080510101359382614198565b608051840160a00135156111ab5760606110f273ffffffffffffffffffffffffffffffffffffffff600154169435613854565b946080510101356000557f8000000000000000000000000000000000000000000000000000000000000000851015610a4e576111319361020c866141b5565b9091901561119c5750611143906141b5565b0361117357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000555b610e71565b600490517fd4e0248e000000000000000000000000000000000000000000000000000000008152fd5b6111a691506141b5565b611143565b60606110f23094610c5b565b9194929391600281036112065750505061116e925073ffffffffffffffffffffffffffffffffffffffff600154166111ff604060608560805101013594608051010135613854565b91356139d0565b9193916003810361157857505060805181018084019390604090850312610a4e57823567ffffffffffffffff8111610a4e5782608051010192606084860312610a4e57604051946060860186811067ffffffffffffffff821117610f7d57604052602085013567ffffffffffffffff8111610a4e57850160208201809882011215610a4e5760208101359061129a826136a5565b926112a860405194856135fa565b8284526040602085019360071b830101918a8311610a4e57604001925b828410611513575050505085526112de60408501610a76565b956020860196875260606040870195013585526040846080510101359067ffffffffffffffff8211610a4e57602061131f92611325966080510101016136d0565b5061417b565b909173ffffffffffffffffffffffffffffffffffffffff600154169473ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3163b15610a4e5794929391906040519586947f2a2d80d100000000000000000000000000000000000000000000000000000000865260048601526060602486015260c48501935193606060648701528451809152602060e487019501906000905b80821061149a575050509461143e9285949273ffffffffffffffffffffffffffffffffffffffff600098511660848701525160a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc858403016044860152613537565b03818373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3165af18015610f715761148b575b50610e71565b61149490613576565b38611485565b9197965091929394602060806001928a5173ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff848201511684830152606065ffffffffffff918260408201511660408501520151166060820152019801920188969795949392916113d8565b608060208584030112610a4e5760206080916040516115318161358a565b61153a87610a76565b8152611547838801610a76565b83820152611557604088016136bd565b6040820152611568606088016136bd565b60608201528152019301926112c5565b600495509193508482036116e757505090916040606061159e8286608051010135613854565b608051909501013573ffffffffffffffffffffffffffffffffffffffff908116933516806116145750479283106115ee575050806115de575b5050610e71565b6115e7916144d1565b38806115d7565b517f6a12f104000000000000000000000000000000000000000000000000000000008152fd5b9391908051937f70a082310000000000000000000000000000000000000000000000000000000085523083860152602085602481895afa9485156116dc576000956116a8575b50841061168257505081611671575b505050610e71565b61167a9261453f565b388080611669565b517f675cae38000000000000000000000000000000000000000000000000000000008152fd5b90946020823d6020116116d4575b816116c3602093836135fa565b81010312610387575051933861165a565b3d91506116b6565b82513d6000823e3d90fd5b8103611714575061116e925061170d604060608460805101013593608051010135613854565b90356138a5565b9091906006810361184e57506080510160608101359060409061173990820135613854565b9282158015611843575b61181b573573ffffffffffffffffffffffffffffffffffffffff16938461177f57505061116e92506117786127109147613984565b04906144d1565b8151907f70a082310000000000000000000000000000000000000000000000000000000082523090820152602081602481885afa91821561181157506000916117dd575b506117d661116e94939261271092613984565b049161453f565b906020823d602011611809575b816117f7602093836135fa565b810103126103875750516117d66117c3565b3d91506117ea565b513d6000823e3d90fd5b8482517fdeaa01e6000000000000000000000000000000000000000000000000000000008152fd5b506127108311611743565b83602491604051917fd76a1e9e000000000000000000000000000000000000000000000000000000008352820152fd5b819d969d9b989794959a999b93929314600014611b85575050506040916118ad83836080510101359185614198565b92909460a082608051010135600014611b7b576118e373ffffffffffffffffffffffffffffffffffffffff600154169135613854565b908615611b4c576118f385613a94565b8760011015611b4c5761191561195d9161190f60208901613a94565b90613c34565b907f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f613b2c565b938481611b32575b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860193868511611b03576119b9946119be73ffffffffffffffffffffffffffffffffffffffff9687928a85613a84565b613a94565b16948651947f70a082310000000000000000000000000000000000000000000000000000000091828752841693600499858b89015260249460208987818d5afa988915611af857600099611ac3575b509160209695949391611a1f93613cad565b8751968793849283528a8301525afa928315611ab857600093611a83575b50906060611a519260805101013592613ab5565b10611a5d575050610e71565b517f849eaf98000000000000000000000000000000000000000000000000000000008152fd5b90926020823d602011611ab0575b81611a9e602093836135fa565b81010312610387575051916060611a3d565b3d9150611a91565b84513d6000823e3d90fd5b90986020823d602011611af0575b81611ade602093836135fa565b81010312610387575051976020611a0d565b3d9150611ad1565b8b513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b611b4492611b3f88613a94565b613ac2565b388084611965565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6118e33091610c5b565b919492939160098103611f66575050611b9e9082614198565b608051840160a0013515611f5c57611bcf73ffffffffffffffffffffffffffffffffffffffff600154169335613854565b92611bd9836136a5565b95611be760405197886135fa565b83875283901b820160208701368211610a4e5783905b828210611f44575050506000946002875110611f1a576040816080510101359680517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611b035790815b611ca757505060805101606001358611611c7d578215611b4c5761116e9585611c7892611b3f85613a94565b613cad565b60046040517f8ab0bc16000000000000000000000000000000000000000000000000000000008152fd5b90977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89019750888811611b035773ffffffffffffffffffffffffffffffffffffffff611cf7611d6d9984613a70565b5116611d2373ffffffffffffffffffffffffffffffffffffffff611d1b8c86613a70565b511682613c34565b819a917f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f613b2c565b90604051907f0902f1ac00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff87165afa9a8b15610f7157600092839c611ed1575b5073ffffffffffffffffffffffffffffffffffffffff1603611eb7576dffffffffffffffffffffffffffff8091169916905b9880158015611eaf575b611e855782611e0f91613984565b916103e892838102938185041490151715611b0357611e2d91613ab5565b6103e590818102918183041490151715611b0357611e4a91613997565b60018101809111611b0357978015611b03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019081611c4c565b60046040517f7b9c8916000000000000000000000000000000000000000000000000000000008152fd5b508115611e01565b6dffffffffffffffffffffffffffff998a16991690611df7565b611f0a919c5073ffffffffffffffffffffffffffffffffffffffff935060603d8111611f13575b611f0281836135fa565b810190613c77565b509b9092611dc5565b503d611ef8565b60046040517f20db8267000000000000000000000000000000000000000000000000000000008152fd5b60208091611f5184610a76565b815201910190611bfd565b611bcf3093610c5b565b92945091600a81036120cc5750608051830160e08101358101946020808701359450909291611f9991908703018461414d565b1161105d5773ffffffffffffffffffffffffffffffffffffffff93847f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba31692856001541691843b15610a4e5760409587875198899687967f2b67b570000000000000000000000000000000000000000000000000000000008852600488015261202190610a76565b166024860152808883608051010161203890610a76565b16604486015265ffffffffffff808360805101606001612057906136bd565b166064870152826080510160800161206e906136bd565b166084860152816080510160a00161208590610a76565b1660a48501526080510160c0013560c484015261010060e48401526120b1916101048401918701613537565b03815a6000948591f1908115611811575061148b5750610e71565b600b8103612296575050506120eb604080926080510101359235613854565b91807f80000000000000000000000000000000000000000000000000000000000000008103612266575050475b8061212557505050610e71565b73ffffffffffffffffffffffffffffffffffffffff90817f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216803b15610a4e578351927fd0e30db0000000000000000000000000000000000000000000000000000000008452600493600081868187875af1801561225b5761224c575b5030908616036121b4575b5050611669565b6122139460006020948651978895869485937fa9059cbb00000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af1908115611811575061222d575b808080806121ad565b6122459060203d6020116106355761062681836135fa565b5038612224565b61225590613576565b386121a2565b86513d6000823e3d90fd5b47101561211857600482517f6a12f104000000000000000000000000000000000000000000000000000000008152fd5b600c810361242657505050906122ac9035613854565b9073ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21660408051937f70a08231000000000000000000000000000000000000000000000000000000008552600430818701526024916020878481885afa968715611ab8576000976123f2575b506080510183013586106123cb578561234e575b50505050505050610e71565b833b15610a4e57600091869183855196879485937f2e1a7d4d0000000000000000000000000000000000000000000000000000000085528401525af190811561181157506123bc575b5030908316036123ac575b8080808080612342565b6123b5916144d1565b38806123a2565b6123c590613576565b38612397565b82517f6a12f104000000000000000000000000000000000000000000000000000000008152fd5b90966020823d60201161241e575b8161240d602093836135fa565b81010312610387575051958361232e565b3d9150612400565b600d8103612681575082608051010191602083019360208260805101850312610a4e573567ffffffffffffffff8111610a4e57849160805101019182011215610a4e57602081013590612478826136a5565b93604093612488855196876135fa565b838652602086019285849560071b820101928311610a4e578501925b82841061261f575050505073ffffffffffffffffffffffffffffffffffffffff90816001541684519060005b8281106125b357505050817f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba31691823b15610a4e5783517f0d58b1db000000000000000000000000000000000000000000000000000000008152602060048201529451602486018190528592604484019290916000915b81831061256f57505050509181600081819503925af1908115611811575061148b5750610e71565b91938395506080602091846060600195975182815116845282868201511686850152828d820151168d85015201511660608201520195019301909187949392612547565b81856125bf838a613a70565b515116036125f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b03576001016124d0565b600486517fe7002877000000000000000000000000000000000000000000000000000000008152fd5b608060208584030112610a4e576020608091875161263c8161358a565b61264587610a76565b8152612652838801610a76565b83820152612661898801610a76565b8982015261267160608801610a76565b60608201528152019301926124a4565b9294505050600e810361278357506040918251907f70a0823100000000000000000000000000000000000000000000000000000000825260208260248173ffffffffffffffffffffffffffffffffffffffff806004983516888301528886608051010135165afa918215611ab85760009261274e575b5060805101606001351180159290612710575050610e71565b517fa3281672000000000000000000000000000000000000000000000000000000006020820152908152909150612746816135c2565b9038806115d7565b90916020823d60201161277b575b81612769602093836135fa565b810103126103875750519060606126f7565b3d915061275c565b602490604051907fd76a1e9e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9150915060189b95939897999692949b808310600014612d435750810361282a5750505060009250906127e883928261417b565b81604051928392833781018481520391357f00000000000000000000000000000000000000adc04c56bf30ac9d3c0aaf14dc5af1612824613675565b90610e71565b6011810361288157505050600092509061284583928261417b565b81604051928392833781018481520391357f0000000000000000000000000000000000e655fae4d56241588680f86e3b23775af1612824613675565b601281036128d857505050600092509061289c83928261417b565b81604051928392833781018481520391357f000000000000000000000000941a6d105802cccaa06de58a13a6f49ebdcd481c5af1612824613675565b919392509060138103612a3e575050909150357f000000000000000000000000b47e3cd837ddf8e4c57f05d70ab865de6e193bbb916040600080825160208101907f8264fe9800000000000000000000000000000000000000000000000000000000825260248781830152815261294e816135de565b5190606086608051010135885af192612965613675565b948415612a04578273ffffffffffffffffffffffffffffffffffffffff612993921694608051010135613854565b90833b15610a4e5782517f8b72a2ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820152916000908390604490829084905af1908115611811575061148b5750610e71565b505091925050517fae9bdf0000000000000000000000000000000000000000000000000000000000602082015260048152612824816135c2565b60158103612b4f57505090604091828051917f6352211e0000000000000000000000000000000000000000000000000000000083526020836024816004976060816080510101358983015273ffffffffffffffffffffffffffffffffffffffff968791608051010135165afa928315612b4457600093612b05575b5081903516911614918215612acf575050610e71565b517f7dbe7e89000000000000000000000000000000000000000000000000000000006020820152908152909150612746816135c2565b6020939193813d602011612b3c575b81612b21602093836135fa565b8101031261044b575190828216820361038757509181612ab9565b3d9150612b14565b85513d6000823e3d90fd5b60168103612c765750506040918251907efdd58e00000000000000000000000000000000000000000000000000000000825260208280612bc160049660608660805101013590358884016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b038173ffffffffffffffffffffffffffffffffffffffff8886608051010135165afa918215611ab857600092612c41575b5060809081510101351191821592612c0b575050610e71565b517f483a6929000000000000000000000000000000000000000000000000000000006020820152908152909150612746816135c2565b90916020823d602011612c6e575b81612c5c602093836135fa565b81010312610387575051906080612bf2565b3d9150612c4f565b909290601714612c87575050610e71565b60409073ffffffffffffffffffffffffffffffffffffffff612caf8383608051010135613854565b93351692833b15610a4e5782517f42842e0e00000000000000000000000000000000000000000000000000000000815260805130600483015273ffffffffffffffffffffffffffffffffffffffff909216602482015291016060013560448201529160009083908183816064810103925af19081156118115750612d34575b806115d7565b612d3d90613576565b38612d2e565b9396938214159050612d7e5750505061282492507f00000000000000000000000074312363e45dcaba76c59ec49a7aa8a65a67eed391613717565b60198103612dd5575050506000925090612d9983928261417b565b81604051928392833781018481520391357f0000000000000000000000002b2e8cda09bba9660dca5cb6233787738ad683295af1612824613675565b601a8103612e2c575050506000925090612df083928261417b565b81604051928392833781018481520391357f000000000000000000000000a42f6cada809bcf417deefbdd69c5c5a909249c05af1612824613675565b601b8103612f53575050506000612e4481928461417b565b9390604094818651928392833781018481520391357f00000000000000000000000074312363e45dcaba76c59ec49a7aa8a65a67eed35af1918291612e87613675565b92612e95575b505090610e71565b73ffffffffffffffffffffffffffffffffffffffff608083815101013516612ec4606084608051010135613854565b90825190612ed1826135a6565b60008252803b15610a4e57612f2d94600080948651978895869485937ff242432a00000000000000000000000000000000000000000000000000000000855260a060c0836080510101359260805101013590306004870161380f565b03925af19081156118115750612f44575b80612e8d565b612f4d90613576565b38612f3e565b91949091601c8103612f8e5750505061282492507f000000000000000000000000cda72070e455bb31c7690a170224ce43623d0b6f91613717565b9193929091601d81036131175750506060816080510101359060409173ffffffffffffffffffffffffffffffffffffffff612fcf8484608051010135613854565b9435168351947efdd58e0000000000000000000000000000000000000000000000000000000086526004936020878061302e87308a84016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0381865afa96871561225b576000976130e2575b50608090815101013586106130ba57845161305c816135a6565b60008152823b15610a4e576000946130a486928851998a97889687957ff242432a0000000000000000000000000000000000000000000000000000000087523090870161380f565b03925af1908115611811575061148b5750610e71565b8385517f675cae38000000000000000000000000000000000000000000000000000000008152fd5b90966020823d60201161310f575b816130fd602093836135fa565b81010312610387575051956080613042565b3d91506130f0565b929450925050601e810361278357508161313560009392849361417b565b81604051928392833781018481520391357f00000000000000000000000020f780a973856b93f63670377900c1d2a50a77c45af1612824613675565b9499989a92506020819d9792969d989498146000146131da575050505050508061319e600093849361417b565b81604051928392833781018481520391357f00000000000000000000000000000000000001ad428e4906ae43d8f9852d0dd65af1612824613675565b602190808203613351575050505090916131ff6131f7868661415a565b96909561417b565b929061324160409788519760208901997f24856bc3000000000000000000000000000000000000000000000000000000008b5260248a01526064890191613537565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc878203016044880152818152602082818301951b82010195856000915b8483106132d357505050505050505091816132c5600094938594037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826135fa565b519082305af1612824613675565b90919293949596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085820301885288358284360301811215610a4e578301906020823592019167ffffffffffffffff8111610a4e578036038313610a4e5761334160209283928b95613537565b9a0198019695949301919061327f565b929750929593509350602281146000146127835750604080936080510101359060009060028310156134e1575050808491156000146134895750506000907f0000000000000000000000001e0049783f008a0085193e00003d00cd54003c71925b6020838251937f095ea7b3000000000000000000000000000000000000000000000000000000008552600496878601526024947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868201526044968792355af13d15601f3d1187600051141617161561342e5750505050610e71565b91600e7f415050524f56455f4641494c45440000000000000000000000000000000000009260206064969551957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b036134b8576000907f0000000000000000000000002b2e8cda09bba9660dca5cb6233787738ad68329926133b2565b600482517f5461585f000000000000000000000000000000000000000000000000000000008152fd5b602492507f4e487b71000000000000000000000000000000000000000000000000000000008252600452fd5b60046040517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b67ffffffffffffffff8111610f7d57604052565b6080810190811067ffffffffffffffff821117610f7d57604052565b6020810190811067ffffffffffffffff821117610f7d57604052565b6040810190811067ffffffffffffffff821117610f7d57604052565b6060810190811067ffffffffffffffff821117610f7d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f7d57604052565b67ffffffffffffffff8111610f7d57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d156136a0573d906136868261363b565b9161369460405193846135fa565b82523d6000602084013e565b606090565b67ffffffffffffffff8111610f7d5760051b60200190565b359065ffffffffffff82168203610a4e57565b81601f82011215610a4e578035906136e78261363b565b926136f560405194856135fa565b82845260208383010111610a4e57816000926020809301838601378301015290565b919290613724908361417b565b90938460405195869384378201906000958693838580955203918635905af19261374c613675565b9284613756575050565b73ffffffffffffffffffffffffffffffffffffffff60608201351661377e6040830135613854565b91813b156106ad576040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff93909316602484015260800135604483015290919081908390606490829084905af190811561380357506137f85750565b61380190613576565b565b604051903d90823e3d90fd5b919261385195949160a09473ffffffffffffffffffffffffffffffffffffffff8092168552166020840152604083015260608201528160808201520190610af6565b90565b73ffffffffffffffffffffffffffffffffffffffff908082166001810361387e5750506001541690565b90915060020361385157503090565b90816020910312610a4e57518015158103610a4e5790565b9092919073ffffffffffffffffffffffffffffffffffffffff16806138cf575061380191926144d1565b7f80000000000000000000000000000000000000000000000000000000000000008214613902575b92613801929361453f565b9050604051927f70a08231000000000000000000000000000000000000000000000000000000008452306004850152602084602481855afa938415610f7157600094613951575b5092906138f7565b6020813d821161397c575b81613969602093836135fa565b8101031261021757519350613801613949565b3d915061395c565b81810292918115918404141715611b0357565b81156139a1570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b919273ffffffffffffffffffffffffffffffffffffffff91827f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba31693843b15610a4e5760009484869281608496816040519b8c9a8b997f36c78516000000000000000000000000000000000000000000000000000000008b521660048a01521660248801521660448601521660648401525af18015610f71576137f85750565b8051821015611b4c5760209160051b010190565b9190811015611b4c5760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff81168103610a4e5790565b91908203918211611b0357565b92919073ffffffffffffffffffffffffffffffffffffffff8082163003613aee575050613801926138a5565b8084959411613b02576138019416926139d0565b60046040517fc4bd89a9000000000000000000000000000000000000000000000000000000008152fd5b9173ffffffffffffffffffffffffffffffffffffffff93613c2d916040519060208201927fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809260601b16845260601b16603482015260288152613b8f816135de565b519020613c01604051938492602084019687917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826135fa565b5190201690565b73ffffffffffffffffffffffffffffffffffffffff8281169082161015613c585791565b9091565b51906dffffffffffffffffffffffffffff82168203610a4e57565b90816060910312610a4e57613c8b81613c5c565b916040613c9a60208401613c5c565b92015163ffffffff81168103610a4e5790565b9260028210614123578115611b4c57613cc584613a94565b9160019481861015611b4c5791613ce360209461190f868601613a94565b50926000935b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018510613d1c575050505050505050565b613d2a6119b9868685613a84565b92613d3b6119b98a88018786613a84565b936040908151957f0902f1ac00000000000000000000000000000000000000000000000000000000875273ffffffffffffffffffffffffffffffffffffffff80941694606092600493808a86818b5afa998a1561225b57908d9594939291600091829c6140fd575b50508780916dffffffffffffffffffffffffffff8091169c16921692168214998a6000146140f7575b8651958680947f70a082310000000000000000000000000000000000000000000000000000000082528b8883015260249889915afa9283156140ec578e6000946140bb575b5050808303918115938480156140b3575b61408b57826103e5808602958604149114171561405e57613e439083613984565b926103e880830292830414171561403157613e689291613e629161414d565b90613997565b971561402957600097905b898b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe820181101561401d579161190f6119b9613eb9936002613f039c9601908d613a84565b8198917f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f7f0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f613b2c565b965b988551918d83019367ffffffffffffffff9484811086821117613ff057885260008452813b15610a4e5760008a93613f8382968b519c8d97889687957f022c0d9f0000000000000000000000000000000000000000000000000000000087528d8701528d860152166044840152608060648401526084830190610af6565b03925af18015611ab857908d969594939291613fa8575b505050505094019391613ce9565b909192938095965011613fc45750505287903880808080613f9a565b6041907f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b876041887f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b5050508b956000613f05565b600090613e73565b856011867f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b866011877f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b8689517f7b9c8916000000000000000000000000000000000000000000000000000000008152fd5b508115613e22565b8181959293953d83116140e5575b6140d381836135fa565b8101031261038757505191388e613e11565b503d6140c9565b87513d6000823e3d90fd5b90613dcc565b899c50899250908161411a92903d10611f1357611f0281836135fa565b509b9091613da3565b60046040517fae52ad0c000000000000000000000000000000000000000000000000000000008152fd5b91908201809211611b0357565b91823583019161417460208435958186019503018561414d565b1161105d57565b91602083013583019161417460208435958186019503018561414d565b91606083013583019161417460208435958186019503018561414d565b7f80000000000000000000000000000000000000000000000000000000000000008114611b035760000390565b939193602b841061105d578462ffffff6000614267946142ee6142999935988960601c9a8b9a61423b601789013560601c9d8e109c73ffffffffffffffffffffffffffffffffffffffff9e8f998a9460481c1691614365565b16968b861461434a576401000276a49a5b60409d8e9b8c93845196879560208701526060860191613537565b91168b830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826135fa565b848851998a98899788967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528c6024870152604486015216606484015260a0608484015260a4830190610af6565b03925af190811561433f576000938492614309575b50509192565b9080949250813d8311614338575b61432181836135fa565b810103126103875750602082519201513880614303565b503d614317565b83513d6000823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d259a61424c565b73ffffffffffffffffffffffffffffffffffffffff92838316848316116144c9575b62ffffff90846040519481602087019516855216604085015216606083015260608252608082019082821067ffffffffffffffff831117610f7d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80613c2d9183604052845190209361449c60a08201957fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54907f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98488917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608101845201826135fa565b909190614387565b600080809381935af1156144e157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152fd5b60009182604492602095604051937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af13d15601f3d116001600051141617161561459257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152fdfea2646970667358221220b2d6a39827110492aaa15cba3556e23894a51f2f635dc99ae66d21764ad4d90b64736f6c634300081100330058210390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56305820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0058210310e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6041010219080405581d02367b74293bb052cf32dbf499b5c69c98fda9beb40172c7513283aa71070119462603eab71320eeef085932d28d44e0baf57b58344eb1e00ad28043fed2773af1d7eb0605581d02fa23563862f322c7e205623469c0b78f515b247fc070b0a8a7a361b207011bffffffffffffffff02192210030c975042158b302d08b687b5ad55407adea0f6c0c8e2ae9027af5f2b66a90e2503db731c607521cbd787386a1fe342cdf1bac891251c300135c9c48e15f96572ae021979ab036f2ee834e1f27ab29334718c1891c1fbf7b4905b5c3c8413a6455bc362071e0703a6e69c4e7f6c01cdbd2a57007b66d03fcc4d915e823bc0128e46df6d003bf27103886f7645e367e56ba68b766987c56dfef14001d37ea052544e5bc80fa127574203d5e6f2c9fedc019daec57e9f9de99606ad6622acd7e5752e59cce941342141550368fd523bc7a98534cd05165476e5f4aff3d49d9353645c45a3718810935c63b703a2b47f7b9bb8970017b462680a3019b86a20a3053c28d35b35d8055c6e9ec09f0219ffff038d82a113feec5be1befcd1a92c6b71e128f238629f74c895b40f1b0d31970eb703e32cc14941b0c0e26fd4cd6a1ff7904594c84aee9ebc8ea8971e9e4ebb4e11630365a9fd54eea42809ad5d130b0257ffc59ecea4d36525c5f059f0ba74e12d97da03281a34dfcf4c9272ce28f683e1214c28e3bc7320ec32034b66c88950440b6d29037acfa0a74627f84ecc785940d286ea2f47d8719391be009f1ace0ba56de41b970311cdc47e8172f6af544d8b529571110c099bc95182cb9fbefdbfa94a345b453703f2b6daba9341b5868251a1ca9c40c9331d0458fd2860406a2d3b2c2429368f0103607f0de0931910ba9ecf0e19204ef4454c8f293039132d816a94fd013c53224503de0dd51065e16214b69968bc663ea47bd1b58f4a23def0cdb9ce7826e6b5798b03208d267634ee7ef8b6dd028468268e4642393faeea95298b745a6d3793a910240219ffff0338c61070304c5a56b382ff5fe8279b579ba528f8450ef0972671f54aaf8a1807033df2a9b7c7835a37cae5bcacb6bd5614801c723c65b8c038b6895bb8721005d30345f5378f333db1e4dbc4ff7bb03fb174652735acc417491426ec1d5b4b7c962103f624a84b5da7da6f6d297359ff86b3f5b7aa514c3c544d10b7cdda48c3b6538c03d2ea0d5257ab5b2e9d684cf536fa24090bdbf8144370ff8296130dd05fef871f03649f0628bacb781a5e38fe229e48f6333d3fcccb12e8232e0ef40894f79bd01403265f0d31dffe3ddaceb1a6264373b2071694a42cdc8deac6f08e7167e3b53b5c0348755492522f9d4186ee1d2ef54e05eb48ff50167faaa3cd8bdbbdcd0f1dfb270388fcd11bfa6af7102fc26c75109a9bfb91b18b098abdf9941b4fd719c4b38b51032b8c63effd1c55715b1030ff3b0e540120c7468ab949e045e2b56b75a851f8ad03f1f869a4f7853a567e16451e77c8fcd41eb35442dca17ffa169117e376b12f52035315b68e12efbfd7e425d1303ac50276124043bdec90967756d20c135a4439030219ffff034fe4674fca460c6b0d3775f93ae770fd2f8f6adbf3df8a38cbd20f6858dae16603d5f6e825b679423f3bc83a3858566924aca2c9fe0fea7a738e50c7473705430f03d8f3699affd4c37f3873e6cb56c520da8768f9b299beb3d24a6870e3ef840cf90219ffff03a856879ba50e428f706e8ea8ab23bdfcf6e533526774c801832f406c496c8bf5035060819b722c0510205215121ae18a0c91ff232cb1bcfb88cf5b126021f47f0103f192f4200aad1a68680a0ee8a45f52d5d9499b04c4ca9a9468ee3e6d05fb06a4031dd5eed083075ab6aab72f5bc31a42da9e452af16b44126c68c121599b5d7d5d034b4c77225b00a5628f40c7b1d2edde5a0e1e73ee390eaf46102e93ef8b5c6ec803f4cdd6911f721cf8a8349705e06795e1537271c6e71ce482458062864481d36a03224c9b283bca44bd906cbb6f8aa336e7a8832c19b90234aca912ac95e3b23b2403738163b6eff66aaa37335f5c07a84f61fad13f1dbe24a9e3305b4f9847612e16035366ef61de8dd9508e66112b8a8b9107be9b4713d881a04d20e9b24b4f8555a30367bf6f3570230084e9c845f3e358a0a970cba8ad34aae28c1b39d795c49abb9d034879cf3d253b210eaf97a54bfb2882218cd549e779dd0d460106eaff45f0e2ae03f344efafc63dfff5359260d7f7bbcab1fc6c9323363f11b02462ad8b02487a7e03698d776c9cdd56361bade4cd6f0367c0b52268918652074bb0f1671277be82ad037b49101ecf8284f85a08144c80e24b6387eee2b2b282d59822cf8371b48a26280316035ab46792ea0c73b6c679cb03babde3ef39281aa0432db7112e9a803b947503eafd1132f34423710d00cdb047c30f5dc4c63684c6b4aa48a8c0094e6b2ad4a503397aecf779627d1b5ba31cddaeb3a41d45ba3a8851546c42fc8b848da29e968f03a31a78dca744bb051e20db4fcd34e9bba63d3706702f20d33ad199cd4ab4158403a908dc082006334a16b811a096a809f25c9d7b210a0fe3f8d7bd6cdcc36e7f77032915c27a44a0c56ab5b5afdb8d8abe8f346ef4025707debb97ab0ebb7848384103fc2222896f3316227969e6b783146dae8b67e920fb4ecca348f07fb708be8d3603177bccb80a7c5a54167ce15e7e4dac105176699cb48417cdb1f44b8c3a11164f05581d020562f180317169b17c114dceb8f530662cbf5cb45104976be1c5799c040105581d02cf6f47949b59006dcee0bad9757d925c1b03370423e7b3d302a33b0e0c0247051bbc32954c0005581d0207d087d0e06a061d8cf2eff483c4c045de877251fd50ec7b4ce9adf1084801ab91dfed466c000219182203a690a9b22e0e9d4081a8239747d3e85652d6142224268c40bb04bf4e613b0e4f05581e03f795d314522a92fe3cddad5ccb6effe61e7c8f0e1712b46dac64cc1dc00c014705217d32a74c4805581e03cb5f1adcd30ce464ef14796b2dd04127771e378a1fd231dd39e1298dc0040205581e03d81578c817561388355e2ad7b32ca851dfc59f8c6c00ed57a27d33b2500c0647019f6c1af7231805581e03c67474d53313f21b8ca161dd5b4e8363a97fe4c39547284fe47c396aa00c03470389b413e1aec003d3183fbfdab637c08db5ae2b8a3a28bc294ad04da22eb904ad8adb7d93b7aede035401c2db8b68c2e025117584dae009174f816ed4097edfa39027af3985a6b86e03f47c023b26d46373454f84175ac598ed5487c76eed04930adc60c25f0d7f258205581e0311a2f42e657e9333f22ad102102245aa3da2808880764b8b220367a8300c01466346fa684d000219d6e30361ac68c7460b43f1179d400ece1a1c2347efd5bd0d9f82a89858826b616c121a03440ccd7dd0fbc59b9b31d45edaa2ca42e226a8534328acc77ddbf0685902f6b10345883bdaa16f74f7608c7e7d23b01bd2eb3175864cc1216f1c1b17e223cce3cb03b5a1452b917a08cc1fb519a022df0763cc3cada88fb73de62685c43a5776171203b0856d38cc1efff710a845dfd301eb555c3a5d363b25be0c7296b3c7436f212c0395581839c4f631602aa9815d6c6f5bde978402810d2a81379c062219c446dcc80353ac20cc0541b52d042bcac44795ec73e83b99454312bc9dabb1805ffcc69d0b03aace27d352a94b435805f2e867d3ad5a313873bbbb7daa09f3e8448bd65c3e7c038fdc73be650f209da66653d3dd754ff0a5992dc0bca44af1900cc2e4270bc3bb031a596835d22e9dfe81946f42c32c99e4847c7ea1240e9f618495fc553373634d034208930241b5a8096c2095002ae9f3376ffe7bf5622681fa02ae4d2ee243468103a09b17a06953faf770cdf4004f487d6ca38dd959bdb95de1d4efb989c074442703546736042c4a11904245877b4ead062251fce46bab096d5e70a455ffa788cd9d0219ffff03ac9a2d51a10f528167c4801018f26235bebf1dd784e39eddf8edea5bf30d55f503465555c4dc84934066ddb671d203404f6a6518ad795f2e1f00cd97cbaba5aa4d03ecf80f1437417b984cde4b6191bf8705fe9743c9694bf7e8a0e39f118a2a639b03732291a91c072c786847787dc5a1b6ed7d782a4d402ab15d4f3dcfe85c47459503b04eb23bbb084ab2d08e808940529bda17651367e69915eba2e7f78a71d6a12b03d6e5fd7b0571ff163315cc7f3eed475a9ef4cd06d7e51964cbf00868c212e91703a491332be56b92bf50fdee51b32061690b6ffd4540fb9edb6c8d751c1a93c959037f6a1004b4c0e87449ae7e676984de52682d4dd5e4a82f6560d54b458fe97e4203fde2bb17312eef02c226e9e307b1e75a568953146b1e50175c962d52762b9e7003519c02bb0ccd6e4e7a983a322aea9c5ac97410629bd1140a8bc0f34c640a4a1103150963371f7a441d90eb104c6819e3052f886f4e41363f36880ea99983ff7d2003fe94cd9319fb1dde5cafbc421fa08111caee08185b518bc8f41efd021dd65930033fd2f7d42851ebdd5eeb3f785b883cb8c6a716d1d14acfa1da3e4dad33cba3960219ffff037a3b2292b97d951935219e48e0af413fc0b2a080ec12ecb11500fa30693f371c034d898ec8e9221364417fa29aacfdbfacf664733803a271be359d515f1c75e39e03da84dc259556887bf48381f635e12a92b100ce69da5eeeba6dd685cc45e7a9f7036b0f68c757e23d6ef24b887411b95b3a6061862203d12f6650c081cd6b7a96e7032815d7f992d035862ec2b2b1711b9100d5a4bada4e683644b52cf0eb808fe803032ee816bdf1bf4916da95b818192a58ae97ab144037fc0773ab2f7844d8034e6a03b5814acffb81775b79b223c8a41d7927e351e5836a2162f5d7ae6db7e5646b93034fd3d1ff915c4f3ec0903f7233c4e0eea80f7f3dbc57627438f11ac2580994390219ffff036ae455a8f98f602ad3df3bb4b8f35140ed320d28981d268d11e4bdecf761f691030f365cab02f9fbbab84a2d2abc964a5d04815fbf27caa1f574c20ff88dfe3d34033f5ffd77dfa969a03878e24bcdd6aae9804df7dd805355087f754cf34ca27351039e1674c0fe03b797fb0d0ad7c1a0e47e9813b457884b61087b07394399bc21b80379e4ddae0109844cc53761f22bc5b53c3910bd6105cf368eae6d358cdf3311210219ffff03cd98bf9f6f35337d1dc7521ba37683c5a9c7db2f97c15ebd327bd1ecc94f73480399358e17a1bce7878169d6caa3743f1d3ab4becf862ddbef324ad5fcec1ffee20387f568ac40805eee9bafb18fd2b86755ddc504ff7d7a8e623da11e7db03bdf53033ab9ea79b00ca0d33fcc0e64dd87b8722ea5be97610aea3007b451e751c3087c0349d44405343b3471e6bf6c72a37de5605908e5de5aefeeaa449a759d4e0227d503f1f346e98202b9b6197ae71711be78b64951b18c4629c1f91c10e7f18f4f8a87034ec68f38a295d5464c83f1d4a64558e7abd9cb6f649c27888fc513859fb17cc90341b4a1403e3a2cdca6627e540ba32ee84397f3764dc4a8f67441fdb35032f249032a70224aebc05d5bff03c5a4163781d136fa81cbc9fab25c18c2609578e2039303e1c63c898087885a3d179684fd728e1daea6112639de2b454e3c953d4db4c6e20307a213c9ef6e55d90bdad7c1a9604a16879cf7e5fd3cc67cd7f2a75bac8971fc03241f8c19007140a630e5edd4da2b6b2b9c89da8a7d9fae6f2ba8a28f4d2d632d034af651f1e0cc55a176ced1698a8fce42331445baf3095b5f247b21f48dd7c22e0302153fede80508f9ad33413847336a160617d67cbacd452f2807bcb5e2c54a59033133288ed6d559d82a7f2f68cdfa086c5138894e4d58fe0070242d73d208969e031f71467888afa462854d1c40e49f6f81ad28a85256a6d3ec58a97d60d70262290327a9c52f24d0bd1d5b735faf7c322e32eac9d9906aa4657bdb8e80e6f4637ec00303117d5f66c9040f7dff9e742bc1ab5a86b8f46d88e0fc43a794a2a0897e0a7b03dd77d7a3707ba04957fbfeb34b23d447212261a7c4bb8f250c3ba3bcf297730e0327f86466975873c5c29cadc05699588b004c248585542aa28a2d2cdb85ca48b103166d0292a047a2b742102af5a626b605e56b1a8a92ad222086e373f8d45576ca05581e03a43e3903f66aaefd901fb67613eaa643955317e0bb01c1a792b4c00630040105581e03a341e158089440752a302ccd30e9dfcb39f0b62a9b6a500de87183dc40040203106a972eed001c08010e86dc4053257b14ffcfd34afc7474f5c204c56f33fc7903510b686d4bb215b8da138b060ef7aca04959308b7200eae2e7d7183bdd91775305581e0309822469b484d0d834e850f6213228ba12127fe695d2fcc5c7e0969f70040305581e03a5fb559e6713f246852c3b9b24d8521e4e21007486f220197f2e181fc00c0246e1069bcda90005581e038ece7292ca4c5fbc902a74d5ff3cf4c515e0b2a8d3a824073a46c39fa0040205581e0377a4c85cd5ba94f9ddb4c65ba76da98bbd1a329f35fc18b1599dea2a100c0b47106502b615b5e605581e030baed5bca79d091f4ad010f631622b1cd06ccd3e691a2c3565e70ffb40040205581e03b17f6401573465e8dfc06e5acaaab0ac800896b72e8ed1330ce6667db00c0446940d56198a0003a7e48f0d73eaf7c47528d6ab59ffae7b4aec13c5eb888b7359f014521767c84803f4894f5d93a9fad81ddc3c915bba04e8b24b153184b4a38622d4e353288b537905581d02be5be7319110e052ef96ea1f34e3470214805f16c64ec3d744461a1b07011bffffffffffffffff05581d0359795cbe09a5b3d4cf6416da453015c5a2cd9d77646c7ed8bfe0c56004010459567e608060405234801561001057600080fd5b50600436106101ae5760003560e01c806370cf754a116100ee578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610800578063f305839914610820578063f30dba9314610828578063f637731d146108aa576101ae565b8063c45a0155146107d1578063d0c93a7c146107d9578063d21220a7146107f8576101ae565b8063883bdbfd116100c8578063883bdbfd14610633578063a34123a71461073c578063a38807f214610776576101ae565b806370cf754a146105c65780638206a4d1146105ce57806385b66729146105f6576101ae565b80633850c7bd1161015b578063490e6cbc11610135578063490e6cbc146104705780634f1eb3d8146104fc578063514ea4bf1461054d5780635339c296146105a6576101ae565b80633850c7bd1461035b5780633c8a7d8d146103b45780634614131914610456576101ae565b80631ad8b03b1161018c5780631ad8b03b146102aa578063252c09d7146102e157806332148f6714610338576101ae565b80630dfe1681146101b3578063128acb08146101d75780631a68650214610286575b600080fd5b6101bb6108d0565b604080516001600160a01b039092168252519081900360200190f35b61026d600480360360a08110156101ed57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a08101608082013564010000000081111561022e57600080fd5b82018360208201111561024057600080fd5b8035906020019184600183028401116401000000008311171561026257600080fd5b5090925090506108f4565b6040805192835260208301919091528051918290030190f35b61028e6114ad565b604080516001600160801b039092168252519081900360200190f35b6102b26114bc565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102fe600480360360208110156102f757600080fd5b50356114d6565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103596004803603602081101561034e57600080fd5b503561ffff1661151c565b005b610363611616565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61026d600480360360a08110156103ca57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a08101608082013564010000000081111561041757600080fd5b82018360208201111561042957600080fd5b8035906020019184600183028401116401000000008311171561044b57600080fd5b509092509050611666565b61045e611922565b60408051918252519081900360200190f35b6103596004803603608081101561048657600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b509092509050611928565b6102b2600480360360a081101561051257600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d83565b61056a6004803603602081101561056357600080fd5b5035611f9d565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61045e600480360360208110156105bc57600080fd5b503560010b611fda565b61028e611fec565b610359600480360360408110156105e457600080fd5b5060ff81358116916020013516612010565b6102b26004803603606081101561060c57600080fd5b506001600160a01b03813516906001600160801b036020820135811691604001351661220f565b6106a36004803603602081101561064957600080fd5b81019060208101813564010000000081111561066457600080fd5b82018360208201111561067657600080fd5b8035906020019184602083028401116401000000008311171561069857600080fd5b5090925090506124dc565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106e75781810151838201526020016106cf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561072657818101518382015260200161070e565b5050505090500194505050505060405180910390f35b61026d6004803603606081101561075257600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612569565b6107a06004803603604081101561078c57600080fd5b508035600290810b9160200135900b6126e0565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b6101bb6128d7565b6107e16128fb565b6040805160029290920b8252519081900360200190f35b6101bb61291f565b610808612943565b6040805162ffffff9092168252519081900360200190f35b61045e612967565b6108486004803603602081101561083e57600080fd5b503560020b61296d565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b610359600480360360208110156108c057600080fd5b50356001600160a01b03166129db565b7f000000000000000000000000aa6e8127831c9de45ae56bb1b0d4d4da6e5665bd81565b6000806108ff612bf0565b85610936576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109ef576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a3a5780600001516001600160a01b0316866001600160a01b0316118015610a35575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a6c565b80600001516001600160a01b0316866001600160a01b0316108015610a6c57506401000276a36001600160a01b038716115b610aa3576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610ad25760048460a0015160ff16901c610ae5565b60108460a0015160ff1681610ae357fe5b065b60ff1681526004546001600160801b03166020820152604001610b06612c27565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b8257600254610b86565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bd55750886001600160a01b031681604001516001600160a01b031614155b15610f9f57610be261560e565b60408201516001600160a01b031681526060820151610c25906006907f000000000000000000000000000000000000000000000000000000000000003c8f612c2b565b15156040830152600290810b810b60208301819052620d89e719910b1215610c5657620d89e7196020820152610c75565b6020810151620d89e860029190910b1315610c7557620d89e860208201525b610c828160200151612d6d565b6001600160a01b031660608201526040820151610d13908d610cbc578b6001600160a01b031683606001516001600160a01b031611610cd6565b8b6001600160a01b031683606001516001600160a01b0316105b610ce4578260600151610ce6565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000bb861309f565b60c085015260a084015260808301526001600160a01b031660408301528215610d7557610d498160c00151826080015101613291565b825103825260a0810151610d6b90610d6090613291565b6020840151906132a7565b6020830152610db0565b610d828160a00151613291565b825101825260c08101516080820151610daa91610d9f9101613291565b6020840151906132c3565b60208301525b835160ff1615610df6576000846000015160ff168260c0015181610dd057fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e3557610e298160c00151600160801b8460c001516001600160801b03166132d9565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f5e57806040015115610f35578360a00151610ebf57610e9d846040015160008760200151886040015188602001518a606001516008613389909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610f0b82602001518e610ed657600154610edc565b84608001515b8f610eeb578560800151610eef565b6002545b608089015160608a015160408b0151600595949392919061351c565b90508c15610f17576000035b610f258360c00151826135ef565b6001600160801b031660c0840152505b8b610f44578060200151610f4d565b60018160200151035b600290810b900b6060830152610f99565b80600001516001600160a01b031682604001516001600160a01b031614610f9957610f8c82604001516136a5565b600290810b900b60608301525b50610baf565b836020015160020b816060015160020b1461107a57600080610fed86604001518660400151886020015188602001518a606001518b6080015160086139d1909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b93909316929092029190911773ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116179055506110ac9050565b60408101516000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110f25760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561114257608081015160015560a08101516001600160801b03161561113d5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611188565b608081015160025560a08101516001600160801b0316156111885760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146111a157602081015181518b036111ae565b80600001518a0381602001515b90965094508a156112e75760008512156111f0576111f07f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28d87600003613b86565b60006111fa613cd4565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b5050505061129e613cd4565b6112a88289613e0d565b11156112e1576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b50611411565b600086121561131e5761131e7f000000000000000000000000aa6e8127831c9de45ae56bb1b0d4d4da6e5665bd8d88600003613b86565b6000611328613e1d565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113ac57600080fd5b505af11580156113c0573d6000803e3d6000fd5b505050506113cc613e1d565b6113d68288613e0d565b111561140f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114e757600080fd5b015463ffffffff81169150640100000000810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff16611560576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611575612bf0565b60008054600160d81b900461ffff169061159160088385613eb5565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115fe576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff166116ad576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b0385166116cd57600080fd5b60008061171b60405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016117118a6001600160801b0316613f58565b600f0b9052613f69565b9250925050819350809250600080600086111561173d5761173a613cd4565b91505b841561174e5761174b613e1d565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117d057600080fd5b505af11580156117e4573d6000803e3d6000fd5b50505050600086111561183b576117f9613cd4565b6118038388613e0d565b111561183b576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561188b57611849613e1d565b6118538287613e0d565b111561188b576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff1661196c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611981612bf0565b6004546001600160801b0316806119c3576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119f8867f0000000000000000000000000000000000000000000000000000000000000bb862ffffff16620f42406141a9565b90506000611a2f867f0000000000000000000000000000000000000000000000000000000000000bb862ffffff16620f42406141a9565b90506000611a3b613cd4565b90506000611a47613e1d565b90508815611a7a57611a7a7f000000000000000000000000aa6e8127831c9de45ae56bb1b0d4d4da6e5665bd8b8b613b86565b8715611aab57611aab7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28b8a613b86565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505050506000611b4f613cd4565b90506000611b5b613e1d565b905081611b688588613e0d565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611bab8487613e0d565b1115611be3576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c725760008054600160e81b9004600f16908115611c16578160ff168481611c1057fe5b04611c19565b60005b90506001600160801b03811615611c4c57600380546001600160801b038082168401166001600160801b03199091161790555b611c66818503600160801b8d6001600160801b03166132d9565b60018054909101905550505b8015611cfd5760008054600160e81b900460041c600f16908115611ca2578160ff168381611c9c57fe5b04611ca5565b60005b90506001600160801b03811615611cd757600380546001600160801b03600160801b8083048216850182160291161790555b611cf1818403600160801b8d6001600160801b03166132d9565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611dca576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611de460073389896141e3565b60038101549091506001600160801b0390811690861611611e055784611e14565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611e3c5783611e52565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611eb7576003810180546001600160801b031981166001600160801b03918216869003821617909155611eb7907f000000000000000000000000aa6e8127831c9de45ae56bb1b0d4d4da6e5665bd908a908616613b86565b6001600160801b03821615611f1d576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611f1d907f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2908a908516613b86565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f0000000000000000000000000000000000023746e6a58dcb13d4af821b93f06281565b600054600160f01b900460ff16612054576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9841691638da5cb5b916004808301926020929190829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b50516001600160a01b0316331461210157600080fd5b60ff82161580612124575060048260ff16101580156121245750600a8260ff1611155b801561214e575060ff8116158061214e575060048160ff161015801561214e5750600a8160ff1611155b61215757600080fd5b60008054610ff0600484901b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff16612256576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9841691638da5cb5b916004808301926020929190829003018186803b1580156122c357600080fd5b505afa1580156122d7573d6000803e3d6000fd5b505050506040513d60208110156122ed57600080fd5b50516001600160a01b0316331461230357600080fd5b6003546001600160801b039081169085161161231f578361232c565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116123525782612366565b600354600160801b90046001600160801b03165b90506001600160801b038216156123e7576003546001600160801b038381169116141561239557600019909101905b600380546001600160801b031981166001600160801b039182168590038216179091556123e7907f000000000000000000000000aa6e8127831c9de45ae56bb1b0d4d4da6e5665bd9087908516613b86565b6001600160801b0381161561246d576003546001600160801b03828116600160801b90920416141561241857600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561246d907f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29087908416613b86565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b6060806124e7612bf0565b61255e6124f2612c27565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614247565b915091509250929050565b600080548190600160f01b900460ff166125b0576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b918101919091528190819061260990606081016125fc6001600160801b038a16613f58565b600003600f0b9052613f69565b925092509250816000039450806000039350600085118061262a5750600084115b15612669576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b60008060006126ed612bf0565b6126f785856143a1565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b9367010000000000000082046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff168061275f57600080fd5b6003820154600681900b985067010000000000000081046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff16806127a457600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b1215905061284d575093909403965090039350900390506128d0565b8a60020b816020015160020b12156128c1576000612869612c27565b602083015160408401516004546060860151939450600093849361289f936008938893879392916001600160801b031690613389565b9a9003989098039b5050949096039290920396509091030392506128d0915050565b50949093039650039350900390505b9250925092565b7f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98481565b7f000000000000000000000000000000000000000000000000000000000000003c81565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b7f0000000000000000000000000000000000000000000000000000000000000bb881565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b9067010000000000000081046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b031615612a1e576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612a29826136a5565b9050600080612a41612a39612c27565b60089061446a565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b73ffffffffffffffffffffffffffffffffffffffff19909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9091021761ffff60d81b1916600160d81b909602959095177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612b9957fe5b05029050600083600281900b620d89e881612bb057fe5b0502905060008460020b83830360020b81612bc757fe5b0560010190508062ffffff166001600160801b03801681612be457fe5b0493505050505b919050565b306001600160a01b037f000000000000000000000000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7f1614612c2557600080fd5b565b4290565b60008060008460020b8660020b81612c3f57fe5b05905060008660020b128015612c6657508460020b8660020b81612c5f57fe5b0760020b15155b15612c7057600019015b8315612ce557600080612c82836144b6565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612cc757888360ff16860302612cda565b88612cd1826144c8565b840360ff168603025b965050505050612d63565b600080612cf4836001016144b6565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612d4657888360ff0360ff16866001010102612d5c565b8883612d5183614568565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612d84578260020b612d8c565b8260020b6000035b9050620d89e8811115612dca576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612dde57600160801b612df0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612e24576ffff97272373d413259a46990580e213a0260801c5b6004821615612e43576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e62576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e81576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ea0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ebf576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612ede576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612efe576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f1e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f3e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f5e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f7e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612f9e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fbe576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fde576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612fff576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561301f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561303e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561305b576b048a170391f7dc42444e8fa20260801c5b60008460020b131561307657806000198161307257fe5b0490505b64010000000081061561308a57600161308d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131245760006130d88989620f42400362ffffff16620f42406132d9565b9050826130f1576130ec8c8c8c6001614652565b6130fe565b6130fe8b8d8c60016146cd565b955085811061310f578a965061311e565b61311b8c8b838661478a565b96505b5061316e565b8161313b576131368b8b8b60006146cd565b613148565b6131488a8c8b6000614652565b935083886000031061315c5789955061316e565b61316b8b8a8a600003856147d6565b95505b6001600160a01b038a81169087161482156131d15780801561318d5750815b6131a35761319e878d8c60016146cd565b6131a5565b855b95508080156131b2575081155b6131c8576131c3878d8c6000614652565b6131ca565b845b945061321b565b8080156131db5750815b6131f1576131ec8c888c6001614652565b6131f3565b855b9550808015613200575081155b613216576132118c888c60006146cd565b613218565b845b94505b8115801561322b57508860000385115b15613237578860000394505b81801561325657508a6001600160a01b0316876001600160a01b031614155b15613265578589039350613282565b61327f868962ffffff168a620f42400362ffffff166141a9565b93505b50505095509550955095915050565b6000600160ff1b82106132a357600080fd5b5090565b808203828113156000831215146132bd57600080fd5b92915050565b818101828112156000831215146132bd57600080fd5b600080806000198587098686029250828110908390030390508061330f576000841161330457600080fd5b508290049050613382565b80841161331b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613430576000898661ffff1661ffff81106133aa57fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a161461341c57613419818a8988614822565b90505b806020015181604001519250925050613510565b8688036000806134458c8c858c8c8c8c6148d2565b91509150816000015163ffffffff168363ffffffff161415613477578160200151826040015194509450505050613510565b805163ffffffff8481169116141561349f578060200151816040015194509450505050613510565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b816134cd57fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816134ff57fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561365457826001600160801b03168260000384039150816001600160801b03161061364f576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6132bd565b826001600160801b03168284019150816001600160801b031610156132bd576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b038316108015906136e1575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613716576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106137b757607f810383901c91506137c1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146139c257886001600160a01b03166139a682612d6d565b6001600160a01b031611156139bb57816139bd565b805b6139c4565b815b9998505050505050505050565b6000806000898961ffff1661ffff81106139e757fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff161515606083015290925089161415613a575788859250925050613510565b8461ffff168461ffff16118015613a7857506001850361ffff168961ffff16145b15613a8557839150613a89565b8491505b8161ffff168960010161ffff1681613a9d57fe5b069250613aac81898989614822565b8a8461ffff1661ffff8110613abd57fe5b825191018054602084015160408501516060909501511515600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16640100000000026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613c025780518252601f199092019160209182019101613be3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c64576040519150601f19603f3d011682016040523d82523d6000602084013e613c69565b606091505b5091509150818015613c97575080511580613c975750808060200190516020811015613c9457600080fd5b50515b613ccd576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000aa6e8127831c9de45ae56bb1b0d4d4da6e5665bd1693919290918291908083835b60208310613d6d5780518252601f199092019160209182019101613d4e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613dcd576040519150601f19603f3d011682016040523d82523d6000602084013e613dd2565b606091505b5091509150818015613de657506020815110155b613def57600080fd5b808060200190516020811015613e0457600080fd5b50519250505090565b808201828110156132bd57600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216939192909182919080838360208310613d6d5780518252601f199092019160209182019101613d4e565b6000808361ffff1611613ef3576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613f09575081613382565b825b8261ffff168161ffff161015613f4f576001858261ffff1661ffff8110613f2e57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613f0b565b50909392505050565b80600f81900b8114612beb57600080fd5b6000806000613f76612bf0565b613f88846020015185604001516143a1565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c08501528851908901519489015192890151939461402c9491939092909190614acf565b93508460600151600f0b6000146141a157846020015160020b816020015160020b12156140815761407a6140638660200151612d6d565b6140708760400151612d6d565b8760600151614c84565b92506141a1565b846040015160020b816020015160020b12156141775760045460408201516001600160801b03909116906140d3906140b7612c27565b60208501516060860151608087015160089493929187916139d1565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614123919061411990612d6d565b8860600151614c84565b93506141416141358760200151612d6d565b83516060890151614cc8565b92506141518187606001516135ef565b600480546001600160801b0319166001600160801b0392909216919091179055506141a1565b61419e6141878660200151612d6d565b6141948760400151612d6d565b8760600151614cc8565b91505b509193909250565b60006141b68484846132d9565b9050600082806141c257fe5b84860911156133825760001981106141d957600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614287576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff8111801561429f57600080fd5b506040519080825280602002602001820160405280156142c9578160200160208202803683370190505b509150865167ffffffffffffffff811180156142e457600080fd5b5060405190808252806020026020018201604052801561430e578160200160208202803683370190505b50905060005b87518110156143945761433f8a8a8a848151811061432e57fe5b60200260200101518a8a8a8a613389565b84838151811061434b57fe5b6020026020010184848151811061435e57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614314565b5097509795505050505050565b8060020b8260020b126143e1576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614424576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614466576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116144d657600080fd5b600160801b82106144e957608091821c91015b68010000000000000000821061450157604091821c91015b640100000000821061451557602091821c91015b62010000821061452757601091821c91015b610100821061453857600891821c91015b6010821061454857600491821c91015b6004821061455857600291821c91015b60028210612beb57600101919050565b600080821161457657600080fd5b5060ff6001600160801b0382161561459157607f1901614599565b608082901c91505b67ffffffffffffffff8216156145b257603f19016145ba565b604082901c91505b63ffffffff8216156145cf57601f19016145d7565b602082901c91505b61ffff8216156145ea57600f19016145f2565b601082901c91505b60ff821615614604576007190161460c565b600882901c91505b600f82161561461e5760031901614626565b600482901c91505b60038216156146385760011901614640565b600282901c91505b6001821615612beb5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614672579293925b8161469f5761469a836001600160801b03168686036001600160a01b0316600160601b6132d9565b6146c2565b6146c2836001600160801b03168686036001600160a01b0316600160601b6141a9565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156146ed579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661472957600080fd5b8361475957866001600160a01b031661474c8383896001600160a01b03166132d9565b8161475357fe5b0461477f565b61477f6147708383896001600160a01b03166141a9565b886001600160a01b0316614cf7565b979650505050505050565b600080856001600160a01b0316116147a157600080fd5b6000846001600160801b0316116147b757600080fd5b816147c95761469a8585856001614d02565b6146c28585856001614de3565b600080856001600160a01b0316116147ed57600080fd5b6000846001600160801b03161161480357600080fd5b816148155761469a8585856000614de3565b6146c28585856000614d02565b61482a61564a565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161487e576001614880565b845b6001600160801b031673ffffffff00000000000000000000000000000000608085901b16816148ab57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6148da61564a565b6148e261564a565b888561ffff1661ffff81106148f357fe5b60408051608081018252919092015463ffffffff81168083526401000000008204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061495890899089614ed8565b15614990578663ffffffff16826000015163ffffffff16141561497a57613510565b8161498783898988614822565b91509150613510565b888361ffff168660010161ffff16816149a557fe5b0661ffff1661ffff81106149b557fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614a6c57604080516080810182528a5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614a7b88836000015189614ed8565b614ab2576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b614abf8989898887614f9b565b9150915097509795505050505050565b6000614ade60078787876141e3565b60015460025491925090600080600f87900b15614c24576000614aff612c27565b6000805460045492935090918291614b499160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b900416613389565b9092509050614b8360058d8b8d8b8b87898b60007f0000000000000000000000000000000000023746e6a58dcb13d4af821b93f06261513b565b9450614bba60058c8b8d8b8b87898b60017f0000000000000000000000000000000000023746e6a58dcb13d4af821b93f06261513b565b93508415614bee57614bee60068d7f000000000000000000000000000000000000000000000000000000000000003c615325565b8315614c2057614c2060068c7f000000000000000000000000000000000000000000000000000000000000003c615325565b5050505b600080614c3660058c8c8b8a8a61538b565b9092509050614c47878a8484615437565b600089600f0b1215614c75578315614c6457614c6460058c6155cc565b8215614c7557614c7560058b6155cc565b50505050505095945050505050565b60008082600f0b12614caa57614ca5614ca085858560016146cd565b613291565b6146c5565b614cbd614ca085858560000360006146cd565b600003949350505050565b60008082600f0b12614ce457614ca5614ca08585856001614652565b614cbd614ca08585856000036000614652565b808204910615150190565b60008115614d755760006001600160a01b03841115614d3857614d3384600160601b876001600160801b03166132d9565b614d50565b6001600160801b038516606085901b81614d4e57fe5b045b9050614d6d614d686001600160a01b03881683613e0d565b6155f8565b9150506146c5565b60006001600160a01b03841115614da357614d9e84600160601b876001600160801b03166141a9565b614dba565b614dba606085901b6001600160801b038716614cf7565b905080866001600160a01b031611614dd157600080fd5b6001600160a01b0386160390506146c5565b600082614df15750836146c5565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b168215614e91576001600160a01b03861684810290858281614e3157fe5b041415614e6257818101828110614e6057614e5683896001600160a01b0316836141a9565b93505050506146c5565b505b614e8882614e83878a6001600160a01b03168681614e7c57fe5b0490613e0d565b614cf7565b925050506146c5565b6001600160a01b03861684810290858281614ea857fe5b04148015614eb557508082115b614ebe57600080fd5b808203614e56614d68846001600160a01b038b16846141a9565b60008363ffffffff168363ffffffff1611158015614f0257508363ffffffff168263ffffffff1611155b15614f1e578163ffffffff168363ffffffff1611159050613382565b60008463ffffffff168463ffffffff1611614f46578363ffffffff1664010000000001614f4e565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614f7f578363ffffffff1664010000000001614f87565b8363ffffffff165b64ffffffffff169091111595945050505050565b614fa361564a565b614fab61564a565b60008361ffff168560010161ffff1681614fc157fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614fee57fe5b0661ffff8110614ffa57fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290955061506557806001019250614fd9565b898661ffff16826001018161507657fe5b0661ffff811061508257fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094506000906150ed908b908b614ed8565b905080801561510657506151068a8a8760000151614ed8565b15615111575061512e565b8061512157600182039250615128565b8160010193505b50614fd9565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b031682615166828d6135ef565b9050846001600160801b0316816001600160801b031611156151b4576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b03828116159082161581141594501561528a578c60020b8e60020b1361525a57600183018b9055600283018a90556003830180547fffffffffff0000000000000000000000000000000000000000ffffffffffffff166701000000000000006001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b038216178355856152d35782546152ce906152c990600160801b9004600f90810b810b908f900b6132c3565b613f58565b6152f4565b82546152f4906152c990600160801b9004600f90810b810b908f900b6132a7565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b8161533457fe5b0760020b1561534257600080fd5b60008061535d8360020b8560020b8161535757fe5b056144b6565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126153d1575050600182015460028301546153e4565b8360010154880391508360020154870390505b6000808b60020b8b60020b121561540657505060018301546002840154615419565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b6154d65781516001600160801b03166154ce576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b5080516154e5565b81516154e290866135ef565b90505b60006155098360200151860384600001516001600160801b0316600160801b6132d9565b9050600061552f8460400151860385600001516001600160801b0316600160801b6132d9565b905086600f0b6000146155565787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061558457506000816001600160801b0316115b156155c2576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612beb57600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea164736f6c6343000706000a03b77131c1b9aee7534978db824b772cc3256a400cf8d6166a19d8a58b360c0ba003a1f78d9693bcd5a58c2feefa8b6865ebcfd841e62fb82e526e188ab7882ce4190366a309a96c0dcda4eecc20e8cdafebc753c57a5133104c8cb0638f0c19063a880355d40929974909af7204e0854244aa122333f0d83462287a6328c4df3dd513c103c5ecc63d6b5b23a69e5a2d1cc54f7858681e7659e77be3b12e5d682468aec2e803f34c132a8d62712860aaa9dd7726231931ead6b0ec8feca80502a9bc71bb518e035e7c06830da5d61486d75fb45aef711f2314109257409684641035f66b4b67d7035f364edd41fd03d6d5559fe2734b2a0605628c80aa43078f2d64b4040ef6d56803d8d159b23abefbaa99d9b6c0ee3df9f8cfc34d0e5ad8f452bc4df6411ec2d04203eddd52d56b49348455db9b1d2bc13c3b9b6270bcbf20f5b76de854b94a6459bd0396b1960dd27e222527e4cb064eb8449a70a219dbaad098c06c4914f579f4831900582003decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630581f010000960096001cff4604000000000000000017aec52119ccd7cc88860f2603eb8bea9692a47fb99a8010b171af4618327466493ea64bdad070c36389e2a352014101005820034e426c4bedf21aa91acbc91530bfe652db9ebcab8cf58a5e826a05f75b61305820ffffffffffffffffffffffffffffffffffc2d6ed506d354d2a49a2f317cee393037f0acc77793cb6606c3aa841e62b2d7d400f12ae729395d21fa313a70b16dd710058200310d70cb8916de18e97192e4bc74ed0fd05842fb98dbd70d1b4a091684594c050385c4b772fc5848f05ab69adfa9172e8005820033dcad244d5755f1d2b08d84747e15a5e72a22f6c5405fba4cb4fe9e226ec004fa36f1822be7bf3e78d1871b94d4b140058200328644b4979a1fd54d6000361880e49ebfa78c8a19050b8a4fecca4b21068604fae1387dff059c22e476e6e406d166400582003ea50641ec7821f7a4e0615a834a425087d66b3b27e8304826904d6cc8e8fa05066ca06fd1b9e60d9d76686b334bbab0700582003ff92a342df489dd95855c374221e2582967b984deaafe340c4c23fd0d2bb504f1576e0ba37d5e368068c08f619293f02195b3503ad1aa595d32fba83caf31a4907aa9e79bb5f1b66df1108b19cad16f7aeed1708038b5f70a3a91f73a3d819bf5f0e0b7304d43c349ddd443e09951d3b22bb425ab10355252b34159a667de1da04e7a39f3caf68e03306710f4193113bb73b36f4b70d035124f83a6f3133ccb9ade52132236aa5f50ffcd179277b65176100c08046098e034a90d45640de6511ed3a39d1f6d60b8d2a500f9c9bee5ac0fb439a93cf30421c03e8b92938b9979f7657b399adb3d3340e6239af360b346cb67dd2b69d110f68a20219ffff03c25585b5075f18f1e87f9d934f7df1b6acee449e8daff4c8f1ed50378b65d369039c0edf77a4f67500d94efe580b3c0bd8ff2a8060b1a000563675366414b20feb00582003968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c0582001000000000000000000016fd193522bd9fd77edbffffc8811714c3765c3b7b703eb9bef866e0b242f641e8235df09d54029a7dccd085be029ebe412f466557f0500582003c121d27737c7e04e89b1c35a201228afbc590edb2b7cc7c37b1cccd911e4a05820fffffffffffffffffffffffffffffffff5e53f39e2a0a8c19db565df1f277e7a00581f0214e07e238b869c8de897078a136a012c4cfc1865f9bb2fb068d563e723b75004bae6218a382c25d79ee59665b5433b00581f0287fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5007b776b6f7f89a9b01153e6edf9f705b00581f021ba098010bf28167e34294f0d4f5362a5ad91a479b25b0e4a29c29d913724f0b01b6bdfb95c34ae42942f98c6362021902a00058200372231f0df6d604b39b3c9e0b21f04f81d032a267d8ab634f1f11407211f8c0500e15ac082551fd581c8d4ba52739699900582003018d72b691f50a1d0388afe78d55c356d4eda980fedb81e990019a266969204f207d27080ad32f53c39787886ee954005820033f34d991ba4cc16296e0e23edc9f782e961faf5c50b7abbf97dadcc9e8bde050055a477131398231df1a40476e43ff680058200386fbcd7aa48bb25b13db7fc2c791a8bce6c3c61d08b05158c6f6af3cec9270582001000e89fe00000000000000000000010e7ef369415fe992eefffffaa9da42120058200326da45bb052096e7110481c3729a44362fcde2c35f8bf9197e13b79615771051010000000000000000000000000000000000582003a7b91630585f599ae9f4c43b7dceaa11a82e83e07ca04a9993f9061f2329c0500c72de35d21081f9d8f783ab4010c951038d26cdf0783d7dd5ae5510f6718c8e2d1e969d776a612e420f1f52911e5931cc021997f703fcacafd197a9813e8d1eda7f19c05bcf2124c474f23943c597b6e9655fbc91b803c77b5a7e14566ae2886fba2f0748ee2e9e6564d584b15264b8ec5038e2cbd8fb0301fc456aa244080b2967e61fae40ce7a93d78ccc6dc6f594c91287ffc9b8698a03912ede85665af05f8d00f694b97d0ce4128b2328710ccf276e8781be836857150343ec712582b76168cee9a4fb0222b5ddc89fd311d08a3d2c7d64e4651a166f1c035470a6bc2e3ea047739dd2f52333b6369f1957354b9c0415c980a78957c24bd4039a97b39d25426509a820615931d6947b8b5165fcd7d37a01114074d52fcdfdc403ec332af67c7442a29bf444450221b07a0274550580a6b65c4523b74fcfc4a7590351087bb1af26310c3a04979b58bd128d4b63f71d92200eb9b9381a3e72dfd48103494b5e06e26dd91d8401df94d2afbdd9e6cd6e2b7f7af6ba088b7ce0f7b577ef03778149debd725a1a38d065c900070d24635a695d3d297e2e4c84a76308630fd6035184035a15e4e3d73282f850618df84ecb05f5e46b490691a314ea8f3436f427030017e6fc16f5e96004b5ca6b6110258b81090991f3d9705f7dc28c484e9fc7ee03a5a4a351624154bd6caa487570cfd25c8e8778a12e944290748fb28fbf280666036ad37e6bd9f69adf26986c532c9058c76d23c6de34e52f13f395512bdd503ce30219ffff0319bebc0d5b9b3e2c426e12f2a9f713208ba322f9864aa2b1b5a944368dce26df03395723bc577c79b2b53b32b19ff3776faec8f0df59ae3b23ae540646f2d32d5d035228cf4114183b998c8c33bffe16de282b577d944e1d309a056e481ac650394503c7b18898724891b2ba2541b13ea2eab5ecf5a4bfa0f7c020fccac95a9f2eefdc03dae8404b93fe261341cf3c3fef6f00d0c1b99cd42d9fc181c9519ef17f09abab03928c2c7eaed2d45972bbb9183db6a6326c92657bc7ce0d31f953968dbba6713503cddff768c20048446a862f463188ef7d25cab55a4648664edaf847a1bb3ab006030d8685d32ff5fafce8532465bb27d075ebb1b5edfd4a1a50c5b533f8287509cd03dc443848fa04fbf4b9e64bdbe30ec15d818bdf4edc25ff8b7f266e8af17d5bab0307fdd008a4cf94c97b558504b2c7851945ab2fc18fe842140bb3255bc1722e7d03c0a1ab5b5f4e29a6c7159dce173684492672f1c42b62c48e154b54c281a0e866005820034d838ae5a65c8684413e5b1fcdad8ad7c086453dfdc5b5a0d562914945d9704f3cb0cfea6a5225f3d651767aac185b0368706b4b36e124522853198276c703644a5b6d3ff373848992bcd821e8cc5ef80058200305c4dff12a2714b8b53f012978be28b6502cb9cf75debc3c5d698f88d1ab905006b611cf3200b3b76acefbc1dac1b9c200582003bd3c01070c86ec2f69d5dfa20e0eb72498e15246f6406724d60f2bc474ea40503df4362df57ebaf686420ab7a547d5f400581f0280cb52633fcf143703e205ff58e289adc650372f4feb3c2394fb63a8d0145820010000000400000000002884010015000001882020000000204000000000000000581f024e74037d718043e4ee5e4948658f38671f033648d671e4c2451864da8a2d4f0bfbb1ec225804fa6ab43cec0d261b00581f02d7d41f680d5328f2591f00795632a7a766e55ff0e428199037bf0b3cd2e44f4e73c958dde80f1550924838bd128c0219042100582003c22f5d19620fce14649126c5a51907c5f8e9a6b57af75a9c331c808f0b140050039754149606326c4f79a30a795d9c7000582003d649816771542bf1f465abe97c8a9e73195a7d97dbe5df4da6eaa593600e105820ffffffffffffffffffffffffffffffffd8664657acdc1dbba5cfc5f2ade037af00582003d8ef97b7aa7e801aed1c178428c53eacb13aa0b41f6f2c8fde03fd966ee7f05820fffffffffffffffffffffffffffffffffab46c98418671b9176361d098bfa7d8005820032b9c192a4ea260a57815d3b69ba50415ab39f2a8704e6d4f689e680f559a405002969a47ffb335a5988c5f5fd7a5043903fd1e7351b9464944ccc17b65807e4009cc5e8789b731486300f903a97fb4ec6100582003b3171b18daf9ce9a31212ed4faf6f734a32d2828ac1c1afec2367f320c7be04fb630fbdfa69d21b66265954f6c0ddb0373673a9f3790f26b8091ef58c4595c7c38d4eb47eb95bf2f4aeeaf8e76ebd82602199fbd0383deb6d3a9f6f3e4d31373a9d6eb5c93872baf5e792e06bd20776d4a870037a60390121b97179f77ff96846a265459df220ecd717aa39a0a72c12b703ba8460f600340fd9d1d88d3b863d2825a7da190b82c1836c507f28b2e21d7deef9cdd060c1d036fb25ca541ff6c5a282c887fac9565b0125587257e53e3515795ba45e98ce59b0219ffff03ee1e1aa658fb8c60920df74ddce91dd1d0f8a6f3ab18c60980eefeb806433f1403b90db81803bb6373cc3b3d68e54a7949f17f02262d8e4e3faea8f45cddc404e8034d1271ea4abdc2e3dc878a5fb289ea2dae6f987cb311c2f49fa5256e588f596b038bb11596e850820838d84661005b7827ed47407593996c855e59ac4c21e6631503e49796c1f22ce92cd663cd8ccee356b7520e733a4623d099594b5f2e123dd8cd0380b692f11f202873250cfe5a415c52491ef77ee89a038120b1579409baa6dc0303fefef13c3796cff6dd46c26e9d1df070508f77a45ab261f508c3e983f9e2b045032e5c79ae34200497f4f0d8d8c458ed7f8a6d2f13d8c9d3b2160604134ac64586032191502e0303bfdf725603f434780e13f50a8981811a6cf86bda7babccd83624033a9f78d7ae4ce0b01493b7be5502918e69780c33cee283758daa371cbbad51190390cac81febaa40d8eec9c1cf00c6ebcbc0d0f4ef7710fea16b48f2877ea62058033f5c39ebe2fe74689645198d3a14c67c85a3aa53059b8191ce69e5adac1163c903276619a42502df20063e1ed86b402dc3e7e7c4e2d5f7e19a7ad1c6ece812306903aeb5125574ee3697243cd18132ac4cdb41d8016326709b33b5e693b614c9264500582003d9919653a601927c0af950d3a9cc227ab7ce19b0c5eac3ab77a84e20bd6f404fc570331596ad6cd707c29f4f8cdb0a00582003525a322cbe10b91c29bb870cd3c38e9f33d4a35d237d8695052d912f383140500251e25eb209c2294b206712f95c182a0338cf2caa64e9da7d2050ab4565346afadc69cf1a7519cf4991d83c3c733ff0a403bd69f78e580eab7da9e0d19abf6f25c25dd615f79e2bf55424256a2afe1f0853036efd46199bdaa43f827731d07165fb78c71a18e66d987e29e501bf978a353c08005820039480327b2cfe2326890bdd1d5854b4ac8eac5f88839e3a1ecfd61b8aeddd505002874069c9522c7fc0b26949db10a7a003e6f6ed277165db0683a3a625a3ca4a13dd2e45aaefb42bfe58422a9c730750df0058200318f60fb8648676c7adce56102ade3b25254bafa7641b6d45d6589fce8775304f010de13fff819b46596b99d9870df100581f0232d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec458200100000000000000000001739cf8c3361479d55f6efffc7f6fb6bce365cf606300581f02c42644cfe9df7db4f9f66ddc2a14e7afc71e2d49fb7d80dbdc1a480c61044f34f95ae32c061bb8177277bfd2b9d102190808036b519555bba3fc0346356b40268693403f6f53944d579bc8f42575000096f72602197e3b03aec9b08e2aa7c86ce83f4777a5f7702f79275fcb66dfd7dc119408136ef6308e0354fb36f6aec3c0e8edbbae05d09c1025ce5599bf7bb01982279afd041894b46f038e655744c5dba5193b4586b0df1ea37e397c130e16dc65fc1a94a87d32248ac20219ffff037c753178831286f4d1f2593639a7fe69531e9a80e938ca79f82238fbb20d56a803182a3b78787fa55b9628f7b5176117b2c0b4b92e7d0a63433f03eb7e7e69b9c103e521db573cd3ca1599e6cface24543bd7b7584a64f8316a7928223b7d6e7c094038afe0b7700a605689217bb16fa87a3ff388dd51ea160a09820e6d2debac7e92d0313be0609f8fc79cbafb51b06a816b9c3b300fe618b596173b75fc615072c497d039cb07a2241f4bb6d07a6931f5bf40098244745c64398895646a70368867a099503499338faa9e931ab9765d8016f8b405f3477bae41384a3209ce50125762bae5b03fc52c593288a96831372f05e4114546473e32e31027bf249a5ecae7699b75e02039f2811e1bcb29e7511b7e8d4d24d406929bdb03523a3fa6b8f7314f9796efc6c0346732f61e74707118439bc7be73dc1ced99c53a58eb75cf8b63182db902e442100582003671d854f4c0db92567dfdd3882cfe9e64096da1233a9bb2153f97d6ab4dd2058200100ddab56000000000000000000000a8ee562be632ec9dc7cffff97b6b53e31031923b8e47eab25d58b34001d5fe3c89eeb1b909a1203f269ed600b55e798eadc00581f02acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b4a030c7ac73fb9897ea01c00581f024c7e7c7be117d923e8ed2b7cbdb713c5c901f8ee5fafddf53235ad0437984f1d44327f21439be68f32aa9a5469c602190220039eabc2ced54e36fcb1f8e2af2b39f99cf637fd15f22a9033a5d9aaa3ee3a3d5e034f47c70305bbbb734b299ec4f3cbc1dc86606fb031fd67cbff3bc686a56db0c303e3cfe8372f479600e1fd1087198873e95527013fc200d0c32e10a6991deb5a69005820032aac4e4f7bc7734b3fe13f32f940c277e8e780d309d9804e886bba4177ae804f05c4b1b82b1468c6d6558da7f557ff03392791e65ec0483f92d8603a74fe43e5d52569f836c69936669fcc6d0123d8c703e2458d45580d37fb7413cd56300a81cb2fdbe2fe04c2fee99e62dcd13a81975d00582003d8026adb3f0b39943de67e2c6bb15e0cc26ab29f561fed47880f49cd598fd05001d75f01db845d9db3c33436f33e900f02194dee034dfbc9509900386e63d6c6f176359f3ed5ec69d9fad0d62fecea5649231f97980305ceebb04b366fe035cc8cfd435e83e2e1d50b3d83002aed3370e7dfb92a24ce03758f89d5afe001d5d4ef7925b24eb5c313e8c0e8f669659d154de3d80b662fd80377896d90e9f9ef4038447d103a052ac9f32bfb11f3879903cbe6830f850d4041033bb0e0a874eb2d2884d5eb8e368891662c4780a74039782b132b60bbc2eaec020219ffff037e31ff49fab1ada0a32b272f5bc2551a11c695cfdc847ff91c7a4640c3d39b4a03449d5341ee0eaa9ee13c297201bf0f0cd299b365815d34f64627e5947475f43103b1f9459cbda042214df27cb10a8d3bce17e36003c241193d238255187f3b830700581f024851edd98ba87f6101f2a143ba0c574549a6ecca34c76f11ead81e9397934f0c27ac9081a151b5a07341de80640800581f022d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf651021684e65c4d65b79c4d9b4fe20729441502194002036d05515213ede2ba7619a8e8e6e130e51d6d553cc3b37c620bfca77282d5d3c90367ac5ca191b7bdd4ba327abba362a68ba3269ef2af82170ceb387439149804cc00582003c536c28952452ba13d1c82058ae0d67c57fd1ae363daad093f22bc9dbe79e04f0a5470f8ce8ef6a739f6f6082523360058200327377986441823f2b71d2638e5ca5e21acfc94660b4ed39268f6d8f040cac04f6e7b1fe8167c11ee1974227850b5f500582003d6a7a196273dda54d4c0e7efd6bc2e563ea621b33e1bf588a815ae0c1beb505052b4dfba30d13116f0433118b6a5a85200582003ff6432fd55ab276aff0be3da5f0ffcd7e143c7e617f6b64eb480d1bc3409505820ffffffffffffffffffffffffffffffffffa06752c0efcd039e7413a4af12f1d0005820036152da20f01019b3d3532e27e24c30a821e69673631e7fcb0d5dd5237b78605013b46fa3b1670d901945f70bc0d60b8a03d22391a202369c77d66a9444b3fea4bdb3c21e8c4292cba5c20696f768e0681f0219637903eef4041b52956da595a856926c92e3d1d4fdf0bb45e170d40a7ba69eb0eb278b03a6b189c01e0ce4c084ed2b6623361caefbd1b67a52b1f6c0e0c49b8c6c06a23903b28183b6b8c9ac5601f416adc15f9dd94e686a41cd999f025578ed0f3014a38d032f7182ee4164d21259a0ed940f9f35b679acb6a6f55282b4b8c0cb2d4c31c3e00348838e39094baa5ae8c27a429b85c04db85982d324e2c3d644fce5d36bb1aae903a63b6c605e2952ea57f6412c6260e5112ee35e1dd5947dcd1fe9c43665124a6903867e39aaabf277ec8b4ea431a869062b228957c44f6c567733df42eabed40e91035de3aa47b08b8f3534df752000887d3347b8be24b0b36ad5c2ec330a7c2c4ed003d97692ae1e96ca372e054bf68bdaa6966b132408e90392371359962f5618954f03d4db7944569f34c4cbf452fa878d4d01d8d720ff3c4fd4fedd9594a3fd37bb29038390662f3e84ee774002a1eef784e01ad642dd453bc3eec188db6ed62ca70c790398da0cdd619255b18adc865b07a06510259f984ac869564cfa44da8028d546d603604db99953f01e36304aba22a39a6b57fdb9726bb238299fb6b0405c2e1eb9ef03566d643ec3a7d350b939afea90472e58adb93df7ca069d32c14e76d32477170f0219ffff0361109cd54f42521b78efe2d81d8971e2dd8861bc4ce70dd048106d8e6cf983f103cb44824f74f8e510fdf95e9758bd80e1b8126b9fa42ce8703efb8afbf1502cef03808f73c01285ef69807c568736f36458d0f50a4799c78f206f9624c25039719103bb5a02fa828f3cef05dbfb57f584e61028825e561f422e2192ec7df8867a20650219ffff05581d0383bc100b4e63e815deeba81810d9d6921d7ad3f4b987440c84ea6660070119567e021918000219401005581e033ac23442117a03e1a39f9fa7d9d5c798bd9634e3778a89443707e7ef000c0147018ba3a825fe580219ff4d03f7441febbb24a092f21df38d55f898f166ef669af077a8a30d29e41e890e4ec8033a7c16e9870a8b58f653300df6ba113c6d9819bc8c3c749513ff4eff8e5f24ab03f4fda840d40699253dd6595de7edd1244996a322226a076b88d4e7963d1473da035e07f4f5c5bc05db698e4f74e56281bac26b92f3fd6708505b8158616f71beb2036c9c2bb1e6ff641f627d39b37f22f340f7888dbcdea68b328f56e8ba588cdf1603a8fb00dc8b59d862a48e3271d4533c255135f2b85acbf2abc6708a2011238dea03b7cc0c36b8ee2ef58a01be43d30a241bbed070d98775bf6fe2f41ba40e5584b5030bada4de2f8b01f6dd5c0f86d3e2e4965b7b29ab5deaeaa9af4bec389ff94de40219ffff036e9eb91d179e60045aa68914edceb269f2104453ef74a1b619d73a87c2074e2703d5fa2080925b5e5e8d768ce332f293daf6409a8be483814241c111dd3c6527ba03cc9623a767deb166b946677b8d0e3656362fdedb3c48cbbe4b85a4fa0eec1e3d03ea62e05a68f5e9241fd14c92963a8ae6575ca2e8578c9b13ef6126de189e7130031265699ec46ea7aaaf69519a69791b33b6907c6c056260380950f3f8d2dcead80332796f9b5d19898ca5b0d186b2be7f23b2134d39016fcc811dc792f59980837803a5e47a0573a20acdd6bbb5d9f7f8d457a23f97e314c05f83bd75e6bda9082dbd0219ffff03d5603430dcb98671ee6a5c952978d436185d507267fad3129a195b2880ac6eab032185ec2cf26df33583528167aa03262a4bf9276f9154f2b4bcc86c713676281b03fd9884e5307ce88805443a1a19216cfe7c1ba35cd8ed1ea858493835b6ea03b503298ff43a362ac7c3e6259a06fcc6e1d0edfe5777403700e81ea26650b6c39a4d033b77fff2e9760b24dd7942ad28ffdadbe0222fa2884145e2bf3068bbac9832be03d2ee942623090127a96b2b4418a3b09632ed7fdf6ec3a6e2883521b9cd9fdb8403d13735207cdbae96489c46d0597996ca47f9000aeb5d8bad466f58bca31cffb503c4228e4a97cf576f70f37830672a52a96dc91087fed7623a16d94d185eff766b039628dc0ae1456f27a1d48a62032c954c8892af74aa0982f11b610282f7fb602103a0686cb98613212aac4955e90e79c7b7be8536787805fc9553accd0854cf3d5d03fe432b8d32820e7fae2a30ee7a1b75d54ae56a8f4da9017f322523fa3cd32d390385cdd8f515f3cd335999666ce749f8d808101186ceb8c50e52be482a3267d88f03b153752f28768a3d5388b48f11d3178b770064972e92516a7c2784a7747cfae40307049d11f19341a255b49a97c187d975f86aedf58d7ead6092dccf99ce178c1b0219ffff03e0bff19788647acd2a6040cbb54dbaf819744a70d75fa5adc18b15c49ab0b11c03d0ce3ead798d76bf6d40f1dc622b08619ff804155429504a67ca6a3aa9179905037551db937751d6d3ed912b32fb9e08c225dca562ae657cbb88ad0791523b86860341d634029bdfa0a035280bd866b0c8b27f687f489535b78f6709efa537efbbee037bd49328385d47b1fa72bde391303e620c6fd218dc52af67ed485c7d1616d068032db019fcda6b36f61c15e04eecdae1772d0c3fbf284d7610ed35d24978ffb3c8037c1724ce6e17f013153110be1e1d2efb0cb2a8ef703925be0c6b520c51fe49d203bfa6fe8cf877a3d77ac36b032e6a3ec9df2e7028dbc1c3b7799b56be19080a90035e8a9aaae3046642a6d11d70402febfe2e6ad5e02578e9e7ac4d1492eb207bfd0372f17c85ab7d240df22eaf3216f48dcdbc6d09df4da1fbfc7453262f9713918503bc4f545f62f0cd92e155451432c85b5beb2edeb8962123de730d3e5f4925782a038841d625cefa6f9e837dddcd4759d1b7d75272c602cbf8509e8317752f4c47bc0394090c854b9d78b43badadb176d8a422280b3d97ee568f406e05579bf38672da038d662e7b7cbc9bc33437a4df76a7fbdb2c002d75f9d1bde109e26af355fe5a100219ffff03eee380c496116d822a6b592f7cb2b42fb5992b81dea2237f9bc703138e88c58203e1657b4f4bca026a7deec369b9915faeee2da5466013065ffa91f59ae01fe0710219ffff034cad8bc5dc9eb3ab9b105ac920b95f8f2c8911266757ffd8afb0af462cadb0ca03298d89b92dd7b5f61845b57f18f4424a76b5d62ef1952d3a4a231e64ea805859035a6106904ec070c0c3146c3b53004fb7c374b713af3a54decb9c51fe5706351503f107d6702d60b0e0f8998e1651691644b7d8bfdfb56176bee4dde9421b0c5ec0032093dc06a4999529914271294568a22740f49c3303d43e98340b709fbc0f62420384da85690dc85bc54c7aed4d8ffc5e0e7bc340d75f5fd7b15782fc8b3cf4894a03987bae9096d0b5393f74e102998fbd4b28b90212c1c7ee48103c2e4272805be0037b3c4a36c2d89dd3c90cf7c607ea4f547fa5e8a8e9dc3f7d8dada8bd72147dd8032095e6d7383a22b226561d68123ab2c1214791dbdac52229a6869d589a3b7cf8038c7c08d0acd233e2ec64fa5b7541fc4ee0c63396f7394a74c2b20e0e882f6a52036f9315416a70fc5b967f2034b62dc4ff5013f38fdc18537591448273ea7eb38703d92e544d06ecca329b2abeec9abbd14a1e201d45053131d118f0583226e8e744033eb60b9e506cf1826759d3ca4ab574ec7af1381bd3a43896f52d75c0a440162c03a297382dc39e93a33f376a22f4e72ccf7d9b9b5039956f115f683db1f56d093f031dbfec66b5dd45ebf0a7d217a13b09af51b726be65dbfd8a073dff37edb06367031e3a89995526b5fa7c7546be2f87f24ad31d5a90d43684a938e11e8bea190e9a03bb5f90b166fe08410e6a81f70e84aa61bba1c5cffb192f6944f48f18bac7842f037f257b8f881ca3b9a068f124c5e7c779977d47758727645ac3c347c8a7e2cc0403e762ec64639707cd8c88e32620676c4afab77af0506fddb9e9338a44878cbf2b0375d94e4ffd563943ad1b30ceb70ffafe652cc3ef43751275b73fce2a8f4580e903e941e8c1cd2d1c2af9e6a830eaccb9dc852eb51a595f49f8020b1374b3d9671d0320a5d0928ffed1dfe17ce654600de0a8adde1e19c6ea8d3b3ec8eb1ad4722075038e724e924921b5e1b408d19789f7a807d957061d4a2e31deabab4dba410a54c4039145304cf541f509086d369c2591052eb6c35114466bfd95d143afa2440fcf9103f37fc8726c7ac600cea8d3c0a548f9d0fbfe5c343ccf492d38ceeb0fa64e389e032e658ed64ff2b1fd07d179daa64d89e6066ba0fdb17391508b516aa8538965c4035936c2a9466d4a2dfa96c16ee3a7412be746548dd4dea4b51e72b3abeb488f8703e674d75971128d7bc12b2e4537c4d5ec14851993eccf5636d201a8810232afc705581e0340c74e91d29617db518cc91bcc79d97dfb4f10b9eed6b9a7f2b669dee00c08468428fa8d5a7003d606c59bff9ba4c408acd4bd1a03645bf9be58cc3abc35ba732a83bff897749a05581e03b202d82e408460bdd424d4427bae5c8adfccc85babec48a68d2804c7c0040103e4b302f8d306e57a338be5edba5efe74c6741ed8cc82199c5a8daaf7d370f80305581e0356675496e893230127ecdfcdd6f47502c12da422154cff2de7a11c3cc0040105581e03cfe3126e3240c5f84d3c1a1165c83583d59454bd73336d91a50d66a0900c0847014e2b4384130005581e03d4114ff9ef2f468f2564b97c647a64cf1cfdfa60ab4017ca3688b5ce90040103be8edcfb1ed054bea7dca5450a83dbc853507260efa562f2e779e101b4c13b370307be01e7e7206fe31ecee91ad75dada65ad6ba433ae647a1b9330469f7c6677c03709eb5dda2147c4fb819a20da7a29219edf23b78b89a76895cb5bb987352df3005581e0373f77543f7825a60e6a5701c432e908745ed9b08e73b0a25150b6d34c007011bffffffffffffffff05581e0305c28b46bd8e81bdfb8a5f4d6e980885d2a4af2fe0d7824beab974b9c00c191aa348024a7947673773cc0219fe5a03d10712aa13d0f3995a9804e252a7f13f0330db2f77f1262c4de517d26bb235110390d5e6127610e23202df851e12dd51e1f173df2f449ef1502f8cb8ec1946c72c0340d95d05dbc8cadc39de4143d80043af6f2823634a897954a2a06e996d6545f103b6276e002ba6533d0da0005425db938210b67c9b41bc6f2ac584aae9de0f6cab0219ffff03f3dace1347dcda686fc36606f8325207c8f43d5c89616289ec5a8c2e1392fe5e03c4b2827e222f9393dfd2c17e277bcb5015b227af2818be5ac93677e4466086af032d21e91b97d746d069e6350da7edd46e62afe84a030761354e2f946e943863a103775749f3c799933da5cccb597248d0f06452efa42a04c7b6aa22a28a59e1284a036ed81b100db3d0c10581c4b9fa794d11403c4604996c23fcb7b70d728658ae9e037dc2ce07de091a9d43d01732ad91e070fd2de1bdaa466d7f3a8afdbcb814b7eb0300ad182b787cd5f74e1e445f1c1427bbda851e4af520d186adbeb44b77638395035d0eb5886b59f11c5a89ff217828da238ad229d49befdbf4ede49356e6311ced03c34e34c58951bffa6fc614956d1fa57566ca7ee88b6ef02f1003fc2b84a27c8c035998413c1da595d78cc993f61733a859917c89d1fc8600ad414872e4c0eda24903e3b09886001963c040552d15b1b3230536f27a2913c5485a6bbe923a0cc1342a03c06d4726e1718cc11c9641586d6a88b7215be0ee05b94feedd05615ab0ed98990219ffff03e63c9ab2ed95722b19c109f03639757b6112738689d74ebdc8ecbb2c5ce46ced03a90a8502021d0c8403d106a77550fdedf8d8970d36a483174219f2ad518024e203db86accd2441d4ab15ce47241fde2b166a2c1c769042858bdab62077e3775e450395ad46356db32a3262592a3120f35f8d87e559f0d80a59a00f5f1496d79e1f3703ea0f478c5dd0d6860fe592f1064e12254146a87d7a5b32b5f69218e40543eece03f9685a4a1c22957f996b3a47d7b0d909a5337a980ad98a27ef8b01be121ebb820219ffff03a50f36b2a3aec225746cba77b256aa39baea8688ff9710f77ad371a1850b530c03d6b914782c056946db444e70e0762eadea31e3df5599237b3e66da71dc7ccd4103d52f79911ee66b756458bab97d6c63b5f089375ace9770d7cb7573287ac1bdfa038a6cb307f82845f574b2ffb6d548b3a50d4758e935abaf163a285da011b78f2c036bb9a5488e9d3123825e8ac90119b9e208035a3867cb3d6da9b6bc00678fc98403648bc1949264e264e724f3dfbb50a216cdfe05f3e95f234a81f22f47ea6772d203546b3a0d697ec1062b81522b4d084e9ec57c711cd4ea7d34bec7de09e0f1ba3e0383cd8f34312fd8ba6f85d0b5925f3a8a4ef4c2fb1dafe401bb87c9a1bea5213b03f6e8e346c25231891bae41caca569ce3119244c2a7fde5d5c71cf8fd7f3987ef03c51ef578408ed2bda43c71d7635cd6de9b456caa8f94e58ddc710393026ff931038db24e908809e8bb921ca8369d94130bc726ddb1feb383e1bb0428f10388556d03fdfe947e0412f21e731185beb4d688c76b1b25487213a889b392fe968f674f610219ffff03a60d2927f6b9b12188134cc239c40d23f9ccc70d3a7de9e09bf38b52eef3bce303433ce07a0d1bab3d582a296f83247078f7e724d1ac4092ea5111b0fb071ca02a03fb9e2161ade905fd2a2ef6bfab89ec7840ddccec045dc40070d4ced7f53b6e67031feb13beb775981d91a3062cf8e8a4fcb82d18f051a36ad7458c8e290220efca03a0e5ec6797ecd01497f609217ec925b01d05dee564308bda87e5cf92128c9a3803f674c47dd5a6c8ac69cd7ac69ddb49ced9dc58c05fa143c2cb97edccbd0b9bd303390bdbaf591b8ef8605852a1cf699e17f0ed8d513e033aebedfde8a73ebab74003179fd7a59752c138b342dfcf72466af530561333dac80ee105c76e7cde150306036a44ffb000ae3ee4b350b8845cb039cf7f9fa7b2241348b924f88218b66ab70c0348439d5859d54cd376c1c5523610849eb269b43a5433970801c31413a30b7742033fc0ea144e814572124c28db95e360a8ac2e82cecef6be56f99ded79e04ccbb803721018a806deb51a2dd6c4e4108ec19b9bfa13018030cc4787000df532f83b2d03be9cafc91ce5c493bff4195a711c3d027c59f96fb9de36ea791652d9e0ebefbb03d92b63a22b09c70eec21638713c888e08fc3094601fa959df16f5421bb0997400360cbe274a256abecadd967d1c9157250a8a6c9d9a7b732034dc42eb59f4337160356fbcad33cbc58a3f6c1d2a8bfea491d8dce5396e7d2c28b37c03966da6564ff03b82d4ee8a3bd099298354fd419779e9d9b23437e8eb0726503d635243071300a03489189e2fc1544cafbc038b00d4756dcb85fd97e490f66fb118509c17f3709cc037727b83a3c075641e096e7d358b4d508c02d94bf69dcf0e80c850aea57e3be5c03504b9e18153c54818674884cb6605cf7c1d2f51018ab2b8ea4cce38a64056af1038562b0206dcfdb03a3c955ab6787a612a6662b336db326533840332caa4b31280316fff45014600e04c5544653c60728d9f86e6b6629c64d09eb5faa6e95447e9d03421172bde32acf8d6525a1eb119c7b9af525df582ad3f66cf970ee5b40d4c1a303877aeaeed643b247b01b8f2f8fcc7ea584c37668f85dc230b45a10530ecc1fd703f7cccf2a3bd25254e8cd67559b9b8b3a510eb8a6298f45925e981230bc82f96c03c82854e63d06042387aebf6e0525c6e827ea0567f95ba0e84fbbac7b6e3babdd03ec5bb81669a23bfeac73bc9ae261a303e4233afe3f91999b6edbf44699afeffb0393f6766a00d101d1e2ccb18b17ee5d3c9169e414d348f3e38ea4b6ad51d249c3032e019ec2455ebd81fd8accdc332db5a3dbf498d5e8ab2424547c72e4bc0f754d03f3167c7ec060c7e8e4d4209142673800a2beff378cd85d5c5ab9fa44ef23f9950377ca9d123a6f1a926b0441413ead4ecfe64670147a3793e90fc40a83a98eefbf035c6b68124718d0f0ad938e089409526f2a61a3c62bdca0f15ba23d696cb9c3eb0363b7cf7f9aaf628c5ea5b0b014eb143ab8a339d6d5a9ca66cab5c07d4e9930b003bb38a3268a4529afd2b1246dc9bc1b81db56195ea458c9de3751bdef4f06794d03c2b8aee74e06f9b7719cfb835463672be34dd8c9f51a4ab228f8dcdd704773dc03fb9ffa6e4cb446cdf0fa328bb4b998ce480c24fd9fe2507df65fe11cc7601113031ff9f90f0646746ede0dd3000ee9eb92e952a2f5a19149e0f9950a9d8268bcff03111fa6456d535e473ab5cbe31075d36156b25f00be25d5fa54ef80a46b75e6a50360794bc9db223f3c2148276e90d32e3e4a23d302022f15b0b11bd49cc049b0f803e67366d9f8df4a548372165a810704bffc86a422e8b568a398556d63147c53fa03dd1d971baa9697b8962175d0d3d5897fad93c9129dde88bf91896fce83bc39b303a4d23ce45ab615a9bfff79118650a7e82cc850858c1bd43b8c6d08766d3ed44f03194bae0a4b7d6fa060b99e6f5c97b8211109d70a87e960efdf87ead447fe09bd05581e03b66d91f8635919e84725f61e09f44d36e8cd16c45dd605d495dda732600c034747e2c05e2f053b045916166080604052600436106100965760003560e01c80636ae4b4f711610069578063803ba26d1161004e578063803ba26d1461015b5780638fd3ab801461017b578063fa461e331461019d57610096565b80636ae4b4f7146101195780636af479b21461013b57610096565b8063031b905c1461009b578063168a6432146100c65780633598d8ab146100e65780634a931ba1146100f9575b600080fd5b3480156100a757600080fd5b506100b06101bf565b6040516100bd91906115b2565b60405180910390f35b3480156100d257600080fd5b506100b06100e1366004611075565b6101e3565b6100b06100f4366004610f90565b61021d565b34801561010557600080fd5b506100b0610114366004610fe9565b6102b8565b34801561012557600080fd5b5061012e6102e6565b6040516100bd91906112dd565b34801561014757600080fd5b506100b0610156366004610fe9565b61031f565b34801561016757600080fd5b506100b061017636600461104a565b610331565b34801561018757600080fd5b50610190610476565b6040516100bd9190611268565b3480156101a957600080fd5b506101bd6101b836600461110e565b610593565b005b7f000000000000000000000000000000000000000000000001000000010000000081565b60003330146101fd576101fd6101f833610700565b6107b8565b6102138686868561020e88886107c0565b6107ed565b9695505050505050565b60007f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561028757600080fd5b505af115801561029b573d6000803e3d6000fd5b50505050506102b08434853061020e87610a65565b949350505050565b60003330146102cd576102cd6101f833610700565b6102dd8585853061020e87610a65565b95945050505050565b6040518060400160405280601081526020017f556e69737761705633466561747572650000000000000000000000000000000081525081565b60006102dd8585853361020e87610a65565b600061034085858533306107ed565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21690632e1a7d4d906103b59084906004016115b2565b600060405180830381600087803b1580156103cf57600080fd5b505af11580156103e3573d6000803e3d6000fd5b50505050600060606103f484610a65565b73ffffffffffffffffffffffffffffffffffffffff1683604051610417906111f2565b60006040518083038185875af1925050503d8060008114610454576040519150601f19603f3d011682016040523d82523d6000602084013e610459565b606091505b50915091508161046c5761046c816107b8565b5050949350505050565b60006104a17f3598d8ab00000000000000000000000000000000000000000000000000000000610a77565b6104ca7f803ba26d00000000000000000000000000000000000000000000000000000000610a77565b6104f37f6af479b200000000000000000000000000000000000000000000000000000000610a77565b61051c7f168a643200000000000000000000000000000000000000000000000000000000610a77565b6105457f4a931ba100000000000000000000000000000000000000000000000000000000610a77565b61056e7ffa461e3300000000000000000000000000000000000000000000000000000000610a77565b507f2c64c5ef0000000000000000000000000000000000000000000000000000000090565b6000808080608085146105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d2906112f0565b60405180910390fd5b5050505060448035602481013591810135906084810135906064013573ffffffffffffffffffffffffffffffffffffffff8084169085161061061e578284610621565b83835b9094509250610631848285610b0a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29061149b565b5060008713156106b0576106ab8382338a610bca565b6106f7565b60008613156106c5576106ab82823389610bca565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29061134d565b50505050505050565b60607ff0ec779b0bcda6d84abf99ee2c67647d1100ebbb553a9c2d1c2ba1579592832c8260405160240161073491906111f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600073ffffffffffffffffffffffffffffffffffffffff8316156107e457826107e6565b815b9392505050565b60008415610a2b577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561084f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d290611407565b60408051608080825260a082019092526060916020820181803683370190505090505b600061087d88610c09565b905060008060008060006108908d610c10565b9250925092506108a1838383610b0a565b93508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161094506108e1878483858e610c76565b5050506000808273ffffffffffffffffffffffffffffffffffffffff1663128acb088661090e5789610910565b305b868e886109315773fffd8963efd1fc6a506488495d951d5263988d25610938565b6401000276a45b8b6040518663ffffffff1660e01b8152600401610959959493929190611216565b6040805180830381600087803b15801561097257600080fd5b505af1158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa91906110eb565b915091506000846109bb57826109bd565b815b600003905060008112156109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d2906114f8565b965084610a0e575050505050610a29565b309850869a50610a1d8c610cae565b9b505050505050610872565b505b808411156102dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d290611464565b6000610a7182336107c0565b92915050565b6040517f6eb224cb0000000000000000000000000000000000000000000000000000000081523090636eb224cb90610ad59084907f0000000000000000000000000e992c001e375785846eeb9cd69411b53f30f24b90600401611295565b600060405180830381600087803b158015610aef57600080fd5b505af1158015610b03573d6000803e3d6000fd5b5050505050565b60007fff1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000007fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54828073ffffffffffffffffffffffffffffffffffffffff80871690891610610b77578588610b7a565b87865b604051958652601586019182526035860190815262ffffff909816605580870191909152606082209091529290965250902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b73ffffffffffffffffffffffffffffffffffffffff83163014610bf857610bf384848484610d1c565b610c03565b610c03848383610e12565b50505050565b51602b1090565b6000806000602b84511015610c51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d2906113aa565b50505060208101516034820151603790920151606091821c9360e89390931c92911c90565b6020850193909352604084019190915262ffffff16606083015273ffffffffffffffffffffffffffffffffffffffff16608090910152565b6060601782511015610cec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d2906113aa565b5080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901601790910190815290565b73ffffffffffffffffffffffffffffffffffffffff8416301415610d6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d290611555565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015273ffffffffffffffffffffffffffffffffffffffff83166024820152816044820152602081606483600073ffffffffffffffffffffffffffffffffffffffff8a165af13d600183511460208210151681151782169150816106f757806000843e8083fd5b73ffffffffffffffffffffffffffffffffffffffff8316301415610e62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d290611555565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152816024820152602081604483600073ffffffffffffffffffffffffffffffffffffffff89165af13d60018351146020821015168115178216915081610eec57806000843e8083fd5b505050505050565b600082601f830112610f04578081fd5b813567ffffffffffffffff80821115610f1b578283fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168201018181108382111715610f59578485fd5b604052828152925082848301602001861015610f7457600080fd5b8260208601602083013760006020848301015250505092915050565b600080600060608486031215610fa4578283fd5b833567ffffffffffffffff811115610fba578384fd5b610fc686828701610ef4565b935050602084013591506040840135610fde816115bb565b809150509250925092565b60008060008060808587031215610ffe578081fd5b843567ffffffffffffffff811115611014578182fd5b61102087828801610ef4565b9450506020850135925060408501359150606085013561103f816115bb565b939692955090935050565b6000806000806080858703121561105f578384fd5b843567ffffffffffffffff811115611014578485fd5b600080600080600060a0868803121561108c578081fd5b853567ffffffffffffffff8111156110a2578182fd5b6110ae88828901610ef4565b955050602086013593506040860135925060608601356110cd816115bb565b915060808601356110dd816115bb565b809150509295509295909350565b600080604083850312156110fd578182fd5b505080516020909101519092909150565b60008060008060608587031215611123578384fd5b8435935060208501359250604085013567ffffffffffffffff80821115611148578384fd5b818701915087601f83011261115b578384fd5b813581811115611169578485fd5b88602082850101111561117a578485fd5b95989497505060200194505050565b60008151808452815b818110156111ae57602081850181015186830182015201611192565b818111156111bf5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261125d60a0830184611189565b979650505050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b6000602082526107e66020830184611189565b60208082526029908201527f556e6973776170466561747572652f494e56414c49445f535741505f43414c4c60408201527f4241434b5f444154410000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f556e69737761705633466561747572652f494e56414c49445f535741505f414d60408201527f4f554e5453000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f556e69737761705633466561747572652f4241445f504154485f454e434f444960408201527f4e47000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f556e69737761705633466561747572652f53454c4c5f414d4f554e545f4f564560408201527f52464c4f57000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f556e69737761705633466561747572652f554e444552424f5547485400000000604082015260600190565b6020808252602d908201527f556e69737761705633466561747572652f494e56414c49445f535741505f434160408201527f4c4c4241434b5f43414c4c455200000000000000000000000000000000000000606082015260800190565b60208082526023908201527f556e69737761705633466561747572652f494e56414c49445f4255595f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f466978696e546f6b656e5370656e6465722f43414e4e4f545f494e564f4b455f60408201527f53454c4600000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146115dd57600080fd5b5056fea26469706673582212204cc6b7a366a0a6e22a04d2d8d2b0410ef6d76b5c47d78862c5dda3d6644d33db64736f6c634300060c00330605581d024a44b4d2b5f6d242dda9b7b806263cef66b2f139670929bb28fc7fea0701191616031b460c826a854d61dca82f718e088b8b4c4082ffeb93752d7691bc62c51dc0280605581d0248da54ef2abcff5a6301b47cc3692cc096a0adad40101738c69779e707011bffffffffffffffff0219010805581e03a0ac152d3ac0c9c9c5005c9d692bd5ec77014cd36d9486547a8ae0e5800c044718c6b04dbcde8303201700f92a763e27560f6ea05eced4cbe1d48deaa7943c683c4b4f49cb13106f0342fbb8ca46729b921d60dd79bc5e955d37ed77c2f6b882cff6874fd18527bf8e05581e036c5bc4dd61532c76ed680ce6a453319986bfa089b6f9be89f1f79574c00c02470305d37cf544b805581e035f496c54a63e3e6452326d58130075258bda3b6f8cc4c367cb565d26e0040105581e03ad44e4916d57aa025a1cca3fef327c942a8ff7d793403bcdf72a5912000c024717a681984510000316c07421137d6fca67dbf763e0cc23c12a58498d88d94791d2a6c260c562bfa005581e039e4aea363c26f33a85ab6a01b8b36e057abd6eef33bbe3118a012cc4c00c064682e7c0c427e805581e038b4747193ef8e3a8860fc395cafe5c98a3f0131092943d5219e3431a300847038d7ea4c6800005581e03ed21ee4b22c2d91a89ee20876c15c9f2625971db8ef0d1a8976c4b2be00c01470128546a26c40005581e03d16dced3be69b2b03f5944d1abef9bda9e457c9d4deb7453efb8eafea00c03467076e2d3b0c005581e03fe59d2729a8994ae4ca677efca10032142fe70091fb49ab30acfc281e00c024672560413755003eaa13b8d3ed72aef2a071a3d3b532ea9ad4997230aeee9d8150ef68f5dd83c8f0219fffb030bceeab60ca03c8c5b7cde19730f866a9ef38c0a37643c6d39546f7af96d51d10219ffff03a6006aa40a58141a519795380e434e94825fa08b5248839b2ed7b3693a4f3dfc034bba7ae1a355704b85c51cee8cf4f4dba999cd55f3604ddee93057f36bb1dee703b7832ce24ebb6fa5fdc4ef76a4c4ca5d8142648eacfdd15746d067e1ea257f6903e0f549cc631a96803e664ca36a2f7dbcd1d0ee4e066a15510eccbd894ae6557a034b75e0fa02f80cf3eadb5d800c649fe6ad3e0a6aee768f1b25a7ca8cc7f8d0040219ffff03fceec48695c750f27287986c72e35e27bebf4e1639c4fc9f65bc2eef741a5b33036f75beba82fce098703546993bed9689151fc797b4e88611ec24e971d03e8b9f035839d648b24acf37c951e7e5910e891014ece1f24171af0f522e6a6c13bd677b0350fdcf647a78979d158556530db8f37fd7ec3225aab5f1a5d4c4e31f3d2f744c0219ffff03a5358cc2454ba4c7f154311b9ff6bb01071bf9fdf23d4108c919e33423d89f2903d40009515ae21d8a43b91420a2fa991fe93effab28a8760a9698ea98773f19180360a498da729e25da3657699c97a9ace336618417c2e912914d938db3e84f2f5003873e97878802dda957d633ea49395ae2bf9103f5fd8f8000f9182ab43a04364503a9d86a2b79a6103b84dd6ef12bf5bf3787d3b0c098a6fc761cb38beb1e1ecd0b03d238cfcd2b28a4482edba8e80bf9aa0b003a3b33497d2fcdd746123e7d59dda403c2f88297f853d6310db54fe70e152c70c3ec111a81eb851e9d0a76fa9c7ad440030ed761b51c0263802d083b432009de2ec65751012f43d5f330c22f0b96e1e55d03e2e2cd5b203a4d72486e39d17cbab7d02b5201679aa17b6021c92936552f92b603b8251ed3f6a3af683c9f0ccb5236487067c747929db09befc9b68ac86281b073039690ed0c011eac200370fa571c5c639e28d03eb89806688d11412f92d174d6d5039bf266bd1cddd39435a5a3399488d55af6d11a99c3e90e0d27608ed8e38c8774038e590efdca91dcf151999342d356c277f277f16f9f211a4acf7b6f7f6213355b0219ffff03c365ee5441e8c48180b1ef35944b8733c4b3d37ebd154346b1e6001607119b2a036dae95f064b6da0ee893baac0078e75d3e19a70ce28646dab697c976062de0ef03c3ecd3ff3a9607e48e0c822d02cf6c5cbce7cd0ea15421f6d5750c073e9ebb3e03b3ff8f58edf5ddf6d4adf5c32338eacfb112cbfc8c971cd6079adbb7a2dbaa4303451a836a4df657623c87c2104e20bbbe4abf0d83b8ea7c70debc89ca4160061b03a647f616918dd2435d88cc788973431fd204e7f1de9b1de1b17e0b67df230dc50373ca8e89bec3ec9c59c9843a49b1bc3ca2b11a9cb238b5b83e05e4cfa01edb1a0219ffff039fb9394ff3933cabb7b457c93b0e5a424a1033c8a90c88449fb73d1cf507dfe003485709238c8f1f7e476de6f96806a99b795dcf4d76d53f438fe51f66763b752603b3037c5785bac94975d795ee6423b90a25a8899216d75f82284335948d09033503752a3f07b73a10e30e742fb436c8dc00758f76cbbc2efad6b9b7d7511c0322ef034e99c4cfd4cba2fd4697bbed754f92fb035e0e838101cb394e5a0935a1336abe03e1834aaec0d499aaa5a5a64ccd8d197b61c59e78793516bc903a390425112a5503ec737642c0a734faf20b72589473b4f48d62ebd2f4c0ffb0b33babc8ba09654f0347b6f41b14a49bd35053e28d7a065640a4359b4a60fcccd4a978b1a7ebffcaba037be2065d424856b81a06ce14bb23c6420688036f474fd621bfa3824bd90e7b7b03058c4f262b30de3eb651c4337f3aef21cba06a78bc87fc21d05fa4698a7e174b03f849fd05668787bda96337f42c349b4f7a7434e767b3de7567a65628771ff2d603c9082a60da784f47342cb192621aeca062a37bfe535bc629e37fcb6b622c8ee4036f57630ac7b7a0e77d7abfcba4c33b05436e5a64084296b45a5fa9b268ee63e8033256528c21d48395c1077c77f2b117dfd2a153aac00ee1ccf05d9cc7014f66a7035b4ab4e64e2ec5d0c42b68ba35948e2156783e365d7fb5dfaf665058c2e1eda3034b2740f5a6ef8a9f22bdd8fbcd19065833e209822193d5659636808a0f3c18fd03ca4bd94dfc4959317e8ed501958b680ba2b9923515d18f17f937dba6ea8eb15a03bdcf276694f341508da369e08f3d3824a32bb02547129e22ce135128460239c4037203ee0eccf89e5860bbe12c1deba265d28ae628dc0560abdff65db321301b2e03cd172e47b3df6ea808baa836772b3559747eadf1e1380319374f03276f7b800603b0fc2f77f4db7a13edfa8f2af21623fc33c665993b0cf23f41db0511e274de9903878d771dd50c40301b9c3f0ad7a73bc5f36c33e3a34be784056ec5b0c22fae6803b82f18b8043845e73cae063e9ffeadde3ba43031e54ab38da9902795d13284b003b97d9d71abef205f5132943fbdcf635c2dd7ee80350e2d8872b0f81115bc4a2903b5403b0da7bf9724a80e0bd78d446fea2c707547725531d62703713ba91bb9c80317f71902f2f1e0ca9871b58316303ea28cda7a3ddbe96ec34f12e76247dac08d032ab28ea259958c87dc987f622506bfe202450a4770f0430d71dcc734fafa40950322591b495bef360943f9e060e8b4f4d992341f06e53bce5e2323f5b88f39a2470357f5b601c39d224acbc960e5714e6fe30c6ea7ee80d1222e861e44545a09d1c803ff4c9f5c0e59aff022295b380d934e2857a2dec6c6a4e51dfb08efc449c763710306e7c49c06259ffefe69c91139058ddfc9c7979f793f60b6c8a5f626c01452fa05581e03d9ab0290a9dd356f9096641df5ce47c9f6eec327a11a153c78dc7b87700c01465d939a103a2c03a522a77020d700e5c514ccbe69e3a790f5c6394b87eb7736ac140960181d183c031b460c826a854d61dca82f718e088b8b4c4082ffeb93752d7691bc62c51dc0280605581e03c4b63b3c2dc8d1ca50adad69438e450c26647541382697608794da38b007011bffffffffffffffff05581e0379b29cfb68efd058e64ea5e9e1a4ffce49e676bd44758c9de3cbb696a00402039fa4285c7e5dbcd8918901616b84710fd6622b769ef71e53ddc6b1ebcba75d1a031f8b67be329f6419c9282095843235301b6b3475e42bc9e3262b646aba8072060605581e0360b12e35e192fabb92b653f436a8d93a3fe4a31c6f0e0bb9b6aa660e9007011bffffffffffffffff05581e03512e5fd6aa467ba0275da97cb7898c314203ff01162ef999c2e6e85ab00c014744e45d81dea8480307e2c6b61c9af478c838e0cd185c69d3833252bafc6b482672d34ad9dc615c9205581e038b5dded3dcfdf54afa0824f0a97c21abf0f2645644c8c079a7e7d279900c174711e8334ea5ff0505581d027c3cf7663beb2da7bb9dc1c18bacdf107d0d93633f4e9071ca0f312c08470accb0eb3c140005581d026526f3239521117e32e590deb149db493bb5c665ac3aae6b493c9b20040104591045608060405234801561000f575f80fd5b5060043610610115575f3560e01c80635c975abb116100ad57806395d89b411161007d578063a9059cbb11610063578063a9059cbb14610243578063dd62ed3e14610256578063f2fde38b1461028e575f80fd5b806395d89b4114610228578063a457c2d714610230575f80fd5b80635c975abb146101c957806370a08231146101dd578063715018a6146102055780638da5cb5b1461020d575f80fd5b806323b872dd116100e857806323b872dd14610181578063313ce5671461019457806339509351146101a357806342966c68146101b6575f80fd5b806302329a291461011957806306fdde031461012e578063095ea7b31461014c57806318160ddd1461016f575b5f80fd5b61012c610127366004610e4e565b6102a1565b005b610136610347565b6040516101439190610e74565b60405180910390f35b61015f61015a366004610edb565b6103d7565b6040519015158152602001610143565b6002545b604051908152602001610143565b61015f61018f366004610f03565b6103ed565b60405160128152602001610143565b61015f6101b1366004610edb565b6104b1565b61012c6101c4366004610f3c565b6104ec565b60055461015f90600160a01b900460ff1681565b6101736101eb366004610f53565b6001600160a01b03165f9081526020819052604090205490565b61012c610622565b6005546040516001600160a01b039091168152602001610143565b6101366106e0565b61015f61023e366004610edb565b6106ef565b61015f610251366004610edb565b61079f565b610173610264366004610f6c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61012c61029c366004610f53565b6107ab565b6005546001600160a01b0316331461030e5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c655374616b653a2063616c6c6572206973206e6f74207468652060448201526437bbb732b960d91b60648201526084015b60405180910390fd5b60058054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60606003805461035690610f9d565b80601f016020809104026020016040519081016040528092919081815260200182805461038290610f9d565b80156103cd5780601f106103a4576101008083540402835291602001916103cd565b820191905f5260205f20905b8154815290600101906020018083116103b057829003601f168201915b5050505050905090565b5f6103e33384846108f7565b5060015b92915050565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f19811461049b578281101561048e5760405162461bcd60e51b815260206004820152602d60248201527f45524332305374616b653a207472616e7366657220616d6f756e74206578636560448201527f65647320616c6c6f77616e6365000000000000000000000000000000000000006064820152608401610305565b61049b85338584036108f7565b6104a6858585610a50565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916103e39185906104e7908690610fe9565b6108f7565b336105485760405162461bcd60e51b815260206004820152602660248201527f45524332305374616b653a206275726e2066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610305565b5f81116105a75760405162461bcd60e51b815260206004820152602760248201527f45524332305374616b653a206275726e20616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610305565b335f908152602081905260409020548111156106155760405162461bcd60e51b815260206004820152602760248201527f45524332305374616b653a206275726e20616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610305565b61061f3382610c71565b50565b6005546001600160a01b0316331461068a5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c655374616b653a2063616c6c6572206973206e6f74207468652060448201526437bbb732b960d91b6064820152608401610305565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36005805473ffffffffffffffffffffffffffffffffffffffff19169055565b60606004805461035690610f9d565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156107885760405162461bcd60e51b815260206004820152602a60248201527f45524332305374616b653a2064656372656173656420616c6c6f77616e63652060448201527f62656c6f77207a65726f000000000000000000000000000000000000000000006064820152608401610305565b61079533858584036108f7565b5060019392505050565b5f6103e3338484610a50565b6005546001600160a01b031633146108135760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c655374616b653a2063616c6c6572206973206e6f74207468652060448201526437bbb732b960d91b6064820152608401610305565b6001600160a01b03811661088f5760405162461bcd60e51b815260206004820152602b60248201527f4f776e61626c655374616b653a206e6577206f776e657220697320746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610305565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0383166109735760405162461bcd60e51b815260206004820152602960248201527f45524332305374616b653a20617070726f76652066726f6d20746865207a657260448201527f6f206164647265737300000000000000000000000000000000000000000000006064820152608401610305565b6001600160a01b0382166109ef5760405162461bcd60e51b815260206004820152602760248201527f45524332305374616b653a20617070726f766520746f20746865207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610305565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610acc5760405162461bcd60e51b815260206004820152602a60248201527f45524332305374616b653a207472616e736665722066726f6d20746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610305565b6001600160a01b038216610b485760405162461bcd60e51b815260206004820152602860248201527f45524332305374616b653a207472616e7366657220746f20746865207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152608401610305565b610b53838383610dc9565b6001600160a01b0383165f9081526020819052604090205481811015610be15760405162461bcd60e51b815260206004820152602b60248201527f45524332305374616b653a207472616e7366657220616d6f756e74206578636560448201527f6564732062616c616e63650000000000000000000000000000000000000000006064820152608401610305565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290610c17908490610fe9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c6391815260200190565b60405180910390a350505050565b6001600160a01b038216610cd65760405162461bcd60e51b815260206004820152602660248201527f45524332305374616b653a206275726e2066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610305565b610ce1825f83610dc9565b6001600160a01b0382165f9081526020819052604090205481811015610d595760405162461bcd60e51b815260206004820152602760248201527f45524332305374616b653a206275726e20616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610305565b6001600160a01b0383165f908152602081905260408120838303905560028054849290610d87908490610ffc565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a43565b600554600160a01b900460ff1615610e495760405162461bcd60e51b815260206004820152602760248201527f45524332305374616b653a20746f6b656e207472616e73666572207768696c6560448201527f20706175736564000000000000000000000000000000000000000000000000006064820152608401610305565b505050565b5f60208284031215610e5e575f80fd5b81358015158114610e6d575f80fd5b9392505050565b5f602080835283518060208501525f5b81811015610ea057858101830151858201604001528201610e84565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610ed6575f80fd5b919050565b5f8060408385031215610eec575f80fd5b610ef583610ec0565b946020939093013593505050565b5f805f60608486031215610f15575f80fd5b610f1e84610ec0565b9250610f2c60208501610ec0565b9150604084013590509250925092565b5f60208284031215610f4c575f80fd5b5035919050565b5f60208284031215610f63575f80fd5b610e6d82610ec0565b5f8060408385031215610f7d575f80fd5b610f8683610ec0565b9150610f9460208401610ec0565b90509250929050565b600181811c90821680610fb157607f821691505b602082108103610fcf57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103e7576103e7610fd5565b818103818111156103e7576103e7610fd556fea264697066735822122036575823465540cb1277c31fc2caf8a9189293837511e06209ac0d70400a979364736f6c63430008170033030ef6d3e7960a317c69218d5d92fdce0fff31359989e6286e3df138ebd3e077ab038f7a887c84db31a58a7a0d0e2b9cae5f46976bd7c5746d61462c159ef9beb7fd037b222a6da811fdfb74c6e9b5d66dd45b4f780d1bd22acc4bafeedbf5b13c34d3005820033c3826e1f77dbef94454169dc41345d1e7c3c7a14cf121e9ffe4af30076ae04b3385228ab1b849575293e1005820038235766f40646125d712d36a80881b10f838ec254690bdda6456f286ec27f05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03790493f4e7ab113d43110a0e0560ccf96c4f7bf14b7d08bdb63cf05dd967e13e0058200392d39d2135ebb0c7f898ae40ccdfb16ecb9e2f8210381cd78d89fc4981c6904b0b5f229fdff9d6cda435d200582003bc84877ad7abfca7957dd2e39622e71aa59d4ca3d7ce0c96d84b6f6a5bdf705820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003f4ffdfcf6e7f69781af66d6d1182fe785ba203637a5afa4fe186f29d801eb05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f0289439f5413a769307d83a5ab107a9288f697e5500386e7632b78552c05e35820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02f89e54f5451c1214fe6b1acaaf91666058154883794b6cb9e3d66aa70b314c13e5b251ffc3522bbf655de002183003dddfeb32b7f496582f6f3b991e19486e644a391ee45eb32c4bfe0fae221a51240219f39200582003c267cea428e8ac6981847912a61e91dd8a81408df2120fdbdc18ee5738db505820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0058200386ca55ac77e42f21d8d4b4f9d9f8b470857abdb53413f4f0b1ff977210e2105820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff032425b7cc50df3122b79c56bb6ed94aae8706786a3fc241b67a4121284b7a93bd005820032b1e2be0efa02a0adad205ad4bb7958ce3ba49e2b4a0b886580182c7cee3605820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003c8fff7b3b19212c06ba5cd02a40e8e35caad1e4f66030a939b436c26c904c04bfb822c05ed3c6632725a3800582003b5f6ad52279217dd61a2354ac2e6f185a14e8022baa685bfcedd76a8d7e0305820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003f2f989a56404bc1f6b91dd7f8cbedd6f8055dfc7c74e7bc988945620f3fbc05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0368c5d0368755d261f1f9a1669660ce112928907bca9c1ecd473061d723429ea9021929d303f57ed86c6a30a714f95f13227aceac26c29523901d53fc490fba21b4a7eaf3310348a3fa607473f9c44193783186048a09fec318ae1e0085695dbf6dbfa0956607039f1c7528b052bc79e1b670c3dc4bbf8b95dec056f2e2b64f12a65336f2cb0f0603622b7a43821b96e38851ca23b32eb7d6cccdda87034474edb1beadc877d0bf5f03a8a4a943b7378169804a11f35ef9a480a77ccdb3ad09463511f15347f6220ba6032d63edd8657cbad64271f9dc865c8b19a638f3b674c49ee6a42cadd59ce6c9870058200367dc8a9205ffc5917d62479cc780f8a26f9c7c4888c021204281e00af14ee04b0f8eeb71aac39ef7a9394903d6ebe4e8cb46105d5cfb523ed0411f04ae53398629e81c0cc5b40b1f3567cb9b00582003464f451c68b0bb0b14ab97bff7d5d7a06f1d5f220a6481ef7cc737ca23b8b05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003f02809787849eafe5457bab1af5c01c25b4e1a7c19fca2e214aac9e5c550c04d01838810f254c24ce8a92f5660005820030b6e70c090a7b20f9eb912c5084325285c918ceddc49c3c8003bf3a140d0205820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003c43f77d64a206b64736c351a36e75d815d084672625b8edc5c3455db40f1304b068d08401270e02ec65d470058200341effc6778304fe0c4f2037d7ba9ff35e62c3211a69a05e4035684f0ff65804b984f9e6c1e85048c6ccb7f00582003933b78e9e0c7c0824f5f4836a06a3babc51260820e89e2c2d5ac463c86b8b04c1c0ae8955648488a18f40000005820032091dee59f5a2ae4d2b59babef3f726aa87d7bc579d964cf7fdd83e562b9305820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005820032ebbf4f7ea76d48e198e701cc06ad683e577e4645d7700031024252d31ec4045829e12ccd000582003dba0d6754d0a91113bc40f5a7f987e0a8f351e2a73cb21b1ffc1fcf0e30cd05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0219ee57032fb66ec702797efe4a32d372876b70baac6b3c9f2ea2efa52153695d55dcf4f0031ae4d928f9deb5753204775c1bb5ce9f1f54130b3fd7053b8f988c762c48d69b0326046a9dd92cb8859d048845d1c5cc69d019c0502c2967b21ea1c70aa777ef6703ecb601fc06dbdeda1cbe6ba391625d3e3017871e8baf2574d33e073e4924528a032b413a401bd7298f128397fb7cfdc4a1ccc0259a5a00722a68f507e0b0ba40e20219ffff03f3ac01ed40a5ef1b236c5713eabcf0deed107c1b04be4316d8c6c317f7c220060399b78e44ce40b92bcfc97cad33bd3aa9bb345b946aaf2aa7f964fe13899c380c03714f112db8a13b4c006d26c0083aeb598d92d73a77aa69c170e7f2413a3fcae603f833089298efe7618d053343c2d0fbf59f922198ead8fff9b6257e4449d9ad0203e8f44bb7c36439a3248e69fcb9905aeade3ff10933be99726d457d278353d8e60308321fd309646536899cec0e93279b2d8270fc98e83f70a5c10570a0cea617d603070c9307fd4c9ba97b87a0781a3255b7d4d9c721f63d071102fe74bb3b57891b03f40ddec684a5ce4a98cacc9be705aaa285b2088a3d10eba6e7439ea7e2a40cd603e2311cc9eb791dedd7161aa43de19292580af5b84fae5e79c1a7df5b21b9e0cd0380cc8fb0d1ed4564eac95ac88702c6f8bb9ea79eff28104c61710f2804aeb5af035c9dcf7da7688808fef00a5d26739a140747017521cf2a54bb1620955eec3479033050d0b3c30f956d4c1716cfed5a9fb29c874ecae4d0c0ebd6db9f279095e42f00582003e16d14d7ba32f45fef8fb6b1b42f9220f988d707a8cb3d365641fc9f60a81045178592cf3900581f024b7416de84eb8c25afa4e09e512d1145462041f20fdf7b140c3317f31bbc4c0813f3978f8940984400000003513755985c6d5277f635bee6c5a0998619438ef86f3c0dc28e1e6de25a9f493201410b02191100031fe698c16eb9a8731b081b4d08e077123cd1aeda6dda380a2c33b5f5171a01e00058200365c8d2bb3d47ef7fb3bbc3864f233ab17e402cfb343fc33d3e5af0475db4d04b30b8186f032e4fe86200e800582003ba02d732d98be6245a4ca1a35faee206e3511f6ffbea5e4c15d76a635cf3004b01b0fac1fbaf00a4ff7f3400582003d582414561f5928afb9bbf3d4582c289fec27dd570c91f47b16ece7d5011d05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003d74e135548d668f078c208969f16b4c9eb883866d3f976457fb9cc0f769b605820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ac257f634d58696802796cd2bfb622a0acb1f2a2cfbd24be16dfc4327d54a3a40058200342712e383da2e0e688cfa4f4b37062cd6e381403ec2c1f5c24ccb6bdfd3c404c020491f68f10b98a9255c49d0058200391fc84e89078e4bdbb2407809170816a4832bcf5452d9ddd911cbd0b1bd7704b3e09de2596099e48e9ef8d0219db5c03150061d38aa4f5a20749c2bfde4f019c69bce61b0b928634e9528b21163a74a203a15d229a04a5a0e1860a4f51a264f19747b4da7016fbfd123601d8586caf5926034aa8352e42fc7eb7212bc174ca1082c6297514dd0668a4fadc613913eb696b69036f8115901a4bf6f602c25c0d5f57784af3b7f398006168510d96f6bea2e2032703a42730bbda54654ea1a11f7fb9148a553a8f95e70dec55ca28fe76c7cbea750b0219ffff03fb252103c41d62b83191fab69bcb82bae87becd234de1d861a2614076e2acd01036b8293c901ba28f84bb56d947f97205d04c61695b28909d5b3a7a553c7c1030e03f8a825b8cf742175a61589e57087a4edcce1f63e4a2fe223fd1cfe055d2a0eb403bb9f9de9c0336da083d37bcca3d1a30a05d20095e67460deff66bea4d591c47c03b4400703486765373a53a24739da37ba2727ae831dcf4b534e37258da5a810c3030814e48f23521b267853242793f04ccad96d4249f3fafd7e6a1fe2564b94e48003855cc7e7dd7d9cc3abcfb2b35a271601d4b51b8f6af77e99325f0ca80ce1489903c8f404af366bbd3ab5a4bdd574b27e965c0cba1699a97ffcfa5611e10b16033200582003b3a6cd8a8f7ecf87fb63b468db4023b921e29231349e114bef35ad1a9e7de04b821087388b0f2a4f45ccb40332e5f77b51152f01d639274e8ad337725c05d8d9172bc68443824d301ba15933005820036ed6d6dad7b5bfc08a44a6eabc45732298129831ec3f9504e9b4a7224f28204b12557ff1cad9dea3ef77f2038e61f3a3eeeb1e2c92fcd03578e9f418c54fbca9f99fd1c996041c51c03d087700582003aa19a2901d32c1a33d3506351a441a123acda08f9e030199a7bcf3b65186304b086ebae3bfe60737aed31b005820034897436c6afd7f4ec1947e0af2fbf4196dc41cb8ecebac147c8447df785ef05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003b6d0aa33d163bf3fa95fba81d087acda7a6aa196e1b9618574f24fb6bfc0004bb661a9d20642ae30bca812005820032381760b7b98cdea68587542e718e86528477264468a8692c4d9a4f19a13205820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005820032daa2003f63e47af9af572cc789c1ef730fd87891a6e79fcb1505398f373505820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0219855f03dc775266b2204b63525f8890775406f26db498eac07d993651bcfccd812a96b100582003d4985449b33c75631b266ffa9ceef7c1d6839341f07760f9ac56e87c455a805820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003d751968282d320d36bc680872ca4cbf2c886a0d1649a34ed41efe3a457fbe05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005820032d112b751e25aa20bf916ea4754884d105003eddbde69d9cce7e829803b8f04b06b410ac2c25f8e98a3403035c2b7b4748613d9c45d8c7894b070bbe892ab516dca9d7c30275b5fc51e0e87c0058200372ce0a0a5753d2e4f0f5dd164bb0fd30c9e28b773208e9ab41624ac39c70905820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00582003db93392c1f52b40fa5f6b2e44c0c27e62cb6e8e690fa143c0aacaec70324104b433b2ff41b8a6ed012c938036140c26d6a4807eaacf96f1c8d2aa0d58ae92deec477cd4f04cf7ec507f66864021932170352c79299bcc7993440ecfd3fb9d2bb18f83c86025400e1d71bb7341a3d1229da03c3f5714f88e39734dde80babf05f489cdfb6e6c1be403015f5c336bbed9c977d03d452bacf308c49f6a589931097a4f943f46ed705b99175b13bc6290bbe9605c9036d2b226caaadc3f57c10ab36ce7494617ba8afe38e80a01fa7e4b8349eff0b0803ed08153c20c083a798976865a58fdc6da7b14aa99e4ea51f43f73decfd3c78ed03cb6ee3f7f60d97735a503afe652466c10b57f9bc6ad80130de280dcebf0584b50219ffff03ccae7dbb8bb0d5478f7b9ddcb343c821125606d0af7d02310b54e8a73db6b4140349bf1fbd1fad5ae9183edfd7985e58f8d2f0d0f791f6276e8aad65b6334466400392804b2083880ee0089c4ed1f10970bcf61a4072d0ea64f8a3fae24d0262127103d90a8f54035a230d50c0514ab74483105a9d066521e0bf68650fb494c512875303bfb16f7c29221fa5aa2ce0bf37dfa3410ecd73c6fc29ca87c28970a073a44ef8034f76801ab5a8125ad25973ef0633983604ffd9673014f7c24a4c0e31f594cc3c03449ce7c0298f291b3f58bc8bdffa1077a51ed7e0161d9fe46a6380ca1059ba430332ec03b483149a35c140f252a52ecd40b9a64682b3bc01913af998194865c32e030311aa00dc4b6bf6ba1dbc3c13e6de211373018c867ad140679e5307750b9552033f74d63eb166a2e94de1d65c5ec8192886899d25b69a3779ed0bfc4e56c6fbdf0361643984c747ad2c0c31034e97bfb00e22a383f486fb0a5471c9e1eec393543203bd9364d86feb5bb4a8548d39750ada47e7915cc8fb452609fff4936d9f07ca3703e8d4569cf7ae3ca8af3b91a841f34e741e628de8588ae1d1e685c3b69a584b31038e2f0e8c548ffb13cfb86fd86dac0b5103638f6ef2cae41c0318c7d35459d6ad037cd9d41b2d5e57a819c85fb0bcb41ef5548b85607aad3d490ed95e7c66f4c1c303c25782a20e4ab36d10e5ae56f0eef6a7ffafe752d27e9e778b8f473aa453f28601410900582003532c8bbfd8aad6024506147751490a47e89ce021541def2b754b77bd5048b05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005820033323da7e67ca5f8f7b5938f0702c852c6519772365b544d11272f24f7a0fd05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03f5eb8dce2100faeb2322346f79a805d22ef8a685ae54602a1fec3cc0a177a3ce00582003201bc5347beb9e4ba04f595f9280d633d8b8bbae002a73674606d1d71147404b0f3c2be80ddaeadbbc2b8c00582003b8c91c2aec8e1a8905e6d051ac7d8b4994cf59fd0d3450e1c7025aa16a27904b149e9eb22301646e35f7a1031e95682d575d3420a1fa40d69181b21cd61e2f850330d839f39e0b321d6cbbd000582003c088ab51b2351e6d5accdac80d1e543d823d873fb1c9331c902a425507a6a05820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02f2c15356c8065ec2c450ebead8eec19713e26dc04a0e17df722b38458dc95820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00581f02f5fbfec1a1c718eadfd87609c26520e84dcc20cc72c0ef2878b5ef4946905820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0219402003913303f30f3f6fffb2dcc9010999b7e47065f38555cd5771427fc47ebe64da6203d4e559ab9bb1bf697598b5bc144f10aa51b41c51be32a74979c4ba6411f3c43602197fc303435c64d7a04b9429d7164a11925316eea1e3ae351a539ca7c4f1d4afc947b0dd034919041ff38ba0a45b92001cc32db47779ed620d704fcddfd669abfdcbba2e87030f561563c740a9ad02ccefdad701b87ba9f835bc1b265bfd6ac0d9207855a00203aab5a5711caaf54e3de04960810af10ec9ee4e48aa275b9c0744570d512560d2032f5c527a5698757a2852065dd7477051280ad77bbcde0d1dffdca568b9bd2ae103e30e3579a6370144e77a1326173ab79f84e3b0853b4053564d0a9f767e393f9c032817352df284fa8f2f30b181026a8cbb78a8557735a4db4880b7a09ee19a994b0219ffff035d236c1229c0b554f40ddb5f3159ff3dc2400eada4f0be7048df00b6acb3c3b703331a24fded924a51894413ee458da835dfa9b5a67d5b62ba6247dc9b2cf468420219ffff05581d028805254c4e619dcc39f3e70ddddf469798cdf56599b19efa9ff63a7107011910450219206003d75f6883ac458a4528483a72c1bc3cc2bde6b9c9c343917721ff6cc80e0374a905581e038aec84ef803b663eaabfb7c899e624b5288de18cce73b9bf9354e7dc000c02470893296d0cc5e005581e03c4f64461f41c5ad0fed41932f8986a374a5e21623be81e6e721a88ef600405031b460c826a854d61dca82f718e088b8b4c4082ffeb93752d7691bc62c51dc0280605581e03b2b4a87722f12d39e5a4e881fa9b4dad9b6c2b6345ff7b30142cde8f0007011bffffffffffffffff0219ef7f03fda786475ac131cf78b7fe9101f7295a18c61081b6c926f4af8d675f08a6179903eba3fd41271ab809f03852dea6852157868ceb4bb22079e364996673f3b27a9003faee0977bc1accc22b28a3509f77fb0220e77cbd0d443ff9f3f36be8b3a3c77803611bdb168769990e6a2e4e1889adcb70c4d28a2c73b5169f3e7958dda9987dac0219ffff03409e78ba7e81f4127c6dd67e3330900b3f028563e07b8d8ee18ab2a5bc8bf40c0335cf8d9a56821e4619b141150ad85621c3f5f880353196756a98f3298b07ac0803dde9d7af24f45585910b0ac6b5aa3b4b0b37384913e3b547311505a7fb386f0d03df9d96fd79c79b085c4f97dd46b6de5c69befe9b658a84dcebedf3726378807f03de2f4d3e1e146818a74496a6b9540b048ae8c6c4261a346c115d33af370bd1c30386a44c380c3ad28d588b42910edcc81f4d40b868067ffa8dadfa7f4fe1586943038fca6019285f75bc7fc9165bb6d7ad36d1a0a7a205e1dc5156c7078a0f41e834036946a8126a40129fb78e469934cca59ee5d37b7c64a85302c3ab3a4aedbc44ae0329d6fab1012d15bb24a5555f069e02085382deb14536125554b1dd9f4086f57603a447845db4adb215bbf2656b0ad38d85e1601a969d439b1fa58aa2180b910c480389625af592c052f22279c381e86c848d7c01d140630b8b75993d8f721df9afeb0348eb29cb93146910ce540d6ff928903d15d7b8869ba11cec2b74c0f7b355593f0219ffff0342bad1fcae613a291e955552ed9539aea09d81f3e9901861288e9ce75527bb2603857c2a6021e55c3ecb4c845c5903ba32419054f06c4694fefe4664a205292771036777bd6029a018bda01027a141bde1baba29dba20238b1fde1a04e8880071d85036ef67a4f66372aac3a476de2069bbb7850829aa3a2d812fb5e13302d2946278a039d7fdb0124bb89d6beebaf31176b64a2df9c96f567ff631faa23cae07d043a0503d5ba0a7164284ce0a5963833afc5a656bbdf3124c9ba978934234158abfa3c89034134401d55ab8657b70147709d58bc4dec5d6d30f844f20cd9d502bf4a2f2c1403e96d3fb4853cae6a58228a5708bcd15bae76133d44ec8e7e6fb6fb2961582bc503d6d69db198c4a5fafd38400212389e83ebd10f5a36a35441f9aaa4dd59f89529030e57be49466b87cf3023d3c404701ec35e982c749a7cb7bf55074de1455ab33e0219ffff03da0ef15e4512471c1f0fdcb74e7d9b9a698bb99e144b71b185567dc2a7f957d603bceed531e6b5a33bc7c53c38285b9b8c317afae8271d37e1107860a0d72c515e033c598b4cecf12003c4ea9afdbb6705eed722dce2504c008621d4c050586db13903a793f09d5fb1a5e1c386498b7bda5635730b3ca0094b535f2e9f02266906cecc0219ffff03aa4068534a9975b0001257e0c2fe2ca2e53eba1be3da12d88cf10615edb9f6ae03c5ceed00603107d284521b33aa38eb3c489394980d0fc384ba548f703649a737030f8e2be71d55cf8c589850d8f25d231c197013ae2f621946e4a20bc337f87eb403a20d393a73aeb67dfc4e2ca25ce8c8be62bdec853e386d2f7525eb32d694205b03306f1c97c95420b42329ece73ccab2fd2c3479d928501940e8409f80395c6a4c03284b5c9fd1d72bf4174b773178ed79db4ed449d70eb71d2de4f563839dd821f603405aed325812fe2bc24c3e47ca14a7d319c1769b390793229bb38a93a4fb139303e08bf03238889b49310f93c4d13e22e8b73682aaaf04c526026757cddb8b8854034601556a5447c924a262f81737e9c15117285f501b1b9273779436a3703badae039a4179bbe29e2f369c6098389eea51feb2d67e690f08a640c88a6772ff72156303be22092043e37a78b4a51c357f52e884d88cc52a62370264d36ebcde8edc721c03ec26516a63332450b02094c3c4e279061f4201adc00ace0e78c00fdd90c6c0b003796fd38681a7b447bc00119afdd13000da578ded0705a89a93825990f81b7f1803385bc2865ca7f44dfc75c486ed5bf5b41d2eda511dd6aa2e7ced7d23a57afcfc0332b4d3fdae9b84344a2c77aa3b6dc861360b23a696801bc97401e8af2bb37314037fd55291ebb774154090e26401959b68c0433d8f7bdf1378a3de43c4a9ab316c032405b73a1c62569e27ab4e41d010a80ce2b61f272451626ceeec4e141d0c7f2703295516e829ebf52caba115eb6e53e40f6df8a02ef686eb79d82b5b78de8e30d40314adec11d197956d85471be82e2c095eae30857ee8c3dcef2408d94d784e7ddb03c471f07038dd301c473d5ee5d1324df6d0027830de975814b5093c1a3716e4fb037b8e0c012a5453d2b32e2d869693797d89cade5217877342621e5169c64771d903c038c55386a10991979c16e018fb732aab01a537423f7cde0d8c4b9e7005061d0351a3239183ebf3e4ab46ab024b0a4fc033566fd94b60ffbaa3a040eaffbc6ca60317605e3fdf771dc421c06a6f8eceb592313cee228a7571a32aea51db359394a603cd93b56754ae570608a7a06f588543446e1ed1d03a2bc20b09be1234ed40bae00346016c2072b8683afe9451fe3bcb303b452bbe01546de17834cd21d8fc5fc73903f97358a689353db2a7620b5591eafe8a8aad6daf644ae66789ba121237f82d99036760d5ce784641815d6fff4b295fa185ca5702b9d1c756d56201a856499d456c0389e96641270bb073130ad9481cf46984e4c0b1ce7b9f329eae0d326e4fadcd5d030a9adc3a069b99bbd83943047ecb82c024f0cc456c5b375a4949b9455b277e2a03b3ee4a8441e3a19d3cbfd49da7564ff1f65ac9b25aa709f08e412f319916b10c03a1b51e5234a04959ece7e633e22cdea46cc65f7ecec39e2b32f34110b52f672503f1d42b6d50d37380fdc5a2feb712cb3662e6753f1d44e5eb5c7b4885e129235d035d4be196170b6d6e93e586b1322483fd6aa199051f3caefe6286ad839b765d8d03dc1698344d43a078f8c7cf608bc43bece4b14bdefdab26720d9be2c8695c34e703cf6f5ead294971b21efba5ec0a3ba83dd75c95ecdc723b01f288731957b0597e0381b6000b8a2925365cc6abdfaba917d069535ce88e640c6c763e4fdcf9adf92103fc426ee6e4d549dfa3e2779ef8b6808b857685c9dc2362a48427d3d83a8d0ebd0326f0501a42f29dc54bab2a28b97e5849c4678af413783073e0210e7adc328d97035c05f7aa594ed08009309fd37bf845c887421d7190f2c70095db1e7f950ca0f603b8a67e002b1009543282a6873957e04511f15e7a04d58856993fcc3ea7df36ba0373783021d46782d27873bce506133d3c65a0fdf484c29bd5401a57171aaf5e0403fab700bb77e50fb8a1a1b5b4a7cb626d0100850a547890b7d35ec0d3c5c1ee8403bd0872177a6ad38278fe084a7981e082df764d5fb42795dc4c77a5ac91fd888d03716cba084dcc86b1a13f46592666eab24278f4ce27d0841ee2b212b07609d6c703acf7430a0b8bf62413eaab75b9b6b51913756c937a97d5cbf5c5781be31a6698035d8e999755587ba57bc208af260c630b102e1f632a4525e3421f706a7e8a446305581e03b1b7140dbb197082853651d92061cf63c303b1acd46728e8793630cd400c02470231d0daf531e50358804d9c514e43993d72e4214f818817f3bbef070f90be05cf79234cee1908be03f13c458ec229d465ac25b6d138e98144fd1c48060ad94befdafa44cee618ffe105581e03ba8b0a0e5a87d3192df4af87840e26295455ee485895a4376f8370b2d00c02470147de98c1148805581e03760ff0c45616fcb05dc840044f6d9fac63fde0df8adb8d09a898bd50d00c024618261e87300005581e0336a36573829a8662acf38b0361590bb96da31c45b3edd25668dd3bfc70040205581d02af4083cb6c89b82c319d44aeb986481cde9f97dbd7db77e4becac7100c1a00201e8e490673486ce5463a882605581d022b75f0ab8856e4488839d159d1cb5c39391c25f3592cbd2ce04473470c01480163039f4f747b0002190802021945a90219ffff0219ffff03f13562e7e0bbe59fddbc0e4da33f80fde264f8431c92a034cbfec922276f03640339f615147699613099613104e19513af8d22a82fcafea2cfe5ad679c654e50300395d544e841d9c1853813b2911a7686ed227fabb298249f35b7d059f3de53d91203eec2235a910378bce52df73ed9599c4172db21dc5976fa691e2527789871879e0333a53c8dfcfc4e3781d921ce5743823be7a8324a2686b9d940404abd18d0f5c7031259a400f9e5d1bfe3bde08805d72f6a04804516c99f12a47e5d38cab2761bb403faefc54b75086802231233d641b595f841c2d7f622834ec0167a65569e4c2cb003b74f9660ccdd006e8623b80ebf513ade363e0d53176152c4d30f54427597c1fd035a954bda16f1b702e33b8eae4c5edc0754a399abb2c1a664b14113b92621b22e03e21c401fdf3abdfc0aa9a0fac867be5b7cd5dc8b2e801992168a7216af9333b603318fc23b123eb9a14d854158f7637e2899d5ec327f4f273d5d1e404ade0ff02803aab37afa00f2af7dfddf684496253686a5c514c9d02b18a63d1ce3eef2ba2e9303effd551c2b92e8afa2e0f29a9c817954acaefa42e66798d690a4d30913e8f49a031f6381b63464f7ee5605006d0f705722e571caa52a99453a9c42c0c989e09ad50319b2cb9787b2f50184045579c313a0949b909b760631b8ce5dcc23837f3ac2640219ffff03a9a7b7ce6826fc3cde003408d4ab7045219ed26673169eb430944f8759407ea10219ffff038e79b2c9b51b32c2d9441eb8b3071559f9db9540df984f3b4ee9993ecf037fa00302d172152466b7221303140d42525d9fc7dcd8d1ac03046db376839691554a7803d7db83803b68d24466a6447a1e3664cb0116936065a6a43c63471e214fdccf8f0374d242e51bdf0b94949d65c5dbc4282ff9f03380b7c04b0e8c12367abc31f3f503ed849d5813fb6757e352cef092648d5cc178fb74aa991c605eb4dd51c6dce304039b9218ec6bf3fbf023f03fc7521f8219182a472f7c7c0a277ca83e1765bed1ae032b3d83866d66c3aad6a47fe65413c160f9838e838e213b130504a0ce6c09ef2a037ece2ce283163e9950f6f3067ca724030a1e339f746c099e46bdc4a18ce4f69003267f5b02ecb0db4fd706f691266ed53cd83d8e53bd6ef9778535b35303e6475f0361314385ae0af152451f696cc1a77308034635a3bf453eb9972f0f3b5b3843d7034f04ac2d464c3e59f9b8a586d0dc7a5eda6072147c91a13339ccd93af837cdae0219ffff0219ffff" + } + }, + "code_db": null, + "txn_info": [ + { + "traces": { + "0x49f18c6370d3235fcc7cf4fd8167b8ca9bed0af8": { + "balance": "0x26c583e6f4de1f1b", + "nonce": "0x212b" + }, + "0x151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7f": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0xd8a47cc0a98b326a7d41ebdba69f2440a3db7a31c7edca3bc5f01523d2fabe24", + "0x0000000000000000000000000000000000000000000000000000000000000024", + "0x0000000000000000000000000000000000000000000000000000000000000025", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000004" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x7b78a71646e33e6e76cabfface36f52", + "0x0000000000000000000000000000000000000000000000000000000000000025": "0x100000000000000000001739d0492174ce5ffd126fffc7f6f9c957365cf6087", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x10000960096001dff4659000000000000000017c861793bcc2ea99728962e" + }, + "code_usage": { + "read": "0x516e38ed2cd77bcb4dfb71f1afe70b0516eeb781a30e5c770fbee39aa6eb809c" + } + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": {}, + "0xcc2687c14915fd68226ccf388842515739a739bd": { + "code_usage": { + "read": "0x1b91d26a2eb23313e6e92fcd974f099f3428fd6d6e627d87d108ead574b68cb2" + } + }, + "0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd": { + "storage_read": [ + "0xba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3", + "0x584faa44e8bbe81b643316e312b8153135ecec313a641b0e31d013822f728796" + ], + "storage_written": { + "0xba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3": "0x13b3c8f7603c2c2842ae", + "0x584faa44e8bbe81b643316e312b8153135ecec313a641b0e31d013822f728796": "0x237d1cf3f694229042" + }, + "code_usage": { + "read": "0x2105590e28e110e2e156f35dd5f376d12258ae82da2b4edab9b511d0d8bc0619" + } + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "storage_read": [ + "0xc52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9", + "0xd392e8d1b6835f6ffe48e3fa40f91a25dfa9ff2d64600e2b40173fa9c1d511bf" + ], + "storage_written": { + "0xd392e8d1b6835f6ffe48e3fa40f91a25dfa9ff2d64600e2b40173fa9c1d511bf": "0xde0b6b3a7640000", + "0xc52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9": "0x1e4537db023b263ffc" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + } + }, + "meta": { + "byte_code": "0x02f902490182212a80850755ff20688301d58394cc2687c14915fd68226ccf388842515739a739bd80b84700000003012597010000000000000de0b6b3a7640000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7f000000000000004e50ca71278ece8b0000000000237d1cf3f694229041f90195f8dd94151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7ff8c6a00000000000000000000000000000000000000000000000000000000000000002a0d8a47cc0a98b326a7d41ebdba69f2440a3db7a31c7edca3bc5f01523d2fabe24a00000000000000000000000000000000000000000000000000000000000000024a00000000000000000000000000000000000000000000000000000000000000025a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004f85994aa6e8127831c9de45ae56bb1b0d4d4da6e5665bdf842a0ba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3a0584faa44e8bbe81b643316e312b8153135ecec313a641b0e31d013822f728796f85994c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0c52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9a0d392e8d1b6835f6ffe48e3fa40f91a25dfa9ff2d64600e2b40173fa9c1d511bf80a07c51ef3e703c82bc13da77fdbb8041933823f58c7c87a773ab38a31783148210a053e67561db17a23f5c140fb794c33993ed753d770ccc87b369e8871095166073", + "new_txn_trie_node_byte": "0x02f902490182212a80850755ff20688301d58394cc2687c14915fd68226ccf388842515739a739bd80b84700000003012597010000000000000de0b6b3a7640000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7f000000000000004e50ca71278ece8b0000000000237d1cf3f694229041f90195f8dd94151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7ff8c6a00000000000000000000000000000000000000000000000000000000000000002a0d8a47cc0a98b326a7d41ebdba69f2440a3db7a31c7edca3bc5f01523d2fabe24a00000000000000000000000000000000000000000000000000000000000000024a00000000000000000000000000000000000000000000000000000000000000025a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004f85994aa6e8127831c9de45ae56bb1b0d4d4da6e5665bdf842a0ba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3a0584faa44e8bbe81b643316e312b8153135ecec313a641b0e31d013822f728796f85994c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0c52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9a0d392e8d1b6835f6ffe48e3fa40f91a25dfa9ff2d64600e2b40173fa9c1d511bf80a07c51ef3e703c82bc13da77fdbb8041933823f58c7c87a773ab38a31783148210a053e67561db17a23f5c140fb794c33993ed753d770ccc87b369e8871095166073", + "new_receipt_trie_node_byte": "0xb9036802f90364018301821bb9010000004000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000002000000080020000000000000000000000000000000000800000008000000000000000000000000000000000002000000000000200000000000000000002000000000000000000000000030000800000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000080000000000000000000000000000000200000000000008000000001000000000000010000000800000000000000f90259f89b94aa6e8127831c9de45ae56bb1b0d4d4da6e5665bdf863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7fa0000000000000000000000000cc2687c14915fd68226ccf388842515739a739bda00000000000000000000000000000000000000000000000237d1cf3f694229041f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000cc2687c14915fd68226ccf388842515739a739bda0000000000000000000000000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7fa00000000000000000000000000000000000000000000000004e50ca71278ece8bf9011c94151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7ff863a0c42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67a0000000000000000000000000cc2687c14915fd68226ccf388842515739a739bda0000000000000000000000000cc2687c14915fd68226ccf388842515739a739bdb8a0ffffffffffffffffffffffffffffffffffffffffffffffdc82e30c096bdd6fbf0000000000000000000000000000000000000000000000004e50ca71278ece8b000000000000000000000000000000000000000017c861793bcc2ea99728962e00000000000000000000000000000000000000000000030c7ac73fb9897ea01cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4659", + "gas_used": 98843 + } + }, + { + "traces": { + "0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd": { + "storage_read": [ + "0xba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3", + "0x6ef6c7e8f399cb2db0fa4c873fe572abbdc53d164ebe80278a1312f736e51a4a" + ], + "storage_written": { + "0x6ef6c7e8f399cb2db0fa4c873fe572abbdc53d164ebe80278a1312f736e51a4a": "0x1847fd3a07c9358c1ba", + "0xba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3": "0x137d0a7e86ce5fac6073" + }, + "code_usage": { + "read": "0x2105590e28e110e2e156f35dd5f376d12258ae82da2b4edab9b511d0d8bc0619" + } + }, + "0x1ab65eca96d51ad4d85a40c99cc6455f1af824e8": { + "balance": "0x1c70678d5ffc4c910", + "nonce": "0xd6" + }, + "0x151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7f": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0xd8a47cc0a98b326a7d41ebdba69f2440a3db7a31c7edca3bc5f01523d2fabe24", + "0x0000000000000000000000000000000000000000000000000000000000000025" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x7b7a93446ad53016a972250fbc581c1", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x10000960096001dff46dc000000000000000017f050779bbd8f69ddf2d9bb" + }, + "code_usage": { + "read": "0x516e38ed2cd77bcb4dfb71f1afe70b0516eeb781a30e5c770fbee39aa6eb809c" + } + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9d98cc7f7141e349" + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "balance": "0x298720c707984aa2acb40", + "storage_read": [ + "0x73d637d229721ca538a0a2e9712eeef46a1889496c0a60f402b430eba28d4a2e", + "0xc52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9" + ], + "storage_written": { + "0xc52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9": "0x1ebf54f992aa1b625c", + "0x73d637d229721ca538a0a2e9712eeef46a1889496c0a60f402b430eba28d4a2e": "0x1" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0xdef1c0ded9bec7f1a1670819833240f027b25eff": { + "storage_read": [ + "0xfafa9e60b7fc3a82d6372f25242b5c1bd30e3927bfa454fa7233ccc186ec39fb", + "0x4a432555e3fde060855a28d4d0b3bf599bbd04b75121e1e4d841e85fbc68da12" + ], + "code_usage": { + "read": "0xade271f13b55729be286859c01c54fcb04c2dde098fc3bc9901c35927ece786e" + } + }, + "0x0e992c001e375785846eeb9cd69411b53f30f24b": { + "code_usage": { + "read": "0x5908b6ce9a77484c886ffc5f0635b2eca3327bdc7cc0be118d346f86250745f6" + } + } + }, + "meta": { + "byte_code": "0x02f9017e0181d5830f424085083c3424c88302391094def1c0ded9bec7f1a1670819833240f027b25eff887a1d1e906ef52260b901083598d8ab0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000036a76847622771e5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb8aa6e8127831c9de45ae56bb1b0d4d4da6e5665bd000000000000000000000000000000000000000000869584cd000000000000000000000000382ffce2287252f930e1c8dc9328dac5bf282ba1000000000000000000000000000000008357255014e1179f2b6959f49011226dc001a0d841a022ae900922b65814179dfec5760f57a4db627e00dbf851afac2bb6a4bba02862ab8cafec6edcaf55a04eb96b89f2ad43de423fc3b8481888fbcb2b00df6c", + "new_txn_trie_node_byte": "0x02f9017e0181d5830f424085083c3424c88302391094def1c0ded9bec7f1a1670819833240f027b25eff887a1d1e906ef52260b901083598d8ab0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000036a76847622771e5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb8aa6e8127831c9de45ae56bb1b0d4d4da6e5665bd000000000000000000000000000000000000000000869584cd000000000000000000000000382ffce2287252f930e1c8dc9328dac5bf282ba1000000000000000000000000000000008357255014e1179f2b6959f49011226dc001a0d841a022ae900922b65814179dfec5760f57a4db627e00dbf851afac2bb6a4bba02862ab8cafec6edcaf55a04eb96b89f2ad43de423fc3b8481888fbcb2b00df6c", + "new_receipt_trie_node_byte": "0xb903e402f903e00183033a08b9010000004000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000002000800080020000000000000000000000000000000002800000008000000000000000000000000000000008002000000000000200000000000000000002040000000000000000000000010000800000000000000000000000000000000000000000001000010000000000000000000000000000000000000004000000000000000000000000000000000000000000000000002000000000000000000000000000080000000000000040000000000000000200000000000008000000000000000000000010000400800000000000000f902d5f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109ca0000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25effa00000000000000000000000000000000000000000000000007a1d1e906ef52260f89b94aa6e8127831c9de45ae56bb1b0d4d4da6e5665bdf863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7fa00000000000000000000000001ab65eca96d51ad4d85a40c99cc6455f1af824e8a0000000000000000000000000000000000000000000000036be78d96dcc7be23bf89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25effa0000000000000000000000000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7fa00000000000000000000000000000000000000000000000007a1d1e906ef52260f9011c94151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7ff863a0c42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67a0000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25effa00000000000000000000000001ab65eca96d51ad4d85a40c99cc6455f1af824e8b8a0ffffffffffffffffffffffffffffffffffffffffffffffc94187269233841dc50000000000000000000000000000000000000000000000007a1d1e906ef52260000000000000000000000000000000000000000017f050779bbd8f69ddf2d9bb00000000000000000000000000000000000000000000030c7ac73fb9897ea01cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff46dc", + "gas_used": 112621 + } + }, + { + "traces": { + "0xcc2687c14915fd68226ccf388842515739a739bd": { + "code_usage": { + "read": "0x1b91d26a2eb23313e6e92fcd974f099f3428fd6d6e627d87d108ead574b68cb2" + } + }, + "0x151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7f": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000025", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xd8a47cc0a98b326a7d41ebdba69f2440a3db7a31c7edca3bc5f01523d2fabe24" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x10000960096001dff4687000000000000000017d671dc8cef8aa73e4b270d", + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x2168dd6f5ffee15918b6413c2f7d03e84" + }, + "code_usage": { + "read": "0x516e38ed2cd77bcb4dfb71f1afe70b0516eeb781a30e5c770fbee39aa6eb809c" + } + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e0ebbcf9956335c" + }, + "0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd": { + "storage_read": [ + "0xba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3", + "0x584faa44e8bbe81b643316e312b8153135ecec313a641b0e31d013822f728796" + ], + "storage_written": { + "0x584faa44e8bbe81b643316e312b8153135ecec313a641b0e31d013822f728796": "0x1", + "0xba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3": "0x13a0879b7ac4f3cef0b4" + }, + "code_usage": { + "read": "0x2105590e28e110e2e156f35dd5f376d12258ae82da2b4edab9b511d0d8bc0619" + } + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "storage_read": [ + "0xc52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9", + "0xd392e8d1b6835f6ffe48e3fa40f91a25dfa9ff2d64600e2b40173fa9c1d511bf" + ], + "storage_written": { + "0xd392e8d1b6835f6ffe48e3fa40f91a25dfa9ff2d64600e2b40173fa9c1d511bf": "0x5cbf5f5d23391d08", + "0xc52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9": "0x1e707650e92e464554" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0x49f18c6370d3235fcc7cf4fd8167b8ca9bed0af8": { + "balance": "0x264431b497d56348", + "nonce": "0x212c" + } + }, + "meta": { + "byte_code": "0x02f902420182212b80850755ff20688301e05c94cc2687c14915fd68226ccf388842515739a739bd8775ef5028145013b85a00000004012597010000000000005cbf5f5d23391d08151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7faa6e8127831c9de45ae56bb1b0d4d4da6e5665bd0000000000237d1cf3f6942290410000000000004edea8a97bd51d08f90174f85994aa6e8127831c9de45ae56bb1b0d4d4da6e5665bdf842a0ba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3a0584faa44e8bbe81b643316e312b8153135ecec313a641b0e31d013822f728796f8bc94151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7ff8a5a00000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000001a0d8a47cc0a98b326a7d41ebdba69f2440a3db7a31c7edca3bc5f01523d2fabe24a00000000000000000000000000000000000000000000000000000000000000025a00000000000000000000000000000000000000000000000000000000000000000f85994c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0c52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9a0d392e8d1b6835f6ffe48e3fa40f91a25dfa9ff2d64600e2b40173fa9c1d511bf01a0b105c5752acf92923d7016e2edea7053d1ce73c43191ff51fe2da8bf6b27e37ea063a3408a605e3437ac6ce296063f7a7caa8e85298b80f942ee44b2dc64c8b6dc", + "new_txn_trie_node_byte": "0x02f902420182212b80850755ff20688301e05c94cc2687c14915fd68226ccf388842515739a739bd8775ef5028145013b85a00000004012597010000000000005cbf5f5d23391d08151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7faa6e8127831c9de45ae56bb1b0d4d4da6e5665bd0000000000237d1cf3f6942290410000000000004edea8a97bd51d08f90174f85994aa6e8127831c9de45ae56bb1b0d4d4da6e5665bdf842a0ba33e9b8db02508f048aa1db6e9c0afddb03933b0bff1a3c90d6bafefde1d9e3a0584faa44e8bbe81b643316e312b8153135ecec313a641b0e31d013822f728796f8bc94151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7ff8a5a00000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000001a0d8a47cc0a98b326a7d41ebdba69f2440a3db7a31c7edca3bc5f01523d2fabe24a00000000000000000000000000000000000000000000000000000000000000025a00000000000000000000000000000000000000000000000000000000000000000f85994c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0c52f396c407e484c805c250341c5b6182c11dea9069b8555d0a5c7093be785b9a0d392e8d1b6835f6ffe48e3fa40f91a25dfa9ff2d64600e2b40173fa9c1d511bf01a0b105c5752acf92923d7016e2edea7053d1ce73c43191ff51fe2da8bf6b27e37ea063a3408a605e3437ac6ce296063f7a7caa8e85298b80f942ee44b2dc64c8b6dc", + "new_receipt_trie_node_byte": "0xb9036802f90364018304c760b9010000004000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000002000000080020000000000000000000000000000000000800000008000000000000000000000000000000000002000000000000200000000000000000002000000000000000000000000030000800000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000080000000000000000000000000000000200000000000008000000001000000000000010000000800000000000000f90259f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7fa0000000000000000000000000cc2687c14915fd68226ccf388842515739a739bda00000000000000000000000000000000000000000000000004edea8a97bd51d08f89b94aa6e8127831c9de45ae56bb1b0d4d4da6e5665bdf863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000cc2687c14915fd68226ccf388842515739a739bda0000000000000000000000000151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7fa00000000000000000000000000000000000000000000000237d1cf3f694229041f9011c94151ccb92bc1ed5c6d0f9adb5cec4763ceb66ac7ff863a0c42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67a0000000000000000000000000cc2687c14915fd68226ccf388842515739a739bda0000000000000000000000000cc2687c14915fd68226ccf388842515739a739bdb8a00000000000000000000000000000000000000000000000237d1cf3f694229041ffffffffffffffffffffffffffffffffffffffffffffffffb1215756842ae2f8000000000000000000000000000000000000000017d671dc8cef8aa73e4b270d00000000000000000000000000000000000000000000030c7ac73fb9897ea01cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4687", + "gas_used": 101720 + } + }, + { + "traces": { + "0xdbcc1787b02c39aa56f0f5365125933c08feeab0": { + "balance": "0x3137bee91a03b6b", + "nonce": "0x41" + }, + "0xf3de3c0d654fda23dad170f0f320a92172509127": { + "code_usage": { + "read": "0xe5b4a5c24225a0ec7687716ddb6728a7321fa50d7362c3a5acfe55e57b4b9564" + } + }, + "0x40aa958dd87fc8305b97f2ba922cddca374bcd7f": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000065" + ], + "code_usage": { + "read": "0xe8711c5f0fe7f3c28078140bb97b65aa015a58c06c14bad5abffa44f00f1ddf5" + } + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e0ef35ce50a235c" + }, + "0x6d7497751656618fc38cfb5478994a20f7e235df": { + "storage_read": [ + "0x2eb9e60c490d317d2a6384dacbf41a70692f1a2d46266ce32c5d6c8f769d10a6", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x72c80b5bc80df91afd56c3a951a32283559e7f7eb045d83c91efeee0d02c38fc", + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897" + ], + "storage_written": { + "0x72c80b5bc80df91afd56c3a951a32283559e7f7eb045d83c91efeee0d02c38fc": "0x0", + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897": "0x1840a21798d4d5c12f8752314" + }, + "code_usage": { + "read": "0x4123f56d86f276e684177a9b98a18f2f9d66d40208c423fe55b0e5c8f9d53abd" + } + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "balance": "0x2987209d3089f85f9af1a", + "storage_read": [ + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c", + "0xa78c3571170f7dcd4a9be5fc007f2e41d0568b2d304d741c66b27ec22dd33cfe" + ], + "storage_written": { + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c": "0x7d09f651ddc19d199", + "0xa78c3571170f7dcd4a9be5fc007f2e41d0568b2d304d741c66b27ec22dd33cfe": "0x1" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0xd420d5f24225702a68ddf21242d5eef816dc2e6d": { + "storage_read": [ + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000006" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf6087000000000007d09f651ddc19d1990001840a21798d4d5c12f8752314", + "0x000000000000000000000000000000000000000000000000000000000000000a": "0x1f3f8b4dab18b3280d3d842c2ce83b6bf72cd4cac", + "0x0000000000000000000000000000000000000000000000000000000000000009": "0x1eef95b899058844625cad5354", + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0x70cbb871e8f30fc8ce23609e9e0ea87b6b222f58": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000066", + "0xfca24f26881178fbb721486fd81006a8a2f47f9f9479f3a10e978c0ededf333a" + ], + "code_usage": { + "read": "0xb6a0916f3f4f33110bd1c57652c6e21f4beb32ffcfb50124f8b51cb5cee61f04" + } + } + }, + "meta": { + "byte_code": "0x02f901310140841dcd650085084cf716c08303910094f3de3c0d654fda23dad170f0f320a9217250912780b8c49871efa40000000000000000000000006d7497751656618fc38cfb5478994a20f7e235df000000000000000000000000000000000000000000821087388b0f2a4f45ccb40000000000000000000000000000000000000000000000000273aa821f0256880000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000170000000000000003b6d0340d420d5f24225702a68ddf21242d5eef816dc2e6dc001a06863a39687e4a7ece96ca402bdd324ac2c2a7ee422887fcbd1923642eac5457ea07008839de0dd17b4e1296982b88325ed658f439a519998e67671f3b5db141d63", + "new_txn_trie_node_byte": "0x02f901310140841dcd650085084cf716c08303910094f3de3c0d654fda23dad170f0f320a9217250912780b8c49871efa40000000000000000000000006d7497751656618fc38cfb5478994a20f7e235df000000000000000000000000000000000000000000821087388b0f2a4f45ccb40000000000000000000000000000000000000000000000000273aa821f0256880000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000170000000000000003b6d0340d420d5f24225702a68ddf21242d5eef816dc2e6dc001a06863a39687e4a7ece96ca402bdd324ac2c2a7ee422887fcbd1923642eac5457ea07008839de0dd17b4e1296982b88325ed658f439a519998e67671f3b5db141d63", + "new_receipt_trie_node_byte": "0xb9057302f9056f018306a490b9010000200000000000000000000080000000100000000000000000000000000000000000000000000000020000000000000002008000080000000000000020000000000000000000000100000008800000200080000000400000000000000000000000000000000000000008000000000000000000000000040000000010000000000000000000000000000020000200000080000000000000080000004000000000000000001000000000000040080000000001000000000000000000000000000000000002000000000000000000010000000000020000009040000002000000000100200000000000022000000000000000000000000000000000000000000020f90464f85894f3de3c0d654fda23dad170f0f320a92172509127e1a07724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba00000000000000000000000000000000000000000000000000000000000000000f89b946d7497751656618fc38cfb5478994a20f7e235dff863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000dbcc1787b02c39aa56f0f5365125933c08feeab0a0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da0000000000000000000000000000000000000000000821087388b0f2a4f45ccb4f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da0000000000000000000000000f3de3c0d654fda23dad170f0f320a92172509127a0000000000000000000000000000000000000000000000000029d70e524311c26f87994d420d5f24225702a68ddf21242d5eef816dc2e6de1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b8400000000000000000000000000000000000000001840a21798d4d5c12f8752314000000000000000000000000000000000000000000000007d09f651ddc19d199f8fc94d420d5f24225702a68ddf21242d5eef816dc2e6df863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a0000000000000000000000000f3de3c0d654fda23dad170f0f320a92172509127a0000000000000000000000000f3de3c0d654fda23dad170f0f320a92172509127b880000000000000000000000000000000000000000000821087388b0f2a4f45ccb400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029d70e524311c26f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a07fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65a0000000000000000000000000f3de3c0d654fda23dad170f0f320a92172509127a0000000000000000000000000000000000000000000000000029d70e524311c26f8d994f3de3c0d654fda23dad170f0f320a92172509127e1a01bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576cb8a00000000000000000000000006d7497751656618fc38cfb5478994a20f7e235df0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dbcc1787b02c39aa56f0f5365125933c08feeab0000000000000000000000000000000000000000000821087388b0f2a4f45ccb4000000000000000000000000000000000000000000000000029d70e524311c26", + "gas_used": 122160 + } + }, + { + "traces": { + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": {}, + "0x6d7497751656618fc38cfb5478994a20f7e235df": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897", + "0xb39e9ba92c3c47c76d4f70e3bc9c3270ab78d2592718d377c8f5433a34d3470a" + ], + "storage_written": { + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897": "0x1829b4c8b8d4d5c12f8752314", + "0xb39e9ba92c3c47c76d4f70e3bc9c3270ab78d2592718d377c8f5433a34d3470a": "0x1554873fffc3522bbf655de0" + }, + "code_usage": { + "read": "0x4123f56d86f276e684177a9b98a18f2f9d66d40208c423fe55b0e5c8f9d53abd" + } + }, + "0x6b75d8af000000e20b7a7ddf000ba900b4009a80": { + "balance": "0x153a4d0bb8a49", + "code_usage": { + "read": "0x213c3f38a90242ff53461e679cef9a1bbbae20e63de087cdbc972d813c857711" + } + }, + "0xdc900845732a53ee8df737efa282a6bc56976e62": { + "storage_read": [ + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000009" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000009": "0x2bc82346b12aee24647cdf327df00ffc9eea257ff0", + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf608700000000000943a14c374712a218000000000001a06b4c3d0c4e80bb", + "0x000000000000000000000000000000000000000000000000000000000000000a": "0x2ef738cbf909b92548d6879e3bb43dd8dab50249c", + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0xd420d5f24225702a68ddf21242d5eef816dc2e6d": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000006" + ], + "storage_written": { + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1", + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf6087000000000007d80f65efdd19d1990001829b4c8b8d4d5c12f8752314" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "storage_read": [ + "0x12231cd4c753cb5530a43a74c45106c24765e6f81dc8927d4f4be7e53315d5a8", + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c", + "0xc4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8" + ], + "storage_written": { + "0xc4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8": "0x943a14c374712a218", + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c": "0x7d80f65efdd19d199", + "0x12231cd4c753cb5530a43a74c45106c24765e6f81dc8927d4f4be7e53315d5a8": "0x1e2827b20fdf1f6807" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0x9e9fbde7c7a83c43913bddc8779158f1368f0413": { + "storage_read": [ + "0x6e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969c", + "0xab2e97a75db32eb3b19136ac5fcb6d7a64d182e81eb81decf514e3d877434a50", + "0x5026556a9e91dc9bba9215081252f333fe1d44bf12f6b47633a8259ffde03acb", + "0xa34640eb1c607d836ceb4af07c59befcec4cdb4943351c3a245f8712063aa3b6" + ], + "storage_written": { + "0x6e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969c": "0x1a06b4c3d0c4e80bb", + "0xab2e97a75db32eb3b19136ac5fcb6d7a64d182e81eb81decf514e3d877434a50": "0x5aeaca7bfd930dd" + }, + "code_usage": { + "read": "0xde2d3cb78918547c06e2d4f09804da99d8ee9dbfecc4c8023b7ccecfe92a829b" + } + }, + "0xae2fc483527b8ef99eb5d9b44875f005ba1fae13": { + "balance": "0x67338c630eb425445", + "nonce": "0x201e8f" + } + }, + "meta": { + "byte_code": "0x02f903be0183201e8e80850755ff206883030c3e946b75d8af000000e20b7a7ddf000ba900b4009a8085077000d201b83a0918d420d5f24225702a68ddf21242d5eef816dc2e6d016ed4ee0b1cdc900845732a53ee8df737efa282a6bc56976e62010b06ca5c05f18c6f06f90311f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a012231cd4c753cb5530a43a74c45106c24765e6f81dc8927d4f4be7e53315d5a8a0ed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285ca0c4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8f89b94d420d5f24225702a68ddf21242d5eef816dc2e6df884a00000000000000000000000000000000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000000ca00000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000000000000000000000006f87a946d7497751656618fc38cfb5478994a20f7e235dff863a00000000000000000000000000000000000000000000000000000000000000005a0db111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897a0b39e9ba92c3c47c76d4f70e3bc9c3270ab78d2592718d377c8f5433a34d3470af8dd94dc900845732a53ee8df737efa282a6bc56976e62f8c6a00000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000000000000000000000006a00000000000000000000000000000000000000000000000000000000000000007a00000000000000000000000000000000000000000000000000000000000000009a0000000000000000000000000000000000000000000000000000000000000000aa0000000000000000000000000000000000000000000000000000000000000000cf89b949e9fbde7c7a83c43913bddc8779158f1368f0413f884a06e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969ca0ab2e97a75db32eb3b19136ac5fcb6d7a64d182e81eb81decf514e3d877434a50a05026556a9e91dc9bba9215081252f333fe1d44bf12f6b47633a8259ffde03acba0a34640eb1c607d836ceb4af07c59befcec4cdb4943351c3a245f8712063aa3b601a0b48222e32e8cc2cc6a762704fbeebd29ad70e1d3fae2f6d03f3cbbd8fb7e36e3a07fcc102dc9a7cb2fa7d608696e7b2bf8760abe7efc62bfdd59a355140f512741", + "new_txn_trie_node_byte": "0x02f903be0183201e8e80850755ff206883030c3e946b75d8af000000e20b7a7ddf000ba900b4009a8085077000d201b83a0918d420d5f24225702a68ddf21242d5eef816dc2e6d016ed4ee0b1cdc900845732a53ee8df737efa282a6bc56976e62010b06ca5c05f18c6f06f90311f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a012231cd4c753cb5530a43a74c45106c24765e6f81dc8927d4f4be7e53315d5a8a0ed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285ca0c4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8f89b94d420d5f24225702a68ddf21242d5eef816dc2e6df884a00000000000000000000000000000000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000000ca00000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000000000000000000000006f87a946d7497751656618fc38cfb5478994a20f7e235dff863a00000000000000000000000000000000000000000000000000000000000000005a0db111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897a0b39e9ba92c3c47c76d4f70e3bc9c3270ab78d2592718d377c8f5433a34d3470af8dd94dc900845732a53ee8df737efa282a6bc56976e62f8c6a00000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000000000000000000000006a00000000000000000000000000000000000000000000000000000000000000007a00000000000000000000000000000000000000000000000000000000000000009a0000000000000000000000000000000000000000000000000000000000000000aa0000000000000000000000000000000000000000000000000000000000000000cf89b949e9fbde7c7a83c43913bddc8779158f1368f0413f884a06e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969ca0ab2e97a75db32eb3b19136ac5fcb6d7a64d182e81eb81decf514e3d877434a50a05026556a9e91dc9bba9215081252f333fe1d44bf12f6b47633a8259ffde03acba0a34640eb1c607d836ceb4af07c59befcec4cdb4943351c3a245f8712063aa3b601a0b48222e32e8cc2cc6a762704fbeebd29ad70e1d3fae2f6d03f3cbbd8fb7e36e3a07fcc102dc9a7cb2fa7d608696e7b2bf8760abe7efc62bfdd59a355140f512741", + "new_receipt_trie_node_byte": "0xb9067502f90671018308c6bcb9010000200000000000000008000080000000000000000000002000000000000000000000008000000020000000000080000002000000080000000000000020000000000000000000000000000008000000200080000000000000000040100000000000000020000000000000000000000000000000000000000080000110000000000000000000000000000020000200000000000000000000080000004000000000000000001000000000000000000000000000000000000000000000010040000000000002000000000000000000000000000000400000201000000000000000000100200000000000022000020000000000000000000000000000000000000020f90566f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da0000000000000000000000000000000000000000000000000077000d201000000f89b946d7497751656618fc38cfb5478994a20f7e235dff863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a00000000000000000000000000000000000000000016ed4ee0000000000000000f87994d420d5f24225702a68ddf21242d5eef816dc2e6de1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b8400000000000000000000000000000000000000001829b4c8b8d4d5c12f8752314000000000000000000000000000000000000000000000007d80f65efdd19d199f8fc94d420d5f24225702a68ddf21242d5eef816dc2e6df863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80b8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077000d2010000000000000000000000000000000000000000000000016ed4ee00000000000000000000000000000000000000000000000000000000000000000000000000000000f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a0000000000000000000000000dc900845732a53ee8df737efa282a6bc56976e62a000000000000000000000000000000000000000000000000005f18c6f00000000f89b949e9fbde7c7a83c43913bddc8779158f1368f0413f863a0e59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487a0000000000000000000000000dc900845732a53ee8df737efa282a6bc56976e62a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a0000000000000000000000000000000000000000000000000010b06ca00000000f87994dc900845732a53ee8df737efa282a6bc56976e62e1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b840000000000000000000000000000000000000000000000001a06b4c3d0c4e80bb00000000000000000000000000000000000000000000000943a14c374712a218f8fc94dc900845732a53ee8df737efa282a6bc56976e62f863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80b880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f18c6f00000000000000000000000000000000000000000000000000000000010b06ca000000000000000000000000000000000000000000000000000000000000000000000000", + "gas_used": 139820 + } + }, + { + "traces": { + "0xd420d5f24225702a68ddf21242d5eef816dc2e6d": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf6087000000000007e214465736aa6691000180b16886732f5b2b7244d35e", + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0xebe6ef3a90f3219764c80ad4ed14c5d55fc0f7ed": { + "balance": "0xaacdccf86fb814", + "nonce": "0x26" + }, + "0x6d7497751656618fc38cfb5478994a20f7e235df": { + "storage_read": [ + "0x1bd9b9754ce474ec09aee3e6d6cc57e37d6bee4279bea3ecb0c393a9fbd783e8", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897" + ], + "storage_written": { + "0x1bd9b9754ce474ec09aee3e6d6cc57e37d6bee4279bea3ecb0c393a9fbd783e8": "0x9fdd79ca9a7417fca304fb6", + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897": "0x180b16886732f5b2b7244d35e" + }, + "code_usage": { + "read": "0x4123f56d86f276e684177a9b98a18f2f9d66d40208c423fe55b0e5c8f9d53abd" + } + }, + "0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x1" + }, + "code_usage": { + "read": "0xc4f0904cd0f741bb3ab2a16013d23b4d72eec59e3cb24879f0f0ba0c3fea24d9" + } + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e0ef37450502d5c" + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "balance": "0x2987213d7e906df8a4412", + "storage_read": [ + "0xe03178286da22a27dd0b1f68fb538cd07bc9080172ee9a5a2238416fe86db02a", + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c" + ], + "storage_written": { + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c": "0x7e214465736aa6691", + "0xe03178286da22a27dd0b1f68fb538cd07bc9080172ee9a5a2238416fe86db02a": "0x0" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + } + }, + "meta": { + "byte_code": "0x02f902f90125830f42408507a19bfef983025906943fc91a3afd70395cd496c647d5a6cc9d4b2b7fad880a04e067599094f8b902843593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000065cf62bb00000000000000000000000000000000000000000000000000000000000000020b080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000a04e067599094f8000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000a04e067599094f8000000000000000000000000000000000000000001e9e3fee017a9c00d7d992000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006d7497751656618fc38cfb5478994a20f7e235dfc001a0a7d3c4fa4d22844eef8509336c17265312ca81f3d2e04fe6ac1a36de9a9553c6a01dbe233b219a43644e29c3f467487ac529fb475fcf08c4865b6f98207347999e", + "new_txn_trie_node_byte": "0x02f902f90125830f42408507a19bfef983025906943fc91a3afd70395cd496c647d5a6cc9d4b2b7fad880a04e067599094f8b902843593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000065cf62bb00000000000000000000000000000000000000000000000000000000000000020b080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000a04e067599094f8000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000a04e067599094f8000000000000000000000000000000000000000001e9e3fee017a9c00d7d992000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006d7497751656618fc38cfb5478994a20f7e235dfc001a0a7d3c4fa4d22844eef8509336c17265312ca81f3d2e04fe6ac1a36de9a9553c6a01dbe233b219a43644e29c3f467487ac529fb475fcf08c4865b6f98207347999e", + "new_receipt_trie_node_byte": "0xb9043e02f9043a01830a4fa4b9010000200000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000002000000080000000000000020000000000000080000000000000008000000200080800000000000000000008020000000000000000000000000000000000000000000000000000000000010000000000000000000000000000020000200000000000001000000080000004000080000000000001000000000000000000000000000000000040000000000000000000000000002000000000000000000000000000000000000001000000000000000000100200000000000022000000000000000001000000000400000000000000020f9032ff87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109ca00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada00000000000000000000000000000000000000000000000000a04e067599094f8f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da00000000000000000000000000000000000000000000000000a04e067599094f8f89b946d7497751656618fc38cfb5478994a20f7e235dff863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da0000000000000000000000000ebe6ef3a90f3219764c80ad4ed14c5d55fc0f7eda0000000000000000000000000000000000000000001e9e4051a1e00e786304fb6f87994d420d5f24225702a68ddf21242d5eef816dc2e6de1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b840000000000000000000000000000000000000000180b16886732f5b2b7244d35e000000000000000000000000000000000000000000000007e214465736aa6691f8fc94d420d5f24225702a68ddf21242d5eef816dc2e6df863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada0000000000000000000000000ebe6ef3a90f3219764c80ad4ed14c5d55fc0f7edb88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a04e067599094f8000000000000000000000000000000000000000001e9e4051a1e00e786304fb60000000000000000000000000000000000000000000000000000000000000000", + "gas_used": 100584 + } + }, + { + "traces": { + "0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x1" + }, + "code_usage": { + "read": "0xc4f0904cd0f741bb3ab2a16013d23b4d72eec59e3cb24879f0f0ba0c3fea24d9" + } + }, + "0x6d7497751656618fc38cfb5478994a20f7e235df": { + "storage_read": [ + "0x7c44a045784228dd49bfe46362ff42dc299b3ecd9d8e17fe35caec0494fff806", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897" + ], + "storage_written": { + "0x7c44a045784228dd49bfe46362ff42dc299b3ecd9d8e17fe35caec0494fff806": "0x150722519ffe5a962caf11c", + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897": "0x17f60f661592f75820f79e242" + }, + "code_usage": { + "read": "0x4123f56d86f276e684177a9b98a18f2f9d66d40208c423fe55b0e5c8f9d53abd" + } + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "balance": "0x298721ac84460b33c4412", + "storage_read": [ + "0xe03178286da22a27dd0b1f68fb538cd07bc9080172ee9a5a2238416fe86db02a", + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c" + ], + "storage_written": { + "0xe03178286da22a27dd0b1f68fb538cd07bc9080172ee9a5a2238416fe86db02a": "0x0", + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c": "0x7e904a1b10a5c6691" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0xd420d5f24225702a68ddf21242d5eef816dc2e6d": { + "storage_read": [ + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000008" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf6087000000000007e904a1b10a5c669100017f60f661592f75820f79e242", + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0xe36c5bd8f0b71155a26bec6bb103797e67b28df0": { + "balance": "0x389313b0ead419f6", + "nonce": "0x1a" + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e0ef4912e569c84" + } + }, + "meta": { + "byte_code": "0x02f902f90119839f2e54850a83ee7e738302aa0a943fc91a3afd70395cd496c647d5a6cc9d4b2b7fad8806f05b59d3b20000b902843593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000065cf62d300000000000000000000000000000000000000000000000000000000000000020b080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000014ebc6f42105214e1f88fbc00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006d7497751656618fc38cfb5478994a20f7e235dfc080a0220d39417b91ac5956b93280fa407e6f1ac3065e02b7abb24c3ede578724c097a07f5afa6d389eb30a95511c3eb34720c858741653c7bc8f71d48efdefdc004946", + "new_txn_trie_node_byte": "0x02f902f90119839f2e54850a83ee7e738302aa0a943fc91a3afd70395cd496c647d5a6cc9d4b2b7fad8806f05b59d3b20000b902843593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000065cf62d300000000000000000000000000000000000000000000000000000000000000020b080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000014ebc6f42105214e1f88fbc00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006d7497751656618fc38cfb5478994a20f7e235dfc080a0220d39417b91ac5956b93280fa407e6f1ac3065e02b7abb24c3ede578724c097a07f5afa6d389eb30a95511c3eb34720c858741653c7bc8f71d48efdefdc004946", + "new_receipt_trie_node_byte": "0xb9043e02f9043a01830c19c6b90100002000000000000000000000800000000000000000000000000000020000000000000000000000000000000000000000020000000800000000000000200000000000000800000000000000080000002000800000000000000000000080200000000000000000000000000000000000000000000000000000000000100000000000000000000000000000200002000000000002010000000800000040000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000010000000000000000001002000000000000220000000000000000010000000004000000000000000a0f9032ff87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109ca00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada000000000000000000000000000000000000000000000000006f05b59d3b20000f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da000000000000000000000000000000000000000000000000006f05b59d3b20000f89b946d7497751656618fc38cfb5478994a20f7e235dff863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da0000000000000000000000000e36c5bd8f0b71155a26bec6bb103797e67b28df0a000000000000000000000000000000000000000000150722519ffe5a962caf11cf87994d420d5f24225702a68ddf21242d5eef816dc2e6de1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b84000000000000000000000000000000000000000017f60f661592f75820f79e242000000000000000000000000000000000000000000000007e904a1b10a5c6691f8fc94d420d5f24225702a68ddf21242d5eef816dc2e6df863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada0000000000000000000000000e36c5bd8f0b71155a26bec6bb103797e67b28df0b880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000150722519ffe5a962caf11c0000000000000000000000000000000000000000000000000000000000000000", + "gas_used": 117282 + } + }, + { + "traces": { + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "balance": "0x2987274fce7f073464412", + "storage_read": [ + "0xfa6504e3ecae9cba67ae6b5b6e806a51a8edcbb5a1e390b371e2de4942e15e5c", + "0xe03178286da22a27dd0b1f68fb538cd07bc9080172ee9a5a2238416fe86db02a", + "0xc4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8" + ], + "storage_written": { + "0xfa6504e3ecae9cba67ae6b5b6e806a51a8edcbb5a1e390b371e2de4942e15e5c": "0x10efca6d71a9428e0fa", + "0xc4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8": "0x95a2e751b37152218", + "0xe03178286da22a27dd0b1f68fb538cd07bc9080172ee9a5a2238416fe86db02a": "0x0" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0x1df4c6e36d61416813b42fe32724ef11e363eddc": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8", + "0x0000000000000000000000000000000000000000000000000000000000000008" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x1000001b00000000000002040fa732129f4495d38000003b3168b2065cf6087", + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x687f9ab5d70e304a0d73676075b00bd1", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x10000010001000000442a00000000000000026493740823657f8089cb74c9" + }, + "code_usage": { + "read": "0xd9dcbdd3357d2c78ff4cc419e310f02017343dd23dafea9c650d2f0a146e76e4" + } + }, + "0xdc900845732a53ee8df737efa282a6bc56976e62": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007" + ], + "storage_written": { + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1", + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf60870000000000095a2e751b371522180000000000019c8228845f595370" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x1" + }, + "code_usage": { + "read": "0xc4f0904cd0f741bb3ab2a16013d23b4d72eec59e3cb24879f0f0ba0c3fea24d9" + } + }, + "0x9b76d386a5fd08908b9ebcd5997abbfd3a2d5225": { + "balance": "0x2589416a6d4e993", + "nonce": "0x655" + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e0ef731d7d03b74" + }, + "0x9e9fbde7c7a83c43913bddc8779158f1368f0413": { + "storage_read": [ + "0x7cbb9844f0e5b9ec22c652052569aae01ddeea1751c55120863e0f68310d1817", + "0x6e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969c", + "0x6110bdf7f338e605fe2de714e58354b9585061b394826a31bde40b788d384885", + "0x3aa2b2cb7392b06aa80dc060f242a1f6af24d5a5a85dc9c33b99fd974b80180d", + "0x3065b18c8be765242d5fce3e8976149d3d206de20dd939d9c797588978857717", + "0xbc13ce45e8a7427d0b04b31b6ecc1da81d3ef01808d0276ffa53991d07181065", + "0x1455294b9a8b6ae86c252fe9623af6c72d50bca1f4c6e530b6a1bcdf11e9e534", + "0x3b9931a3dd2045a353fff56daf77ae19462c7ce97a1e636ea8ee91f3409f006a", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x137d347834f4c0d606fb68dc1135a7458a32b2cfc9ef669be6b41be8aa350530", + "0x5026556a9e91dc9bba9215081252f333fe1d44bf12f6b47633a8259ffde03acb", + "0x0c82ab7793b0bf162f6f8a92cd0d311fa5421543395fbbf697960792e8f73704", + "0x9c4430f5adfa288e18fd6c6beedc13d3151020bdc380fdf63bf06a45d605dbae" + ], + "storage_written": { + "0xec824f15865e4f487f296b7097b0e9faf596562c8dc2ab2672b19ce830da8646": "0x0", + "0x0c82ab7793b0bf162f6f8a92cd0d311fa5421543395fbbf697960792e8f73704": "0x9b76d386a5fd08908b9ebcd5997abbfd3a2d5225", + "0x0000000000000000000000000000000000000000000000000000000000000003": "0xd108", + "0x137d347834f4c0d606fb68dc1135a7458a32b2cfc9ef669be6b41be8aa350530": "0xf9d99261a8e0e87", + "0x638ec225f8b272946de63a54e6ab2745ac543226609f3b32cf416ac38acb5826": "0x0", + "0x6e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969c": "0x19c8228845f595370", + "0x934583f3a9ac11ca412bcb979f8a9c2bc4551a31930984b6fbbf6c3e2ae52ca0": "0xd108", + "0x1455294b9a8b6ae86c252fe9623af6c72d50bca1f4c6e530b6a1bcdf11e9e534": "0x400882ca47ace78425", + "0x3065b18c8be765242d5fce3e8976149d3d206de20dd939d9c797588978857717": "0x0", + "0x3aa2b2cb7392b06aa80dc060f242a1f6af24d5a5a85dc9c33b99fd974b80180d": "0x0", + "0x7cbb9844f0e5b9ec22c652052569aae01ddeea1751c55120863e0f68310d1817": "0x0", + "0x6110bdf7f338e605fe2de714e58354b9585061b394826a31bde40b788d384885": "0x1d", + "0x9c4430f5adfa288e18fd6c6beedc13d3151020bdc380fdf63bf06a45d605dbae": "0x1" + }, + "code_usage": { + "read": "0xde2d3cb78918547c06e2d4f09804da99d8ee9dbfecc4c8023b7ccecfe92a829b" + } + } + }, + "meta": { + "byte_code": "0x02f9043b01820654839f2e54850a83ee7e738306136a943fc91a3afd70395cd496c647d5a6cc9d4b2b7fad885a34a38fc00a0000b903c43593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000065cf62c700000000000000000000000000000000000000000000000000000000000000030b080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000005a34a38fc00a000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000168d28e3f002800000000000000000000000000000000000000000000000000003e923ae5641b48100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000009e9fbde7c7a83c43913bddc8779158f1368f04130000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000043a77aabd00780000000000000000000000000000000000000000000000000000ba58d0ad0652c8800000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20027109e9fbde7c7a83c43913bddc8779158f1368f0413000000000000000000000000000000000000000000c080a0c6c29ae62a8518f90964b3b89b854e3063bcd5de18e976fd15799dd6bf7141cfa0778acfdb416cc2f46feab71098bba323f340d60892488b72cf562fcb3effecbf", + "new_txn_trie_node_byte": "0x02f9043b01820654839f2e54850a83ee7e738306136a943fc91a3afd70395cd496c647d5a6cc9d4b2b7fad885a34a38fc00a0000b903c43593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000065cf62c700000000000000000000000000000000000000000000000000000000000000030b080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000005a34a38fc00a000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000168d28e3f002800000000000000000000000000000000000000000000000000003e923ae5641b48100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000009e9fbde7c7a83c43913bddc8779158f1368f04130000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000043a77aabd00780000000000000000000000000000000000000000000000000000ba58d0ad0652c8800000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20027109e9fbde7c7a83c43913bddc8779158f1368f0413000000000000000000000000000000000000000000c080a0c6c29ae62a8518f90964b3b89b854e3063bcd5de18e976fd15799dd6bf7141cfa0778acfdb416cc2f46feab71098bba323f340d60892488b72cf562fcb3effecbf", + "new_receipt_trie_node_byte": "0xb907d302f907cf0183105392b9010000200000000000000008000080000000000000000000802000000000000000000000000000000200000000000080000002000000080020000000000000000040000000080000000800000008000000200000000000000000000040108020000000000020020000004000000000000800000000000000000200000110000800000000000000000000000000040000040000000001000000080000024000000000000000000000000000840000000000200000000000000000000000010040000000000002000000000000000000000000000000400000201000000000000020000080200020000000000000020000000000001000000000400000100000000000f906c4f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109ca00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada00000000000000000000000000000000000000000000000005a34a38fc00a0000f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada0000000000000000000000000dc900845732a53ee8df737efa282a6bc56976e62a0000000000000000000000000000000000000000000000000168d28e3f0028000f89c949e9fbde7c7a83c43913bddc8779158f1368f0413f884a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000dc900845732a53ee8df737efa282a6bc56976e62a00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000d10780f89b949e9fbde7c7a83c43913bddc8779158f1368f0413f863a0e59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487a0000000000000000000000000dc900845732a53ee8df737efa282a6bc56976e62a00000000000000000000000009b76d386a5fd08908b9ebcd5997abbfd3a2d5225a000000000000000000000000000000000000000000000000003e923b8acf52d4bf87994dc900845732a53ee8df737efa282a6bc56976e62e1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b8400000000000000000000000000000000000000000000000019c8228845f5953700000000000000000000000000000000000000000000000095a2e751b37152218f8fc94dc900845732a53ee8df737efa282a6bc56976e62f863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada00000000000000000000000009b76d386a5fd08908b9ebcd5997abbfd3a2d5225b8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168d28e3f002800000000000000000000000000000000000000000000000000003e923b8acf52d4b0000000000000000000000000000000000000000000000000000000000000000f89c949e9fbde7c7a83c43913bddc8779158f1368f0413f884a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000009b76d386a5fd08908b9ebcd5997abbfd3a2d5225a0000000000000000000000000000000000000000000000000000000000000d10880f89b949e9fbde7c7a83c43913bddc8779158f1368f0413f863a0e59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487a00000000000000000000000001df4c6e36d61416813b42fe32724ef11e363eddca00000000000000000000000009b76d386a5fd08908b9ebcd5997abbfd3a2d5225a00000000000000000000000000000000000000000000000000bb4756d6d98e13cf89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada00000000000000000000000001df4c6e36d61416813b42fe32724ef11e363eddca000000000000000000000000000000000000000000000000043a77aabd0078000f9011c941df4c6e36d61416813b42fe32724ef11e363eddcf863a0c42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67a00000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fada00000000000000000000000009b76d386a5fd08908b9ebcd5997abbfd3a2d5225b8a0fffffffffffffffffffffffffffffffffffffffffffffffff44b8a9292671ec400000000000000000000000000000000000000000000000043a77aabd007800000000000000000000000000000000000000000026493740823657f8089cb74c90000000000000000000000000000000000000000000000aab081aa14a00c686a000000000000000000000000000000000000000000000000000000000000442a", + "gas_used": 276940 + } + }, + { + "traces": { + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "storage_read": [ + "0xc4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8", + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c", + "0x12231cd4c753cb5530a43a74c45106c24765e6f81dc8927d4f4be7e53315d5a8" + ], + "storage_written": { + "0x12231cd4c753cb5530a43a74c45106c24765e6f81dc8927d4f4be7e53315d5a8": "0x1e35b19a1ee01f6807", + "0xed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285c": "0x7e180001c095c6691", + "0xc4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8": "0x954292ea137152218" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0xd420d5f24225702a68ddf21242d5eef816dc2e6d": { + "storage_read": [ + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf6087000000000007e180001c095c6691000180cfcb4e592f75820f79e242", + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0x6b75d8af000000e20b7a7ddf000ba900b4009a80": { + "balance": "0x153ac555d1f4a", + "code_usage": { + "read": "0x213c3f38a90242ff53461e679cef9a1bbbae20e63de087cdbc972d813c857711" + } + }, + "0xdc900845732a53ee8df737efa282a6bc56976e62": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000006" + ], + "storage_written": { + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1", + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf608700000000000954292ea1371522180000000000019d8d2f4d5f595370" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e19185fe4f74274" + }, + "0x6d7497751656618fc38cfb5478994a20f7e235df": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0xb39e9ba92c3c47c76d4f70e3bc9c3270ab78d2592718d377c8f5433a34d3470a", + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897" + ], + "storage_written": { + "0xdb111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897": "0x180cfcb4e592f75820f79e242", + "0xb39e9ba92c3c47c76d4f70e3bc9c3270ab78d2592718d377c8f5433a34d3470a": "0x13e5b252ffc3522bbf655de0" + }, + "code_usage": { + "read": "0x4123f56d86f276e684177a9b98a18f2f9d66d40208c423fe55b0e5c8f9d53abd" + } + }, + "0x9e9fbde7c7a83c43913bddc8779158f1368f0413": { + "storage_read": [ + "0xa34640eb1c607d836ceb4af07c59befcec4cdb4943351c3a245f8712063aa3b6", + "0x5026556a9e91dc9bba9215081252f333fe1d44bf12f6b47633a8259ffde03acb", + "0xab2e97a75db32eb3b19136ac5fcb6d7a64d182e81eb81decf514e3d877434a50", + "0x6e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969c" + ], + "storage_written": { + "0x6e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969c": "0x19d8d2f4d5f595370", + "0xab2e97a75db32eb3b19136ac5fcb6d7a64d182e81eb81decf514e3d877434a50": "0x4a3a5debfd930dd" + }, + "code_usage": { + "read": "0xde2d3cb78918547c06e2d4f09804da99d8ee9dbfecc4c8023b7ccecfe92a829b" + } + }, + "0xae2fc483527b8ef99eb5d9b44875f005ba1fae13": { + "balance": "0x673201310c98ee9f4", + "nonce": "0x201e90" + } + }, + "meta": { + "byte_code": "0x02f903810183201e8f850c6fa6bfe8850c6fa6bfe88302d659946b75d8af000000e20b7a7ddf000ba900b4009a80850784a19501b83a7f386d7497751656618fc38cfb5478994a20f7e235df016ed4ed8b3c9e9fbde7c7a83c43913bddc8779158f1368f0413010b06c93c0605467a06f902cff87a946d7497751656618fc38cfb5478994a20f7e235dff863a00000000000000000000000000000000000000000000000000000000000000005a0b39e9ba92c3c47c76d4f70e3bc9c3270ab78d2592718d377c8f5433a34d3470aa0db111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897f89b94d420d5f24225702a68ddf21242d5eef816dc2e6df884a0000000000000000000000000000000000000000000000000000000000000000ca00000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000000000000000000000006a00000000000000000000000000000000000000000000000000000000000000007f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0c4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8a0ed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285ca012231cd4c753cb5530a43a74c45106c24765e6f81dc8927d4f4be7e53315d5a8f89b949e9fbde7c7a83c43913bddc8779158f1368f0413f884a06e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969ca0a34640eb1c607d836ceb4af07c59befcec4cdb4943351c3a245f8712063aa3b6a05026556a9e91dc9bba9215081252f333fe1d44bf12f6b47633a8259ffde03acba0ab2e97a75db32eb3b19136ac5fcb6d7a64d182e81eb81decf514e3d877434a50f89b94dc900845732a53ee8df737efa282a6bc56976e62f884a00000000000000000000000000000000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000000ca00000000000000000000000000000000000000000000000000000000000000008a0000000000000000000000000000000000000000000000000000000000000000680a036a7f2a293f3ce240ee26aa2454a653a442aa817ce2c34f780fc46de5254a98aa01472bb980737e6a7b83cf1d8460e0144dadcf5e9aea3c58106059f680edbd7b2", + "new_txn_trie_node_byte": "0x02f903810183201e8f850c6fa6bfe8850c6fa6bfe88302d659946b75d8af000000e20b7a7ddf000ba900b4009a80850784a19501b83a7f386d7497751656618fc38cfb5478994a20f7e235df016ed4ed8b3c9e9fbde7c7a83c43913bddc8779158f1368f0413010b06c93c0605467a06f902cff87a946d7497751656618fc38cfb5478994a20f7e235dff863a00000000000000000000000000000000000000000000000000000000000000005a0b39e9ba92c3c47c76d4f70e3bc9c3270ab78d2592718d377c8f5433a34d3470aa0db111b6bab9f3303f59a63f0eb7b11cf5482c92ef8f241614c4c2bca1d38f897f89b94d420d5f24225702a68ddf21242d5eef816dc2e6df884a0000000000000000000000000000000000000000000000000000000000000000ca00000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000000000000000000000006a00000000000000000000000000000000000000000000000000000000000000007f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0c4b5945b3d588809025580057cbcadbb58fc33740a13703202de569e28ad94f8a0ed86a1228e69cf38993e7d0567ff50154ce028b0b2307ce2b12f66fa0c6a285ca012231cd4c753cb5530a43a74c45106c24765e6f81dc8927d4f4be7e53315d5a8f89b949e9fbde7c7a83c43913bddc8779158f1368f0413f884a06e6081c5b55abcaa3c6e2e8a592b973640109071879cd803b85d3d706ee3969ca0a34640eb1c607d836ceb4af07c59befcec4cdb4943351c3a245f8712063aa3b6a05026556a9e91dc9bba9215081252f333fe1d44bf12f6b47633a8259ffde03acba0ab2e97a75db32eb3b19136ac5fcb6d7a64d182e81eb81decf514e3d877434a50f89b94dc900845732a53ee8df737efa282a6bc56976e62f884a00000000000000000000000000000000000000000000000000000000000000007a0000000000000000000000000000000000000000000000000000000000000000ca00000000000000000000000000000000000000000000000000000000000000008a0000000000000000000000000000000000000000000000000000000000000000680a036a7f2a293f3ce240ee26aa2454a653a442aa817ce2c34f780fc46de5254a98aa01472bb980737e6a7b83cf1d8460e0144dadcf5e9aea3c58106059f680edbd7b2", + "new_receipt_trie_node_byte": "0xb9067502f906710183125004b9010000200000000000000008000080000000000000000000002000000000000000000000008000000020000000000080000002000000080000000000000020000000000000000000000000000008000000200080000000000000000040100000000000000020000000000000000000000000000000000000000080000110000000000000000000000000000020000200000000000000000000080000004000000000000000001000000000000000000000000000000000000000000000010040000000000002000000000000000000000000000000400000201000000000000000000100200000000000022000020000000000000000000000000000000000000020f90566f89b946d7497751656618fc38cfb5478994a20f7e235dff863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da00000000000000000000000000000000000000000016ed4ed0000000000000000f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000d420d5f24225702a68ddf21242d5eef816dc2e6da00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a00000000000000000000000000000000000000000000000000784a19501000000f87994d420d5f24225702a68ddf21242d5eef816dc2e6de1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b840000000000000000000000000000000000000000180cfcb4e592f75820f79e242000000000000000000000000000000000000000000000007e180001c095c6691f8fc94d420d5f24225702a68ddf21242d5eef816dc2e6df863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80b8800000000000000000000000000000000000000000016ed4ed0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000784a19501000000f89b949e9fbde7c7a83c43913bddc8779158f1368f0413f863a0e59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a0000000000000000000000000dc900845732a53ee8df737efa282a6bc56976e62a0000000000000000000000000000000000000000000000000010b06c900000000f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000dc900845732a53ee8df737efa282a6bc56976e62a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a00000000000000000000000000000000000000000000000000605467a00000000f87994dc900845732a53ee8df737efa282a6bc56976e62e1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b8400000000000000000000000000000000000000000000000019d8d2f4d5f59537000000000000000000000000000000000000000000000000954292ea137152218f8fc94dc900845732a53ee8df737efa282a6bc56976e62f863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80a00000000000000000000000006b75d8af000000e20b7a7ddf000ba900b4009a80b880000000000000000000000000000000000000000000000000010b06c900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000605467a00000000", + "gas_used": 130162 + } + }, + { + "traces": { + "0xee1c139ea09924a95b98b56a68efc1104f049f21": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x336a15c2de424b150f2fe74517a91cf099618a9cc06476ee6969c87d83e552f7", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x3f21a237864d150ec73673aa9343e861c8699ada868b369630fe86259d2cc7b1", + "0xea698147b9768f539806750d0817afddf757d04fa6faa24ab18cb700ddf86c0d", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x000000000000000000000000000000000000000000000000000000000000000e", + "0x27c000cb4a36e527548c82ca9c4152888ae4f091d192793223fa9fa8cdfdf108", + "0x382bec4ba2f2bddade773da93a20c3dc1f1a4da957985a987e0c01c70cb2c10f", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0xc3c109542df5f0b35d6c0977e1181ed3e16d8b7c34539182429309bafc1d36d9", + "0x000000000000000000000000000000000000000000000000000000000000000d" + ], + "storage_written": { + "0x000000000000000000000000000000000000000000000000000000000000000d": "0xcd", + "0x27c000cb4a36e527548c82ca9c4152888ae4f091d192793223fa9fa8cdfdf108": "0x20fa172815c441c0c", + "0x382bec4ba2f2bddade773da93a20c3dc1f1a4da957985a987e0c01c70cb2c10f": "0x6017fd9172c848c" + }, + "code_usage": { + "read": "0xff219df1cfcda45d9a2b4e3531676c6610f25962c839f543a04177f5904ef6ef" + } + }, + "0xbcd3a47e4d0000cf170e25d1bd3d53f7c08be0a6": { + "code_usage": { + "read": "0x6ed615a0ca19cd89538543cdcb17a7e8d26147013208623b1efd12f8361aa814" + } + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "balance": "0x29872765e68ecacafbd10", + "storage_read": [ + "0xb2940356fd89a84cf9a86227596a2f59f085c679d5f9450737d0ae4daf0efcea", + "0xa1418cf079260397be8c8824a66003accc52fdb01dd81e3e13c62f524976fed6" + ], + "storage_written": { + "0xa1418cf079260397be8c8824a66003accc52fdb01dd81e3e13c62f524976fed6": "0x7a5498b1e8721b5b", + "0xb2940356fd89a84cf9a86227596a2f59f085c679d5f9450737d0ae4daf0efcea": "0x0" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0x3328f7f4a1d1c57c35df56bbf0c9dcafca309c49": { + "balance": "0x11d6e5436565d2728", + "storage_read": [ + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x11d6e5436565d2726" + }, + "code_usage": { + "read": "0x4d9be648c5bf39973670d9f8b481d5d0b971e6a2db2deccc6b98cde21c5dd83e" + } + }, + "0xdf675ac7eb6a7053e6988565f57dc3da177661ef": { + "storage_read": [ + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x0000000000000000000000000000000000000000000000000000000000000008" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000009": "0x1774754155affcf0e8b24d330868aa174", + "0x000000000000000000000000000000000000000000000000000000000000000a": "0xf52066d55f7abecb88d1a8dffc1e30", + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf60870000000000020fa172815c441c0c0000000000007a5498b1e8721b5b", + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0x3d427f91ebcd2943e7fff89975a9a49b27bbbb57": { + "balance": "0x1851e56df56915f2", + "nonce": "0x1d1" + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e2097c968f96274" + } + }, + "meta": { + "byte_code": "0x02f9023d018201d08502cb417800850a214098688307c524943328f7f4a1d1c57c35df56bbf0c9dcafca309c4988016345785d8a0000b901c40162e2d000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000065cf6087000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039a7fe8a7811c5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ee1c139ea09924a95b98b56a68efc1104f049f21c001a0d4991c42fd0a6bbe99e02ad76f0bec40e8eceae6dc020634fd1753f0f27672b2a056102edb5986f3753438277d85e83a5359d6e768a79281a73799135ceeb7a45b", + "new_txn_trie_node_byte": "0x02f9023d018201d08502cb417800850a214098688307c524943328f7f4a1d1c57c35df56bbf0c9dcafca309c4988016345785d8a0000b901c40162e2d000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000065cf6087000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039a7fe8a7811c5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ee1c139ea09924a95b98b56a68efc1104f049f21c001a0d4991c42fd0a6bbe99e02ad76f0bec40e8eceae6dc020634fd1753f0f27672b2a056102edb5986f3753438277d85e83a5359d6e768a79281a73799135ceeb7a45b", + "new_receipt_trie_node_byte": "0xb9057402f90570018314ff00b9010000200000000000000000000080000000080000000000000000000000000000000000040000000000000000020000000002000000080000200020200000000000000000000000000000000008000000200000000000000000000000008004000000000000000120000000000000000400200000400000000000000010000000000000000000000000000020000000020000000001000000080000004000000000000000000000000002001000000000082000000000080000040000000000000000000002000000000080000000000000040001000000001000000000000000000000200000000000000000000000000000080000000000400000000000000000f90465f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109ca00000000000000000000000003328f7f4a1d1c57c35df56bbf0c9dcafca309c49a0000000000000000000000000000000000000000000000000016180fc396978fef89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000003328f7f4a1d1c57c35df56bbf0c9dcafca309c49a0000000000000000000000000df675ac7eb6a7053e6988565f57dc3da177661efa0000000000000000000000000000000000000000000000000016180fc396978fef89b94ee1c139ea09924a95b98b56a68efc1104f049f21f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000df675ac7eb6a7053e6988565f57dc3da177661efa00000000000000000000000003d427f91ebcd2943e7fff89975a9a49b27bbbb57a000000000000000000000000000000000000000000000000006017fd9172c848cf87994df675ac7eb6a7053e6988565f57dc3da177661efe1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b8400000000000000000000000000000000000000000000000007a5498b1e8721b5b0000000000000000000000000000000000000000000000020fa172815c441c0cf8fc94df675ac7eb6a7053e6988565f57dc3da177661eff863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000003328f7f4a1d1c57c35df56bbf0c9dcafca309c49a00000000000000000000000003d427f91ebcd2943e7fff89975a9a49b27bbbb57b880000000000000000000000000000000000000000000000000016180fc396978fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006017fd9172c848cf899943328f7f4a1d1c57c35df56bbf0c9dcafca309c49e1a072015ace03712f361249380657b3d40777dd8f8a686664cab48afd9dbbe4499fb8600000000000000000000000000000000000000000000000000001c47c242087010000000000000000000000003d427f91ebcd2943e7fff89975a9a49b27bbbb570000000000000000000000000000000000000000000000000000000000000012f899943328f7f4a1d1c57c35df56bbf0c9dcafca309c49e1a09f849d23f4955d98202378ea318f2b0c7533695d3c9fb2a3931f0f919fa8c420b860000000000000000000000000000000000000000000000000016180fc396978fe00000000000000000000000000000000000000000000000006017fd9172c848c00000000000000000000000000000000000000000000000006017fd9172c848c", + "gas_used": 175868 + } + }, + { + "traces": { + "0x7a250d5630b4cf539739df2c5dacb4c659f2488d": { + "code_usage": { + "read": "0xa324bc7db3d091b6f1a2d526e48a9c7039e03b3cc35f7d44b15ac7a1544c11d2" + } + }, + "0xdf675ac7eb6a7053e6988565f57dc3da177661ef": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf608700000000000203f58c05f29fc1be0000000000007d1b23a2a3861b5b", + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0xee1c139ea09924a95b98b56a68efc1104f049f21": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x20bbe88de1a142167932f8ddec2bb05de590675e9f971acea869b6f70144240b", + "0x336a15c2de424b150f2fe74517a91cf099618a9cc06476ee6969c87d83e552f7", + "0xae6ca7f389261fe7398f95da232e6501150488dc1b71131270c7e152bf7baea3", + "0x000000000000000000000000000000000000000000000000000000000000000e", + "0x3f21a237864d150ec73673aa9343e861c8699ada868b369630fe86259d2cc7b1", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x5ec555b6279df85a9179991aed8c52c620ea49f11355a1d8aaf78a9d909be0ff", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000d", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x27c000cb4a36e527548c82ca9c4152888ae4f091d192793223fa9fa8cdfdf108", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "storage_written": { + "0x5ec555b6279df85a9179991aed8c52c620ea49f11355a1d8aaf78a9d909be0ff": "0x1b04061dabe01086", + "0x27c000cb4a36e527548c82ca9c4152888ae4f091d192793223fa9fa8cdfdf108": "0x203f58c05f29fc1be", + "0x000000000000000000000000000000000000000000000000000000000000000d": "0xce" + }, + "code_usage": { + "read": "0xff219df1cfcda45d9a2b4e3531676c6610f25962c839f543a04177f5904ef6ef" + } + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "balance": "0x298727924f3dd67c3bd10", + "storage_read": [ + "0xfb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8", + "0xa1418cf079260397be8c8824a66003accc52fdb01dd81e3e13c62f524976fed6" + ], + "storage_written": { + "0xa1418cf079260397be8c8824a66003accc52fdb01dd81e3e13c62f524976fed6": "0x7d1b23a2a3861b5b", + "0xfb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8": "0x0" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + }, + "0x85fe958bf2c9289855977c0ae99752094a159000": { + "balance": "0x4e44434923c7ed2e", + "nonce": "0x1d5" + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e2525dce26d3874" + } + }, + "meta": { + "byte_code": "0x02f9015c018201d485025a01c50085126f7eeb008304f014947a250d5630b4cf539739df2c5dacb4c659f2488d8802c68af0bb140000b8e4b6f9de9500000000000000000000000000000000000000000000000005f7d1e9e0a5719c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000085fe958bf2c9289855977c0ae99752094a1590000000000000000000000000000000000000000000000000000000000065cf608c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ee1c139ea09924a95b98b56a68efc1104f049f21c080a0e0d2662f068013f865bfba429de67813e80848b7129709d223a19981ce918083a010cd7f31ca9471f59bf07468989f0a5782691d316222940ae078547eba4d3cb2", + "new_txn_trie_node_byte": "0x02f9015c018201d485025a01c50085126f7eeb008304f014947a250d5630b4cf539739df2c5dacb4c659f2488d8802c68af0bb140000b8e4b6f9de9500000000000000000000000000000000000000000000000005f7d1e9e0a5719c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000085fe958bf2c9289855977c0ae99752094a1590000000000000000000000000000000000000000000000000000000000065cf608c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000ee1c139ea09924a95b98b56a68efc1104f049f21c080a0e0d2662f068013f865bfba429de67813e80848b7129709d223a19981ce918083a010cd7f31ca9471f59bf07468989f0a5782691d316222940ae078547eba4d3cb2", + "new_receipt_trie_node_byte": "0xb9043e02f9043a018316eedeb9010000200000000000000000000080000000080000000000000000010000000000000000000000000000000000020000000002000000080000000020000000000000000000000000000000000008000000200000000000000000000000008000000000000000000120000000000000000000000000000000000000000010000000000000000000000000004000000000020000000001000000080000004000000000000000000000000000000000000000002000000008080000000000000000000000000002000000000080000000000000000000000000001000000000000020000000210000000000000000000000000000000008000000400000000000000000f9032ff87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a0e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109ca00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488da000000000000000000000000000000000000000000000000002c68af0bb140000f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488da0000000000000000000000000df675ac7eb6a7053e6988565f57dc3da177661efa000000000000000000000000000000000000000000000000002c68af0bb140000f89b94ee1c139ea09924a95b98b56a68efc1104f049f21f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000df675ac7eb6a7053e6988565f57dc3da177661efa000000000000000000000000085fe958bf2c9289855977c0ae99752094a159000a00000000000000000000000000000000000000000000000000babe67b69a45a4ef87994df675ac7eb6a7053e6988565f57dc3da177661efe1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b8400000000000000000000000000000000000000000000000007d1b23a2a3861b5b00000000000000000000000000000000000000000000000203f58c05f29fc1bef8fc94df675ac7eb6a7053e6988565f57dc3da177661eff863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488da000000000000000000000000085fe958bf2c9289855977c0ae99752094a159000b88000000000000000000000000000000000000000000000000002c68af0bb140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000babe67b69a45a4e", + "gas_used": 126942 + } + }, + { + "traces": { + "0x3328f7f4a1d1c57c35df56bbf0c9dcafca309c49": { + "balance": "0x11d723ba73b28ad52", + "storage_read": [ + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x11d723ba73b28ad52" + }, + "code_usage": { + "read": "0x4d9be648c5bf39973670d9f8b481d5d0b971e6a2db2deccc6b98cde21c5dd83e" + } + }, + "0xd5dbf66480844b7aab2b09030aebc6cecf33e5b2": { + "balance": "0x53b82a7f4755def", + "nonce": "0x1aa4" + }, + "0xee1c139ea09924a95b98b56a68efc1104f049f21": { + "storage_read": [ + "0x336a15c2de424b150f2fe74517a91cf099618a9cc06476ee6969c87d83e552f7", + "0x0000000000000000000000000000000000000000000000000000000000000010", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x748ace196a619e172e23c1ba712f30ad8277be72debd9e25dd0fd081fc5ea4b2", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0xd39e7a1713b7480b7572a56a5a140d5100f41a6add76a5f985b34896bf0b07e4", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x27c000cb4a36e527548c82ca9c4152888ae4f091d192793223fa9fa8cdfdf108", + "0x52904ea9675b2af48d62072df8d8967ad3b6e4fbbfd783a8ab5f507d2030d15b", + "0x3f21a237864d150ec73673aa9343e861c8699ada868b369630fe86259d2cc7b1", + "0x000000000000000000000000000000000000000000000000000000000000000d", + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "storage_written": { + "0x27c000cb4a36e527548c82ca9c4152888ae4f091d192793223fa9fa8cdfdf108": "0x210e428dc8c697a18", + "0x52904ea9675b2af48d62072df8d8967ad3b6e4fbbfd783a8ab5f507d2030d15b": "0xfffffffffffffffffffffffffffffffffffffffffffffffff3116329663647a5", + "0xd39e7a1713b7480b7572a56a5a140d5100f41a6add76a5f985b34896bf0b07e4": "0x110080a6e9e85a60" + }, + "code_usage": { + "read": "0xff219df1cfcda45d9a2b4e3531676c6610f25962c839f543a04177f5904ef6ef" + } + }, + "0xc465cc50b7d5a29b9308968f870a4b242a8e1873": { + "code_usage": { + "read": "0x7b287ee78288945f2c3ccb923d99243bbf70d6040de54ddeec372457739a4612" + } + }, + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9e2ae6376db6d474" + }, + "0xdf675ac7eb6a7053e6988565f57dc3da177661ef": { + "storage_read": [ + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007" + ], + "storage_written": { + "0x0000000000000000000000000000000000000000000000000000000000000008": "0x65cf608700000000000210e428dc8c697a180000000000007a0e536fe4854876", + "0x000000000000000000000000000000000000000000000000000000000000000c": "0x1" + }, + "code_usage": { + "read": "0x5b83bdbcc56b2e630f2807bbadd2b0c21619108066b92a58de081261089e9ce5" + } + }, + "0xbcd3a47e4d0000cf170e25d1bd3d53f7c08be0a6": { + "code_usage": { + "read": "0x6ed615a0ca19cd89538543cdcb17a7e8d26147013208623b1efd12f8361aa814" + } + }, + "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2": { + "balance": "0x29872761823aaa8c2ea2b", + "storage_read": [ + "0xa1418cf079260397be8c8824a66003accc52fdb01dd81e3e13c62f524976fed6", + "0xb2940356fd89a84cf9a86227596a2f59f085c679d5f9450737d0ae4daf0efcea" + ], + "storage_written": { + "0xb2940356fd89a84cf9a86227596a2f59f085c679d5f9450737d0ae4daf0efcea": "0x0", + "0xa1418cf079260397be8c8824a66003accc52fdb01dd81e3e13c62f524976fed6": "0x7a0e536fe4854876" + }, + "code_usage": { + "read": "0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23" + } + } + }, + "meta": { + "byte_code": "0x02f9027501821aa38502540be4008509aa0b046883078b85943328f7f4a1d1c57c35df56bbf0c9dcafca309c4980b9020475713a08000000000000000000000000ee1c139ea09924a95b98b56a68efc1104f049f21000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000df675ac7eb6a7053e6988565f57dc3da177661ef0000000000000000000000000000000000000000000000000cee9cd699c9b85a0000000000000000000000000000000000000000000000000223d78c91ada825000000000000000000000000c465cc50b7d5a29b9308968f870a4b242a8e187300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065cf60870000000000000000000000000000000000000000000000000000000000000000c080a0642a7d57b8101cf657c1d084c70135cb64084383982ecb695bb044f39c01f904a02f935286fc624907ec3ae9b3aff154439d72fd29db15a6530adc265370053539", + "new_txn_trie_node_byte": "0x02f9027501821aa38502540be4008509aa0b046883078b85943328f7f4a1d1c57c35df56bbf0c9dcafca309c4980b9020475713a08000000000000000000000000ee1c139ea09924a95b98b56a68efc1104f049f21000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000df675ac7eb6a7053e6988565f57dc3da177661ef0000000000000000000000000000000000000000000000000cee9cd699c9b85a0000000000000000000000000000000000000000000000000223d78c91ada825000000000000000000000000c465cc50b7d5a29b9308968f870a4b242a8e187300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065cf60870000000000000000000000000000000000000000000000000000000000000000c080a0642a7d57b8101cf657c1d084c70135cb64084383982ecb695bb044f39c01f904a02f935286fc624907ec3ae9b3aff154439d72fd29db15a6530adc265370053539", + "new_receipt_trie_node_byte": "0xb905d002f905cc018319673db9010000200000000000000000000080000000080000000001000002000000002200000000040000000000000000020000000002000000080000200020200000600000000000000000000000000008000080200000000000400000000000000004000000000000000120000000000000000000000000000000040080000010000000000002000000000000000020000000020000000000000000080000004000000000020000000000000000001000000000082000000000080000040000000000000000000022000000000080000000000000000000000000001000000002000000000010200000000000000000000000000000080000000000000000000000000000f904c1f89b94ee1c139ea09924a95b98b56a68efc1104f049f21f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000d5dbf66480844b7aab2b09030aebc6cecf33e5b2a0000000000000000000000000df675ac7eb6a7053e6988565f57dc3da177661efa00000000000000000000000000000000000000000000000000cee9cd699c9b85af89b94ee1c139ea09924a95b98b56a68efc1104f049f21f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a0000000000000000000000000d5dbf66480844b7aab2b09030aebc6cecf33e5b2a0000000000000000000000000c465cc50b7d5a29b9308968f870a4b242a8e1873a0fffffffffffffffffffffffffffffffffffffffffffffffff3116329663647a5f89b94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000df675ac7eb6a7053e6988565f57dc3da177661efa00000000000000000000000003328f7f4a1d1c57c35df56bbf0c9dcafca309c49a0000000000000000000000000000000000000000000000000030cd032bf00d2e5f87994df675ac7eb6a7053e6988565f57dc3da177661efe1a01c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1b8400000000000000000000000000000000000000000000000007a0e536fe485487600000000000000000000000000000000000000000000000210e428dc8c697a18f8fc94df675ac7eb6a7053e6988565f57dc3da177661eff863a0d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a00000000000000000000000003328f7f4a1d1c57c35df56bbf0c9dcafca309c49a00000000000000000000000003328f7f4a1d1c57c35df56bbf0c9dcafca309c49b88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cee9cd699c9b85a000000000000000000000000000000000000000000000000030cd032bf00d2e50000000000000000000000000000000000000000000000000000000000000000f87a94c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2f842a07fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65a00000000000000000000000003328f7f4a1d1c57c35df56bbf0c9dcafca309c49a0000000000000000000000000000000000000000000000000030cd032bf00d2e5f899943328f7f4a1d1c57c35df56bbf0c9dcafca309c49e1a072015ace03712f361249380657b3d40777dd8f8a686664cab48afd9dbbe4499fb8600000000000000000000000000000000000000000000000000003e770e4cb862c000000000000000000000000d5dbf66480844b7aab2b09030aebc6cecf33e5b20000000000000000000000000000000000000000000000000000000000000033f858943328f7f4a1d1c57c35df56bbf0c9dcafca309c49e1a0522881958b3c4a6fc0840ad3b7fb947b881edc28c004245a62541647422ade97a0000000000000000000000000000000000000000000000000030cd032bf00d2e5", + "gas_used": 161887 + } + }, + { + "traces": { + "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5": { + "balance": "0x9da8f5317178807d", + "nonce": "0xa961e" + }, + "0x876528533158c07c1b87291c35f84104cd64ec01": { + "balance": "0x152e639c78b8139f35" + } + }, + "meta": { + "byte_code": "0x02f87101830a961d80850755ff2068827d0094876528533158c07c1b87291c35f84104cd64ec01877f973f93e400b780c001a0a1e7913e05eb6bb6f4bcb70abd29b6c5fd217ed8c501c7e11fa8ef4cdc0db303a0380e9b3c08be1ea016553f0aecd2702f3ebfbfe59ab702eba90d6bfba8238202", + "new_txn_trie_node_byte": "0x02f87101830a961d80850755ff2068827d0094876528533158c07c1b87291c35f84104cd64ec01877f973f93e400b780c001a0a1e7913e05eb6bb6f4bcb70abd29b6c5fd217ed8c501c7e11fa8ef4cdc0db303a0380e9b3c08be1ea016553f0aecd2702f3ebfbfe59ab702eba90d6bfba8238202", + "new_receipt_trie_node_byte": "0xb9010d02f90109018319b945b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + } + ] + }, + "other_data": { + "b_data": { + "b_meta": { + "block_beneficiary": "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5", + "block_timestamp": "0x65cf6087", + "block_number": "0x1259701", + "block_difficulty": "0x0", + "block_random": "0x45d29466a7116dd48c9826216292a8796242621f55677181b0395d70a2bcf23e", + "block_gaslimit": "0x1c9c380", + "block_chain_id": "0x1", + "block_base_fee": "0x755ff2068", + "block_gas_used": "0x19b945", + "block_bloom": [ + "0x20400000000000000800008000000018000000000180200201000200220000", + "0x48000100230020000020080000002008800080020200020200020600040", + "0x800000029000000088000802000808000004000000000401080260000", + "0x20220120004008000000002c4020000040000004028000013000080000", + "0x2000000000000004020040200060080000201000010080000024000080000", + "0x200000010000000028450400800002820010000080c00000400000100400000", + "0x2200000000008000000001000004008142000020904004000200002000", + "0x19021002000000002a0000200010000000810080100004008001000000000a0" + ] + }, + "b_hashes": { + "prev_hashes": [ + "0xcfab9f57a4374e241013c389a91566b7d0c37da2ea36c9b63baa646480d0ee77", + "0x38b80ec5e15c935edb4f4956f8224a1eaa88c93938f67a1018cd7c85eb606aab", + "0xc138d04a4d815c9d83e3cebb989239461ad3ec0f9fd298e3449f3659b323400c", + "0x58bf7320b17722b62478b50020e1fb0aa18ebbaea961d868cc2575a30f63852c", + "0xb87e56f81f0456db5c7a7a17af022bde49f20cd8193463d96b05162ccffa3157", + "0xe4d6f2bfe01b73af732882d3460e13e0ab1138396fa9007a82f042e4e7402663", + "0x621fb15b9d79724387592bc72583a72c2305a5bc862ec88ac4d88ad3c745bfbc", + "0x8b7ef7a4950c70602cc1244df146ed3c719c42659cc68891f81a26880dc916b4", + "0x394f527d6a108bcfa5cd58e5d41a749a99baa9edc4b64cdf9290e01e14803916", + "0x46832687b7e3c68faaf1e001ac3699aa050c9f17085d6a9fbab3b001e1e91486", + "0xd81a2a90046cbe42fd032342889fe343a4b5c4fd80d8f69add0c0f4b4e55bc8d", + "0x4c78e389d03ec147deee89d6762cb6ac9c125920027efe921922cf806c186d4c", + "0x3f444e94733f1f4183474b90ff76248c86d805a25c4d565167b7d7a3692d3565", + "0x4998bc4c9a48073a095afa2fc93eed3dbbaa12620460bbf0e73e7e23e560c69c", + "0x1945c4296041ab7b3024f7b263293a33777925fa09459adb80e8ba8bc3f6e2a2", + "0x9aafcd5475c1fdaad41c810a1e99ba53379146a00dbb17d679c15a38df47ae19", + "0x31667b67aff44c0d86c0b924e5e26869784c1ed7ad75e0a75b434a1caaaccb9a", + "0x2beb2ba1c187a5fe2a9d4a1412396e796dcdfb858c7b4c6ff410c35350788783", + "0xaa6d56335b227575c5bc40468216257e83b47ce73e41549de224191663a09652", + "0x25337050f0ed7224687c20b0e37ce8f29e8d63709812d9403558e655935fd4c9", + "0xa9c3447f820a08321e48ee868bc912e1081db04d1de6ac9c18d1cab00245445f", + "0x8db2a1e477e1a9e07b4e5d26443a20e0b5647fe48a575334a18a8c23ff237aac", + "0x836c2b6ec407582529d154ae54ad740616a25c9e95439b36954b0886220e234b", + "0x03a3dcba6d48a16dd9fdd1aaa07aecf2a712da17cb455ba1ca6979fef2411072", + "0x76802a7e201ef4b1522542e46a97360983dc387285b1685ee8cba6ba99e14a09", + "0x4bfd1b64c7e9e706a84f7bb077eaf4fc98dc1f38162f8407daac251b4c782ea8", + "0x4063789111da1e060b25c438ae04c7f7e68d8f10afe126b68b275314251a4ecc", + "0x5f86cc18e261aab47cb8d6dc78505e7b156e022b24d4e7e399e885dd4124d4ce", + "0xe80b83684ab3ffde0d9659caa516711ba37a58c4ac9bbdb6cf6c67d04affcf5c", + "0x8f6a91bc52615b275705fdcc7ec704832f8f5f0466589fde33f6f1e836113bed", + "0x9f681e1226c7894028550212383b4a5d3ea885dd6d1c28ba12ac773b5e3ecf51", + "0x1898b052344c3d0cb7dbacf461dad55cb6f56843e2319c25a490db0eef858908", + "0xcd3dce5835974ff8209c26f5eea2e0bd35bfe46b3f22ffad6582bfa74fe3e6a6", + "0x80300830d137dc63995cd47c4b9d593ee26c36424be1aea1f205a456fa01823f", + "0x4866b34cb7823b8888ae98f84d99a1a30e5216d824dbe850b53f800f745d18c2", + "0xa40cea299f742449a2a2abd1d8d240d2e42a16c63389b773291469b600b27a4c", + "0x44209e70324b497336058736dced16d65814d90b3fd0fbcfb68a3b81cbbc52c5", + "0x109e598cb2d8b68f154a6400ca56997ed066dd8aa7a15934a8bbcfb344452214", + "0x82cc91ec296a8aa275adc93cb60e76d8809d28eb1d0f6a979a286157cd102e1c", + "0xe24079903b98fd70b9bc36e4dd372876fc02b8ed28de4a2506c40b1351e36d82", + "0x06679c947b94629035585ada54a7705fb6d66cb05e080c4d9a666f0558a5e064", + "0xb7381aae1422385528b08aa99cf2e7cc6c9943fc7e06d7d26266ebac77f2038f", + "0x6695b8d48f45d478840310cb3c9824caf874e3bee8efa56dabd9256e547465a1", + "0xf64259c9be7c6e1510c291e782ce6713fe9e6a8c0670f51484c4b52fcdf143ef", + "0x6d9c6a66065d238588d2303c570ecfee237a12f3119e1e10d6da036ee3c6acb2", + "0xbb5b372993d468b1302baf20b0abf9d8385c4882367d1c7cfb0ffcdeb9ff50a1", + "0x5b6f4ffdcd85cfc4b81655d94be7c19c2436417387b2cb2ce45113790336db35", + "0x1f0f361a4c6f7f2601e677688df6b86d069b617faed4499869631e5adee39178", + "0x42bf25b614164ffd0da182efdad686cac48576fdbdd3f38e7dd1d3bbcc9e5224", + "0xe410e090a0d43d00db127c5639f1af1614ea1680a3e5f491842bc421a8d17521", + "0xad323e505477386f3bd81056800d740a3b10a23ac519f4ae7fa1cd1a2812ab41", + "0x9ffe1e89c81176cc1753d2080339aae9331de823e319f48b997a5a9a59d14a6c", + "0xeb354c27c6adff01efba0bb57a4695009bdde67dad829fca8646eed6c627c04f", + "0x025d06bcbaf4a54651c5b432dbdc1ab61e7e25cb3b33cbd1ad597f6361c64004", + "0xfbb795e49aa2ccc545ac5427d01b8b7f4c6f0f9c6f1636fa2d3f8175ea850e7a", + "0xcfbe0b821f3d9d860aef7f90099cf3eb3d1caf66892142988fdca7990cd2685d", + "0xd38e12f24648a60b38d401b79c034aaa4272e775e44790000de39bd45848b266", + "0x18cf65ee63fea104a2ff5fc02977f31bb686a64007b8cd16d67c431d3fc9985c", + "0xfbef834f90e5cc58a7c0c4ce0eda75881d413fb327954806f43c9831e863bcaa", + "0x20fb4ff5acf0f241bd613dadc8d3146d0b6a667bd66fa8ffc3630c89810a69a3", + "0xd4a1baae192ddc2229cf6425e0fd549bb20cf99bd1857ac14f5eb36ce4ce4882", + "0x0d49346d32b8df702a53de84eff651330b1c9a8f0b00cf3cdd9a37aea37a29b4", + "0xfff87d966513ad61904e37f3e0a822d1216a24f64a2cb0ba019b2ab55b391576", + "0x069e7e81d4ddada64c915bf27e7a7f005f0cae04f85c7c9d9e1c994b35044ab0", + "0xc574c2a0764d2b3424c82a903c6091fd3fc59043c89843001ceafc2f230e250a", + "0xcb57e5e65051817c806b651160ad4fab709fd35801f649854462a391e85113c9", + "0x49df8c35cdc69b9f79b64de400f9a9bd298237e591f561b976e8133f6f4e6e83", + "0x71ff9b73be32122ffd6a70a588cbd249ccac73ac7a72f83ec0b78d401c418c81", + "0x78c53c51467b4d0b0ef26550cf7a68b2c7943942de61f7a9912b7c0b0f54db6d", + "0x89789136684064fb05f130c8bfd122a01cb6013d25f86f25d934037f2cd669d8", + "0x3ce94acc60c5eae9566cad245b5087992d23991f9feaec46c0225f346cfa03cd", + "0x50c61cd40ed98ddde2ec48ef25ffda3c24562efb45466944292042b7646d6ca3", + "0x3be36e840168b97cf843f1282dda75ce7f9a8417e679372fa24747a834b552f6", + "0xb89f248c0659d4fd96fdd11b700772171722e21409694fe7858035b39c3fc84b", + "0xe8e71d5c1ee9094b09643fdeafa63c93a835d4783382c0888c1a93b77cfb27b9", + "0x76e794d55c8879a16255a0454b40d194af4f70b5ac8550f782054dd12fc56d4b", + "0x3c5378f5ed3da82166086ae9df32bd01ab6319bdf69bd64a78dfa2137b869b71", + "0xda149ed42d40c0ad4ba073990c0de763f8c258cfbe087c9db9a5c68ef363739b", + "0x1abdceaecc72ddc6f8058499c951913c9c683d0e68199e0d1646c9df9979bb1d", + "0x46115955203391608cc6633d875c27f2bba1bcb32a5b9a79a617d78e2f15ec6b", + "0x3b1af0c7c51cb1f08fff39c89e064d002d4573760f233d833b6d9f907cff243e", + "0xb4867bc77f1e7d54dd48be67197a8611017f53bc480573c0bd557eb2b8d1865d", + "0x79d41e27c5c3cab17658716e82fdff2bd18c39a37ff7f402b2f071e76efef237", + "0x1c47d6d1ada15f750a3fe992beada41d7698a0ae73fb3ff51d3a83c780b1bee8", + "0x6414f39c9a9aef62156b57044cacef12fb99ccde6944a53c28c9c7f59130c639", + "0xdca75dcbdc8531dfd2640c9f7979abd79a3e58c5e71f319d6aa63f1297e12637", + "0xbc82fd24e1be8bc9f7032a6bfafc482eed796460b3c76cfb482b67408db0a446", + "0x2a45e46666de9e8bc3d396917cbde99a6a0d859e64cc5e9ad8d67dfccbb06a1b", + "0xe4b24c21a7f23f5455f183b5d6b37137ae08c5bbad57851b2072601db62cb50d", + "0xd2cbfc68cb6060ceb677e4da6e21f56a6b086770b6f0d3717affdfada42ed799", + "0xa2942b6aa19abeb697ddedca8be248539c48ef596e08bcda26db0ba2bd5c95e3", + "0xa00ee5291426662b965577851d2f63639d30ba9b089431315cd51b0ea78171aa", + "0x057555a06a0f1faaeb2bc0c6e92d0a95336fd557271b720841cb99e2e0ce01cb", + "0x354d717988880d99017c7af5bcd9a98d2e24db9a9b66b802f374f074ea50651d", + "0x4a076d92f54d83551475bd3a00b6fbd0428a84da527a8d1529463c3697a148cf", + "0x7a0277376b4ff3e14916db4638440940a16cdfc37319c1696e4c6df1bd59c4b8", + "0x1e7b550fcf6a76237398d884f8b020c0f776a8e65b9b1ad1170dfaf69aebded1", + "0x44f458cfd9cbe3a376e75cf5bc43445ceec5c170e2155295350bb4c57ca73ada", + "0x3a130c2e4e95ff6f630797c2f2b2e6433e06979f965ecd4a170ec5c6d22d7748", + "0xa347b7de97da63b80adcb295a1c95f3cf836a0df9bc283c9710b799c00dd0b6b", + "0xa356c10c4e099212258c6f2fdae513032556c2a380814403900c6c0711d4b917", + "0xdd428412cbb7a32c3e7dc5c056db0827cb49fa8c83d984a998f32e15c3d73b48", + "0x40f61ff284733593a7b54896381e5364a054b9e7b1eb0d9b22e479f2468344d4", + "0x2fb5c179fdf142c2af4b2863cfc9b5a42dea7ed637a0f2c39d3af3b32c46c5e5", + "0x7d430b09e2ce51282117040927af580293f7704e9095bf4265797be7af55ee8c", + "0x7c62b0144ef255f729364ffa1b0e7f20ca4c87283618030c226fc0847855de1f", + "0x82deccd92a405b56f62d988c41d2418dd64324882eca967d8260e12cfcecb5db", + "0xbb8854151124237467e120b904244231ffb7f0342d742b0242a430c2ca587072", + "0xce988c73306b3671f018ad630800a6d70c6884ecfc84d172598581f31f5b0f48", + "0x4e5617a802f9a6ea3ec57138152a30a9791f6bc30cbb372a61e02258d5c1f5f1", + "0x8a4460e937b89c2b5ffa6e478a6f9ccc665870f313a7a06abdc82185adc1e296", + "0x429b9600e6a12bc746d21d3ee2ac76c559b5f06ab3e0f5f3b4c8f4504af965f9", + "0x6e8bd561662bf27835053957e56d9b510989efee68ac5cdb8571e9e649f10b63", + "0x4512b87f62323c6c8ade9fa56741823da2ef1f49e3fc76a6ab7a2b47026ad7f4", + "0x7315fc8e86ae2843394ebacbb40440eb66b5f3bf82d5d2a96741df5dce358038", + "0x860445348840ec438748ac4c579a33bf8f16a9922ca53bdac6aa09913d162564", + "0x0ba965c543ba155ebbbbd8bff4c5c63acf221790dd30c7be4bde078bab46dc06", + "0xe814f4ca631d612d0412b7c2c6723d351b2eb19b8563713925b033c676d87cc2", + "0xa3932c3653a210ab39a21127bb8ee97dae95c5bad9910a69bfbaed7b4ab9105b", + "0xbdff1e151c0d0ccd5c6a3be48030f5f905d06169cfe43f8dc1fc715270474344", + "0xe56765c9bc310b26996b60d030e45f7984bd641747e9520b2624f2b58a577f9e", + "0x58d51a1fda0740b191b91880f30035af7db135b54eceb7d1d064653368c39da3", + "0xe6c34027035fb35aefa0796d5714154526affa7bff1e926ccf23aaadc5a251ec", + "0x601023137408602a0d3f62c932de6f62b32372be2ff3e9508b77397e9c7b203e", + "0xbb51e1752b3a324f874ecacda5e4854778d08c976757aabe0d33f9eebce5b69f", + "0x648036ab2ef5c981d11bb45fc110d8c4effe00c6d06646e2df9f04c33b415829", + "0xf0400163aeda772b0139a4e69102589f143e9f23bda49bdc12e2609cc29c74c6", + "0x8d6227386788f4dbad5d8c43d575a627818648d258c03f0025aae5783659ae71", + "0xefa8513731cee73816c0b6168cb25153d29fe6940c1b30db971e1e53b0f59213", + "0x229da5c4b9c46829a93df8ae4bb34b6bf20c37644655277af3ec4b3ccb070351", + "0xca855b6710defa8e20942d981abb9a3a124f76b420ba48e5af32639ed14f8e1c", + "0xdb6e06723e801af3bb9432d02ca8136965dda7f37c592720c8dc7ac4a0c0d45a", + "0xea83e25432f45a0231993ef7b784d200cbb0f4d068d1ffd7c8652b9f1b3da061", + "0x9c6d1a2ac894a2e8f7cbe140d2f251fb454ca77d5b7c64c700bf02b08566032e", + "0x3a59d6738a9f712ed31740f4f211f926febc652ac65d39c768cc15ce6548ac29", + "0xe71d46072083ffc7b5ac292ae827019cb5cfaa335ad9b0717f6b4cd4c002e26b", + "0x0ab071ba6eb8197f56f5d7de6070c05774aec92fe3e38775dbe31b956c20de81", + "0x86e0d7fa597d2bc87b6e09714e2d9adcbf4ace67355414ba5b6cea23c747c0ca", + "0x70a095353bd4ecc77ae6253c93181c0c8880ed57ce5bf2ade7f75c3995ab53b7", + "0x273b6e8f768ce9478e9ca94a5c158ca1152698e89259ebcdefd9bcbb6ca1b28b", + "0xaf59d7b76771c5e8b3ad2f3965b81ed284d47ee892b69b991575f51f9024d82d", + "0x977a7259893512c087f602414f2c5498b52ac4a2283e5d9baba0e7e9d6074477", + "0x69f698ec8280e85baa7ee877652d6eb93281bc68fea8c778624c048113404e85", + "0x3a8e1bb449663fcc1afbf67899e136e3460f3a97fd87e2f2c9cf368ac605527c", + "0xa2656346c9cc287bc1f8697a4906310551f47a24da135467862eacf79f196f76", + "0xf6c099ca0d8d507610a3f549c53515ee11a9c4e55f8474131d3f247e6441d11e", + "0xdb6eb9df15e4da3163d93941524f16766a76be38d4967118c20b2a242e80e22e", + "0x6dc9cd38fb172a6a89672cb36be5fc994d16a126613b94433fe79e10945b3020", + "0xf3b8cd2494813f37bffae61f62a24c1be79e3a9473a556c53bc22ad305640d37", + "0xf1ec74d51276ceb47d5300db099b2729041244c16b1c7d5a9270815e4b2ad87b", + "0xbdb2440940a26dbe21a1e678e6ef5c133ed25f05a70055e52b961aa205dad7a6", + "0xc8e608b563a7af270682b2a5607c03a3e773792b1d59b42c9307d2de0b2287a2", + "0x204766659f1238b1084cf4be97ec53b579be09106ae5252ea6120561e7fa7e80", + "0x7b83846cb399dd5ce6ca56fc96188c5ec78b1c8175f1ca46f8f8ef562630783e", + "0xfc894212ea9bbc5972bc530b6ab7ed40aa7398e8cea35518701e21aaf5225812", + "0xb246a8d3f998bc40fc2862d6d065ac490fe0b8cbe6dc76b11ee9a7d14408864b", + "0xe9391a5600ebda987d96226f776f66d2d9a9ae6dcd61fbe40e2776cea2362165", + "0xf50492c1e56ff3fe1b499732d8e04be8dfe5c16326d31ff77ed9fbfab28ba3ea", + "0x160d294e2166b84c7b39e065b5420f75b845a3e2ca91601a47e86c492253c1a7", + "0x6fa516586c76584db45fa37f1c5c0ab7b7695d4f274ec1a794f88c408c6a9e86", + "0x38b23e425dcca799a06c70d8d4cdb15aeafb16df6b906e1459c9d2c09b00ff3b", + "0x6ccf588a93524bed61c1515129f9cbf228ead29ae4b019783af7ab043c216e72", + "0x3eb9bd1119bcea770e589c55646975e0ea7a825b7b18e27c4a397f98cb3fc072", + "0x18a6d2f8a33c0671304ed13e6b5d49098c95ad9084249d1e495bd3f5c5f8283f", + "0x4401e98be2f7bc8fb46f912d75d4918a03ddeb49c9c9f117bd92565e58a8469e", + "0x55ac69ff9f1a9bd7f88d9758ea891501844b3a932a15d8a4fdcb7ba2c1084495", + "0x3c7fa8eea9e6b19f49803ce3d3926dca64eae46a46d9a658919bae2c0d94b71d", + "0x1130c450d59983001032f00f934f838b20bb1520ff667de9bd8784b892bb6336", + "0xabdfb3d27da751c199289d132e29025923dd47efed222047b43e1584b3937da4", + "0xcfc39333669c6bb5506b2400bd0b682202a8397b9a369f597628c8c2ff62771d", + "0xa24e1607bf874ce72a9a237fc0604836287a2254b6bedc8befc20ca112f3f0b2", + "0x837ce20fe8b6184ec57972d5e9214a0f7e87822fa8e87c293645bbf095ef7a3b", + "0x25e11a9811c15fa64eb38bae5bf9c28d0135fda07185f68e668fbf1a9845970a", + "0x9bc56ef616eb63be18c96e479a4ff1b9b19c3e5874a7faf31d8a890964a507e9", + "0xdd1a5ac21a1acc161f4c73aa56ceac6dd90720cb4e293f15b6a2869d9a5d7501", + "0xd2474ed9bcc5145772ac21309b3bf461201ec85a13cc4b2503efebfe42f8aa9f", + "0xb90dde4373058caa2f5e402268b7c68486939369c062fe189b77d6ab73c96614", + "0x380ace11ada254f8c85083fde6e750ed01d2fab1409450ecf90311c16fc7154b", + "0x82ed384914a2d06ed9a3f9627b75c5329cea39b47667bc27b0c9815154b3c07c", + "0x71871257062f2de58dfe19330339c332eb336b509a3950c9f55210d702459f03", + "0x40a19295674bc11d2c5e28ee7ba584bf13cec92b709dc6d903f799871d4d5b16", + "0x76aa47f9816d3f2769edd4c605203fdbf732006664239e70ee8f46fc0bea693a", + "0xbdc813957728ae825aa3f11f0a518423cb563bd03535d8a8c017af39edd93305", + "0xea13b4df207c200a948fee3403af558b37c8ed660921268d3cd670bab7861404", + "0x98782d2a94d2eaff161ff7175580e794db2dd18ed9ed60431a3c663568ad6ce7", + "0x2f4e2925fd598937c5f268487ab6bcf07130403fdbad2a5422c9efd42bcb4413", + "0x7acf29b8b50a40e5879790dab398203f7a6d459947629624a09927d72a1c8876", + "0x2d08ef96ce1a6b2478b8ae9f442b14156b0a998f9c7e3778e0ab6f556bbcb5d6", + "0x7418de8e710dd6bb61c7559f581525b654b1950efebc62a18b71938ed2e70370", + "0x849c7c76b4a8f8d9090703f09a770fcd90458b99f099fb3f6802724f09782ae6", + "0x5fc720cfff22ef360b7ee9c1630137198a31166716a127c5cee0ebfa14e76719", + "0xd9b4dca033dbc28e1ef2a13d50fc550f18836eaef9d05bc6685fe9d531763a2f", + "0xe70dc6fe376311d6670e956d259af7d8a9c71ca90254849b0b91e2e9b5d5255c", + "0x2c5761e9caf98725a4170fd68b4784dbc9390bb720cf036e7284f6e82a5ec795", + "0x6b358b969aa8c56a722ec87e786e8dfaed7af9cdc1e289ca114c3f7211c36ef0", + "0x2d3a4b11eaf0dc658c0c19956edb0d60163f48198202784c33e992c706453ac4", + "0xda5a12aef28cbd95fb7f0f8041d26bc3cf11bb07a482426052d978f7715dacda", + "0x7d22ed949ac8b7388defd431d086dc651ef5eeb5fb7bf008b41ffeef577fc027", + "0x9b47b1800be3d0e9b008cf10e8afa67debc21dbf6f887b7c29c53713df8ecda2", + "0x7ed432ec67586b2f518e540b5f2b67d714fec68cfe3f1a569c093d9a780119b1", + "0x5440e156e97c8493bb9f4807230a808647de9ef8e14524cb7dbc0901a40184fc", + "0x986385123bdb3ed5c7226b882240ee619f30fd584a32957fc27a83aa1e06673d", + "0xa59fe31fbfa950d479a86eeff096fc455a7a699b3ff86ed1130bd8c8c1124853", + "0xea3bc775c21f3c1272e8204036fb517cc2f82441346e6ca3987a71993d907ca8", + "0x8001476e7252fabbc4fa046ae1f62634567ea538881c6a8a11b288f37ed64fcd", + "0xfd2a71ecf1b26505212d71467d2390cc80cecb0dad7888a6d0d0a6055eb9ca84", + "0xa7ea114a10801202d6a101371e5f9422136f1e173f98dea6810a9a09638872d4", + "0x5c3a8cecb7291388548f6150a16a6307b6edc4eeb69b8f01be34e8098bc7af28", + "0x1f6c0678871618e92bc65493552e70199aa342082d059fa6b0dd110a4b33c8d7", + "0x68fc40e6659f80a785e24cb875372e22f730b6c03d55448863db1eee57eb80a1", + "0x236adad26fbb619a9bb1ccc3e5c21fe705972498ff07898ba0df2d8ef3516869", + "0x03aa1165ebd146992ee1aee1ea82af214f9c923b99feb07e7c990f65adbe37f5", + "0xa89c64d5ab1aecc7e9f9df766fe96d3b0361d81e8048ed4527ed102d036244d0", + "0x90f26821990029ca0d738302c93a4b60c7ad9643b28f140373b91fa1dad39598", + "0x0f8cce246a5e4fa0140ff632ce99f96748987801f4a27e659f1ccdb3f97a8cd4", + "0x5deb4c4068270fe4e3871f3f70170e04276cec9f47fa4425225da1113de62a64", + "0x8c81ee90cfad026a6f23e6f8f33b47411b3602adf490dd6971f4c3c7c9671f57", + "0x05605b9ef167d70a2eedee808c560f61b2bdef0fbc3f61b02bbc52026126156f", + "0xf209a2efe21982cedf5c399040b52be63fe75bf1fe88030a00647c66dab02f96", + "0x6095b14b43cbe789aaea67d7f69d9c6722c17f15dd76ced663dbd747c1131bdb", + "0x94f74e0e64f18665575e26277b3664499dc1d01e4d6dab54a7adf2001e81dcde", + "0x1a901003a7c13e1fcdd13d8c12942c7282e72c94808dc9bd32d77e76cd63ccd0", + "0xea3609e61bcca46eae1695a0bd4188369932fedd20ffe5f93cf22ae871b4f1ef", + "0x027d38050cd0dd5a429d8c3e70b01ff44c8694547383971e2fd85cf312aff759", + "0x232a3620d0ef161d9c72810dcc19b6b76cf024cd551250f14254de046c2dcf4d", + "0x7b168f089c9708a92753916472b83b818994da06a0c64873976ecfe67b4e98c3", + "0x19440d9074c298034d77782b69844e72260d5f0badbc540d240eabfc5bb77a75", + "0x23905d3a64259e5c5496d71fa37e196ac7902b05d095e51bc94e1be6b7757d36", + "0x4aef396e9d58860fbd300b3b797bd51db5e57543fe0ea70291f20576b741103a", + "0x3a9f028ef7c907be3d7ee99cca564df1a6c7cdf461ce09f4765425980a027a1b", + "0xc333a37ec383f09e571492a27056325f7fd0cfbf061fcb5d20e53023acf073a5", + "0xfdf4499c98c4f4b4e31947595682baba0adab78dc11079f50de2aec0fd018a6d", + "0x58a7778a69ef7bd43ed826c54b79c5f070f4b99e2dd08888d817b5f8d375c52b", + "0x1cfb736673e8fcc6889240f1ff69b0d0fcfce34d28e9ddf27f6bee1d8fd90a50", + "0x6eb44090b9092b101d37b897ef88e7c7fc432a5daf7ea514a3cbdad3e5ebe273", + "0x72a902396914af491548de693380bd904776361624264f00a6baf615ea75d74d", + "0xee06fdf85bf3aae87a5b824259ae7dc4eb007f79f33e1d054e8ca7d1a0348b7c", + "0xf49996ee34248d37bfa89924f5d5900f5a4a37156fa172c8eb15ceab849a499e", + "0x2828c1bf01a0bdd6574e71f15b70e0b865162f3f9d85d7f0456bf17052d13db4", + "0x717c4e7d9822ff7e9f684428e7c1dfe41434113cc41b63177bd77bc01f222e85", + "0xfe43a2f383a77c3242a060322795002e5e85da68e338e0b04ef5bfb544a6f741", + "0x06d82bca611ecb5abac06b1bf1c5862f30e2e17c1ee4c56d83b6360666df2cfd", + "0xb51ceb3e5de3c80cde925de8cf8716e1f71cb6b36c3c93f796e0df03851eff41", + "0x93b59443a6a29a396d9770a8cc3a5514ed3b0790317f984b5e50af37d66c9c0a", + "0x8466aa0a7c0d9b667743784848786bade20f65fa6d8450070848f6c2f2f7afd8", + "0x5bddb05a4edfbbdf444a11f8b5a56cbb7274ad316f50084dd9031caf7c2a4395", + "0xa7a3cdc5b9487a826ba813acbc56467b892d07c693fb6ec63f026d6a20812109", + "0xcd0004cf696bf13fd6ca119b7a9bd8b8e82b7bf4b23d4ec82b7f3d813c8ea75d", + "0xa36e92341fdf9f6781420a0247929464c9c9609f068696853d80f0bfea672884", + "0x967ed9f10b5c76f44e18cf2ce8f6bf13904ad6f1b5ac57eb1a9c640eb8fc7461", + "0x5304fafac069aa22d2bac19c0ab61e9d2d8980cfdbe60c5cc24db80adb8d3195", + "0x6ff81f47be444691a521912a31fe83e497b87cd7f13e61d6b92ee7f0b8a44e1c", + "0x2db2c3f22099c4c59f5ed0507e87287b085c6756ecfc86ed6af6c5136bd0f54b", + "0x76314abadf3ba7c7d6ef2e4cd53c2e6541c9771167e8e5e4a240c6a243379b0b", + "0x4cf46c44d6dbb42a0d38f492ea90202c07f4f91abcfa3bb999a9e781c41a42a4", + "0xee8b17aed9e8e0e2dfa2be0734aad690cdf04375289957005af85bc0dcc1ddc9" + ], + "cur_hash": "0x5377110dfb73129b02e62329cfa303ffaf4b931cf4bf527a6aec97dbb98dc6eb" + }, + "withdrawals": [ + [ + "0x64048d00981975d1f6828a807e783d6ab550ee65", + "0x10d8516" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10d9ece" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10ceec3" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10d7f0c" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10d4753" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10be061" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10c99d1" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10d4fc8" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10baf52" + ], + [ + "0x252919b124156491d184da4444cd2d283e31b80b", + "0x10c78f5" + ], + [ + "0x3cd0c38d5c34ee95fef849256069a3b5c09ad349", + "0x10d1fbd" + ], + [ + "0x3cd0c38d5c34ee95fef849256069a3b5c09ad349", + "0x10cf7fc" + ], + [ + "0x3cd0c38d5c34ee95fef849256069a3b5c09ad349", + "0x10c5024" + ], + [ + "0x3cd0c38d5c34ee95fef849256069a3b5c09ad349", + "0x10d1464" + ], + [ + "0x7142ca8a9618ded97f8838fbe5ecc4515e840a47", + "0x10cdd11" + ], + [ + "0x7142ca8a9618ded97f8838fbe5ecc4515e840a47", + "0x10d60ca" + ] + ] + }, + "checkpoint_state_trie_root": "0x5c2fb1152746455e14b133a1bf1763f72172e681f6d693f4de7ad3f7430bece8" + } + } +] diff --git a/tools/artifacts/witness_b2_b7.json b/tools/artifacts/witness_b2_b7.json new file mode 100644 index 00000000..edb9d173 --- /dev/null +++ b/tools/artifacts/witness_b2_b7.json @@ -0,0 +1,2414 @@ +[ + { + "block_trace": { + "trie_pre_images": { + "combined": { + "compact": "0x0005582002601462093b5945d1676df093446790fd31b20e7b12a2e8e5e09d068109616b084a021e19e0c9bab240000005582002b64061d1b10621ed3cea3432c7e961244197663de5d2b7b25c29e63bec606d0847038d7ea4c680000218480558200268288056310c82aa4c01a7e12a10f8111a0560e72b700555479031b86c357d0841010558200239fa8ab811ddec4c30c62c575a346979cb7339d3e6b1b446aa9cec770bb1ca0847038d7ea4c68000055820022c9421b06b5fb4ed4f3f4b868f487d536ba02ebe1a6347c6a1312167dc000a0847038d7ea4c6800002194210055820021df1fa259221d02aa4956eb0d35ace318ca24c0a33a64c1af96cf67cf245b6084101055820021703c5eda8644a64cec152c58f5aacec93d72fb0bfa705f0473f9043a8357c0841010558200228a39461658094f425f190222a515c7902808b31fd90ea063e831b49d744390847038d7ea4c680000219808405582103b70e80538acdabd6137353b0f9d8d149f4dba91e8be2e7946e409bfdbe685b900841010558210389802d6ed1a28b049e9d4fe5334c5902fd9bc00c42821c82f82ee2da10be90800841010558200256274a27dd7524955417c11ecd917251cc7c4c8310f4c7e4bd3c304d3d9a790c064a021e19cb147d4182dc00055820023ab0970b73895b8c9959bae685c3a19f45eb5ad89d42b52a340ec4ac204d190841010219102005582103876da518a393dbd067dc72abfa08d475ed6447fca96d92ec3f9e7eba503ca6100841010558210352688a8f926c816ca1e079067caba944f158e764817b83fc43594370ca9cf6200841010558200296cdcb823ae5bcb55a33b2a1a22c03bb69870a0270cfef4e7ea22125e9aa090847038d7ea4c680000558200290b239ba3aaf993e443ae14aeffc44cf8d9931a79baed9fa141d0e4506e13108410102184205582103bd0026f7e234624f2bd4ca2c50d2f731cd19f206a89b29fa0c50b5b4e6bf13300847038d7ea4c680000219e573" + } + }, + "code_db": null, + "txn_info": [ + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19c778536cbd49b0", + "nonce": "0x7" + }, + "0x14dc11386c1eee1dff28b4823f68e8de3b5a2747": { + "balance": "0x71afd498d0000" + } + }, + "meta": { + "byte_code": "0x02f86f820539068084684ee1808252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c001a092dbe3ecfa549833bd3d19749cfe5cf8f52d97453161a1b7e54183844940748fa07a2b355a1badc2ac05a2114373c908041cd3a41d6e5fbffaeaa28564739f9c37", + "new_txn_trie_node_byte": "0x02f86f820539068084684ee1808252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c001a092dbe3ecfa549833bd3d19749cfe5cf8f52d97453161a1b7e54183844940748fa07a2b355a1badc2ac05a2114373c908041cd3a41d6e5fbffaeaa28564739f9c37", + "new_receipt_trie_node_byte": "0xb9010c02f9010801825208b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19c3dc2997f7b760", + "nonce": "0x8" + }, + "0x92d3267215ec56542b985473e73c8417403b15ac": { + "balance": "0x71afd498d0000" + } + }, + "meta": { + "byte_code": "0x02f86f820539078084684ee1808252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c080a0bc63624565de404628556d7eb9417d09b42a2d7ebe157b4f793228c1853eb264a07d864356f782d8550850cefd9443685949ca9a798b3525f18372b95631a1b3af", + "new_txn_trie_node_byte": "0x02f86f820539078084684ee1808252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c080a0bc63624565de404628556d7eb9417d09b42a2d7ebe157b4f793228c1853eb264a07d864356f782d8550850cefd9443685949ca9a798b3525f18372b95631a1b3af", + "new_receipt_trie_node_byte": "0xb9010c02f901080182a410b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19c03fffc3322510", + "nonce": "0x9" + }, + "0x882145b1f9764372125861727d7be616c84010ef": { + "balance": "0x71afd498d0000" + } + }, + "meta": { + "byte_code": "0x02f86f820539088084684ee18082520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c080a02713ccd51a6f9a0dffe183d16f74298378766ec9ad7144271c71d2585e33759aa0536b5efaacae718f1b88022075479e2a4a15538062feb46eed9195b24c9a02d7", + "new_txn_trie_node_byte": "0x02f86f820539088084684ee18082520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c080a02713ccd51a6f9a0dffe183d16f74298378766ec9ad7144271c71d2585e33759aa0536b5efaacae718f1b88022075479e2a4a15538062feb46eed9195b24c9a02d7", + "new_receipt_trie_node_byte": "0xb9010c02f901080182f618b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19bca3d5ee6c92c0", + "nonce": "0xa" + }, + "0x2c80179883217370f777e76c067eea91d8283c5c": { + "balance": "0x71afd498d0000" + } + }, + "meta": { + "byte_code": "0x02f86f820539098084684ee180825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c080a06fa2057d82f93db7270054b4d14a87ae9b637a55d1807554558df6d594426a3da01a305e8690961c69049c91241736e8f42a69331fc858be99f0c685d51459efcf", + "new_txn_trie_node_byte": "0x02f86f820539098084684ee180825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c080a06fa2057d82f93db7270054b4d14a87ae9b637a55d1807554558df6d594426a3da01a305e8690961c69049c91241736e8f42a69331fc858be99f0c685d51459efcf", + "new_receipt_trie_node_byte": "0xb9010d02f901090183014820b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19b907ac19a70070", + "nonce": "0xb" + }, + "0x9e0823da9f7f3a0b22dd2798e6af7b39be37f0da": { + "balance": "0x71afd498d0000" + } + }, + "meta": { + "byte_code": "0x02f86f8205390a8084684ee180825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a030aa6c020193e75936be747c0e8da2f9beebc266de42f6a3ebb3afe6247733bfa05220d355e4ec287f06ae0e40b23bb4a86dfb54c645b5a345d80fd9c097d5bccc", + "new_txn_trie_node_byte": "0x02f86f8205390a8084684ee180825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a030aa6c020193e75936be747c0e8da2f9beebc266de42f6a3ebb3afe6247733bfa05220d355e4ec287f06ae0e40b23bb4a86dfb54c645b5a345d80fd9c097d5bccc", + "new_receipt_trie_node_byte": "0xb9010d02f901090183019a28b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19b56b8244e16e20", + "nonce": "0xc" + }, + "0x7972eef40a371cbfd84c7d709507cc300c6d06a5": { + "balance": "0x71afd498d0000" + } + }, + "meta": { + "byte_code": "0x02f86f8205390b8084684ee180825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a0350f184d3a2dfd842fe7e95131933ab980f9ce1bf2d81fc37582df17d3c97883a03d91d78fb680003308495c1c1f40055c0e5530cd235cba33371ef0815bbabc2e", + "new_txn_trie_node_byte": "0x02f86f8205390b8084684ee180825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a0350f184d3a2dfd842fe7e95131933ab980f9ce1bf2d81fc37582df17d3c97883a03d91d78fb680003308495c1c1f40055c0e5530cd235cba33371ef0815bbabc2e", + "new_receipt_trie_node_byte": "0xb9010d02f90109018301ec30b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + } + ] + }, + "other_data": { + "b_data": { + "b_meta": { + "block_beneficiary": "0x67b1d87101671b127f5f8714789c7192f7ad340e", + "block_timestamp": "0x666a9696", + "block_number": "0x2", + "block_difficulty": "0x2", + "block_random": "0x0000000000000000000000000000000000000000000000000000000000000000", + "block_gaslimit": "0xafd1a5", + "block_chain_id": "0x539", + "block_base_fee": "0x2dc70bca", + "block_gas_used": "0x1ec30", + "block_bloom": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ] + }, + "b_hashes": { + "prev_hashes": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xc493151b4991dd1bf459952509bba9bc3fb2b706299e18e36e6b78781835065d", + "0xecc163d4e19061c77f9bc84afaaa6b98961e33435f80f9ebd6f751716f172b9c" + ], + "cur_hash": "0x52ed2bdc1acae1b2ad7890c4084e6d0db5a85b79d6ffa3f7a7efc04e3428b5f4" + }, + "withdrawals": [] + }, + "checkpoint_state_trie_root": "0x0fd5324836befac89fcd430abb81f2a274130af0dfa1a89babac76c574b58c40" + } + }, + { + "block_trace": { + "trie_pre_images": { + "combined": { + "compact": "0x0005582002601462093b5945d1676df093446790fd31b20e7b12a2e8e5e09d068109616b084a021e19e0c9bab240000005582002b64061d1b10621ed3cea3432c7e961244197663de5d2b7b25c29e63bec606d0847071afd498d00000218480558200268288056310c82aa4c01a7e12a10f8111a0560e72b700555479031b86c357d0841010558200239fa8ab811ddec4c30c62c575a346979cb7339d3e6b1b446aa9cec770bb1ca0847071afd498d0000055820022c9421b06b5fb4ed4f3f4b868f487d536ba02ebe1a6347c6a1312167dc000a0847071afd498d000002194210055820021df1fa259221d02aa4956eb0d35ace318ca24c0a33a64c1af96cf67cf245b6084101055820021703c5eda8644a64cec152c58f5aacec93d72fb0bfa705f0473f9043a8357c0841010558200228a39461658094f425f190222a515c7902808b31fd90ea063e831b49d744390847071afd498d00000219808405582103b70e80538acdabd6137353b0f9d8d149f4dba91e8be2e7946e409bfdbe685b900841010558210389802d6ed1a28b049e9d4fe5334c5902fd9bc00c42821c82f82ee2da10be90800841010558200256274a27dd7524955417c11ecd917251cc7c4c8310f4c7e4bd3c304d3d9a790c0c4a021e19b56b8244e16e20055820023ab0970b73895b8c9959bae685c3a19f45eb5ad89d42b52a340ec4ac204d190841010219102005582103876da518a393dbd067dc72abfa08d475ed6447fca96d92ec3f9e7eba503ca6100841010558210352688a8f926c816ca1e079067caba944f158e764817b83fc43594370ca9cf6200841010558200296cdcb823ae5bcb55a33b2a1a22c03bb69870a0270cfef4e7ea22125e9aa090847071afd498d00000558200290b239ba3aaf993e443ae14aeffc44cf8d9931a79baed9fa141d0e4506e13108410102184205582103bd0026f7e234624f2bd4ca2c50d2f731cd19f206a89b29fa0c50b5b4e6bf13300847071afd498d00000219e573" + } + }, + "code_db": null, + "txn_info": [ + { + "traces": { + "0x14dc11386c1eee1dff28b4823f68e8de3b5a2747": { + "balance": "0xaa87bee538000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19b1d123920a4700", + "nonce": "0xd" + } + }, + "meta": { + "byte_code": "0x02f86f8205390c80845b8e17948252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c080a00a58699f9b733fbcedc646a376f2ce3147de686a82577f52345dcb07eb452636a036ccf13d2c1d7f3b3d73a35e1de002d5b8b9b3a16b1a76befb3dc652e3848a96", + "new_txn_trie_node_byte": "0x02f86f8205390c80845b8e17948252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c080a00a58699f9b733fbcedc646a376f2ce3147de686a82577f52345dcb07eb452636a036ccf13d2c1d7f3b3d73a35e1de002d5b8b9b3a16b1a76befb3dc652e3848a96", + "new_receipt_trie_node_byte": "0xb9010c02f9010801825208b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x92d3267215ec56542b985473e73c8417403b15ac": { + "balance": "0xaa87bee538000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19ae36c4df331fe0", + "nonce": "0xe" + } + }, + "meta": { + "byte_code": "0x02f86f8205390d80845b8e17948252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c080a004d21abe2e5c2b58d08dca7efdd4f1f5f9b612cbaac0559cb994dbab4af065e1a038c90f192cb6cd6b7932e55e816307ffefd43eac31daa12eb220f343f0c87ae2", + "new_txn_trie_node_byte": "0x02f86f8205390d80845b8e17948252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c080a004d21abe2e5c2b58d08dca7efdd4f1f5f9b612cbaac0559cb994dbab4af065e1a038c90f192cb6cd6b7932e55e816307ffefd43eac31daa12eb220f343f0c87ae2", + "new_receipt_trie_node_byte": "0xb9010c02f901080182a410b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19aa9c662c5bf8c0", + "nonce": "0xf" + }, + "0x882145b1f9764372125861727d7be616c84010ef": { + "balance": "0xaa87bee538000" + } + }, + "meta": { + "byte_code": "0x02f86f8205390e80845b8e179482520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c001a0c82df3fcaf2dc8704585465d951353092c85497dae88c0af95349b000ebec19da026311c7ed4f3580bdbb6ff90d66143ed9268f3fa849c22b0bf2697a87c27a042", + "new_txn_trie_node_byte": "0x02f86f8205390e80845b8e179482520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c001a0c82df3fcaf2dc8704585465d951353092c85497dae88c0af95349b000ebec19da026311c7ed4f3580bdbb6ff90d66143ed9268f3fa849c22b0bf2697a87c27a042", + "new_receipt_trie_node_byte": "0xb9010c02f901080182f618b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x2c80179883217370f777e76c067eea91d8283c5c": { + "balance": "0xaa87bee538000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19a702077984d1a0", + "nonce": "0x10" + } + }, + "meta": { + "byte_code": "0x02f86f8205390f80845b8e1794825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c001a024b550b0378ff482258f0cbded8acca28dd596cfa345b72eb820aef81547fbb5a0370acb5c8df0856109b044786515f7912fb126cae4749dd21ed842f2de9e15fe", + "new_txn_trie_node_byte": "0x02f86f8205390f80845b8e1794825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c001a024b550b0378ff482258f0cbded8acca28dd596cfa345b72eb820aef81547fbb5a0370acb5c8df0856109b044786515f7912fb126cae4749dd21ed842f2de9e15fe", + "new_receipt_trie_node_byte": "0xb9010d02f901090183014820b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x9e0823da9f7f3a0b22dd2798e6af7b39be37f0da": { + "balance": "0xaa87bee538000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19a367a8c6adaa80", + "nonce": "0x11" + } + }, + "meta": { + "byte_code": "0x02f86f8205391080845b8e1794825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a090a32c6b8c9465c41196acf9e693b08e354ab4b42a3f04d80031882dfa5201f5a066d70a3e893fccefdb8c64a099543a08c19d38b2456c5e39a25cc66ada38f319", + "new_txn_trie_node_byte": "0x02f86f8205391080845b8e1794825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a090a32c6b8c9465c41196acf9e693b08e354ab4b42a3f04d80031882dfa5201f5a066d70a3e893fccefdb8c64a099543a08c19d38b2456c5e39a25cc66ada38f319", + "new_receipt_trie_node_byte": "0xb9010d02f901090183019a28b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x7972eef40a371cbfd84c7d709507cc300c6d06a5": { + "balance": "0xaa87bee538000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e199fcd4a13d68360", + "nonce": "0x12" + } + }, + "meta": { + "byte_code": "0x02f86f8205391180845b8e1794825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a0cbd26a2d7e25345c0dc186ec91039a0d5cf958b0cffa9334b85c18949870c4cea02016b7f4800b0cc7f6c383e14a3bf7a1c1079c2a7a9158c7149f7bbc7147f079", + "new_txn_trie_node_byte": "0x02f86f8205391180845b8e1794825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a0cbd26a2d7e25345c0dc186ec91039a0d5cf958b0cffa9334b85c18949870c4cea02016b7f4800b0cc7f6c383e14a3bf7a1c1079c2a7a9158c7149f7bbc7147f079", + "new_receipt_trie_node_byte": "0xb9010d02f90109018301ec30b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + } + ] + }, + "other_data": { + "b_data": { + "b_meta": { + "block_beneficiary": "0x67b1d87101671b127f5f8714789c7192f7ad340e", + "block_timestamp": "0x666a96b7", + "block_number": "0x3", + "block_difficulty": "0x2", + "block_random": "0x0000000000000000000000000000000000000000000000000000000000000000", + "block_gaslimit": "0xaffd98", + "block_chain_id": "0x539", + "block_base_fee": "0x282e33e4", + "block_gas_used": "0x1ec30", + "block_bloom": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ] + }, + "b_hashes": { + "prev_hashes": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xc493151b4991dd1bf459952509bba9bc3fb2b706299e18e36e6b78781835065d", + "0xecc163d4e19061c77f9bc84afaaa6b98961e33435f80f9ebd6f751716f172b9c", + "0x52ed2bdc1acae1b2ad7890c4084e6d0db5a85b79d6ffa3f7a7efc04e3428b5f4" + ], + "cur_hash": "0x43e9e6398559ccdd4238d08a0b79ef57f50dddb2b75dd7c00e132718b54414c6" + }, + "withdrawals": [] + }, + "checkpoint_state_trie_root": "0x0fd5324836befac89fcd430abb81f2a274130af0dfa1a89babac76c574b58c40" + } + }, + { + "block_trace": { + "trie_pre_images": { + "combined": { + "compact": "0x0005582002601462093b5945d1676df093446790fd31b20e7b12a2e8e5e09d068109616b084a021e19e0c9bab240000005582002b64061d1b10621ed3cea3432c7e961244197663de5d2b7b25c29e63bec606d08470aa87bee5380000218480558200268288056310c82aa4c01a7e12a10f8111a0560e72b700555479031b86c357d0841010558200239fa8ab811ddec4c30c62c575a346979cb7339d3e6b1b446aa9cec770bb1ca08470aa87bee538000055820022c9421b06b5fb4ed4f3f4b868f487d536ba02ebe1a6347c6a1312167dc000a08470aa87bee53800002194210055820021df1fa259221d02aa4956eb0d35ace318ca24c0a33a64c1af96cf67cf245b6084101055820021703c5eda8644a64cec152c58f5aacec93d72fb0bfa705f0473f9043a8357c0841010558200228a39461658094f425f190222a515c7902808b31fd90ea063e831b49d7443908470aa87bee5380000219808405582103b70e80538acdabd6137353b0f9d8d149f4dba91e8be2e7946e409bfdbe685b900841010558210389802d6ed1a28b049e9d4fe5334c5902fd9bc00c42821c82f82ee2da10be90800841010558200256274a27dd7524955417c11ecd917251cc7c4c8310f4c7e4bd3c304d3d9a790c124a021e199fcd4a13d68360055820023ab0970b73895b8c9959bae685c3a19f45eb5ad89d42b52a340ec4ac204d190841010219102005582103876da518a393dbd067dc72abfa08d475ed6447fca96d92ec3f9e7eba503ca6100841010558210352688a8f926c816ca1e079067caba944f158e764817b83fc43594370ca9cf6200841010558200296cdcb823ae5bcb55a33b2a1a22c03bb69870a0270cfef4e7ea22125e9aa0908470aa87bee5380000558200290b239ba3aaf993e443ae14aeffc44cf8d9931a79baed9fa141d0e4506e13108410102184205582103bd0026f7e234624f2bd4ca2c50d2f731cd19f206a89b29fa0c50b5b4e6bf133008470aa87bee5380000219e573" + } + }, + "code_db": null, + "txn_info": [ + { + "traces": { + "0x14dc11386c1eee1dff28b4823f68e8de3b5a2747": { + "balance": "0xe35fa931a0000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e199c347e6242cbe8", + "nonce": "0x13" + } + }, + "meta": { + "byte_code": "0x02f86f820539128084505c67c88252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c001a07623906391b43777272fd81f61128a53d5a774e2d8869706d55db74949f63c8aa06d5354f430ac0d64bea7ca1846bfc99818b70e56a2bbf11e43b563fbf92e6130", + "new_txn_trie_node_byte": "0x02f86f820539128084505c67c88252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c001a07623906391b43777272fd81f61128a53d5a774e2d8869706d55db74949f63c8aa06d5354f430ac0d64bea7ca1846bfc99818b70e56a2bbf11e43b563fbf92e6130", + "new_receipt_trie_node_byte": "0xb9010c02f9010801825208b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x92d3267215ec56542b985473e73c8417403b15ac": { + "balance": "0xe35fa931a0000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19989bb2b0af1470", + "nonce": "0x14" + } + }, + "meta": { + "byte_code": "0x02f86f820539138084505c67c88252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c001a093768ed5baa342a66908d6acf28633218c96d295fd1cd9c8fe22080f56202ed4a03464d2a6c818e77e004e66624d7d722aa98579b0fc821f1d9101b76f1f6f3e86", + "new_txn_trie_node_byte": "0x02f86f820539138084505c67c88252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c001a093768ed5baa342a66908d6acf28633218c96d295fd1cd9c8fe22080f56202ed4a03464d2a6c818e77e004e66624d7d722aa98579b0fc821f1d9101b76f1f6f3e86", + "new_receipt_trie_node_byte": "0xb9010c02f901080182a410b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e199502e6ff1b5cf8", + "nonce": "0x15" + }, + "0x882145b1f9764372125861727d7be616c84010ef": { + "balance": "0xe35fa931a0000" + } + }, + "meta": { + "byte_code": "0x02f86f820539148084505c67c882520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c080a05770c4bafb679d29918cd6320af2384452c3ba35ae27dd5614a226ba002db4c5a02bbbc7405851bc0a7e84ecb188262dcb2cc7e2128418b13f60c485f7e656e372", + "new_txn_trie_node_byte": "0x02f86f820539148084505c67c882520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c080a05770c4bafb679d29918cd6320af2384452c3ba35ae27dd5614a226ba002db4c5a02bbbc7405851bc0a7e84ecb188262dcb2cc7e2128418b13f60c485f7e656e372", + "new_receipt_trie_node_byte": "0xb9010c02f901080182f618b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e19916a1b4d87a580", + "nonce": "0x16" + }, + "0x2c80179883217370f777e76c067eea91d8283c5c": { + "balance": "0xe35fa931a0000" + } + }, + "meta": { + "byte_code": "0x02f86f820539158084505c67c8825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c001a0ba3727de78f7a49d17825ff5983dfeab11572736d4b22f1806e29d605e24c686a025c36e4810754fb42b2837e9fb7621f254c5a241709dae666e4adf00cf1e3e64", + "new_txn_trie_node_byte": "0x02f86f820539158084505c67c8825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c001a0ba3727de78f7a49d17825ff5983dfeab11572736d4b22f1806e29d605e24c686a025c36e4810754fb42b2837e9fb7621f254c5a241709dae666e4adf00cf1e3e64", + "new_receipt_trie_node_byte": "0xb9010d02f901090183014820b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e198dd14f9bf3ee08", + "nonce": "0x17" + }, + "0x9e0823da9f7f3a0b22dd2798e6af7b39be37f0da": { + "balance": "0xe35fa931a0000" + } + }, + "meta": { + "byte_code": "0x02f86f820539168084505c67c8825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a05481ba0ae3a286406d94d84fd70248a3d3a5daff8ec2375f40a9fb25c06b19b5a074c8d65317262b7b6ce89b9eb37438a82ea4ca9b9fcb76082ccd8252bc2b9351", + "new_txn_trie_node_byte": "0x02f86f820539168084505c67c8825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a05481ba0ae3a286406d94d84fd70248a3d3a5daff8ec2375f40a9fb25c06b19b5a074c8d65317262b7b6ce89b9eb37438a82ea4ca9b9fcb76082ccd8252bc2b9351", + "new_receipt_trie_node_byte": "0xb9010d02f901090183019a28b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x7972eef40a371cbfd84c7d709507cc300c6d06a5": { + "balance": "0xe35fa931a0000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e198a3883ea603690", + "nonce": "0x18" + } + }, + "meta": { + "byte_code": "0x02f86f820539178084505c67c8825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a03ab3b30088fffac6c69a35924b4f9750a3208f64a1db817490c1564bce6ea159a04bdf3f5a24c1b46a9a7a067557706f3edb8f7aabb9c728ae85ebc3c93ec3ae3d", + "new_txn_trie_node_byte": "0x02f86f820539178084505c67c8825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a03ab3b30088fffac6c69a35924b4f9750a3208f64a1db817490c1564bce6ea159a04bdf3f5a24c1b46a9a7a067557706f3edb8f7aabb9c728ae85ebc3c93ec3ae3d", + "new_receipt_trie_node_byte": "0xb9010d02f90109018301ec30b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + } + ] + }, + "other_data": { + "b_data": { + "b_meta": { + "block_beneficiary": "0x67b1d87101671b127f5f8714789c7192f7ad340e", + "block_timestamp": "0x666a96bd", + "block_number": "0x4", + "block_difficulty": "0x2", + "block_random": "0x0000000000000000000000000000000000000000000000000000000000000000", + "block_gaslimit": "0xb02996", + "block_chain_id": "0x539", + "block_base_fee": "0x2344852f", + "block_gas_used": "0x1ec30", + "block_bloom": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ] + }, + "b_hashes": { + "prev_hashes": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xc493151b4991dd1bf459952509bba9bc3fb2b706299e18e36e6b78781835065d", + "0xecc163d4e19061c77f9bc84afaaa6b98961e33435f80f9ebd6f751716f172b9c", + "0x52ed2bdc1acae1b2ad7890c4084e6d0db5a85b79d6ffa3f7a7efc04e3428b5f4", + "0x43e9e6398559ccdd4238d08a0b79ef57f50dddb2b75dd7c00e132718b54414c6" + ], + "cur_hash": "0x7b32edfa990c8aa0dc2afc2c0a23e1c6e1ede6b03de689a444163011231d90ce" + }, + "withdrawals": [] + }, + "checkpoint_state_trie_root": "0x0fd5324836befac89fcd430abb81f2a274130af0dfa1a89babac76c574b58c40" + } + }, + { + "block_trace": { + "trie_pre_images": { + "combined": { + "compact": "0x0005582002601462093b5945d1676df093446790fd31b20e7b12a2e8e5e09d068109616b084a021e19e0c9bab240000005582002b64061d1b10621ed3cea3432c7e961244197663de5d2b7b25c29e63bec606d08470e35fa931a00000218480558200268288056310c82aa4c01a7e12a10f8111a0560e72b700555479031b86c357d0841010558200239fa8ab811ddec4c30c62c575a346979cb7339d3e6b1b446aa9cec770bb1ca08470e35fa931a0000055820022c9421b06b5fb4ed4f3f4b868f487d536ba02ebe1a6347c6a1312167dc000a08470e35fa931a000002194210055820021df1fa259221d02aa4956eb0d35ace318ca24c0a33a64c1af96cf67cf245b6084101055820021703c5eda8644a64cec152c58f5aacec93d72fb0bfa705f0473f9043a8357c0841010558200228a39461658094f425f190222a515c7902808b31fd90ea063e831b49d7443908470e35fa931a00000219808405582103b70e80538acdabd6137353b0f9d8d149f4dba91e8be2e7946e409bfdbe685b900841010558210389802d6ed1a28b049e9d4fe5334c5902fd9bc00c42821c82f82ee2da10be90800841010558200256274a27dd7524955417c11ecd917251cc7c4c8310f4c7e4bd3c304d3d9a790c18184a021e198a3883ea603690055820023ab0970b73895b8c9959bae685c3a19f45eb5ad89d42b52a340ec4ac204d190841010219102005582103876da518a393dbd067dc72abfa08d475ed6447fca96d92ec3f9e7eba503ca6100841010558210352688a8f926c816ca1e079067caba944f158e764817b83fc43594370ca9cf6200841010558200296cdcb823ae5bcb55a33b2a1a22c03bb69870a0270cfef4e7ea22125e9aa0908470e35fa931a00000558200290b239ba3aaf993e443ae14aeffc44cf8d9931a79baed9fa141d0e4506e13108410102184205582103bd0026f7e234624f2bd4ca2c50d2f731cd19f206a89b29fa0c50b5b4e6bf133008470e35fa931a00000219e573" + } + }, + "code_db": null, + "txn_info": [ + { + "traces": { + "0x14dc11386c1eee1dff28b4823f68e8de3b5a2747": { + "balance": "0x11c37937e08000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1986a119f5a569f8", + "nonce": "0x19" + } + }, + "meta": { + "byte_code": "0x02f86f82053918808446890a5e8252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c080a01ee4e0b9e3a36b9365dd66ef1739747aaa9ea180b99ef919745bb0c26eca9a0aa0529429ae74c290510e991704260aae40bbac5a8baa974bf7e8c2efedcc676c54", + "new_txn_trie_node_byte": "0x02f86f82053918808446890a5e8252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c080a01ee4e0b9e3a36b9365dd66ef1739747aaa9ea180b99ef919745bb0c26eca9a0aa0529429ae74c290510e991704260aae40bbac5a8baa974bf7e8c2efedcc676c54", + "new_receipt_trie_node_byte": "0xb9010c02f9010801825208b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e198309b000ea9d60", + "nonce": "0x1a" + }, + "0x92d3267215ec56542b985473e73c8417403b15ac": { + "balance": "0x11c37937e08000" + } + }, + "meta": { + "byte_code": "0x02f86f82053919808446890a5e8252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c080a09b213fe9a7ab176112945662b93d7a93a5f84f3ef6909e32d14608b12a1d5a71a0787b1244a63828be22c2d446d5861784bf0e2f2ff896142a3d8812da89f0cc24", + "new_txn_trie_node_byte": "0x02f86f82053919808446890a5e8252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c080a09b213fe9a7ab176112945662b93d7a93a5f84f3ef6909e32d14608b12a1d5a71a0787b1244a63828be22c2d446d5861784bf0e2f2ff896142a3d8812da89f0cc24", + "new_receipt_trie_node_byte": "0xb9010c02f901080182a410b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e197f72460c2fd0c8", + "nonce": "0x1b" + }, + "0x882145b1f9764372125861727d7be616c84010ef": { + "balance": "0x11c37937e08000" + } + }, + "meta": { + "byte_code": "0x02f86f8205391a808446890a5e82520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c080a0339da690b2886d5946051623746e59d1d39fe2bcd68779ad10dd1a6b79a5bf82a05240a5c320af3a5ef10125dd21a21fd661a3a9e9c5325c653aa3aea71ba61a47", + "new_txn_trie_node_byte": "0x02f86f8205391a808446890a5e82520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c080a0339da690b2886d5946051623746e59d1d39fe2bcd68779ad10dd1a6b79a5bf82a05240a5c320af3a5ef10125dd21a21fd661a3a9e9c5325c653aa3aea71ba61a47", + "new_receipt_trie_node_byte": "0xb9010c02f901080182f618b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x2c80179883217370f777e76c067eea91d8283c5c": { + "balance": "0x11c37937e08000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e197bdadc17750430", + "nonce": "0x1c" + } + }, + "meta": { + "byte_code": "0x02f86f8205391b808446890a5e825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c080a00583425445c2d0f1deb7a25ce7419319fec040a2a2f42964f50212b14a8786e2a027750f5f7bd58f4d5bda04fac460d8fd1655dcc3aed93c4c24e194d1bb52af1a", + "new_txn_trie_node_byte": "0x02f86f8205391b808446890a5e825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c080a00583425445c2d0f1deb7a25ce7419319fec040a2a2f42964f50212b14a8786e2a027750f5f7bd58f4d5bda04fac460d8fd1655dcc3aed93c4c24e194d1bb52af1a", + "new_receipt_trie_node_byte": "0xb9010d02f901090183014820b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1978437222ba3798", + "nonce": "0x1d" + }, + "0x9e0823da9f7f3a0b22dd2798e6af7b39be37f0da": { + "balance": "0x11c37937e08000" + } + }, + "meta": { + "byte_code": "0x02f86f8205391c808446890a5e825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a0adff5b10cb25534d49ee5ad0f20ef089c520faec0f16cfbac65066b422c42ff4a04421d46de38a004848f62c524e2f3ceb4d02a989b6b3331c149190b9631a60bb", + "new_txn_trie_node_byte": "0x02f86f8205391c808446890a5e825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a0adff5b10cb25534d49ee5ad0f20ef089c520faec0f16cfbac65066b422c42ff4a04421d46de38a004848f62c524e2f3ceb4d02a989b6b3331c149190b9631a60bb", + "new_receipt_trie_node_byte": "0xb9010d02f901090183019a28b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1974ac082dff6b00", + "nonce": "0x1e" + }, + "0x7972eef40a371cbfd84c7d709507cc300c6d06a5": { + "balance": "0x11c37937e08000" + } + }, + "meta": { + "byte_code": "0x02f86f8205391d808446890a5e825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c080a0607e1c02503e06143020ef6d58073e0346750c2d1a290b979570bd9e3be19829a002a062d70894169ba2e49894eb602dc5324ecab8e6a0453288dd1b9462a3bb45", + "new_txn_trie_node_byte": "0x02f86f8205391d808446890a5e825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c080a0607e1c02503e06143020ef6d58073e0346750c2d1a290b979570bd9e3be19829a002a062d70894169ba2e49894eb602dc5324ecab8e6a0453288dd1b9462a3bb45", + "new_receipt_trie_node_byte": "0xb9010d02f90109018301ec30b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + } + ] + }, + "other_data": { + "b_data": { + "b_meta": { + "block_beneficiary": "0x67b1d87101671b127f5f8714789c7192f7ad340e", + "block_timestamp": "0x666a96c2", + "block_number": "0x5", + "block_difficulty": "0x2", + "block_random": "0x0000000000000000000000000000000000000000000000000000000000000000", + "block_gaslimit": "0xb0559f", + "block_chain_id": "0x539", + "block_base_fee": "0x1ef496d3", + "block_gas_used": "0x1ec30", + "block_bloom": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ] + }, + "b_hashes": { + "prev_hashes": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xc493151b4991dd1bf459952509bba9bc3fb2b706299e18e36e6b78781835065d", + "0xecc163d4e19061c77f9bc84afaaa6b98961e33435f80f9ebd6f751716f172b9c", + "0x52ed2bdc1acae1b2ad7890c4084e6d0db5a85b79d6ffa3f7a7efc04e3428b5f4", + "0x43e9e6398559ccdd4238d08a0b79ef57f50dddb2b75dd7c00e132718b54414c6", + "0x7b32edfa990c8aa0dc2afc2c0a23e1c6e1ede6b03de689a444163011231d90ce" + ], + "cur_hash": "0x540299ad479ada4fd07dc1f9506ab7cf71719c3d372d288d2ce43906a2437f59" + }, + "withdrawals": [] + }, + "checkpoint_state_trie_root": "0x0fd5324836befac89fcd430abb81f2a274130af0dfa1a89babac76c574b58c40" + } + }, + { + "block_trace": { + "trie_pre_images": { + "combined": { + "compact": "0x0005582002601462093b5945d1676df093446790fd31b20e7b12a2e8e5e09d068109616b084a021e19e0c9bab240000005582002b64061d1b10621ed3cea3432c7e961244197663de5d2b7b25c29e63bec606d084711c37937e080000218480558200268288056310c82aa4c01a7e12a10f8111a0560e72b700555479031b86c357d0841010558200239fa8ab811ddec4c30c62c575a346979cb7339d3e6b1b446aa9cec770bb1ca084711c37937e08000055820022c9421b06b5fb4ed4f3f4b868f487d536ba02ebe1a6347c6a1312167dc000a084711c37937e0800002194210055820021df1fa259221d02aa4956eb0d35ace318ca24c0a33a64c1af96cf67cf245b6084101055820021703c5eda8644a64cec152c58f5aacec93d72fb0bfa705f0473f9043a8357c0841010558200228a39461658094f425f190222a515c7902808b31fd90ea063e831b49d74439084711c37937e080000219808405582103b70e80538acdabd6137353b0f9d8d149f4dba91e8be2e7946e409bfdbe685b900841010558210389802d6ed1a28b049e9d4fe5334c5902fd9bc00c42821c82f82ee2da10be90800841010558200256274a27dd7524955417c11ecd917251cc7c4c8310f4c7e4bd3c304d3d9a790c181e4a021e1974ac082dff6b00055820023ab0970b73895b8c9959bae685c3a19f45eb5ad89d42b52a340ec4ac204d190841010219102005582103876da518a393dbd067dc72abfa08d475ed6447fca96d92ec3f9e7eba503ca6100841010558210352688a8f926c816ca1e079067caba944f158e764817b83fc43594370ca9cf6200841010558200296cdcb823ae5bcb55a33b2a1a22c03bb69870a0270cfef4e7ea22125e9aa09084711c37937e080000558200290b239ba3aaf993e443ae14aeffc44cf8d9931a79baed9fa141d0e4506e13108410102184205582103bd0026f7e234624f2bd4ca2c50d2f731cd19f206a89b29fa0c50b5b4e6bf1330084711c37937e080000219e573" + } + }, + "code_db": null, + "txn_info": [ + { + "traces": { + "0x14dc11386c1eee1dff28b4823f68e8de3b5a2747": { + "balance": "0x1550f7dca70000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e197115d4b751ecc0", + "nonce": "0x1f" + } + }, + "meta": { + "byte_code": "0x02f86f8205391e80843de92da68252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c001a0f097340ff786fe4936c8dcc2358abfb35b9888fd97da23f7de5966e9564e2766a0625ba834320c99f672daa3b53b965f7af9407485ce49ac450d169198a8972735", + "new_txn_trie_node_byte": "0x02f86f8205391e80843de92da68252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c001a0f097340ff786fe4936c8dcc2358abfb35b9888fd97da23f7de5966e9564e2766a0625ba834320c99f672daa3b53b965f7af9407485ce49ac450d169198a8972735", + "new_receipt_trie_node_byte": "0xb9010c02f9010801825208b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x92d3267215ec56542b985473e73c8417403b15ac": { + "balance": "0x1550f7dca70000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e196d7fa140a46e80", + "nonce": "0x20" + } + }, + "meta": { + "byte_code": "0x02f86f8205391f80843de92da68252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c080a02fce8a1c632efd8fea240326f04a7f9b01c84573282adf8595343ccb848286fba05a550cbb3851f59d214878d202ed9ee8eb12c54e38e20d0ee4826b0f25c601ac", + "new_txn_trie_node_byte": "0x02f86f8205391f80843de92da68252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c080a02fce8a1c632efd8fea240326f04a7f9b01c84573282adf8595343ccb848286fba05a550cbb3851f59d214878d202ed9ee8eb12c54e38e20d0ee4826b0f25c601ac", + "new_receipt_trie_node_byte": "0xb9010c02f901080182a410b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1969e96dc9f6f040", + "nonce": "0x21" + }, + "0x882145b1f9764372125861727d7be616c84010ef": { + "balance": "0x1550f7dca70000" + } + }, + "meta": { + "byte_code": "0x02f86f8205392080843de92da682520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c001a0a78cb955a97f7a93de2244bb33b7dcd34fd042883ce0875b4fee5bf8b106d7afa032b00b2c6907982ccca6ed1fb4f5e4c3a27bd1529b85e125f086999317070665", + "new_txn_trie_node_byte": "0x02f86f8205392080843de92da682520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c001a0a78cb955a97f7a93de2244bb33b7dcd34fd042883ce0875b4fee5bf8b106d7afa032b00b2c6907982ccca6ed1fb4f5e4c3a27bd1529b85e125f086999317070665", + "new_receipt_trie_node_byte": "0xb9010c02f901080182f618b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1966533a53497200", + "nonce": "0x22" + }, + "0x2c80179883217370f777e76c067eea91d8283c5c": { + "balance": "0x1550f7dca70000" + } + }, + "meta": { + "byte_code": "0x02f86f8205392180843de92da6825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c080a00d844acefc2d7e85b87efeb6b2dafe7e19cd48d3f22e6e4c7761bd2567b41b20a07056ce0b20e483e22384c69350893ebd00379f2a148486e17ac274d7bdba33a4", + "new_txn_trie_node_byte": "0x02f86f8205392180843de92da6825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c080a00d844acefc2d7e85b87efeb6b2dafe7e19cd48d3f22e6e4c7761bd2567b41b20a07056ce0b20e483e22384c69350893ebd00379f2a148486e17ac274d7bdba33a4", + "new_receipt_trie_node_byte": "0xb9010d02f901090183014820b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x9e0823da9f7f3a0b22dd2798e6af7b39be37f0da": { + "balance": "0x1550f7dca70000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1962bd06dc9bf3c0", + "nonce": "0x23" + } + }, + "meta": { + "byte_code": "0x02f86f8205392280843de92da6825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a00dd87a2c722138e8fe9e9242d6fea71c9456343457a58133867b3eb7b480506aa03f36067e682f89ef2723779b856f416d8fff548f99af0705bdb6ba32943dd4cd", + "new_txn_trie_node_byte": "0x02f86f8205392280843de92da6825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c080a00dd87a2c722138e8fe9e9242d6fea71c9456343457a58133867b3eb7b480506aa03f36067e682f89ef2723779b856f416d8fff548f99af0705bdb6ba32943dd4cd", + "new_receipt_trie_node_byte": "0xb9010d02f901090183019a28b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x7972eef40a371cbfd84c7d709507cc300c6d06a5": { + "balance": "0x1550f7dca70000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e195f26d365ee7580", + "nonce": "0x24" + } + }, + "meta": { + "byte_code": "0x02f86f8205392380843de92da6825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a0aaac3878bcb884b0cf46d1535fccb8421113d41045daed772338937500dcc57aa0593599f728a330be6d7bec338f95670bfc7021794ab83c0da9fe981b6e7248ed", + "new_txn_trie_node_byte": "0x02f86f8205392380843de92da6825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a0aaac3878bcb884b0cf46d1535fccb8421113d41045daed772338937500dcc57aa0593599f728a330be6d7bec338f95670bfc7021794ab83c0da9fe981b6e7248ed", + "new_receipt_trie_node_byte": "0xb9010d02f90109018301ec30b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + } + ] + }, + "other_data": { + "b_data": { + "b_meta": { + "block_beneficiary": "0x67b1d87101671b127f5f8714789c7192f7ad340e", + "block_timestamp": "0x666a96c8", + "block_number": "0x6", + "block_difficulty": "0x2", + "block_random": "0x0000000000000000000000000000000000000000000000000000000000000000", + "block_gaslimit": "0xb081b3", + "block_chain_id": "0x539", + "block_base_fee": "0x1b2b9dc8", + "block_gas_used": "0x1ec30", + "block_bloom": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ] + }, + "b_hashes": { + "prev_hashes": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xc493151b4991dd1bf459952509bba9bc3fb2b706299e18e36e6b78781835065d", + "0xecc163d4e19061c77f9bc84afaaa6b98961e33435f80f9ebd6f751716f172b9c", + "0x52ed2bdc1acae1b2ad7890c4084e6d0db5a85b79d6ffa3f7a7efc04e3428b5f4", + "0x43e9e6398559ccdd4238d08a0b79ef57f50dddb2b75dd7c00e132718b54414c6", + "0x7b32edfa990c8aa0dc2afc2c0a23e1c6e1ede6b03de689a444163011231d90ce", + "0x540299ad479ada4fd07dc1f9506ab7cf71719c3d372d288d2ce43906a2437f59" + ], + "cur_hash": "0x8f4e8872fece2779107919faea4dd350dbdef0b579084080c12de204614b01e4" + }, + "withdrawals": [] + }, + "checkpoint_state_trie_root": "0x0fd5324836befac89fcd430abb81f2a274130af0dfa1a89babac76c574b58c40" + } + }, + { + "block_trace": { + "trie_pre_images": { + "combined": { + "compact": "0x0005582002601462093b5945d1676df093446790fd31b20e7b12a2e8e5e09d068109616b084a021e19e0c9bab240000005582002b64061d1b10621ed3cea3432c7e961244197663de5d2b7b25c29e63bec606d08471550f7dca700000218480558200268288056310c82aa4c01a7e12a10f8111a0560e72b700555479031b86c357d0841010558200239fa8ab811ddec4c30c62c575a346979cb7339d3e6b1b446aa9cec770bb1ca08471550f7dca70000055820022c9421b06b5fb4ed4f3f4b868f487d536ba02ebe1a6347c6a1312167dc000a08471550f7dca7000002194210055820021df1fa259221d02aa4956eb0d35ace318ca24c0a33a64c1af96cf67cf245b6084101055820021703c5eda8644a64cec152c58f5aacec93d72fb0bfa705f0473f9043a8357c0841010558200228a39461658094f425f190222a515c7902808b31fd90ea063e831b49d7443908471550f7dca700000219808405582103b70e80538acdabd6137353b0f9d8d149f4dba91e8be2e7946e409bfdbe685b900841010558210389802d6ed1a28b049e9d4fe5334c5902fd9bc00c42821c82f82ee2da10be90800841010558200256274a27dd7524955417c11ecd917251cc7c4c8310f4c7e4bd3c304d3d9a790c18244a021e195f26d365ee7580055820023ab0970b73895b8c9959bae685c3a19f45eb5ad89d42b52a340ec4ac204d190841010219102005582103876da518a393dbd067dc72abfa08d475ed6447fca96d92ec3f9e7eba503ca6100841010558210352688a8f926c816ca1e079067caba944f158e764817b83fc43594370ca9cf6200841010558200296cdcb823ae5bcb55a33b2a1a22c03bb69870a0270cfef4e7ea22125e9aa0908471550f7dca700000558200290b239ba3aaf993e443ae14aeffc44cf8d9931a79baed9fa141d0e4506e13108410102184205582103bd0026f7e234624f2bd4ca2c50d2f731cd19f206a89b29fa0c50b5b4e6bf133008471550f7dca700000219e573" + } + }, + "code_db": null, + "txn_info": [ + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e195b91b077ba65a0", + "nonce": "0x25" + }, + "0x14dc11386c1eee1dff28b4823f68e8de3b5a2747": { + "balance": "0x18de76816d8000" + } + }, + "meta": { + "byte_code": "0x02f86f82053924808436573b908252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c080a01f5434680e70fe67c289666daa62f021d77e75e014d772b76f7b66e96c2e35aca06ded5910833c78b37dcac16427030b2768c6d5457c79febb841c6a4f483c6138", + "new_txn_trie_node_byte": "0x02f86f82053924808436573b908252089414dc11386c1eee1dff28b4823f68e8de3b5a274787038d7ea4c6800080c080a01f5434680e70fe67c289666daa62f021d77e75e014d772b76f7b66e96c2e35aca06ded5910833c78b37dcac16427030b2768c6d5457c79febb841c6a4f483c6138", + "new_receipt_trie_node_byte": "0xb9010c02f9010801825208b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1957fc8d898655c0", + "nonce": "0x26" + }, + "0x92d3267215ec56542b985473e73c8417403b15ac": { + "balance": "0x18de76816d8000" + } + }, + "meta": { + "byte_code": "0x02f86f82053925808436573b908252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c001a0b58e8699319e3529c578ac9bb0b571f8f257df0943de4a17ce4cdab7cced1f40a078b718333c2cb89fbd67a2888fe72befb64685533c83f44980bc9e3a42feeb84", + "new_txn_trie_node_byte": "0x02f86f82053925808436573b908252089492d3267215ec56542b985473e73c8417403b15ac87038d7ea4c6800080c001a0b58e8699319e3529c578ac9bb0b571f8f257df0943de4a17ce4cdab7cced1f40a078b718333c2cb89fbd67a2888fe72befb64685533c83f44980bc9e3a42feeb84", + "new_receipt_trie_node_byte": "0xb9010c02f901080182a410b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1954676a9b5245e0", + "nonce": "0x27" + }, + "0x882145b1f9764372125861727d7be616c84010ef": { + "balance": "0x18de76816d8000" + } + }, + "meta": { + "byte_code": "0x02f86f82053926808436573b9082520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c080a011779b6c3d9c596d24125c4800472caaf666d22056a30156a3b52170c8f23b79a00e0129e08c7917f08356dc870976275a2de21d6dc89b36f53ffd74f9a8518d90", + "new_txn_trie_node_byte": "0x02f86f82053926808436573b9082520894882145b1f9764372125861727d7be616c84010ef87038d7ea4c6800080c080a011779b6c3d9c596d24125c4800472caaf666d22056a30156a3b52170c8f23b79a00e0129e08c7917f08356dc870976275a2de21d6dc89b36f53ffd74f9a8518d90", + "new_receipt_trie_node_byte": "0xb9010c02f901080182f618b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1950d247ad1e3600", + "nonce": "0x28" + }, + "0x2c80179883217370f777e76c067eea91d8283c5c": { + "balance": "0x18de76816d8000" + } + }, + "meta": { + "byte_code": "0x02f86f82053927808436573b90825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c001a077839a39ca68239775657fa67c028891424835ed0fcf9b84149382e9c65e018fa03c4aeea69f7a0c1b04ff13288702290155396075ea13ae982fab97441efbf594", + "new_txn_trie_node_byte": "0x02f86f82053927808436573b90825208942c80179883217370f777e76c067eea91d8283c5c87038d7ea4c6800080c001a077839a39ca68239775657fa67c028891424835ed0fcf9b84149382e9c65e018fa03c4aeea69f7a0c1b04ff13288702290155396075ea13ae982fab97441efbf594", + "new_receipt_trie_node_byte": "0xb9010d02f901090183014820b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x9e0823da9f7f3a0b22dd2798e6af7b39be37f0da": { + "balance": "0x18de76816d8000" + }, + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e194d3d24beea2620", + "nonce": "0x29" + } + }, + "meta": { + "byte_code": "0x02f86f82053928808436573b90825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c001a01d26b7cc6ff90bf7e28d5228add30e6231f68165ffe980d34b70a6ad313ab99fa00a03a2a9e24513a9e763948758937c31f223ed8f41fe345fb3bc439797b0ce89", + "new_txn_trie_node_byte": "0x02f86f82053928808436573b90825208949e0823da9f7f3a0b22dd2798e6af7b39be37f0da87038d7ea4c6800080c001a01d26b7cc6ff90bf7e28d5228add30e6231f68165ffe980d34b70a6ad313ab99fa00a03a2a9e24513a9e763948758937c31f223ed8f41fe345fb3bc439797b0ce89", + "new_receipt_trie_node_byte": "0xb9010d02f901090183019a28b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + }, + { + "traces": { + "0x67b1d87101671b127f5f8714789c7192f7ad340e": { + "balance": "0x21e1949a801d0b61640", + "nonce": "0x2a" + }, + "0x7972eef40a371cbfd84c7d709507cc300c6d06a5": { + "balance": "0x18de76816d8000" + } + }, + "meta": { + "byte_code": "0x02f86f82053929808436573b90825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a0c88544f777b3d7f6a069479f5a792b080efb42f90b1875e28a04b59105fc0931a017e6cf1abe23b0cfa3cf83947ae3ce26f69753aeb0a51695e3dc75c748fdf164", + "new_txn_trie_node_byte": "0x02f86f82053929808436573b90825208947972eef40a371cbfd84c7d709507cc300c6d06a587038d7ea4c6800080c001a0c88544f777b3d7f6a069479f5a792b080efb42f90b1875e28a04b59105fc0931a017e6cf1abe23b0cfa3cf83947ae3ce26f69753aeb0a51695e3dc75c748fdf164", + "new_receipt_trie_node_byte": "0xb9010d02f90109018301ec30b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0", + "gas_used": 21000 + } + } + ] + }, + "other_data": { + "b_data": { + "b_meta": { + "block_beneficiary": "0x67b1d87101671b127f5f8714789c7192f7ad340e", + "block_timestamp": "0x666a96cd", + "block_number": "0x7", + "block_difficulty": "0x2", + "block_random": "0x0000000000000000000000000000000000000000000000000000000000000000", + "block_gaslimit": "0xb0add2", + "block_chain_id": "0x539", + "block_base_fee": "0x17d91afc", + "block_gas_used": "0x1ec30", + "block_bloom": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ] + }, + "b_hashes": { + "prev_hashes": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xc493151b4991dd1bf459952509bba9bc3fb2b706299e18e36e6b78781835065d", + "0xecc163d4e19061c77f9bc84afaaa6b98961e33435f80f9ebd6f751716f172b9c", + "0x52ed2bdc1acae1b2ad7890c4084e6d0db5a85b79d6ffa3f7a7efc04e3428b5f4", + "0x43e9e6398559ccdd4238d08a0b79ef57f50dddb2b75dd7c00e132718b54414c6", + "0x7b32edfa990c8aa0dc2afc2c0a23e1c6e1ede6b03de689a444163011231d90ce", + "0x540299ad479ada4fd07dc1f9506ab7cf71719c3d372d288d2ce43906a2437f59", + "0x8f4e8872fece2779107919faea4dd350dbdef0b579084080c12de204614b01e4" + ], + "cur_hash": "0x9fe97326da9f39550fd361614c13bc56b648fa5bd30ed7d296920b9928c44138" + }, + "withdrawals": [] + }, + "checkpoint_state_trie_root": "0x0fd5324836befac89fcd430abb81f2a274130af0dfa1a89babac76c574b58c40" + } + } +] diff --git a/tools/jerigon_witness_extractor/Cargo.toml b/tools/jerigon_witness_extractor/Cargo.toml deleted file mode 100644 index 138fc1c1..00000000 --- a/tools/jerigon_witness_extractor/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "jerigon_witness_extractor" -version = "0.1.0" -edition = "2021" - -[dependencies] -clap = { workspace = true } -tracing = { workspace = true } -tracing-subscriber = { workspace = true } -anyhow = { workspace = true } -serde = { workspace = true } -serde_json = { workspace = true } -tokio = { workspace = true } - -# Local dependencies -common = { path = "../../common" } diff --git a/tools/jerigon_witness_extractor/src/main.rs b/tools/jerigon_witness_extractor/src/main.rs deleted file mode 100644 index 9d46d29c..00000000 --- a/tools/jerigon_witness_extractor/src/main.rs +++ /dev/null @@ -1,8 +0,0 @@ -use anyhow::Result; - -#[tokio::main] -async fn main() -> Result<()> { - println!("This is jerigon witness extractor!"); - - Ok(()) -} diff --git a/tools/simple_test.sh b/tools/stdio_test.sh similarity index 75% rename from tools/simple_test.sh rename to tools/stdio_test.sh index 292c2ba9..315f4d94 100755 --- a/tools/simple_test.sh +++ b/tools/stdio_test.sh @@ -1,18 +1,16 @@ #!/bin/bash # ------------------------------------------------------------------------------ -# This is meant to be a somewhat self contained script for quickly -# proving an Ethereum mainnet block with the type 1 prover. The goal -# is to use this for benchmarking and CI. This is the block in -# question: https://etherscan.io/block/19240705 +# Run prover with the parsed input from the standard terminal. +# To generate the json input file, use the `rpc` tool, for example: +# `cargo run --bin rpc -- fetch --rpc-url http://127.0.0.1:8546 --start-block 2 --end-block 5 > witness.json` + +# Args: +# 1 --> Input witness json file +# 2 --> Test run only flag `test_only` (optional) # We're going to set the paralellism in line with the total cpu count num_procs=$(nproc) -2>&1 echo "Pulling sample witness" -witness_cid_hash="QmbwnLGuZ2qxZDqETAFb5DnyjZry8Sv3UFwYnsgKmsE3of" -curl -s -L "https://cf-ipfs.com/ipfs/$witness_cid_hash" > witness.json.bz2 -bunzip2 -f witness.json.bz2 - # Configured Rayon and Tokio with rough defaults export RAYON_NUM_THREADS=$num_procs export TOKIO_WORKER_THREADS=$num_procs @@ -25,7 +23,10 @@ export RUST_LOG=info # https://github.com/dtolnay/linkme/pull/88 export RUSTFLAGS='-C target-cpu=native -Zlinker-features=-lld' -if [[ $1 == "test_only" ]]; then +INPUT_FILE=$1 +TEST_ONLY=$2 + +if [[ $TEST_ONLY == "test_only" ]]; then # Circuit sizes don't matter in test_only mode, so we keep them minimal. export ARITHMETIC_CIRCUIT_SIZE="16..17" export BYTE_PACKING_CIRCUIT_SIZE="9..10" @@ -46,11 +47,11 @@ else fi -# If we run ./simple_test test_only, we'll generate a dummy +# If we run ./stdio_test test_only, we'll generate a dummy # proof. This is useful for quickly testing decoding and all of the # other non-proving code. -if [[ $1 == "test_only" ]]; then - cargo run --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand stdio < witness.json | tee test.out +if [[ $TEST_ONLY == "test_only" ]]; then + cargo run --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand stdio < $INPUT_FILE | tee test.out if grep 'Successfully generated witness for block' test.out; then echo "Success - Note this was just a test, not a proof" exit @@ -63,7 +64,7 @@ fi cargo build --release --jobs "$num_procs" start_time=$(date +%s%N) -../target/release/leader --runtime in-memory --load-strategy monolithic stdio < witness.json | tee leader.out +../target/release/leader --runtime in-memory --load-strategy on-demand stdio < $INPUT_FILE | tee leader.out end_time=$(date +%s%N) tail -n 1 leader.out > proof.json From 8a39f05eea0d0a195fc697a0fd6d9588751a9788 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 15:02:38 +0200 Subject: [PATCH 03/22] fix: error output --- tools/stdio_test.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/stdio_test.sh b/tools/stdio_test.sh index 315f4d94..bc4df46f 100755 --- a/tools/stdio_test.sh +++ b/tools/stdio_test.sh @@ -26,6 +26,11 @@ export RUSTFLAGS='-C target-cpu=native -Zlinker-features=-lld' INPUT_FILE=$1 TEST_ONLY=$2 +if [[ INPUT_FILE -eq "" ]]; then + echo "Please provide witness json input file, e.g. 'artifacts/witness_b19240705.json'" + exit 1 +fi + if [[ $TEST_ONLY == "test_only" ]]; then # Circuit sizes don't matter in test_only mode, so we keep them minimal. export ARITHMETIC_CIRCUIT_SIZE="16..17" From 22a3bc1c0361bc6ac0790383035599c4bb82a288 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 16:09:18 +0200 Subject: [PATCH 04/22] fix: script --- tools/stdio_test.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/stdio_test.sh b/tools/stdio_test.sh index bc4df46f..95d9a33a 100755 --- a/tools/stdio_test.sh +++ b/tools/stdio_test.sh @@ -26,8 +26,8 @@ export RUSTFLAGS='-C target-cpu=native -Zlinker-features=-lld' INPUT_FILE=$1 TEST_ONLY=$2 -if [[ INPUT_FILE -eq "" ]]; then - echo "Please provide witness json input file, e.g. 'artifacts/witness_b19240705.json'" +if [[ $INPUT_FILE == "" ]]; then + echo "Please provide witness json input file, e.g. artifacts/witness_b19240705.json" exit 1 fi From 498db0540f89eae9931edf0fe29ecf8649012b6d Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 20:10:56 +0200 Subject: [PATCH 05/22] fix: verifier and rename stdio_test.sh --- .github/workflows/ci.yml | 4 ++-- tools/{stdio_test.sh => prove_stdio.sh} | 4 ++-- verifier/src/main.rs | 14 ++++++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) rename tools/{stdio_test.sh => prove_stdio.sh} (97%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28a6f054..64b631d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,7 +76,7 @@ jobs: - name: Run the script run: | pushd tools - ./stdio_test.sh artifacts/witness_b19240705.json + ./prove_stdio.sh artifacts/witness_b19240705.json simple_proof_witness_only: name: Execute bash script to generate the proof witness for a small block. @@ -89,4 +89,4 @@ jobs: - name: Run the script run: | pushd tools - ./stdio_test.sh artifacts/witness_b19240705.json test_only + ./prove_stdio.sh artifacts/witness_b19240705.json test_only diff --git a/tools/stdio_test.sh b/tools/prove_stdio.sh similarity index 97% rename from tools/stdio_test.sh rename to tools/prove_stdio.sh index 95d9a33a..c14c0000 100755 --- a/tools/stdio_test.sh +++ b/tools/prove_stdio.sh @@ -72,9 +72,9 @@ start_time=$(date +%s%N) ../target/release/leader --runtime in-memory --load-strategy on-demand stdio < $INPUT_FILE | tee leader.out end_time=$(date +%s%N) -tail -n 1 leader.out > proof.json +tail -n 1 leader.out > proofs.json -../target/release/verifier -f proof.json | tee verify.out +../target/release/verifier -f proofs.json | tee verify.out if grep -q 'Proof verified successfully!' verify.out; then duration_ns=$((end_time - start_time)) diff --git a/verifier/src/main.rs b/verifier/src/main.rs index 5e740255..b44fa5d6 100644 --- a/verifier/src/main.rs +++ b/verifier/src/main.rs @@ -17,16 +17,22 @@ fn main() -> Result<()> { let args = cli::Cli::parse(); let file = File::open(args.file_path)?; let des = &mut Deserializer::from_reader(&file); - let input: GeneratedBlockProof = serde_path_to_error::deserialize(des)?; + let inputs: Vec = serde_path_to_error::deserialize(des)?; let verifer = args .prover_state_config .into_prover_state_manager() .verifier()?; - match verifer.verify(&input.intern) { - Ok(_) => info!("Proof verified successfully!"), - Err(e) => info!("Proof verification failed with error: {:?}", e), + if inputs.into_iter().all(|block| { + verifer + .verify(&block.intern) + .map_err(|e| { + info!("Proof verification failed with error: {:?}", e); + }) + .is_ok() + }) { + info!("All proofs verified successfully!"); }; Ok(()) From a769953a9abf31d29d5ae12b6a74b292d578b308 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 20:12:18 +0200 Subject: [PATCH 06/22] fix: rename prove_blocks to prove_jerigon --- README.md | 12 ++++++------ tools/{prove_blocks.sh => prove_jerigon.sh} | 0 2 files changed, 6 insertions(+), 6 deletions(-) rename tools/{prove_blocks.sh => prove_jerigon.sh} (100%) diff --git a/README.md b/README.md index 7ba9ad2f..39329809 100644 --- a/README.md +++ b/README.md @@ -364,16 +364,16 @@ For testing proof generation for blocks, the `testing` branch should be used. ### Proving Blocks -If you want to generate a full block proof, you can use `tools/prove_blocks.sh`: +If you want to generate a full block proof, you can use `tools/prove_jerigon.sh`: ```sh -./prove_blocks.sh +./prove_jerigon.sh ``` Which may look like this: ```sh -./prove_blocks.sh 17 18 http://127.0.0.1:8545 false +./prove_jerigon.sh 17 18 http://127.0.0.1:8545 false ``` Which will attempt to generate proofs for blocks `17` & `18` consecutively and incorporate the previous block proof during generation. @@ -385,16 +385,16 @@ A few other notes: ### Generating Witnesses Only -If you want to test a block without the high CPU & memory requirements that come with creating a full proof, you can instead generate only the witness using `tools/prove_blocks.sh` in the `test_only` mode: +If you want to test a block without the high CPU & memory requirements that come with creating a full proof, you can instead generate only the witness using `tools/prove_jerigon.sh` in the `test_only` mode: ```sh -./prove_blocks.sh test_only +./prove_jerigon.sh test_only ``` Filled in: ```sh -./prove_blocks.sh 18299898 18299899 http://34.89.57.138:8545 true test_only +./prove_jerigon.sh 18299898 18299899 http://34.89.57.138:8545 true test_only ``` Finally, note that both of these testing scripts force proof generation to be sequential by allowing only one worker. Because of this, this is not a realistic representation of performance but makes the debugging logs much easier to follow. diff --git a/tools/prove_blocks.sh b/tools/prove_jerigon.sh similarity index 100% rename from tools/prove_blocks.sh rename to tools/prove_jerigon.sh From 6429c05b2072b4560714f7f74fff72e958edeadc Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 20:21:33 +0200 Subject: [PATCH 07/22] fix: verifier --- verifier/src/main.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/verifier/src/main.rs b/verifier/src/main.rs index b44fa5d6..06a0eceb 100644 --- a/verifier/src/main.rs +++ b/verifier/src/main.rs @@ -17,16 +17,16 @@ fn main() -> Result<()> { let args = cli::Cli::parse(); let file = File::open(args.file_path)?; let des = &mut Deserializer::from_reader(&file); - let inputs: Vec = serde_path_to_error::deserialize(des)?; + let input_proofs: Vec = serde_path_to_error::deserialize(des)?; let verifer = args .prover_state_config .into_prover_state_manager() .verifier()?; - if inputs.into_iter().all(|block| { + if input_proofs.into_iter().all(|block_proof| { verifer - .verify(&block.intern) + .verify(&block_proof.intern) .map_err(|e| { info!("Proof verification failed with error: {:?}", e); }) From d623d59f54ab118cd71ac239df1f07aa90ad48ea Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 20:36:42 +0200 Subject: [PATCH 08/22] fix: script --- tools/prove_stdio.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/prove_stdio.sh b/tools/prove_stdio.sh index c14c0000..6c0565ab 100755 --- a/tools/prove_stdio.sh +++ b/tools/prove_stdio.sh @@ -52,7 +52,7 @@ else fi -# If we run ./stdio_test test_only, we'll generate a dummy +# If we run ./prove_stdio.sh test_only, we'll generate a dummy # proof. This is useful for quickly testing decoding and all of the # other non-proving code. if [[ $TEST_ONLY == "test_only" ]]; then @@ -76,7 +76,7 @@ tail -n 1 leader.out > proofs.json ../target/release/verifier -f proofs.json | tee verify.out -if grep -q 'Proof verified successfully!' verify.out; then +if grep -q 'All proofs verified successfully!!' verify.out; then duration_ns=$((end_time - start_time)) duration_sec=$(echo "$duration_ns / 1000000000" | bc -l) echo "Success!" From 539056dbecbb7e80ff5e789fbc6aa3657f95e824 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 21:01:01 +0200 Subject: [PATCH 09/22] fix: remove repeated output --- prover/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/prover/src/lib.rs b/prover/src/lib.rs index 0758ea1f..a903a75a 100644 --- a/prover/src/lib.rs +++ b/prover/src/lib.rs @@ -46,7 +46,6 @@ impl BlockProverInput { use anyhow::Context as _; let block_number = self.get_block_number(); - info!("Proving block {block_number}"); let other_data = self.other_data; let txs = self.block_trace.into_txn_proof_gen_ir( From 119d4dc40007e9d6fc2ab8aa491a995e1c9aa8e9 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 21:12:14 +0200 Subject: [PATCH 10/22] fix: verification message --- tools/prove_stdio.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/prove_stdio.sh b/tools/prove_stdio.sh index 6c0565ab..5d98d8ed 100755 --- a/tools/prove_stdio.sh +++ b/tools/prove_stdio.sh @@ -76,7 +76,7 @@ tail -n 1 leader.out > proofs.json ../target/release/verifier -f proofs.json | tee verify.out -if grep -q 'All proofs verified successfully!!' verify.out; then +if grep -q 'All proofs verified successfully!' verify.out; then duration_ns=$((end_time - start_time)) duration_sec=$(echo "$duration_ns / 1000000000" | bc -l) echo "Success!" From 7c8241983b455b11765e36e8e4ecd4ddd835e88d Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 21:25:26 +0200 Subject: [PATCH 11/22] fix: update script and add ci multi block proving --- .github/workflows/ci.yml | 15 ++++++++++++++- tools/prove_stdio.sh | 27 +++++++++++++++++++-------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 64b631d9..5c35c1fe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,7 +76,7 @@ jobs: - name: Run the script run: | pushd tools - ./prove_stdio.sh artifacts/witness_b19240705.json + ./prove_stdio.sh artifacts/witness_b19240705.json simple_proof_witness_only: name: Execute bash script to generate the proof witness for a small block. @@ -90,3 +90,16 @@ jobs: run: | pushd tools ./prove_stdio.sh artifacts/witness_b19240705.json test_only + + multi_blocks_proof_regular: + name: Execute bash script to generate and verify a proof for a multiple blocks using parallel proving. + runs-on: zero-ci + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Run the script + run: | + pushd tools + ./prove_stdio.sh artifacts/witness_b2_b7.json \ No newline at end of file diff --git a/tools/prove_stdio.sh b/tools/prove_stdio.sh index 5d98d8ed..a9662781 100755 --- a/tools/prove_stdio.sh +++ b/tools/prove_stdio.sh @@ -41,14 +41,25 @@ if [[ $TEST_ONLY == "test_only" ]]; then export LOGIC_CIRCUIT_SIZE="12..13" export MEMORY_CIRCUIT_SIZE="17..18" else - # These sizes are configured specifically for this witness. Don't use this in other scenarios - export ARITHMETIC_CIRCUIT_SIZE="16..19" - export BYTE_PACKING_CIRCUIT_SIZE="16..19" - export CPU_CIRCUIT_SIZE="18..21" - export KECCAK_CIRCUIT_SIZE="15..18" - export KECCAK_SPONGE_CIRCUIT_SIZE="10..13" - export LOGIC_CIRCUIT_SIZE="13..17" - export MEMORY_CIRCUIT_SIZE="20..23" + if [[ $INPUT_FILE == *"witness_b19240705"* ]]; then + # These sizes are configured specifically for block 19240705. Don't use this in other scenarios + echo "Using specific circuit sizes for witness_b19240705.json" + export ARITHMETIC_CIRCUIT_SIZE="16..19" + export BYTE_PACKING_CIRCUIT_SIZE="16..19" + export CPU_CIRCUIT_SIZE="18..21" + export KECCAK_CIRCUIT_SIZE="15..18" + export KECCAK_SPONGE_CIRCUIT_SIZE="10..13" + export LOGIC_CIRCUIT_SIZE="13..17" + export MEMORY_CIRCUIT_SIZE="20..23" + else + export ARITHMETIC_CIRCUIT_SIZE="16..23" + export BYTE_PACKING_CIRCUIT_SIZE="9..21" + export CPU_CIRCUIT_SIZE="12..25" + export KECCAK_CIRCUIT_SIZE="14..20" + export KECCAK_SPONGE_CIRCUIT_SIZE="9..15" + export LOGIC_CIRCUIT_SIZE="12..18" + export MEMORY_CIRCUIT_SIZE="17..28" + fi fi From 30fbdc44511ecf234bda7e8adfe74f136b644868 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Thu, 13 Jun 2024 21:31:00 +0200 Subject: [PATCH 12/22] fix: typo --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c35c1fe..1b20aefd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,7 +92,7 @@ jobs: ./prove_stdio.sh artifacts/witness_b19240705.json test_only multi_blocks_proof_regular: - name: Execute bash script to generate and verify a proof for a multiple blocks using parallel proving. + name: Execute bash script to generate and verify a proof for multiple blocks using parallel proving. runs-on: zero-ci steps: From 8955a7a6f16d07dd8b6b821ba597749731c5166b Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 13:35:18 +0200 Subject: [PATCH 13/22] fix: rebase on top of discard-intermediary-proofs --- leader/src/jerigon.rs | 5 ++++- leader/src/stdio.rs | 11 +++++++---- prover/src/lib.rs | 17 +++++++++++++---- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/leader/src/jerigon.rs b/leader/src/jerigon.rs index ce03f615..b845d0c0 100644 --- a/leader/src/jerigon.rs +++ b/leader/src/jerigon.rs @@ -51,7 +51,10 @@ pub(crate) async fn jerigon_main( .into_iter() .rev() .skip(1) - .map(|b| generate_block_proof_file_name(&proof_output_dir.to_str(), b)) + .filter_map(|(_, block_proof)| { + block_proof + .map(|b| generate_block_proof_file_name(&proof_output_dir.to_str(), b.b_height)) + }) .for_each(|path| { if let Err(e) = std::fs::remove_file(path) { error!("Failed to remove intermediate proof file: {e}"); diff --git a/leader/src/stdio.rs b/leader/src/stdio.rs index 7e7e4050..22b44fa7 100644 --- a/leader/src/stdio.rs +++ b/leader/src/stdio.rs @@ -19,12 +19,15 @@ pub(crate) async fn stdio_main( blocks: serde_path_to_error::deserialize(des)?, }; - let block_proofs = prover_input - .prove(&runtime, previous, save_inputs_on_error) - .await; + let proved_blocks = prover_input + .prove(&runtime, previous, save_inputs_on_error, None) + .await?; runtime.close().await?; - let proofs = block_proofs?; + let proofs: Vec = proved_blocks + .into_iter() + .filter_map(|(_, proof)| proof) + .collect(); std::io::stdout().write_all(&serde_json::to_vec(&proofs)?)?; Ok(()) diff --git a/prover/src/lib.rs b/prover/src/lib.rs index a903a75a..078591c7 100644 --- a/prover/src/lib.rs +++ b/prover/src/lib.rs @@ -130,13 +130,16 @@ pub struct ProverInput { } impl ProverInput { + /// Prove all the blocks in the input. + /// Return the list of block numbers that are proved and if the proof data + /// is not saved to disk, return the generated block proofs as well. pub async fn prove( self, runtime: &Runtime, previous_proof: Option, save_inputs_on_error: bool, proof_output_dir: Option, - ) -> Result> { + ) -> Result)>> { let mut prev: Option>> = previous_proof.map(|proof| Box::pin(futures::future::ok(proof)) as BoxFuture<_>); @@ -157,14 +160,20 @@ impl ProverInput { let proof = proof?; let block_number = proof.b_height; - // Write latest generated proof to disk or stdout - ProverInput::write_proof(proof_output_dir, &proof).await?; + // Write latest generated proof to disk if proof_output_dir is provided + let return_proof: Option = + if proof_output_dir.is_some() { + ProverInput::write_proof(proof_output_dir, &proof).await?; + None + } else { + Some(proof.clone()) + }; if tx.send(proof).is_err() { anyhow::bail!("Failed to send proof"); } - Ok(block_number) + Ok((block_number, return_proof)) }) .boxed(); From 5365ea2256c64df3a28c6c309347f11da3a55970 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 13:52:26 +0200 Subject: [PATCH 14/22] fix: invalid printout --- tools/prove_stdio.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/prove_stdio.sh b/tools/prove_stdio.sh index a9662781..c724418d 100755 --- a/tools/prove_stdio.sh +++ b/tools/prove_stdio.sh @@ -91,7 +91,7 @@ if grep -q 'All proofs verified successfully!' verify.out; then duration_ns=$((end_time - start_time)) duration_sec=$(echo "$duration_ns / 1000000000" | bc -l) echo "Success!" - printf "Duration: %.3f seconds\n" $duration_sec + echo "Duration:" $duration_sec " seconds" echo "Note, this duration is inclusive of circuit handling and overall process initialization"; else echo "there was an issue with proof verification"; From 8ebfe37ee4a7fea47c8cd074feff4f262a2fe5b7 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 13:54:05 +0200 Subject: [PATCH 15/22] fix: cleanup --- leader/src/jerigon.rs | 3 ++- leader/src/stdio.rs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/leader/src/jerigon.rs b/leader/src/jerigon.rs index b845d0c0..d79a4b67 100644 --- a/leader/src/jerigon.rs +++ b/leader/src/jerigon.rs @@ -41,8 +41,9 @@ pub(crate) async fn jerigon_main( params.save_inputs_on_error, params.proof_output_dir.clone(), ) - .await?; + .await; runtime.close().await?; + let proved_blocks = proved_blocks?; if params.keep_intermediate_proofs { warn!("Skipping cleanup, intermediate proofs are kept"); diff --git a/leader/src/stdio.rs b/leader/src/stdio.rs index 22b44fa7..543979d3 100644 --- a/leader/src/stdio.rs +++ b/leader/src/stdio.rs @@ -21,8 +21,9 @@ pub(crate) async fn stdio_main( let proved_blocks = prover_input .prove(&runtime, previous, save_inputs_on_error, None) - .await?; + .await; runtime.close().await?; + let proved_blocks = proved_blocks?; let proofs: Vec = proved_blocks .into_iter() From 33415b82c670cf806344095653b5dc703cb46801 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 15:15:29 +0200 Subject: [PATCH 16/22] fix: cleanup --- leader/src/jerigon.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/leader/src/jerigon.rs b/leader/src/jerigon.rs index d79a4b67..0434d942 100644 --- a/leader/src/jerigon.rs +++ b/leader/src/jerigon.rs @@ -52,9 +52,8 @@ pub(crate) async fn jerigon_main( .into_iter() .rev() .skip(1) - .filter_map(|(_, block_proof)| { - block_proof - .map(|b| generate_block_proof_file_name(&proof_output_dir.to_str(), b.b_height)) + .map(|(block_number, _)| { + generate_block_proof_file_name(&proof_output_dir.to_str(), block_number) }) .for_each(|path| { if let Err(e) = std::fs::remove_file(path) { From f3a0f378d402ea37158d4dfae37fe79687f2a2b3 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 18:52:12 +0200 Subject: [PATCH 17/22] fix: test_only stdio output --- leader/src/stdio.rs | 3 +++ prover/src/lib.rs | 2 -- tools/prove_stdio.sh | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/leader/src/stdio.rs b/leader/src/stdio.rs index 543979d3..673b50e9 100644 --- a/leader/src/stdio.rs +++ b/leader/src/stdio.rs @@ -4,6 +4,7 @@ use anyhow::Result; use paladin::runtime::Runtime; use proof_gen::proof_types::GeneratedBlockProof; use prover::ProverInput; +use tracing::info; /// The main function for the stdio mode. pub(crate) async fn stdio_main( @@ -25,6 +26,8 @@ pub(crate) async fn stdio_main( runtime.close().await?; let proved_blocks = proved_blocks?; + info!("All witnesses have been generated successfully."); + let proofs: Vec = proved_blocks .into_iter() .filter_map(|(_, proof)| proof) diff --git a/prover/src/lib.rs b/prover/src/lib.rs index 078591c7..7666d3e3 100644 --- a/prover/src/lib.rs +++ b/prover/src/lib.rs @@ -112,8 +112,6 @@ impl BlockProverInput { .try_collect::>() .await?; - info!("Successfully generated witness for block {block_number}."); - // Dummy proof to match expected output type. Ok(GeneratedBlockProof { b_height: block_number diff --git a/tools/prove_stdio.sh b/tools/prove_stdio.sh index c724418d..af6eb87b 100755 --- a/tools/prove_stdio.sh +++ b/tools/prove_stdio.sh @@ -68,7 +68,7 @@ fi # other non-proving code. if [[ $TEST_ONLY == "test_only" ]]; then cargo run --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand stdio < $INPUT_FILE | tee test.out - if grep 'Successfully generated witness for block' test.out; then + if grep 'All witnesses have been generated successfully.' test.out; then echo "Success - Note this was just a test, not a proof" exit else From 760ea304d4d97657872d7522b83c7f5e7c5cce3e Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 19:06:23 +0200 Subject: [PATCH 18/22] fix: jerigon mode output to stdout --- leader/src/jerigon.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/leader/src/jerigon.rs b/leader/src/jerigon.rs index 0434d942..259b7612 100644 --- a/leader/src/jerigon.rs +++ b/leader/src/jerigon.rs @@ -1,3 +1,4 @@ +use std::io::Write; use std::path::PathBuf; use alloy::providers::RootProvider; @@ -46,8 +47,19 @@ pub(crate) async fn jerigon_main( let proved_blocks = proved_blocks?; if params.keep_intermediate_proofs { - warn!("Skipping cleanup, intermediate proofs are kept"); + if params.proof_output_dir.is_some() { + warn!("Skipping cleanup, intermediate proof files are kept"); + } else { + // Output all proofs to stdout + std::io::stdout().write_all(&serde_json::to_vec( + &proved_blocks + .into_iter() + .filter_map(|(_, block)| block) + .collect::>(), + )?)?; + } } else if let Some(proof_output_dir) = params.proof_output_dir.as_ref() { + // Remove intermediary proof files proved_blocks .into_iter() .rev() @@ -61,7 +73,14 @@ pub(crate) async fn jerigon_main( } }); } else { - // Proofs are written to stdio, so no need to clean up + // Output only last proof to stdout + if let Some(last_block) = proved_blocks + .into_iter() + .filter_map(|(_, block)| block) + .last() + { + std::io::stdout().write_all(&serde_json::to_vec(&last_block)?)?; + } } Ok(()) From f314d3ccbd2235204c008e77c117bec73bec133e Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 19:20:55 +0200 Subject: [PATCH 19/22] fix: printout --- leader/src/jerigon.rs | 9 ++++++++- leader/src/stdio.rs | 6 +++++- tools/prove_jerigon.sh | 4 ++-- tools/prove_stdio.sh | 4 ++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/leader/src/jerigon.rs b/leader/src/jerigon.rs index 259b7612..f4175398 100644 --- a/leader/src/jerigon.rs +++ b/leader/src/jerigon.rs @@ -7,7 +7,7 @@ use common::block_interval::BlockInterval; use common::fs::generate_block_proof_file_name; use paladin::runtime::Runtime; use proof_gen::proof_types::GeneratedBlockProof; -use tracing::{error, warn}; +use tracing::{error, info, warn}; #[derive(Debug, Default)] pub struct ProofParams { @@ -48,6 +48,7 @@ pub(crate) async fn jerigon_main( if params.keep_intermediate_proofs { if params.proof_output_dir.is_some() { + // All proof files (including intermediary) are written to disk and kept warn!("Skipping cleanup, intermediate proof files are kept"); } else { // Output all proofs to stdout @@ -83,5 +84,11 @@ pub(crate) async fn jerigon_main( } } + if cfg!(feature = "test_only") { + info!("All dummy proofs have been generated successfully."); + } else { + info!("All proofs have been generated successfully."); + } + Ok(()) } diff --git a/leader/src/stdio.rs b/leader/src/stdio.rs index 673b50e9..b81fd1a6 100644 --- a/leader/src/stdio.rs +++ b/leader/src/stdio.rs @@ -26,7 +26,11 @@ pub(crate) async fn stdio_main( runtime.close().await?; let proved_blocks = proved_blocks?; - info!("All witnesses have been generated successfully."); + if cfg!(feature = "test_only") { + info!("All dummy proofs have been generated successfully."); + } else { + info!("All proofs have been generated successfully."); + } let proofs: Vec = proved_blocks .into_iter() diff --git a/tools/prove_jerigon.sh b/tools/prove_jerigon.sh index 62766157..71d7d063 100755 --- a/tools/prove_jerigon.sh +++ b/tools/prove_jerigon.sh @@ -82,7 +82,7 @@ if [[ $5 == "test_only" ]]; then # test only run echo "Proving blocks ${BLOCK_INTERVAL} in a test_only mode now... (Total: ${TOT_BLOCKS})" cargo r --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand jerigon --rpc-url "$NODE_RPC_URL" --block-interval $BLOCK_INTERVAL --proof-output-dir $PROOF_OUTPUT_DIR $PREV_PROOF_EXTRA_ARG > $OUT_LOG_PATH 2>&1 - if grep 'Successfully generated witness for block' $OUT_LOG_PATH; then + if grep 'All dummy proofs have been generated successfully.' $OUT_LOG_PATH; then echo "Success - Note this was just a test, not a proof" # Remove the log on success if we don't want to keep it. if [ $ALWAYS_WRITE_LOGS -ne 1 ]; then @@ -90,7 +90,7 @@ if [[ $5 == "test_only" ]]; then fi exit else - echo "Failed to create a witness" + echo "Failed to create dummy proofs. See ${OUT_LOG_PATH} for more details." exit 1 fi else diff --git a/tools/prove_stdio.sh b/tools/prove_stdio.sh index af6eb87b..03939bfe 100755 --- a/tools/prove_stdio.sh +++ b/tools/prove_stdio.sh @@ -68,11 +68,11 @@ fi # other non-proving code. if [[ $TEST_ONLY == "test_only" ]]; then cargo run --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand stdio < $INPUT_FILE | tee test.out - if grep 'All witnesses have been generated successfully.' test.out; then + if grep 'All dummy proofs have been generated successfully.' test.out; then echo "Success - Note this was just a test, not a proof" exit else - echo "Failed to create a witness" + echo "Failed to create dummy proofs. See test.out for more details." exit 1 fi fi From ba9a855dd5f55a4bd9f1c53f188a347cabc756be Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 19:32:49 +0200 Subject: [PATCH 20/22] fix: printout 2 --- leader/src/jerigon.rs | 2 -- leader/src/stdio.rs | 10 ++++------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/leader/src/jerigon.rs b/leader/src/jerigon.rs index f4175398..f8c4dc9b 100644 --- a/leader/src/jerigon.rs +++ b/leader/src/jerigon.rs @@ -86,8 +86,6 @@ pub(crate) async fn jerigon_main( if cfg!(feature = "test_only") { info!("All dummy proofs have been generated successfully."); - } else { - info!("All proofs have been generated successfully."); } Ok(()) diff --git a/leader/src/stdio.rs b/leader/src/stdio.rs index b81fd1a6..ac598c20 100644 --- a/leader/src/stdio.rs +++ b/leader/src/stdio.rs @@ -26,17 +26,15 @@ pub(crate) async fn stdio_main( runtime.close().await?; let proved_blocks = proved_blocks?; - if cfg!(feature = "test_only") { - info!("All dummy proofs have been generated successfully."); - } else { - info!("All proofs have been generated successfully."); - } - let proofs: Vec = proved_blocks .into_iter() .filter_map(|(_, proof)| proof) .collect(); std::io::stdout().write_all(&serde_json::to_vec(&proofs)?)?; + if cfg!(feature = "test_only") { + info!("All dummy proofs have been generated successfully."); + } + Ok(()) } From ec8af71cf28370be2973b727f733b343662cca57 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 14 Jun 2024 23:24:49 +0200 Subject: [PATCH 21/22] fix: printout 3 --- leader/src/jerigon.rs | 10 ++++++---- leader/src/stdio.rs | 10 ++++++---- tools/prove_jerigon.sh | 4 ++-- tools/prove_stdio.sh | 4 ++-- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/leader/src/jerigon.rs b/leader/src/jerigon.rs index f8c4dc9b..310b39b4 100644 --- a/leader/src/jerigon.rs +++ b/leader/src/jerigon.rs @@ -32,6 +32,12 @@ pub(crate) async fn jerigon_main( ) .await?; + if cfg!(feature = "test_only") { + info!("All dummy proofs have been generated successfully."); + } else { + info!("All proofs have been generated successfully."); + } + // If `keep_intermediate_proofs` is not set we only keep the last block // proof from the interval. It contains all the necessary information to // verify the whole sequence. @@ -84,9 +90,5 @@ pub(crate) async fn jerigon_main( } } - if cfg!(feature = "test_only") { - info!("All dummy proofs have been generated successfully."); - } - Ok(()) } diff --git a/leader/src/stdio.rs b/leader/src/stdio.rs index ac598c20..b81fd1a6 100644 --- a/leader/src/stdio.rs +++ b/leader/src/stdio.rs @@ -26,15 +26,17 @@ pub(crate) async fn stdio_main( runtime.close().await?; let proved_blocks = proved_blocks?; + if cfg!(feature = "test_only") { + info!("All dummy proofs have been generated successfully."); + } else { + info!("All proofs have been generated successfully."); + } + let proofs: Vec = proved_blocks .into_iter() .filter_map(|(_, proof)| proof) .collect(); std::io::stdout().write_all(&serde_json::to_vec(&proofs)?)?; - if cfg!(feature = "test_only") { - info!("All dummy proofs have been generated successfully."); - } - Ok(()) } diff --git a/tools/prove_jerigon.sh b/tools/prove_jerigon.sh index 71d7d063..427c23c5 100755 --- a/tools/prove_jerigon.sh +++ b/tools/prove_jerigon.sh @@ -82,8 +82,8 @@ if [[ $5 == "test_only" ]]; then # test only run echo "Proving blocks ${BLOCK_INTERVAL} in a test_only mode now... (Total: ${TOT_BLOCKS})" cargo r --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand jerigon --rpc-url "$NODE_RPC_URL" --block-interval $BLOCK_INTERVAL --proof-output-dir $PROOF_OUTPUT_DIR $PREV_PROOF_EXTRA_ARG > $OUT_LOG_PATH 2>&1 - if grep 'All dummy proofs have been generated successfully.' $OUT_LOG_PATH; then - echo "Success - Note this was just a test, not a proof" + if grep -q 'All dummy proofs have been generated successfully.' $OUT_LOG_PATH; then + echo -e "Success - Note this was just a test, not a proof" # Remove the log on success if we don't want to keep it. if [ $ALWAYS_WRITE_LOGS -ne 1 ]; then rm $OUT_LOG_PATH diff --git a/tools/prove_stdio.sh b/tools/prove_stdio.sh index 03939bfe..0fa78602 100755 --- a/tools/prove_stdio.sh +++ b/tools/prove_stdio.sh @@ -68,8 +68,8 @@ fi # other non-proving code. if [[ $TEST_ONLY == "test_only" ]]; then cargo run --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand stdio < $INPUT_FILE | tee test.out - if grep 'All dummy proofs have been generated successfully.' test.out; then - echo "Success - Note this was just a test, not a proof" + if grep -q 'All dummy proofs have been generated successfully.' test.out; then + echo -e "\n\nSuccess - Note this was just a test, not a proof" exit else echo "Failed to create dummy proofs. See test.out for more details." From 5d7e41da32c920569ba258b42fe8acbf8652e2c1 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Sat, 15 Jun 2024 00:43:47 +0200 Subject: [PATCH 22/22] fix: printout 4 --- leader/src/jerigon.rs | 2 +- leader/src/stdio.rs | 2 +- tools/prove_jerigon.sh | 4 ++-- tools/prove_stdio.sh | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/leader/src/jerigon.rs b/leader/src/jerigon.rs index 310b39b4..a19dd45c 100644 --- a/leader/src/jerigon.rs +++ b/leader/src/jerigon.rs @@ -33,7 +33,7 @@ pub(crate) async fn jerigon_main( .await?; if cfg!(feature = "test_only") { - info!("All dummy proofs have been generated successfully."); + info!("All proof witnesses have been generated successfully."); } else { info!("All proofs have been generated successfully."); } diff --git a/leader/src/stdio.rs b/leader/src/stdio.rs index b81fd1a6..76bcd089 100644 --- a/leader/src/stdio.rs +++ b/leader/src/stdio.rs @@ -27,7 +27,7 @@ pub(crate) async fn stdio_main( let proved_blocks = proved_blocks?; if cfg!(feature = "test_only") { - info!("All dummy proofs have been generated successfully."); + info!("All proof witnesses have been generated successfully."); } else { info!("All proofs have been generated successfully."); } diff --git a/tools/prove_jerigon.sh b/tools/prove_jerigon.sh index 427c23c5..409cbf33 100755 --- a/tools/prove_jerigon.sh +++ b/tools/prove_jerigon.sh @@ -82,7 +82,7 @@ if [[ $5 == "test_only" ]]; then # test only run echo "Proving blocks ${BLOCK_INTERVAL} in a test_only mode now... (Total: ${TOT_BLOCKS})" cargo r --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand jerigon --rpc-url "$NODE_RPC_URL" --block-interval $BLOCK_INTERVAL --proof-output-dir $PROOF_OUTPUT_DIR $PREV_PROOF_EXTRA_ARG > $OUT_LOG_PATH 2>&1 - if grep -q 'All dummy proofs have been generated successfully.' $OUT_LOG_PATH; then + if grep -q 'All proof witnesses have been generated successfully.' $OUT_LOG_PATH; then echo -e "Success - Note this was just a test, not a proof" # Remove the log on success if we don't want to keep it. if [ $ALWAYS_WRITE_LOGS -ne 1 ]; then @@ -90,7 +90,7 @@ if [[ $5 == "test_only" ]]; then fi exit else - echo "Failed to create dummy proofs. See ${OUT_LOG_PATH} for more details." + echo "Failed to create proof witnesses. See ${OUT_LOG_PATH} for more details." exit 1 fi else diff --git a/tools/prove_stdio.sh b/tools/prove_stdio.sh index 0fa78602..b99df289 100755 --- a/tools/prove_stdio.sh +++ b/tools/prove_stdio.sh @@ -68,11 +68,11 @@ fi # other non-proving code. if [[ $TEST_ONLY == "test_only" ]]; then cargo run --release --features test_only --bin leader -- --runtime in-memory --load-strategy on-demand stdio < $INPUT_FILE | tee test.out - if grep -q 'All dummy proofs have been generated successfully.' test.out; then + if grep -q 'All proof witnesses have been generated successfully.' test.out; then echo -e "\n\nSuccess - Note this was just a test, not a proof" exit else - echo "Failed to create dummy proofs. See test.out for more details." + echo "Failed to create proof witnesses. See test.out for more details." exit 1 fi fi