diff --git a/Cargo.lock b/Cargo.lock index 6ea048eea..e231de0ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -320,6 +320,7 @@ dependencies = [ "hex", "hkdf", "lru", + "parking_lot", "pyo3", "rand", "rstest", @@ -1542,9 +1543,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", diff --git a/Cargo.toml b/Cargo.toml index 5fda0cf44..7e43de167 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -135,3 +135,4 @@ zstd = "0.13.2" blocking-threadpool = "1.0.1" libfuzzer-sys = "0.4" wasm-bindgen = "0.2.92" +parking_lot = "0.12.3" diff --git a/crates/chia-bls/Cargo.toml b/crates/chia-bls/Cargo.toml index 8bb42ce23..af79536b5 100644 --- a/crates/chia-bls/Cargo.toml +++ b/crates/chia-bls/Cargo.toml @@ -27,6 +27,7 @@ thiserror = { workspace = true } pyo3 = { workspace = true, features = ["multiple-pymethods"], optional = true } arbitrary = { workspace = true, optional = true } lru = { workspace = true } +parking_lot = { workspace = true } [dev-dependencies] rand = { workspace = true } diff --git a/crates/chia-bls/benches/cache.rs b/crates/chia-bls/benches/cache.rs index 218c17b74..4498c66e5 100644 --- a/crates/chia-bls/benches/cache.rs +++ b/crates/chia-bls/benches/cache.rs @@ -23,77 +23,43 @@ fn cache_benchmark(c: &mut Criterion) { pks.push(pk); } - let mut bls_cache = BlsCache::default(); + let bls_cache = BlsCache::default(); c.bench_function("bls_cache.aggregate_verify, 0% cache hits", |b| { - let mut cache = bls_cache.clone(); b.iter(|| { - assert!( - cache - .aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig)); }); }); // populate 10% of keys - bls_cache.aggregate_verify(pks[0..100].into_iter().zip([&msg].iter().cycle()), &agg_sig); + bls_cache.aggregate_verify(pks[0..100].iter().zip([&msg].iter().cycle()), &agg_sig); c.bench_function("bls_cache.aggregate_verify, 10% cache hits", |b| { - let mut cache = bls_cache.clone(); b.iter(|| { - assert!( - cache - .aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig)); }); }); // populate another 10% of keys - bls_cache.aggregate_verify( - pks[100..200].into_iter().zip([&msg].iter().cycle()), - &agg_sig, - ); + bls_cache.aggregate_verify(pks[100..200].iter().zip([&msg].iter().cycle()), &agg_sig); c.bench_function("bls_cache.aggregate_verify, 20% cache hits", |b| { - let mut cache = bls_cache.clone(); b.iter(|| { - assert!( - cache - .aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig)); }); }); // populate another 30% of keys - bls_cache.aggregate_verify( - pks[200..500].into_iter().zip([&msg].iter().cycle()), - &agg_sig, - ); + bls_cache.aggregate_verify(pks[200..500].iter().zip([&msg].iter().cycle()), &agg_sig); c.bench_function("bls_cache.aggregate_verify, 50% cache hits", |b| { - let mut cache = bls_cache.clone(); b.iter(|| { - assert!( - cache - .aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig)); }); }); // populate all other keys - bls_cache.aggregate_verify( - pks[500..1000].into_iter().zip([&msg].iter().cycle()), - &agg_sig, - ); + bls_cache.aggregate_verify(pks[500..1000].iter().zip([&msg].iter().cycle()), &agg_sig); c.bench_function("bls_cache.aggregate_verify, 100% cache hits", |b| { - let mut cache = bls_cache.clone(); b.iter(|| { - assert!( - cache - .aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pks.iter().zip([&msg].iter().cycle()), &agg_sig)); }); }); diff --git a/crates/chia-bls/src/bls_cache.rs b/crates/chia-bls/src/bls_cache.rs index 35b2237fa..355c2e017 100644 --- a/crates/chia-bls/src/bls_cache.rs +++ b/crates/chia-bls/src/bls_cache.rs @@ -1,6 +1,7 @@ use crate::{aggregate_verify_gt, hash_to_g2}; use crate::{GTElement, PublicKey, Signature}; use lru::LruCache; +use parking_lot::Mutex; use sha2::{Digest, Sha256}; use std::borrow::Borrow; use std::num::NonZeroUsize; @@ -15,10 +16,10 @@ use std::num::NonZeroUsize; /// aggregate_verify() primitive is faster. When long-syncing, that's /// preferable. #[cfg_attr(feature = "py-bindings", pyo3::pyclass(name = "BLSCache"))] -#[derive(Debug, Clone)] +#[derive(Debug)] pub struct BlsCache { // sha256(pubkey + message) -> GTElement - cache: LruCache<[u8; 32], GTElement>, + cache: Mutex>, } impl Default for BlsCache { @@ -30,30 +31,23 @@ impl Default for BlsCache { impl BlsCache { pub fn new(cache_size: NonZeroUsize) -> Self { Self { - cache: LruCache::new(cache_size), + cache: Mutex::new(LruCache::new(cache_size)), } } pub fn len(&self) -> usize { - self.cache.len() + self.cache.lock().len() } pub fn is_empty(&self) -> bool { - self.cache.is_empty() - } - - pub fn update(&mut self, new_items: impl IntoIterator) { - for (key, value) in new_items { - self.cache.put(key, value); - } + self.cache.lock().is_empty() } pub fn aggregate_verify, Msg: AsRef<[u8]>>( - &mut self, + &self, pks_msgs: impl IntoIterator, sig: &Signature, - ) -> (bool, Vec<([u8; 32], GTElement)>) { - let mut added: Vec<([u8; 32], GTElement)> = Vec::new(); + ) -> bool { let iter = pks_msgs.into_iter().map(|(pk, msg)| -> GTElement { // Hash pubkey + message let mut hasher = Sha256::new(); @@ -62,7 +56,7 @@ impl BlsCache { let hash: [u8; 32] = hasher.finalize().into(); // If the pairing is in the cache, we don't need to recalculate it. - if let Some(pairing) = self.cache.get(&hash).cloned() { + if let Some(pairing) = self.cache.lock().get(&hash).cloned() { return pairing; } @@ -76,12 +70,11 @@ impl BlsCache { let hash: [u8; 32] = hasher.finalize().into(); let pairing = aug_hash.pair(pk.borrow()); - self.cache.put(hash, pairing.clone()); - added.push((hash, pairing.clone())); + self.cache.lock().put(hash, pairing.clone()); pairing }); - (aggregate_verify_gt(sig, iter), added) + aggregate_verify_gt(sig, iter) } } @@ -117,7 +110,7 @@ impl BlsCache { pks: &Bound<'_, PyList>, msgs: &Bound<'_, PyList>, sig: &Signature, - ) -> PyResult<(bool, Vec<([u8; 32], GTElement)>)> { + ) -> PyResult { let pks = pks .iter()? .map(|item| item?.extract()) @@ -141,7 +134,8 @@ impl BlsCache { use pyo3::prelude::*; use pyo3::types::PyBytes; let ret = PyList::empty_bound(py); - for (key, value) in &self.cache { + let cache = self.cache.lock(); + for (key, value) in cache.iter() { ret.append((PyBytes::new_bound(py, key), value.clone().into_py(py)))?; } Ok(ret.into()) @@ -149,9 +143,10 @@ impl BlsCache { #[pyo3(name = "update")] pub fn py_update(&mut self, other: &Bound<'_, PyList>) -> PyResult<()> { + let mut cache = self.cache.lock(); for item in other.borrow().iter()? { let (key, value): (Vec, GTElement) = item?.extract()?; - self.cache.put( + cache.put( key.try_into() .map_err(|_| PyValueError::new_err("invalid key"))?, value, @@ -170,7 +165,7 @@ pub mod tests { #[test] fn test_aggregate_verify() { - let mut bls_cache = BlsCache::default(); + let bls_cache = BlsCache::default(); let sk = SecretKey::from_seed(&[0; 32]); let pk = sk.public_key(); @@ -184,25 +179,17 @@ pub mod tests { assert!(bls_cache.is_empty()); // Verify the signature and add to the cache. - assert!( - bls_cache - .aggregate_verify(pk_list.into_iter().zip(msg_list), &sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pk_list.into_iter().zip(msg_list), &sig)); assert_eq!(bls_cache.len(), 1); // Now that it's cached, it shouldn't cache it again. - assert!( - bls_cache - .aggregate_verify(pk_list.into_iter().zip(msg_list), &sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pk_list.into_iter().zip(msg_list), &sig)); assert_eq!(bls_cache.len(), 1); } #[test] fn test_cache() { - let mut bls_cache = BlsCache::default(); + let bls_cache = BlsCache::default(); let sk1 = SecretKey::from_seed(&[0; 32]); let pk1 = sk1.public_key(); @@ -216,11 +203,7 @@ pub mod tests { assert!(bls_cache.is_empty()); // Add the first signature to cache. - assert!( - bls_cache - .aggregate_verify(pk_list.iter().zip(msg_list.iter()), &agg_sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pk_list.iter().zip(msg_list.iter()), &agg_sig)); assert_eq!(bls_cache.len(), 1); // Try with the first key message pair in the cache but not the second. @@ -232,11 +215,7 @@ pub mod tests { pk_list.push(pk2); msg_list.push(msg2); - assert!( - bls_cache - .aggregate_verify(pk_list.iter().zip(msg_list.iter()), &agg_sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pk_list.iter().zip(msg_list.iter()), &agg_sig)); assert_eq!(bls_cache.len(), 2); // Try reusing a public key. @@ -247,18 +226,14 @@ pub mod tests { msg_list.push(msg3); // Verify this signature and add to the cache as well (since it's still a different aggregate). - assert!( - bls_cache - .aggregate_verify(pk_list.iter().zip(msg_list), &agg_sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pk_list.iter().zip(msg_list), &agg_sig)); assert_eq!(bls_cache.len(), 3); } #[test] fn test_cache_limit() { // The cache is limited to only 3 items. - let mut bls_cache = BlsCache::new(NonZeroUsize::new(3).unwrap()); + let bls_cache = BlsCache::new(NonZeroUsize::new(3).unwrap()); // Before we cache anything, it should be empty. assert!(bls_cache.is_empty()); @@ -274,15 +249,11 @@ pub mod tests { let msg_list = [msg]; // Add to cache by validating them one at a time. - assert!( - bls_cache - .aggregate_verify(pk_list.into_iter().zip(msg_list), &sig) - .0 - ); + assert!(bls_cache.aggregate_verify(pk_list.into_iter().zip(msg_list), &sig)); } // The cache should be full now. - assert_eq!(bls_cache.cache.len(), 3); + assert_eq!(bls_cache.len(), 3); // Recreate first key. let sk = SecretKey::from_seed(&[1; 32]); @@ -296,20 +267,16 @@ pub mod tests { let hash: [u8; 32] = hasher.finalize().into(); // The first key should have been removed, since it's the oldest that's been accessed. - assert!(!bls_cache.cache.contains(&hash)); + assert!(!bls_cache.cache.lock().contains(&hash)); } #[test] fn test_empty_sig() { - let mut bls_cache = BlsCache::default(); + let bls_cache = BlsCache::default(); let pks: [&PublicKey; 0] = []; let msgs: [&[u8]; 0] = []; - assert!( - bls_cache - .aggregate_verify(pks.into_iter().zip(msgs), &Signature::default()) - .0 - ); + assert!(bls_cache.aggregate_verify(pks.into_iter().zip(msgs), &Signature::default())); } } diff --git a/crates/chia-consensus/src/gen/condition_tools.rs b/crates/chia-consensus/src/gen/condition_tools.rs index aa77f7568..31b4a0d83 100644 --- a/crates/chia-consensus/src/gen/condition_tools.rs +++ b/crates/chia-consensus/src/gen/condition_tools.rs @@ -90,11 +90,11 @@ mod tests { let mut a: Allocator = make_allocator(LIMIT_HEAP); for v in 0..10000 { let ptr = a.new_small_number(v).expect("valid u64"); - assert_eq!(a.atom(ptr).as_ref(), u64_to_bytes(v as u64).as_slice()) + assert_eq!(a.atom(ptr).as_ref(), u64_to_bytes(v as u64).as_slice()); } - for v in 18446744073709551615_u64 - 1000..18446744073709551615 { + for v in 18_446_744_073_709_551_615_u64 - 1000..18_446_744_073_709_551_615 { let ptr = a.new_number(v.into()).expect("valid u64"); - assert_eq!(a.atom(ptr).as_ref(), u64_to_bytes(v).as_slice()) + assert_eq!(a.atom(ptr).as_ref(), u64_to_bytes(v).as_slice()); } } } diff --git a/crates/chia-consensus/src/multiprocess_validation.rs b/crates/chia-consensus/src/multiprocess_validation.rs index 47f6dba1b..6deadde33 100644 --- a/crates/chia-consensus/src/multiprocess_validation.rs +++ b/crates/chia-consensus/src/multiprocess_validation.rs @@ -8,10 +8,10 @@ use crate::gen::opcodes::{ use crate::gen::owned_conditions::OwnedSpendBundleConditions; use crate::gen::validation_error::ErrorCode; use crate::npc_result::get_name_puzzle_conditions; -use chia_bls::{BlsCache, GTElement}; +use chia_bls::BlsCache; use chia_protocol::SpendBundle; use clvmr::{ENABLE_BLS_OPS_OUTSIDE_GUARD, ENABLE_FIXED_DIV}; -use std::sync::{Arc, Mutex}; +use std::sync::Arc; // use std::thread; use std::time::{Duration, Instant}; @@ -22,19 +22,17 @@ pub fn pre_validate_spendbundle( max_cost: u64, constants: &ConsensusConstants, peak_height: u32, - cache: &Arc>, + cache: &Arc, ) -> Result { if new_spend.coin_spends.is_empty() { Err(ErrorCode::InvalidSpendBundle) } else { - let (result, _added, _duration) = + let (result, _duration) = validate_clvm_and_signature(new_spend, max_cost, constants, peak_height, cache)?; Ok(result) } } -type Additions = Vec<([u8; 32], GTElement)>; -type ValidationResult = Result<(OwnedSpendBundleConditions, Additions, Duration), ErrorCode>; // currently in mempool_manager.py // called in threads from pre_validate_spend_bundle() // returns (error, cached_results, new_cache_entries, duration) @@ -43,13 +41,12 @@ pub fn validate_clvm_and_signature( max_cost: u64, constants: &ConsensusConstants, height: u32, - cache: &Arc>, -) -> ValidationResult { + cache: &BlsCache, +) -> Result<(OwnedSpendBundleConditions, Duration), ErrorCode> { let start_time = Instant::now(); let npcresult = get_name_puzzle_conditions(spend_bundle, max_cost, true, height, constants) .map_err(|e| e.1)?; let iter = npcresult.spends.iter().flat_map(|spend| { - // let spend_clone = spend.clone(); let condition_items_pairs = [ (AGG_SIG_PARENT, &spend.agg_sig_parent), (AGG_SIG_PUZZLE, &spend.agg_sig_puzzle), @@ -78,14 +75,11 @@ pub fn validate_clvm_and_signature( .map(|(pk, msg)| (pk, msg.as_slice().to_vec())); let iter = iter.chain(unsafe_items); // Verify aggregated signature - let (result, added) = cache - .lock() - .unwrap() - .aggregate_verify(iter, &spend_bundle.aggregated_signature); + let result = cache.aggregate_verify(iter, &spend_bundle.aggregated_signature); if !result { return Err(ErrorCode::BadAggregateSignature); } - Ok((npcresult, added, start_time.elapsed())) + Ok((npcresult, start_time.elapsed())) } pub fn get_flags_for_height_and_constants(height: u32, constants: &ConsensusConstants) -> u32 { @@ -153,7 +147,7 @@ ff01\ let spend = CoinSpend::new(test_coin, Program::new(vec![1_u8].into()), solution.into()); let coin_spends: Vec = vec![spend]; let spend_bundle = SpendBundle { - coin_spends: coin_spends, + coin_spends, aggregated_signature: Signature::default(), }; validate_clvm_and_signature( @@ -161,7 +155,7 @@ ff01\ TEST_CONSTANTS.max_block_cost_clvm, &TEST_CONSTANTS, 236, - &Arc::new(Mutex::new(BlsCache::default())), + &Arc::new(BlsCache::default()), ) .expect("SpendBundle should be valid for this test"); } @@ -186,7 +180,7 @@ ff01\ let sig = sign(&sk, msg); let coin_spends: Vec = vec![spend]; let spend_bundle = SpendBundle { - coin_spends: coin_spends, + coin_spends, aggregated_signature: sig, }; validate_clvm_and_signature( @@ -194,7 +188,7 @@ ff01\ TEST_CONSTANTS.max_block_cost_clvm, &TEST_CONSTANTS, 236, - &Arc::new(Mutex::new(BlsCache::default())), + &Arc::new(BlsCache::default()), ) .expect("SpendBundle should be valid for this test"); } @@ -208,7 +202,7 @@ ff01\ let test_coin = Coin::new( hex!("9dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2").into(), hex!("9dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2").into(), - 1000000000, + 1_000_000_000, ); let solution = hex!("ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff0f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff1f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff2f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff3f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff4f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff5f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff6f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff7f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82008f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82009f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8200ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82010f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82011f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82012f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82013f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82014f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82015f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82016f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82017f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82018f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82019f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8201ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82020f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82021f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82022f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82023f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82024f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82025f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82026f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82027f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82028f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82029f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8202ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82030f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82031f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82032f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82033f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82034f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82035f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82036f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82037f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82038f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82039f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8203ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82040f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82041f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82042f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82043f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82044f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82045f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82046f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82047f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82048f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82049f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8204ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82050f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82051f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82052f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82053f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82054f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82055f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82056f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82057f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82058f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82059f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8205ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82060f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82061f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82062f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82063f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82064f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82065f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82066f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82067f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82068f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82069f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8206ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82070f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82071f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82072f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82073f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82074f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82075f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82076f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82077f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82078f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82079f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8207ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82080f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82081f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82082f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82083f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82084f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82085f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82086f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82087f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82088f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82089f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208a980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208aa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ab80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ac80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ad80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ae80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208af80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208b980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ba80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208bb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208bc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208bd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208be80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208bf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208c980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ca80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208cb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208cc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208cd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ce80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208cf80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208d980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208da80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208db80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208dc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208dd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208de80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208df80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208e980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ea80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208eb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ec80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ed80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ee80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ef80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208f980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208fa80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208fb80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208fc80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208fd80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208fe80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff8208ff80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82090f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82091f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82092f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82093f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82094f80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095080ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095180ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095280ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095380ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095480ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095580ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095680ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095780ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095880ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095980ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095a80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095b80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095c80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095d80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095e80ffff33ffa09dcf97a184f32623d11a73124ceb99a5709b083721e878a16d78f596718ba7b2ff82095f8080").to_vec(); @@ -220,16 +214,15 @@ ff01\ let coin_spends: Vec = vec![spend.clone()]; let spend_bundle = SpendBundle { - coin_spends: coin_spends, + coin_spends, aggregated_signature: G2Element::default(), }; - assert!(TEST_CONSTANTS.max_block_cost_clvm / 2 == 5500000000); // same as mempool_manager let result = validate_clvm_and_signature( &spend_bundle, TEST_CONSTANTS.max_block_cost_clvm / 2, // same as mempool_manager default &TEST_CONSTANTS, 236, - &Arc::new(Mutex::new(BlsCache::default())), + &Arc::new(BlsCache::default()), ); assert!(matches!(result, Ok(..))); let result = validate_clvm_and_signature( @@ -237,7 +230,7 @@ ff01\ TEST_CONSTANTS.max_block_cost_clvm / 3, // lower than mempool_manager default &TEST_CONSTANTS, 236, - &Arc::new(Mutex::new(BlsCache::default())), + &Arc::new(BlsCache::default()), ); assert!(matches!(result, Err(ErrorCode::CostExceeded))); } @@ -272,7 +265,7 @@ ff01\ let sig = sign(&sk, result.as_slice()); let coin_spends: Vec = vec![spend]; let spend_bundle = SpendBundle { - coin_spends: coin_spends, + coin_spends, aggregated_signature: sig, }; validate_clvm_and_signature( @@ -280,7 +273,7 @@ ff01\ TEST_CONSTANTS.max_block_cost_clvm, &TEST_CONSTANTS, 1, - &Arc::new(Mutex::new(BlsCache::default())), + &Arc::new(BlsCache::default()), ) .expect("SpendBundle should be valid for this test"); } @@ -322,7 +315,7 @@ ff01\ let sig = sign(&sk, result.as_slice()); let coin_spends: Vec = vec![spend]; let spend_bundle = SpendBundle { - coin_spends: coin_spends, + coin_spends, aggregated_signature: sig, }; validate_clvm_and_signature( @@ -330,7 +323,7 @@ ff01\ TEST_CONSTANTS.max_block_cost_clvm, &TEST_CONSTANTS, TEST_CONSTANTS.hard_fork_height + 1, - &Arc::new(Mutex::new(BlsCache::default())), + &Arc::new(BlsCache::default()), ) .expect("SpendBundle should be valid for this test"); } @@ -368,7 +361,7 @@ ff01\ let sig = sign(&sk, result.as_slice()); let coin_spends: Vec = vec![spend]; let spend_bundle = SpendBundle { - coin_spends: coin_spends, + coin_spends, aggregated_signature: sig, }; validate_clvm_and_signature( @@ -376,7 +369,7 @@ ff01\ TEST_CONSTANTS.max_block_cost_clvm, &TEST_CONSTANTS, TEST_CONSTANTS.hard_fork_height + 1, - &Arc::new(Mutex::new(BlsCache::default())), + &Arc::new(BlsCache::default()), ) .expect("SpendBundle should be valid for this test"); } @@ -414,7 +407,7 @@ ff01\ let sig = sign(&sk, result.as_slice()); let coin_spends: Vec = vec![spend]; let spend_bundle = SpendBundle { - coin_spends: coin_spends, + coin_spends, aggregated_signature: sig, }; validate_clvm_and_signature( @@ -422,7 +415,7 @@ ff01\ TEST_CONSTANTS.max_block_cost_clvm, &TEST_CONSTANTS, TEST_CONSTANTS.hard_fork_height + 1, - &Arc::new(Mutex::new(BlsCache::default())), + &Arc::new(BlsCache::default()), ) .expect("SpendBundle should be valid for this test"); } diff --git a/tests/test_blscache.py b/tests/test_blscache.py index 5f2836701..656f54d8e 100644 --- a/tests/test_blscache.py +++ b/tests/test_blscache.py @@ -2,24 +2,99 @@ SpendBundle, CoinSpend, Program, - ConsensusConstants, G1Element, GTElement, PrivateKey, AugSchemeMPL, G2Element, BLSCache, + Coin, + ConsensusConstants, validate_clvm_and_signature, ) +from chia_rs.sized_bytes import bytes32 +from chia_rs.sized_ints import uint8, uint16, uint32, uint64, uint128 from typing import List -from chia.consensus.default_constants import DEFAULT_CONSTANTS -from chia.types.blockchain_format.coin import Coin from chia.util.hash import std_hash from chia.util.lru_cache import LRUCache +from chia.types.blockchain_format.program import Program as ChiaProgram from chia.util import cached_bls as cached_bls_old import pytest +DEFAULT_CONSTANTS = ConsensusConstants( + SLOT_BLOCKS_TARGET=uint32(32), + MIN_BLOCKS_PER_CHALLENGE_BLOCK=uint8(16), + MAX_SUB_SLOT_BLOCKS=uint32(128), + NUM_SPS_SUB_SLOT=uint32(64), + SUB_SLOT_ITERS_STARTING=uint64(2**27), + DIFFICULTY_CONSTANT_FACTOR=uint128(2**67), + DIFFICULTY_STARTING=uint64(7), + DIFFICULTY_CHANGE_MAX_FACTOR=uint32(3), + SUB_EPOCH_BLOCKS=uint32(384), + EPOCH_BLOCKS=uint32(4608), + SIGNIFICANT_BITS=uint8(8), + DISCRIMINANT_SIZE_BITS=uint16(1024), + NUMBER_ZERO_BITS_PLOT_FILTER=uint8(9), + MIN_PLOT_SIZE=uint8(32), + MAX_PLOT_SIZE=uint8(50), + SUB_SLOT_TIME_TARGET=uint16(600), + NUM_SP_INTERVALS_EXTRA=uint8(3), + MAX_FUTURE_TIME2=uint32(2 * 60), + NUMBER_OF_TIMESTAMPS=uint8(11), + GENESIS_CHALLENGE=bytes32.fromhex( + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + ), + AGG_SIG_ME_ADDITIONAL_DATA=bytes32.fromhex( + "ccd5bb71183532bff220ba46c268991a3ff07eb358e8255a65c30a2dce0e5fbb" + ), + AGG_SIG_PARENT_ADDITIONAL_DATA=bytes32.fromhex( + "baf5d69c647c91966170302d18521b0a85663433d161e72c826ed08677b53a74" + ), + AGG_SIG_PUZZLE_ADDITIONAL_DATA=bytes32.fromhex( + "284fa2ef486c7a41cc29fc99c9d08376161e93dd37817edb8219f42dca7592c4" + ), + AGG_SIG_AMOUNT_ADDITIONAL_DATA=bytes32.fromhex( + "cda186a9cd030f7a130fae45005e81cae7a90e0fa205b75f6aebc0d598e0348e" + ), + AGG_SIG_PUZZLE_AMOUNT_ADDITIONAL_DATA=bytes32.fromhex( + "0f7d90dff0613e6901e24dae59f1e690f18b8f5fbdcf1bb192ac9deaf7de22ad" + ), + AGG_SIG_PARENT_AMOUNT_ADDITIONAL_DATA=bytes32.fromhex( + "585796bd90bb553c0430b87027ffee08d88aba0162c6e1abbbcc6b583f2ae7f9" + ), + AGG_SIG_PARENT_PUZZLE_ADDITIONAL_DATA=bytes32.fromhex( + "2ebfdae17b29d83bae476a25ea06f0c4bd57298faddbbc3ec5ad29b9b86ce5df" + ), + GENESIS_PRE_FARM_POOL_PUZZLE_HASH=bytes32.fromhex( + "d23da14695a188ae5708dd152263c4db883eb27edeb936178d4d988b8f3ce5fc" + ), + GENESIS_PRE_FARM_FARMER_PUZZLE_HASH=bytes32.fromhex( + "3d8765d3a597ec1d99663f6c9816d915b9f68613ac94009884c4addaefcce6af" + ), + MAX_VDF_WITNESS_SIZE=uint8(64), + MEMPOOL_BLOCK_BUFFER=uint8(10), + MAX_COIN_AMOUNT=uint64((1 << 64) - 1), + MAX_BLOCK_COST_CLVM=uint64(11000000000), + COST_PER_BYTE=uint64(12000), + WEIGHT_PROOF_THRESHOLD=uint8(2), + BLOCKS_CACHE_SIZE=uint32(4608 + (128 * 4)), + WEIGHT_PROOF_RECENT_BLOCKS=uint32(1000), + MAX_BLOCK_COUNT_PER_REQUESTS=uint32(32), + MAX_GENERATOR_SIZE=uint32(1000000), + MAX_GENERATOR_REF_LIST_SIZE=uint32(512), + POOL_SUB_SLOT_ITERS=uint64(37600000000), + SOFT_FORK2_HEIGHT=uint32(0), + SOFT_FORK4_HEIGHT=uint32(5716000), + SOFT_FORK5_HEIGHT=uint32(0), + HARD_FORK_HEIGHT=uint32(5496000), + HARD_FORK_FIX_HEIGHT=uint32(5496000), + PLOT_FILTER_128_HEIGHT=uint32(10542000), + PLOT_FILTER_64_HEIGHT=uint32(15592000), + PLOT_FILTER_32_HEIGHT=uint32(20643000), +) + + def test_instantiation() -> None: bls_cache = BLSCache() assert bls_cache.len() == 0 @@ -236,9 +311,9 @@ def test_validate_clvm_and_sig(): ) sol_bytes = bytes.fromhex( - "ffff32ffb0997cc43ed8788f841fcf3071f6f212b89ba494b6ebaf1bda88c3f9de9d968a61f3b7284a5ee13889399ca71a026549a2ff8568656c6c6f8080" + "ffff32ffb08578d10c07f5f086b08145a40f2b4b55f5cafeb8e6ed8c3c60e3ef92a66b608131225eb15d71fb32285bd7e1c461655fff8568656c6c6f8080" ) - # ((50 0x997cc43ed8788f841fcf3071f6f212b89ba494b6ebaf1bda88c3f9de9d968a61f3b7284a5ee13889399ca71a026549a2 "hello")) + # ((50 0x8578d10c07f5f086b08145a40f2b4b55f5cafeb8e6ed8c3c60e3ef92a66b608131225eb15d71fb32285bd7e1c461655f "hello")) solution = Program.from_bytes(sol_bytes) coin_spends = [CoinSpend(coin, puz_reveal, solution)] sk = AugSchemeMPL.key_gen( @@ -246,20 +321,24 @@ def test_validate_clvm_and_sig(): "52d75c4707e39595b27314547f9723e5530c01198af3fc5849d9a7af65631efb" ) ) - # pk = sk.get_g1() sig = AugSchemeMPL.sign( sk, - (b"hello" + coin.name() + DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA), # noqa + ( + ChiaProgram.to("hello").as_atom() + + coin.name() + + DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA + ), # noqa ) new_spend = SpendBundle(coin_spends, sig) - (sbc, additions, duration) = validate_clvm_and_signature( + + (sbc, duration) = validate_clvm_and_signature( new_spend, DEFAULT_CONSTANTS.MAX_BLOCK_COST_CLVM, DEFAULT_CONSTANTS, DEFAULT_CONSTANTS.HARD_FORK_HEIGHT + 1, cache, ) + assert sbc is not None - assert additions is not None assert duration is not None diff --git a/wheel/generate_type_stubs.py b/wheel/generate_type_stubs.py index 6669b9930..4131e25e6 100644 --- a/wheel/generate_type_stubs.py +++ b/wheel/generate_type_stubs.py @@ -311,7 +311,7 @@ def validate_clvm_and_signature( constants: ConsensusConstants, peak_height: int, cache: Optional[BLSCache], -) -> Tuple[SpendBundleConditions, List[Tuple[SpendBundleConditions, List[Tuple[bytes32, GTElement]]]], float]: ... +) -> Tuple[SpendBundleConditions, float]: ... def get_name_puzzle_conditions( spend_bundle: SpendBundle, diff --git a/wheel/python/chia_rs/chia_rs.pyi b/wheel/python/chia_rs/chia_rs.pyi index 5a28c3a7e..493fb3d05 100644 --- a/wheel/python/chia_rs/chia_rs.pyi +++ b/wheel/python/chia_rs/chia_rs.pyi @@ -55,7 +55,7 @@ def validate_clvm_and_signature( constants: ConsensusConstants, peak_height: int, cache: Optional[BLSCache], -) -> Tuple[SpendBundleConditions, List[Tuple[SpendBundleConditions, List[Tuple[bytes32, GTElement]]]], float]: ... +) -> Tuple[SpendBundleConditions, float]: ... def get_name_puzzle_conditions( spend_bundle: SpendBundle, diff --git a/wheel/src/api.rs b/wheel/src/api.rs index da647cc50..807c0623f 100644 --- a/wheel/src/api.rs +++ b/wheel/src/api.rs @@ -52,7 +52,7 @@ use pyo3::types::PyList; use pyo3::types::PyTuple; use pyo3::wrap_pyfunction; use std::iter::zip; -use std::sync::{Arc, Mutex}; +use std::sync::Arc; use crate::run_program::{run_chia_program, serialized_length}; @@ -375,25 +375,26 @@ pub fn py_validate_clvm_and_signature( max_cost: u64, constants: &ConsensusConstants, peak_height: u32, - cache: Option, -) -> PyResult<(OwnedSpendBundleConditions, Vec<([u8; 32], GTElement)>, f32)> { + cache: Option<&BlsCache>, +) -> PyResult<(OwnedSpendBundleConditions, f32)> { + let empty_cache = BlsCache::default(); let real_cache = if let Some(unwrapped_cache) = cache { unwrapped_cache } else { - BlsCache::default() + &empty_cache }; - let (owned_conditions, additions, duration) = validate_clvm_and_signature( + let (owned_conditions, duration) = validate_clvm_and_signature( new_spend, max_cost, - &constants, + constants, peak_height, - &Arc::new(Mutex::new(real_cache)), // TODO: use cache properly + &Arc::new(real_cache), ) .map_err(|e| { let error_code: u32 = e.into(); PyErr::new::(error_code) })?; // cast validation error to int - Ok((owned_conditions, additions, duration.as_secs_f32())) + Ok((owned_conditions, duration.as_secs_f32())) } #[pyfunction]