diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index aee7942..9c9c508 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -84,8 +84,6 @@ jobs: cargo login ${{ secrets.CARGO_REGISTRY_TOKEN }} cd ckb-mock-tx-types && cargo publish && cd .. cd ckb-vm-pprof && cargo publish && cd .. - cd ckb-debugger-api && cargo publish && cd .. - cd ckb-gdb-remote-protocol && cargo publish && cd .. cd ckb-vm-debug-utils && cargo publish && cd .. cd ckb-debugger && cargo publish && cd .. cd ckb-vm-pprof-protos && cargo publish --no-verify && cd .. diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 469889f..bad5bfd 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -10,7 +10,7 @@ env: CARGO_TERM_COLOR: always jobs: - build: + build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -18,3 +18,10 @@ jobs: run: cargo build - name: Build ckb-vm-signal-profiler example run: cargo build --examples --package ckb-vm-signal-profiler + + build-windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - name: Build + run: cd ckb-debugger && cargo build diff --git a/Cargo.lock b/Cargo.lock index d1d630a..79fec60 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,11 +18,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ - "gimli 0.28.0", + "gimli 0.29.0", ] [[package]] @@ -37,16 +37,16 @@ version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5" dependencies = [ - "memchr 2.6.3", + "memchr", ] [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ - "memchr 2.6.3", + "memchr", ] [[package]] @@ -60,71 +60,58 @@ dependencies = [ [[package]] name = "anstream" -version = "0.5.0" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.3" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "2.1.0" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" - -[[package]] -name = "assert_cli" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72342c21057a3cb5f7c2d849bf7999a83795434dd36d74fa8c24680581bd1930" -dependencies = [ - "colored", - "difference", - "environment", - "error-chain 0.11.0", - "serde_json", - "skeptic", -] +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "atty" @@ -132,37 +119,37 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi", "libc", "winapi", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ - "addr2line 0.21.0", + "addr2line 0.22.0", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "miniz_oxide", - "object 0.32.1", + "object 0.36.3", "rustc-demangle", ] [[package]] name = "base64" -version = "0.21.6" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "bit-vec" @@ -178,9 +165,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "blake2b-ref" @@ -209,27 +196,21 @@ dependencies = [ [[package]] name = "bumpalo" -version = "2.6.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708" - -[[package]] -name = "bytecount" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" dependencies = [ "serde", ] @@ -261,52 +242,15 @@ dependencies = [ "walkdir", ] -[[package]] -name = "camino" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", -] - [[package]] name = "cc" -version = "1.0.83" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" dependencies = [ - "libc", + "shlex", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -315,9 +259,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "ckb-chain-spec" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ffb29f6ab04123164b3595c7dc9b94c637483fe92d97395bfd8ef111c31b09" +checksum = "0d60207ffd717b937c625bb5c058bc275c6f7d298b4a64615bda07c2b50ca0de" dependencies = [ "cacache", "ckb-constant", @@ -338,24 +282,24 @@ dependencies = [ [[package]] name = "ckb-channel" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2c229f77b57d68bdeafef6d7eea370ec7d03fa4493832cd9b4501cad6697c03" +checksum = "563bc43a810e8eabb0c6fcfa07db9e190b8f2cca5426628ddc4cb9bfebb5908a" dependencies = [ "crossbeam-channel", ] [[package]] name = "ckb-constant" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf660b69c25989be516a4c2c047555cb4584f33a565396a5f35fc46ef3f3e04d" +checksum = "fa8366502d3bcde002fee339e2381880ddb10d749a1292f9007eaaecd08ddda9" [[package]] name = "ckb-crypto" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b7617bdf7797b9717eebcdb8bc4cb9c9ccc12f965a35090b319ed73c2eda36d" +checksum = "7a3f4a6656ce9411c9ff5c0d6b4ecdd2c879ff62bb978b1ebf94868b1e4c4a84" dependencies = [ "ckb-fixed-hash", "faster-hex", @@ -367,9 +311,9 @@ dependencies = [ [[package]] name = "ckb-dao-utils" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b4b523467ff9c7ccd06182779c2bbe4e580d4ac8e1dbb410a1120402163a94" +checksum = "b96ee5b3d3200105693768f6cdea07be3bc070445695037daa2079c2542d4ad1" dependencies = [ "byteorder", "ckb-error", @@ -378,46 +322,30 @@ dependencies = [ [[package]] name = "ckb-debugger" -version = "0.117.0" +version = "0.118.0-rc1" dependencies = [ + "addr2line 0.17.0", + "byteorder", "ckb-chain-spec", - "ckb-debugger-api", - "ckb-gdb-remote-protocol", "ckb-hash", + "ckb-jsonrpc-types", "ckb-mock-tx-types", "ckb-script", + "ckb-traits", "ckb-types", "ckb-vm", - "ckb-vm-debug-utils", - "ckb-vm-pprof", "clap 2.34.0", "env_logger 0.4.3", "gdbstub", "gdbstub_arch", + "goblin 0.4.0", "hex", - "lazy_static", "libc", - "log 0.4.20", + "log 0.4.22", + "nix 0.26.4", "probe", "rand 0.8.5", - "serde_json", - "serde_plain", -] - -[[package]] -name = "ckb-debugger-api" -version = "0.117.0" -dependencies = [ - "byteorder", - "ckb-chain-spec", - "ckb-hash", - "ckb-jsonrpc-types", - "ckb-mock-tx-types", - "ckb-script", - "ckb-types", - "ckb-vm", - "hex", - "regex 1.9.5", + "regex 1.10.6", "serde", "serde_json", "serde_plain", @@ -426,9 +354,9 @@ dependencies = [ [[package]] name = "ckb-error" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48b42e9c95f10c2b81af526df9014578440dbc0100b56959283a12795961fde2" +checksum = "2c54a88c2b1bf124637df609c5cd6343a16a52e32f1b640941b94331c3c45dbe" dependencies = [ "anyhow", "ckb-occupied-capacity", @@ -438,9 +366,9 @@ dependencies = [ [[package]] name = "ckb-fixed-hash" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a9d9d694bf53671361c828343ea50c3c7cdb66aaafb8e4dfa209d0a137a779" +checksum = "63187953a3caf54cb811ea54475f7c4eea4c6119216ca802d69ca5522f2c0ba0" dependencies = [ "ckb-fixed-hash-core", "ckb-fixed-hash-macros", @@ -448,9 +376,9 @@ dependencies = [ [[package]] name = "ckb-fixed-hash-core" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "104486d82104a99080bd9c462529789fc5b31d791a592b8ec455f2163bf5a3d0" +checksum = "af34c02d236a0873a1375cdafbadf25f347c2e1185174f8e554ff6eb0e85b094" dependencies = [ "ckb_schemars", "faster-hex", @@ -460,42 +388,23 @@ dependencies = [ [[package]] name = "ckb-fixed-hash-macros" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d40a5aa1ea857fcab168743d4969e2ae73db381b2637b6a74fab745baba030" +checksum = "3e520c1ea6a1d593526cb1e55c468f65a21b9edbcfd2120839ea5a4f5e60be4b" dependencies = [ "ckb-fixed-hash-core", "proc-macro2", - "quote 1.0.33", + "quote", "syn 1.0.109", ] -[[package]] -name = "ckb-gdb-remote-protocol" -version = "0.117.0" -dependencies = [ - "assert_cli", - "bitflags 1.3.2", - "byteorder", - "env_logger 0.4.3", - "libc", - "log 0.4.20", - "memchr 2.6.3", - "nom", - "num-derive", - "num-traits", - "strum", - "strum_macros", - "which 1.0.5", -] - [[package]] name = "ckb-gen-types" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b72a8f82b47ddcc49c68a1fbaf4e6b105c85747b44cdb9bb2d2b37e55e85e5e" +checksum = "c72afb6030720e1055b046d9a0ed8e1ce1c9bc928bc31dc3695fd57bd690d94f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "ckb-error", "ckb-fixed-hash", "ckb-hash", @@ -506,9 +415,9 @@ dependencies = [ [[package]] name = "ckb-hash" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5231fff400578e6a6d9c9758138a6cfb190d1acbd28f1b5d40e7fcb13f133e9a" +checksum = "0cdaa494bf635a531a991d79196d5b7577a7008559bfa525d546a09038909579" dependencies = [ "blake2b-ref", "blake2b-rs", @@ -516,9 +425,9 @@ dependencies = [ [[package]] name = "ckb-jsonrpc-types" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5176b756c8685d7ff9578d0e0e5f6714070c29f8ca924074188c1478ac57782f" +checksum = "37f5292bd27d309f317193084381af12ea60e44aa3988454fa62c30f73546fa3" dependencies = [ "ckb-types", "ckb_schemars", @@ -529,11 +438,11 @@ dependencies = [ [[package]] name = "ckb-logger" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f24db59d6f0994136a98371bc35f72ec912d40dd98921ec25968a3d549f656" +checksum = "cc718f37366b2b3c88a07ce3badea2d81aa58eb5339af0963bf78d7b77f6e6c1" dependencies = [ - "log 0.4.20", + "log 0.4.22", ] [[package]] @@ -542,12 +451,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56ccb671c5921be8a84686e6212ca184cb1d7c51cadcdbfcbd1cc3f042f5dfb8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "ckb-mock-tx-types" -version = "0.117.0" +version = "0.118.0-rc1" dependencies = [ "ckb-jsonrpc-types", "ckb-traits", @@ -557,9 +466,9 @@ dependencies = [ [[package]] name = "ckb-occupied-capacity" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67df5d5ce8cef497295a1b31cf34536dcdfc16747de540e5c8bd76738f0da753" +checksum = "d93f6f72b51d88bc2bb86e3c2bb118198d16dcd30a04ab0b79cee0e5f2cacb82" dependencies = [ "ckb-occupied-capacity-core", "ckb-occupied-capacity-macros", @@ -567,43 +476,43 @@ dependencies = [ [[package]] name = "ckb-occupied-capacity-core" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ecbb7cd4e90f38e4726a1f0cd443463db9c29d348aa660368485cf9665d1ae" +checksum = "ca6afcfb689376b72317a20e969aab36a1d5a1ce2c891b3e19b8eac90494c8a6" dependencies = [ "serde", ] [[package]] name = "ckb-occupied-capacity-macros" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f8b5144e5371c4f61aa2b9b6e668b6a7b5a6562c3c4b8874d414c14d48f9e7" +checksum = "e2f3bef434386e77e4279d4a9082150a8ddf4cb25b45fb40f4ba0f692f1d4d06" dependencies = [ "ckb-occupied-capacity-core", - "quote 1.0.33", + "quote", "syn 1.0.109", ] [[package]] name = "ckb-pow" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f7965a9f0c35ab68f71a008cd7186b4dea02bd8d17dc7263f927d005ee6a52" +checksum = "4d9cca169a37c65afecd921f3a8d038897a6ff3dcb1bba68cae7c59ccb5e9592" dependencies = [ "byteorder", "ckb-hash", "ckb-types", "eaglesong", - "log 0.4.20", + "log 0.4.22", "serde", ] [[package]] name = "ckb-rational" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea12dfe40f80068b593a65d59484b7541444f10c629f78ceba20b1a0ef95f68d" +checksum = "d67de760461dbea063bce5fa528ca2146720462263f7f3a34185704451a18079" dependencies = [ "numext-fixed-uint", "serde", @@ -611,9 +520,9 @@ dependencies = [ [[package]] name = "ckb-resource" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdded224077d7ead2d76d376786e63a46d93f8e3cc54db9edebf32c51ba0ae31" +checksum = "b11a76c1e6cd43f2ca759dc043b2e7495da5712bb3957726f3d1c65d6bd79d4e" dependencies = [ "ckb-system-scripts", "ckb-types", @@ -626,9 +535,9 @@ dependencies = [ [[package]] name = "ckb-script" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa80e54fbaf4287121adb59b77b537d38b3a79c2a0a23613a464ab5830d76c9" +checksum = "30d025df1e30fa19b212fba984ed8a27177ad0df1fa6e7e7f5177e13380afa02" dependencies = [ "byteorder", "ckb-chain-spec", @@ -639,6 +548,7 @@ dependencies = [ "ckb-vm", "faster-hex", "serde", + "tokio", ] [[package]] @@ -656,18 +566,18 @@ dependencies = [ [[package]] name = "ckb-traits" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "510e8db7af6ed58c322449c23c62b50ff717ea6f9803a22cea1e11b4763f7fb4" +checksum = "a86be17313dcdfb3ee0d465656debd5c56133ed3958255ef1e4a58d14e8d593f" dependencies = [ "ckb-types", ] [[package]] name = "ckb-types" -version = "0.117.0" +version = "0.118.0-rc1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764f9fa9be640bea12227d4b16db4ed595dd04e89a457d67db7c73cd632cdb8d" +checksum = "30e526bae5c94601d396a0b6f87a0994804cb6b678910ca3f42799de5e9e4039" dependencies = [ "bit-vec", "bytes", @@ -691,9 +601,9 @@ dependencies = [ [[package]] name = "ckb-vm" -version = "0.24.9" +version = "0.24.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2c3d68dc7f891e5555c7ebc054722b28ab005e51c5076f54c20d36002dc8e83" +checksum = "ddff96029d3298cb630e95f29d4b9a93384e938a0b75758684aa8794b53bdd1a" dependencies = [ "byteorder", "bytes", @@ -709,32 +619,31 @@ dependencies = [ [[package]] name = "ckb-vm-debug-utils" -version = "0.117.0" +version = "0.118.0-rc1" dependencies = [ "byteorder", "bytes", - "ckb-gdb-remote-protocol", "ckb-vm", "env_logger 0.4.3", "gdbstub", "gdbstub_arch", "libc", - "log 0.4.20", + "log 0.4.22", "nix 0.26.4", ] [[package]] name = "ckb-vm-definitions" -version = "0.24.9" +version = "0.24.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fdf9c8ee14409b2208d23b9ad88828242d7881153ddc04872b66d2e018a52f" +checksum = "c280bf1d589d23ab0358f58601c2187fc6be86a131644583ef72ea96a0a13ddd" dependencies = [ "paste", ] [[package]] name = "ckb-vm-pprof" -version = "0.117.0" +version = "0.118.0-rc1" dependencies = [ "addr2line 0.17.0", "ckb-vm", @@ -744,16 +653,16 @@ dependencies = [ [[package]] name = "ckb-vm-pprof-converter" -version = "0.117.0" +version = "0.118.0-rc1" dependencies = [ "ckb-vm-pprof-protos", - "clap 4.4.4", + "clap 4.5.16", "protobuf", ] [[package]] name = "ckb-vm-pprof-protos" -version = "0.117.0" +version = "0.118.0-rc1" dependencies = [ "protobuf", "protoc-bin-vendored", @@ -762,14 +671,14 @@ dependencies = [ [[package]] name = "ckb-vm-signal-profiler" -version = "0.117.0" +version = "0.118.0-rc1" dependencies = [ "addr2line 0.17.0", "ckb-vm", "ckb-vm-pprof-protos", "env_logger 0.9.3", "lazy_static", - "log 0.4.20", + "log 0.4.22", "nix 0.23.2", "protobuf", ] @@ -793,7 +702,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c813b4fadbdd9f33b1cf02a1ddfa9537d955c8d2fbe150d1fc1684dbf78e73" dependencies = [ "proc-macro2", - "quote 1.0.33", + "quote", "serde_derive_internals", "syn 1.0.109", ] @@ -815,47 +724,36 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.4" +version = "4.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d7b8d5ec32af0fadc644bf1fd509a688c2103b185644bb1e29d164e0703136" +checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.4" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5179bb514e4d7c2051749d8fcefa2ed6d06a9f4e6d69faf3805f5d80b8cf8d56" +checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.10.0", + "strsim 0.11.1", ] [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" - -[[package]] -name = "colored" -version = "1.9.4" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f741c91823341bebf717d4c71bda820630ce065443b58bd1b7451af008355" -dependencies = [ - "is-terminal", - "lazy_static", - "winapi", -] +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "convert_case" @@ -869,45 +767,41 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "cfg-if 1.0.0", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -927,23 +821,17 @@ checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", "proc-macro2", - "quote 1.0.33", + "quote", "rustc_version", - "syn 1.0.109", + "syn 2.0.75", ] -[[package]] -name = "difference" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3304d19798a8e067e48d8e69b2c37f0b5e9b4e462504ad9e27e9f3fce02bba8" - [[package]] name = "digest" version = "0.10.7" @@ -968,9 +856,9 @@ checksum = "8d978bd5d343e8ab9b5c0fc8d93ff9c602fdc96616ffff9c05ac7a155419b824" [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "env_logger" @@ -990,54 +878,19 @@ checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime", - "log 0.4.20", - "regex 1.9.5", + "log 0.4.22", + "regex 1.10.6", "termcolor", ] -[[package]] -name = "environment" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4b14e20978669064c33b4c1e0fb4083412e40fe56cbea2eae80fd7591503ee" - [[package]] name = "errno" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ - "cc", "libc", -] - -[[package]] -name = "error-chain" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3" -dependencies = [ - "backtrace", -] - -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "version_check", + "windows-sys 0.52.0", ] [[package]] @@ -1054,15 +907,15 @@ checksum = "51e2ce894d53b295cf97b05685aa077950ff3e8541af83217fc720a6437169f8" [[package]] name = "fastrand" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -1123,8 +976,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", - "quote 1.0.33", - "syn 2.0.37", + "quote", + "syn 2.0.75", ] [[package]] @@ -1151,7 +1004,7 @@ dependencies = [ "futures-macro", "futures-sink", "futures-task", - "memchr 2.6.3", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1159,13 +1012,13 @@ dependencies = [ [[package]] name = "gdbstub" -version = "0.6.6" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e02bf1b1a624d96925c608f1b268d82a76cbc587ce9e59f7c755e9ea11c75c" +checksum = "fbcc892208d6998fb57e7c3e05883def66f8130924bba066beb0cfe71566a9f6" dependencies = [ - "bitflags 1.3.2", - "cfg-if 1.0.0", - "log 0.4.20", + "bitflags 2.6.0", + "cfg-if", + "log 0.4.22", "managed", "num-traits", "paste", @@ -1173,9 +1026,9 @@ dependencies = [ [[package]] name = "gdbstub_arch" -version = "0.2.4" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eecb536c55c43593a00dde9074dbbdb0e81ce5f20dbca921400f8779c21dea9c" +checksum = "328a9e9425db13770d0d11de6332a608854266e44c53d12776be7b4aa427e3de" dependencies = [ "gdbstub", "num-traits", @@ -1197,18 +1050,18 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] @@ -1225,15 +1078,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" - -[[package]] -name = "glob" -version = "0.3.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "goblin" @@ -1241,7 +1088,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d20fd25aa456527ce4f544271ae4fea65d2eda4a6561ea56f39fb3ee4f7e3884" dependencies = [ - "log 0.4.20", + "log 0.4.22", "plain", "scroll", ] @@ -1252,16 +1099,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "532a09cd3df2c6bbfc795fb0434bff8f22255d1d07328180e918a2e6ce122d4d" dependencies = [ - "log 0.4.20", + "log 0.4.22", "plain", "scroll", ] [[package]] name = "golomb-coded-set" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7076c0cd6257d84b785b0f22c36443dd47a5e86a1256d7ef82c8cb88ea9a7e" +checksum = "812f314a99fb5b7f0f9d0a8388539578f83f3aca6a65f588b8dbeefb731e2f98" dependencies = [ "siphasher", ] @@ -1284,12 +1131,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" - [[package]] name = "hex" version = "0.4.3" @@ -1298,11 +1139,11 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1333,39 +1174,34 @@ dependencies = [ ] [[package]] -name = "is-terminal" -version = "0.4.9" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi 0.3.3", - "rustix", - "windows-sys", -] +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.148" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "log" @@ -1373,14 +1209,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.20", + "log 0.4.22", ] [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "managed" @@ -1390,18 +1226,9 @@ checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d" [[package]] name = "memchr" -version = "1.0.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a" -dependencies = [ - "libc", -] - -[[package]] -name = "memchr" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" @@ -1436,7 +1263,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "171d2f700835121c3b04ccf0880882987a050fd5c7ae88148abf537d33dd3a56" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1458,15 +1285,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", - "quote 1.0.33", - "syn 2.0.37", + "quote", + "syn 2.0.75", ] [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] @@ -1478,7 +1305,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6efe1c7efcd0bdf4ca590e104bcb13087d9968956ae4ae98e92fb8c1da0f3730" dependencies = [ "bytes", - "cfg-if 1.0.0", + "cfg-if", "faster-hex", ] @@ -1490,7 +1317,7 @@ checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" dependencies = [ "bitflags 1.3.2", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset 0.6.5", ] @@ -1502,37 +1329,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset 0.7.1", "pin-utils", ] -[[package]] -name = "nom" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aec50c70fd288702bcd93284a8444607f3292dbdf2a30de5ea5dcdbe72287b" -dependencies = [ - "memchr 1.0.2", -] - -[[package]] -name = "num-derive" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" -dependencies = [ - "proc-macro2", - "quote 1.0.33", - "syn 1.0.109", -] - [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1544,7 +1351,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "621fe0f044729f810c6815cdd77e8f5e0cd803ce4f6a38380ebfc1322af98661" dependencies = [ "proc-macro2", - "quote 1.0.33", + "quote", "syn 1.0.109", ] @@ -1579,7 +1386,7 @@ checksum = "0200f8d55c36ec1b6a8cf810115be85d4814f045e0097dfd50033ba25adb4c9e" dependencies = [ "numext-fixed-uint-core", "proc-macro2", - "quote 1.0.33", + "quote", "syn 1.0.109", ] @@ -1590,29 +1397,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ "flate2", - "memchr 2.6.3", + "memchr", ] [[package]] name = "object" -version = "0.32.1" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ - "memchr 2.6.3", + "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "phf" @@ -1654,9 +1461,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -1672,9 +1479,12 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "probe" @@ -1684,9 +1494,9 @@ checksum = "d8e2d2444b730c8f027344c60f9e1f1554d7a3342df9bdd425142ed119a6e5a3" [[package]] name = "proc-macro2" -version = "1.0.67" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1717,8 +1527,8 @@ version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0218039c514f9e14a5060742ecd50427f8ac4f85a6dc58f2ddb806e318c55ee" dependencies = [ - "log 0.4.20", - "which 4.4.2", + "log 0.4.22", + "which", ] [[package]] @@ -1783,28 +1593,11 @@ dependencies = [ "tempfile", ] -[[package]] -name = "pulldown-cmark" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" -dependencies = [ - "bitflags 1.3.2", - "memchr 2.6.3", - "unicase", -] - [[package]] name = "quote" -version = "0.3.15" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" - -[[package]] -name = "quote" -version = "1.0.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1869,7 +1662,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.15", ] [[package]] @@ -1890,22 +1683,13 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "reflink-copy" -version = "0.1.14" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767be24c0da52e7448d495b8d162506a9aa125426651d547d545d6c2b4b65b62" +checksum = "dc31414597d1cd7fdd2422798b7652a6329dda0fe0219e6335a13d5bcaa9aeb6" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "rustix", "windows", ] @@ -1917,7 +1701,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" dependencies = [ "aho-corasick 0.6.10", - "memchr 2.6.3", + "memchr", "regex-syntax 0.5.6", "thread_local", "utf8-ranges", @@ -1925,25 +1709,25 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ - "aho-corasick 1.1.1", - "memchr 2.6.3", + "aho-corasick 1.1.3", + "memchr", "regex-automata", - "regex-syntax 0.7.5", + "regex-syntax 0.8.4", ] [[package]] name = "regex-automata" -version = "0.3.8" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ - "aho-corasick 1.1.1", - "memchr 2.6.3", - "regex-syntax 0.7.5", + "aho-corasick 1.1.3", + "memchr", + "regex-syntax 0.8.4", ] [[package]] @@ -1957,15 +1741,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" @@ -1978,22 +1762,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.21" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -2020,7 +1804,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0" dependencies = [ "proc-macro2", - "quote 1.0.33", + "quote", "syn 1.0.109", ] @@ -2044,31 +1828,28 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" -dependencies = [ - "serde", -] +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", - "quote 1.0.33", - "syn 2.0.37", + "quote", + "syn 2.0.75", ] [[package]] @@ -2078,17 +1859,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ "proc-macro2", - "quote 1.0.33", + "quote", "syn 1.0.109", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -2108,7 +1890,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest", ] @@ -2119,7 +1901,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest", ] @@ -2130,31 +1912,22 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest", ] [[package]] -name = "siphasher" -version = "0.3.11" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] -name = "skeptic" -version = "0.13.7" +name = "siphasher" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" -dependencies = [ - "bytecount", - "cargo_metadata", - "error-chain 0.12.4", - "glob", - "pulldown-cmark", - "tempfile", - "walkdir", -] +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" @@ -2167,9 +1940,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "ssri" @@ -2202,36 +1975,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strum" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca6e4730f517e041e547ffe23d29daab8de6b73af4b6ae2a002108169f5e7da" - -[[package]] -name = "strum_macros" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3384590878eb0cab3b128e844412e2d010821e7e091211b9d87324173ada7db8" -dependencies = [ - "quote 0.3.15", - "syn 0.11.11", -] - -[[package]] -name = "syn" -version = "0.11.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" -dependencies = [ - "quote 0.3.15", - "synom", - "unicode-xid", -] +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -2240,48 +1986,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", - "quote 1.0.33", + "quote", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.37" +version = "2.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" dependencies = [ "proc-macro2", - "quote 1.0.33", + "quote", "unicode-ident", ] -[[package]] -name = "synom" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -dependencies = [ - "unicode-xid", -] - [[package]] name = "tempfile" -version = "3.8.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fastrand", - "redox_syscall", + "once_cell", "rustix", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -2297,22 +2034,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", - "quote 1.0.33", - "syn 2.0.37", + "quote", + "syn 2.0.75", ] [[package]] @@ -2326,9 +2063,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.35.1" +version = "1.39.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" dependencies = [ "backtrace", "bytes", @@ -2338,20 +2075,20 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", - "quote 1.0.33", - "syn 2.0.37", + "quote", + "syn 2.0.75", ] [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -2379,15 +2116,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abd2fc5d32b590614af8b0a20d837f32eca055edd0bbead59a9cfe80858be003" -[[package]] -name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-ident" version = "1.0.12" @@ -2396,15 +2124,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-width" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" - -[[package]] -name = "unicode-xid" -version = "0.0.4" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "utf8-ranges" @@ -2414,9 +2136,9 @@ checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vec_map" @@ -2426,15 +2148,15 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -2454,66 +2176,58 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.50" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcddca308b16cd93c2b67b126c688e5467e4ef2e28200dc7dfe4ae284f2faefc" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ - "cfg-if 0.1.10", + "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.50" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f805d9328b5fc7e5c6399960fd1889271b9b58ae17bdb2417472156cc9fafdd0" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", - "lazy_static", - "log 0.4.20", + "log 0.4.22", + "once_cell", "proc-macro2", - "quote 1.0.33", - "syn 1.0.109", + "quote", + "syn 2.0.75", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.50" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff88201a482abfc63921621f6cb18eb1efd74f136b05e5841e7f8ca434539e9" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ - "quote 1.0.33", + "quote", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.50" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a433d89ecdb9f77d46fcf00c8cf9f3467b7de9954d8710c175f61e2e245bb0e" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", - "quote 1.0.33", - "syn 1.0.109", + "quote", + "syn 2.0.75", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41fc1bc3570cdf8d108c15e014045fd45a95bb5eb36605f96a90461fc34027d" - -[[package]] -name = "which" -version = "1.0.5" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e84a603e7e0b1ce1aa1ee2b109c7be00155ce52df5081590d1ffb93f4f515cb2" -dependencies = [ - "libc", -] +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "which" @@ -2545,11 +2259,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -2560,148 +2274,173 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ "windows-core", - "windows-targets 0.52.0", + "windows-targets", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-targets 0.52.0", + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets", ] [[package]] -name = "windows-sys" -version = "0.48.0" +name = "windows-implement" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ - "windows-targets 0.48.5", + "proc-macro2", + "quote", + "syn 2.0.75", ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-interface" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "proc-macro2", + "quote", + "syn 2.0.75", ] [[package]] -name = "windows-targets" -version = "0.52.0" +name = "windows-result" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows-targets", ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" +name = "windows-strings" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets", +] [[package]] -name = "windows_aarch64_gnullvm" +name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] [[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] [[package]] -name = "windows_aarch64_msvc" -version = "0.52.0" +name = "windows-targets" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] [[package]] -name = "windows_i686_gnu" -version = "0.48.5" +name = "windows_aarch64_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] -name = "windows_i686_gnu" -version = "0.52.0" +name = "windows_aarch64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] -name = "windows_i686_msvc" -version = "0.48.5" +name = "windows_i686_gnu" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "windows_i686_msvc" -version = "0.52.0" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +name = "windows_i686_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.0" +name = "windows_x86_64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" +name = "xxhash-rust" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.0" +name = "zerocopy" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] [[package]] -name = "xxhash-rust" -version = "0.8.8" +name = "zerocopy-derive" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53be06678ed9e83edb1745eb72efc0bbcd7b5c3c35711a860906aed827a13d61" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", +] diff --git a/Cargo.toml b/Cargo.toml index 8cd16cb..d7e7826 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,8 +2,6 @@ resolver = "2" members = [ "ckb-debugger", - "ckb-debugger-api", - "ckb-gdb-remote-protocol", "ckb-mock-tx-types", "ckb-vm-debug-utils", "ckb-vm-pprof", diff --git a/README.md b/README.md index de9babf..b416a64 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ CKB standalone debugger is a collection of debugging tools. - [ckb-debugger](./ckb-debugger) -- [ckb-debugger-api](./ckb-debugger-api) - [ckb-mock-tx-types](./ckb-mock-tx-types) - [ckb-vm-debug-utils](./ckb-vm-debug-utils) - [ckb-vm-pprof](./ckb-vm-pprof) diff --git a/ckb-debugger-api/Cargo.toml b/ckb-debugger-api/Cargo.toml deleted file mode 100644 index 39d401f..0000000 --- a/ckb-debugger-api/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "ckb-debugger-api" -description = "Standalone debugger for Nervos CKB" -version = "0.117.0" -license = "MIT" -authors = ["Nervos Core Dev "] -edition = "2021" - -[lib] -crate-type = ["cdylib", "rlib"] - -[dependencies] -ckb-hash = "=0.117.0" -ckb-chain-spec = "=0.117.0" -ckb-jsonrpc-types = "=0.117.0" -ckb-mock-tx-types = { path = "../ckb-mock-tx-types", version = "0.117.0" } -ckb-script = { version = "=0.117.0", default-features = false } -ckb-types = "=0.117.0" -ckb-vm = "=0.24.9" -hex = "0.4" -regex = "1" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -serde_plain = "1.0" -wasm-bindgen = "=0.2.50" - -[dev-dependencies] -byteorder = "1.3.2" diff --git a/ckb-debugger-api/README.md b/ckb-debugger-api/README.md deleted file mode 100644 index 08b8796..0000000 --- a/ckb-debugger-api/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# CKB Debugger API - -The api of ckb debugger, supports compiling to wasm. diff --git a/ckb-debugger-api/src/embed.rs b/ckb-debugger-api/src/embed.rs deleted file mode 100644 index 45f84a4..0000000 --- a/ckb-debugger-api/src/embed.rs +++ /dev/null @@ -1,110 +0,0 @@ -use ckb_chain_spec::consensus::TYPE_ID_CODE_HASH; -use ckb_hash::blake2b_256; -use ckb_types::core::ScriptHashType; -use ckb_types::packed::Script; -use ckb_types::prelude::{Builder, Entity, Pack}; -use ckb_vm::Bytes; -use regex::{Captures, Regex}; -use std::collections::HashMap; -use std::path::{Path, PathBuf}; - -pub struct Embed { - pub data: String, - pub path: PathBuf, - pub type_id_dict: HashMap, -} - -impl Embed { - pub fn new(path: PathBuf, data: String) -> Self { - Self { data, path, type_id_dict: HashMap::new() } - } - - pub fn replace_data(&mut self) -> &mut Self { - let regex = Regex::new(r"\{\{ ?data (.+?) ?\}\}").unwrap(); - self.data = regex - .replace_all(&self.data, |caps: &Captures| -> String { - let cap1 = &caps[1]; - let path = if !Path::new(cap1).is_absolute() { - let root = self.path.parent().unwrap(); - root.join(cap1) - } else { - Path::new(cap1).to_path_buf() - }; - let data = std::fs::read(&path); - if data.is_err() { - panic!("Read {:?} failed : {:?}", path, data); - } - let data = data.unwrap(); - hex::encode(data) - }) - .to_string(); - self - } - - pub fn replace_hash(&mut self) -> &mut Self { - let regex = Regex::new(r"\{\{ ?hash (.+?) ?\}\}").unwrap(); - self.data = regex - .replace_all(&self.data, |caps: &Captures| -> String { - let cap1 = &caps[1]; - let path = if !Path::new(cap1).is_absolute() { - let root = self.path.parent().unwrap(); - root.join(cap1) - } else { - Path::new(cap1).to_path_buf() - }; - let data = std::fs::read(path).unwrap(); - hex::encode(blake2b_256(data)) - }) - .to_string(); - self - } - - pub fn prelude_type_id(&mut self) -> &mut Self { - let rule = Regex::new(r"\{\{ ?def_type (.+?) ?\}\}").unwrap(); - for caps in rule.captures_iter(&self.data) { - let type_id_name = &caps[1]; - assert!(!self.type_id_dict.contains_key(type_id_name)); - let type_id_script = Script::new_builder() - .args(Bytes::from(type_id_name.to_string()).pack()) - .code_hash(TYPE_ID_CODE_HASH.pack()) - .hash_type(ScriptHashType::Type.into()) - .build(); - let type_id_script_hash = type_id_script.calc_script_hash(); - let type_id_script_hash = format!("{:x}", type_id_script_hash); - self.type_id_dict.insert(type_id_name.to_string(), type_id_script_hash); - } - self - } - - pub fn replace_def_type(&mut self) -> &mut Self { - let regex = Regex::new(r#""?\{\{ ?def_type (.+?) ?\}\}"?"#).unwrap(); - self.data = regex - .replace_all(&self.data, |caps: &Captures| -> String { - let cap1 = &caps[1]; - let type_id_script_json = ckb_jsonrpc_types::Script { - code_hash: TYPE_ID_CODE_HASH, - hash_type: ckb_jsonrpc_types::ScriptHashType::Type, - args: ckb_jsonrpc_types::JsonBytes::from_vec(cap1.as_bytes().to_vec()), - }; - return serde_json::to_string_pretty(&type_id_script_json).unwrap(); - }) - .to_string(); - self - } - - pub fn replace_ref_type(&mut self) -> &mut Self { - let regex = Regex::new(r"\{\{ ?ref_type (.+?) ?\}\}").unwrap(); - self.data = regex - .replace_all(&self.data, |caps: &Captures| -> String { - let cap1 = &caps[1]; - return self.type_id_dict[&cap1.to_string()].clone(); - }) - .to_string(); - self - } - - pub fn replace_all(&mut self) -> String { - self.replace_data().replace_hash().prelude_type_id().replace_def_type().replace_ref_type(); - self.data.clone() - } -} diff --git a/ckb-debugger-api/src/lib.rs b/ckb-debugger-api/src/lib.rs deleted file mode 100644 index d690ede..0000000 --- a/ckb-debugger-api/src/lib.rs +++ /dev/null @@ -1,208 +0,0 @@ -use ckb_chain_spec::consensus::ConsensusBuilder; -use ckb_jsonrpc_types::{CellDep, CellInput, DepType}; -use ckb_mock_tx_types::{MockInput, MockResourceLoader, MockTransaction, ReprMockTransaction, Resource}; -use ckb_script::{ScriptGroupType, TransactionScriptsVerifier, TxVerifyEnv}; -use ckb_types::{ - bytes::Bytes, - core::cell::resolve_transaction, - core::hardfork::{HardForks, CKB2021, CKB2023}, - core::{Cycle, EpochNumberWithFraction, HeaderView}, - packed::{self, Byte32, CellOutput, OutPoint, OutPointVec}, - prelude::*, - H256, -}; -use serde::{Deserialize, Serialize}; -use serde_json::{from_str as from_json_str, to_string as to_json_string}; -use serde_plain::from_str as from_plain_str; -use std::collections::HashSet; -use std::sync::Arc; -use wasm_bindgen::prelude::*; -pub mod embed; - -pub struct DummyResourceLoader {} - -impl MockResourceLoader for DummyResourceLoader { - fn get_header(&mut self, hash: H256) -> Result, String> { - return Err(format!("Header {:x} is missing!", hash)); - } - - fn get_live_cell(&mut self, out_point: OutPoint) -> Result)>, String> { - return Err(format!("Cell: {:?} is missing!", out_point)); - } -} - -pub fn run( - mock_tx: &MockTransaction, - script_group_type: &ScriptGroupType, - script_hash: &Byte32, - max_cycle: Cycle, - debug_printer: Option>, -) -> Result { - let resource = Resource::from_both(mock_tx, DummyResourceLoader {})?; - let tx = mock_tx.core_transaction(); - let rtx = { - let mut seen_inputs = HashSet::new(); - resolve_transaction(tx, &mut seen_inputs, &resource, &resource) - .map_err(|err| format!("Resolve transaction error: {:?}", err))? - }; - let hardfork_switch = HardForks { - ckb2021: CKB2021::new_mirana(), - ckb2023: CKB2023::new_mirana().as_builder().rfc_0049(2023).build().unwrap(), - }; - let consensus = Arc::new(ConsensusBuilder::default().hardfork_switch(hardfork_switch).build()); - let epoch = EpochNumberWithFraction::new(2023, 0, 1); - let header = HeaderView::new_advanced_builder().epoch(epoch.pack()).build(); - let tx_env = Arc::new(TxVerifyEnv::new_commit(&header)); - let mut verifier = - TransactionScriptsVerifier::new(Arc::new(rtx), resource.clone(), consensus.clone(), tx_env.clone()); - if let Some(debug_printer) = debug_printer { - verifier.set_debug_printer(debug_printer); - } - verifier - .verify_single(*script_group_type, script_hash, max_cycle) - .map_err(|err| format!("Verify script error: {:?}", err)) -} - -#[derive(Clone, Serialize, Deserialize, PartialEq, Eq, Hash, Debug)] -struct JsonResult { - cycle: Option, - error: Option, -} - -impl From> for JsonResult { - fn from(result: Result) -> JsonResult { - match result { - Ok(cycle) => JsonResult { cycle: Some(cycle), error: None }, - Err(error) => JsonResult { cycle: None, error: Some(error) }, - } - } -} - -fn internal_run_json( - mock_tx: &str, - script_group_type: &str, - hex_script_hash: &str, - max_cycle: &str, - debug_printer: Option>, -) -> Result { - let repr_mock_tx: ReprMockTransaction = from_json_str(mock_tx).map_err(|e| e.to_string())?; - let mock_tx: MockTransaction = repr_mock_tx.into(); - let script_group_type: ScriptGroupType = from_plain_str(script_group_type).map_err(|e| e.to_string())?; - if hex_script_hash.len() != 66 || (!hex_script_hash.starts_with("0x")) { - return Err("Invalid script hash format!".to_string()); - } - let b = hex::decode(&hex_script_hash.as_bytes()[2..]).map_err(|e| e.to_string())?; - let script_hash = Byte32::from_slice(b.as_slice()).map_err(|e| e.to_string())?; - let max_cycle: Cycle = max_cycle.parse().map_err(|_| "Invalid max cycle!".to_string())?; - run(&mock_tx, &script_group_type, &script_hash, max_cycle, debug_printer) -} - -#[wasm_bindgen] -pub fn run_json(mock_tx: &str, script_group_type: &str, hex_script_hash: &str, max_cycle: &str) -> String { - let json_result: JsonResult = - internal_run_json(mock_tx, script_group_type, hex_script_hash, max_cycle, None).into(); - to_json_string(&json_result).expect("JSON serialization should not fail!") -} - -fn parse_dep_group_data(slice: &[u8]) -> Result { - if slice.is_empty() { - Err("data is empty".to_owned()) - } else { - match OutPointVec::from_slice(slice) { - Ok(v) => { - if v.is_empty() { - Err("dep group is empty".to_owned()) - } else { - Ok(v) - } - } - Err(err) => Err(err.to_string()), - } - } -} - -pub fn check(tx: &ReprMockTransaction) -> Result<(), String> { - let mut mock_cell_deps: Vec = - tx.mock_info.cell_deps.iter().map(|c| c.cell_dep.clone()).collect::>(); - let mut cell_deps = tx.tx.cell_deps.iter().map(|c| c.clone()).collect::>(); - - for dep in &tx.mock_info.cell_deps { - if dep.cell_dep.dep_type == DepType::DepGroup { - let sub_outpoints = parse_dep_group_data(dep.data.as_bytes())?; - let outpoints: Vec = sub_outpoints.into_iter().collect::>(); - let resolved_cell_deps: Vec = outpoints - .into_iter() - .map(|o| CellDep { out_point: o.into(), dep_type: DepType::Code }) - .collect::>(); - cell_deps.extend(resolved_cell_deps); - } - } - let compare = |a: &CellDep, b: &CellDep| { - let left = serde_json::to_string(a).unwrap(); - let right = serde_json::to_string(b).unwrap(); - left.cmp(&right) - }; - mock_cell_deps.sort_by(compare); - cell_deps.sort_by(compare); - - if mock_cell_deps.len() != cell_deps.len() { - return Err(format!( - "mock_cell_deps.len() != cell_deps.len(), {} != {}", - mock_cell_deps.len(), - cell_deps.len() - )); - } else { - for (a, b) in mock_cell_deps.into_iter().zip(cell_deps.into_iter()) { - if a != b { - return Err(format!("CellDeps {:?} != {:?}", a, b)); - } - } - } - - if tx.mock_info.inputs.len() != tx.tx.inputs.len() { - return Err(format!("tx.mock_info.inputs.len() != tx.tx.inputs.len() ")); - } else { - for i in 0..tx.mock_info.inputs.len() { - let mock_input: MockInput = tx.mock_info.inputs[i].clone().into(); - let input: CellInput = tx.tx.inputs[i].clone(); - let input: packed::CellInput = input.into(); - if mock_input.input != input { - return Err(format!("inputs at index {} is mismatched", i)); - } - } - } - if tx.mock_info.header_deps.len() != tx.tx.header_deps.len() { - return Err(format!("tx.mock_info.header_deps.len() != tx.tx.header_deps.len() ")); - } - Ok(()) -} - -// Get script hash by give group type, cell type and cell index. -// Note cell_type should be a string, in the range ["input", "output"]. -pub fn get_script_hash_by_index( - mock_tx: &MockTransaction, - script_group_type: &ScriptGroupType, - cell_type: &str, - cell_index: usize, -) -> Byte32 { - match (&script_group_type, cell_type) { - (ScriptGroupType::Lock, "input") => mock_tx.mock_info.inputs[cell_index].output.calc_lock_hash(), - (ScriptGroupType::Type, "input") => mock_tx.mock_info.inputs[cell_index] - .output - .type_() - .to_opt() - .expect("cell should have type script") - .calc_script_hash(), - (ScriptGroupType::Type, "output") => mock_tx - .tx - .raw() - .outputs() - .get(cell_index) - .expect("index out of bound") - .type_() - .to_opt() - .expect("cell should have type script") - .calc_script_hash(), - _ => panic!("Invalid specified script: {:?} {} {}", script_group_type, cell_type, cell_index), - } -} diff --git a/ckb-debugger-api/tests/programs/bench b/ckb-debugger-api/tests/programs/bench deleted file mode 100755 index 1650213..0000000 Binary files a/ckb-debugger-api/tests/programs/bench and /dev/null differ diff --git a/ckb-debugger-api/tests/programs/bench.c b/ckb-debugger-api/tests/programs/bench.c deleted file mode 100644 index c7655b1..0000000 --- a/ckb-debugger-api/tests/programs/bench.c +++ /dev/null @@ -1,47 +0,0 @@ -#include "ckb_syscalls.h" -#include "protocol.h" - -int main() { - char script[1024]; - char buffer[1024 * 1024]; - - uint64_t len = 1024; - uint64_t ret = ckb_load_script(script, &len, 0); - if (ret != 0) { - return ret; - } - mol_seg_t script_seg; - script_seg.ptr = (uint8_t*)script; - script_seg.size = len; - mol_seg_t args_seg = MolReader_Script_get_args(&script_seg); - mol_seg_t args_bytes_seg = MolReader_Bytes_raw_bytes(&args_seg); - if (args_bytes_seg.size != 32) { - return -101; - } - uint64_t adds = *((const uint64_t *) (&args_bytes_seg.ptr[0])); - uint64_t muls = *((const uint64_t *) (&args_bytes_seg.ptr[8])); - uint64_t loads = *((const uint64_t *) (&args_bytes_seg.ptr[16])); - uint64_t load_bytes = *((const uint64_t *) (&args_bytes_seg.ptr[24])); - - uint64_t result = 0; - for (uint64_t i = 1; i <= adds; i++) { - result += adds; - } - for (uint64_t i = 1; i <= muls; i++) { - result *= muls; - } - for (uint64_t i = 1; i <= loads; i++) { - len = load_bytes; - ret = ckb_load_cell_data(buffer, &len, 0, 0, CKB_SOURCE_CELL_DEP); - if (ret != 0) { - return ret; - } - result += buffer[0]; - } - - if (result == 0) { - return -1; - } - - return 0; -} diff --git a/ckb-debugger-api/tests/programs/sample.c b/ckb-debugger-api/tests/programs/sample.c deleted file mode 100644 index c669196..0000000 --- a/ckb-debugger-api/tests/programs/sample.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "ckb_syscalls.h" -#include "protocol.h" - -int main() -{ - ckb_debug("I'm in main now!"); - - char script[1024]; - uint64_t len = 1024; - uint64_t ret = ckb_load_script(script, &len, 0); - if (ret != 0) { - return ret; - } - mol_seg_t script_seg; - script_seg.ptr = (uint8_t*)script; - script_seg.size = len; - mol_seg_t args_seg = MolReader_Script_get_args(&script_seg); - mol_seg_t args_bytes_seg = MolReader_Bytes_raw_bytes(&args_seg); - - if (args_bytes_seg.size == 3) { - return -2; - } else if (args_bytes_seg.size == 5 ) { - return -3; - } else { - return 0; - } -} diff --git a/ckb-debugger-api/tests/programs/sample.json b/ckb-debugger-api/tests/programs/sample.json deleted file mode 100644 index 273d82f..0000000 --- a/ckb-debugger-api/tests/programs/sample.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "mock_info": { - "inputs": [ - { - "input": { - "previous_output": { - "tx_hash": "0xa98c57135830e1b91345948df6c4b8870828199a786b26f09f7dec4bc27a73da", - "index": "0x0" - }, - "since": "0x0" - }, - "output": { - "capacity": "0x4b9f96b00", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data" - }, - "type": null - }, - "data": "0x616263" - } - ], - "cell_deps": [ - { - "cell_dep": { - "out_point": { - "tx_hash": "0xfcd1b3ddcca92b1e49783769e9bf606112b3f8cf36b96cac05bf44edcf5377e6", - "index": "0x0" - }, - "dep_type": "code" - }, - "output": { - "capacity": "0x702198d000", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data" - }, - "type": null - }, - "data": "0x7f454c460201010000000000000000000200f3000100000044010100000000004000000000000000900c0000000000000100000040003800020040000c000b00010000000500000000000000000000000000010000000000000001000000000070040000000000007004000000000000001000000000000001000000060000007004000000000000701401000000000070140100000000007807000000000000b0070000000000000010000000000000130101bc05684165233c114223388142130585458145014681460147814793081888730000000f00f00f930500402ee008188a8593084880730000000f00f00f82671b04050009c883308143228503340143130101448280181809462c0028083ae43ec8ef00200c82770d479c436387e7001547e39ae7fc7554f9b77954e9b7b70700009387070089c741651305a53881a48280972100009381c1b4138581f5138601f9098e8145ef00a016170500001305452219c51705000013054522ef002021ef00a00e02452c000146eff05ff37da803c781f505eb411122e03e84b707000006e49387070081cb45651305054797000000e70000008547a260238cf1f40264410182808280b70700009387070091cb4565938501f61305054717030000670000008280986191478146032807009545630ff8025c439bd72700fd376379f60205269b152600939605028192ba9694429398060293d80802ba986300f6029125821581912e971c438145bb86d7402300b5002334150114c98280bb06d84081452300b5002334150114c982804111814522e006e42a84ef00a00803b581f43c6d91c382972285ef00c01c0111c56722e845641387474713044447198c26e44ae006ec0d8481441389474763958402c56745641387874713048448198c0d84814413898747639f8400e2604264a26402690561828093973400ca979c6385048297e9b793973400ca979c6385048297d9bf2a8311c62300b3007d16050365fe82805d7156ec83ba81f44ef452f05ae886e4a2e026fc4af85ee42a8aae89054b83b48a1f81c880441b09f4ff0e042694635d0900a6600664e2744279a279027ae26a426ba26b616182806389090083378420638537017d396114d9bf9c441464fd376397270323a42401f5d603a704313b162b0183ab8400718f012709ef8296984483b78a1fe31d77f9e386f4fc49bf23340400d9bf83a7443183358410f18f812781e752858296e1bf2e858296c9bfaa8581460146014525a80111c56722e845641387874813040449198c26e406ec0d849384874811e4e2604264a264056182807d1493173400a6979c638297e5b703b781f42a888337871f89e793070720233cf71e9847fd487d5563c4e804630a0802131537003e952338c51083a8073105463b16e600b3e8c80023a817312338d52089466317d80083a64731558e23aac7309b06170009070e0794c7ba978ce301458280814501468146014781479308d00573000000635c0500411122e02a8406e43b048040ef00a00000c101a001a003b501f58280000049276d20696e206d61696e206e6f7721000000000000000000000000000000003001010000000000b80101000000000082010100000000000000000000000000c819010000000000781a010000000000281b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000e33cdab34126de6ecde05000b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901401000000000090140100000000004743433a2028474e552920392e322e3000412a000000726973637600012000000004100572763634693270305f6d3270305f613270305f6332703000002e7368737472746162002e74657874002e726f64617461002e65685f6672616d65002e696e69745f6172726179002e66696e695f6172726179002e64617461002e7364617461002e627373002e636f6d6d656e74002e72697363762e617474726962757465730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b000000010000000600000000000000b000010000000000b000000000000000a6030000000000000000000000000000020000000000000000000000000000001100000001000000320000000000000058040100000000005804000000000000180000000000000000000000000000000800000000000000010000000000000019000000010000000300000000000000701401000000000070040000000000000400000000000000000000000000000004000000000000000000000000000000230000000e00000003000000000000007814010000000000780400000000000010000000000000000000000000000000080000000000000008000000000000002f0000000f00000003000000000000008814010000000000880400000000000008000000000000000000000000000000080000000000000008000000000000003b00000001000000030000000000000090140100000000009004000000000000480700000000000000000000000000000800000000000000000000000000000041000000010000000300000000000000d81b010000000000d80b000000000000100000000000000000000000000000000800000000000000000000000000000048000000080000000300000000000000e81b010000000000e80b00000000000038000000000000000000000000000000080000000000000000000000000000004d0000000100000030000000000000000000000000000000e80b0000000000001100000000000000000000000000000001000000000000000100000000000000560000000300007000000000000000000000000000000000f90b0000000000002b00000000000000000000000000000001000000000000000000000000000000010000000300000000000000000000000000000000000000240c0000000000006800000000000000000000000000000001000000000000000000000000000000" - } - ], - "header_deps": [ - - ] - }, - "tx": { - "version": "0x0", - "cell_deps": [ - { - "out_point": { - "tx_hash": "0xfcd1b3ddcca92b1e49783769e9bf606112b3f8cf36b96cac05bf44edcf5377e6", - "index": "0x0" - }, - "dep_type": "code" - } - ], - "header_deps": [ - - ], - "inputs": [ - { - "previous_output": { - "tx_hash": "0xa98c57135830e1b91345948df6c4b8870828199a786b26f09f7dec4bc27a73da", - "index": "0x0" - }, - "since": "0x0" - } - ], - "outputs": [ - { - "capacity": "0x0", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data" - }, - "type": { - "args": "0x666f6f626172", - "code_hash": "0xfa93982d582a0f3302a96ac34944d14b41d53549b9fb2ab284eafc1d021588ad", - "hash_type": "data" - } - } - ], - "witnesses": [ - "0x7769746e657373666f6f626172" - ], - "outputs_data": [ - "0x" - ] - } -} \ No newline at end of file diff --git a/ckb-debugger-api/tests/programs/sample_data1.json b/ckb-debugger-api/tests/programs/sample_data1.json deleted file mode 100644 index 2d83f32..0000000 --- a/ckb-debugger-api/tests/programs/sample_data1.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "mock_info": { - "inputs": [ - { - "input": { - "previous_output": { - "tx_hash": "0xa98c57135830e1b91345948df6c4b8870828199a786b26f09f7dec4bc27a73da", - "index": "0x0" - }, - "since": "0x0" - }, - "output": { - "capacity": "0x4b9f96b00", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data1" - }, - "type": null - }, - "data": "0x616263" - } - ], - "cell_deps": [ - { - "cell_dep": { - "out_point": { - "tx_hash": "0xfcd1b3ddcca92b1e49783769e9bf606112b3f8cf36b96cac05bf44edcf5377e6", - "index": "0x0" - }, - "dep_type": "code" - }, - "output": { - "capacity": "0x702198d000", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data1" - }, - "type": null - }, - "data": "0x7f454c460201010000000000000000000200f3000100000044010100000000004000000000000000900c0000000000000100000040003800020040000c000b00010000000500000000000000000000000000010000000000000001000000000070040000000000007004000000000000001000000000000001000000060000007004000000000000701401000000000070140100000000007807000000000000b0070000000000000010000000000000130101bc05684165233c114223388142130585458145014681460147814793081888730000000f00f00f930500402ee008188a8593084880730000000f00f00f82671b04050009c883308143228503340143130101448280181809462c0028083ae43ec8ef00200c82770d479c436387e7001547e39ae7fc7554f9b77954e9b7b70700009387070089c741651305a53881a48280972100009381c1b4138581f5138601f9098e8145ef00a016170500001305452219c51705000013054522ef002021ef00a00e02452c000146eff05ff37da803c781f505eb411122e03e84b707000006e49387070081cb45651305054797000000e70000008547a260238cf1f40264410182808280b70700009387070091cb4565938501f61305054717030000670000008280986191478146032807009545630ff8025c439bd72700fd376379f60205269b152600939605028192ba9694429398060293d80802ba986300f6029125821581912e971c438145bb86d7402300b5002334150114c98280bb06d84081452300b5002334150114c982804111814522e006e42a84ef00a00803b581f43c6d91c382972285ef00c01c0111c56722e845641387474713044447198c26e44ae006ec0d8481441389474763958402c56745641387874713048448198c0d84814413898747639f8400e2604264a26402690561828093973400ca979c6385048297e9b793973400ca979c6385048297d9bf2a8311c62300b3007d16050365fe82805d7156ec83ba81f44ef452f05ae886e4a2e026fc4af85ee42a8aae89054b83b48a1f81c880441b09f4ff0e042694635d0900a6600664e2744279a279027ae26a426ba26b616182806389090083378420638537017d396114d9bf9c441464fd376397270323a42401f5d603a704313b162b0183ab8400718f012709ef8296984483b78a1fe31d77f9e386f4fc49bf23340400d9bf83a7443183358410f18f812781e752858296e1bf2e858296c9bfaa8581460146014525a80111c56722e845641387874813040449198c26e406ec0d849384874811e4e2604264a264056182807d1493173400a6979c638297e5b703b781f42a888337871f89e793070720233cf71e9847fd487d5563c4e804630a0802131537003e952338c51083a8073105463b16e600b3e8c80023a817312338d52089466317d80083a64731558e23aac7309b06170009070e0794c7ba978ce301458280814501468146014781479308d00573000000635c0500411122e02a8406e43b048040ef00a00000c101a001a003b501f58280000049276d20696e206d61696e206e6f7721000000000000000000000000000000003001010000000000b80101000000000082010100000000000000000000000000c819010000000000781a010000000000281b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000e33cdab34126de6ecde05000b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901401000000000090140100000000004743433a2028474e552920392e322e3000412a000000726973637600012000000004100572763634693270305f6d3270305f613270305f6332703000002e7368737472746162002e74657874002e726f64617461002e65685f6672616d65002e696e69745f6172726179002e66696e695f6172726179002e64617461002e7364617461002e627373002e636f6d6d656e74002e72697363762e617474726962757465730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b000000010000000600000000000000b000010000000000b000000000000000a6030000000000000000000000000000020000000000000000000000000000001100000001000000320000000000000058040100000000005804000000000000180000000000000000000000000000000800000000000000010000000000000019000000010000000300000000000000701401000000000070040000000000000400000000000000000000000000000004000000000000000000000000000000230000000e00000003000000000000007814010000000000780400000000000010000000000000000000000000000000080000000000000008000000000000002f0000000f00000003000000000000008814010000000000880400000000000008000000000000000000000000000000080000000000000008000000000000003b00000001000000030000000000000090140100000000009004000000000000480700000000000000000000000000000800000000000000000000000000000041000000010000000300000000000000d81b010000000000d80b000000000000100000000000000000000000000000000800000000000000000000000000000048000000080000000300000000000000e81b010000000000e80b00000000000038000000000000000000000000000000080000000000000000000000000000004d0000000100000030000000000000000000000000000000e80b0000000000001100000000000000000000000000000001000000000000000100000000000000560000000300007000000000000000000000000000000000f90b0000000000002b00000000000000000000000000000001000000000000000000000000000000010000000300000000000000000000000000000000000000240c0000000000006800000000000000000000000000000001000000000000000000000000000000" - } - ], - "header_deps": [ - - ] - }, - "tx": { - "version": "0x0", - "cell_deps": [ - { - "out_point": { - "tx_hash": "0xfcd1b3ddcca92b1e49783769e9bf606112b3f8cf36b96cac05bf44edcf5377e6", - "index": "0x0" - }, - "dep_type": "code" - } - ], - "header_deps": [ - - ], - "inputs": [ - { - "previous_output": { - "tx_hash": "0xa98c57135830e1b91345948df6c4b8870828199a786b26f09f7dec4bc27a73da", - "index": "0x0" - }, - "since": "0x0" - } - ], - "outputs": [ - { - "capacity": "0x0", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data1" - }, - "type": { - "args": "0x666f6f626172", - "code_hash": "0xfa93982d582a0f3302a96ac34944d14b41d53549b9fb2ab284eafc1d021588ad", - "hash_type": "data1" - } - } - ], - "witnesses": [ - "0x7769746e657373666f6f626172" - ], - "outputs_data": [ - "0x" - ] - } -} diff --git a/ckb-debugger-api/tests/test_json.rs b/ckb-debugger-api/tests/test_json.rs deleted file mode 100644 index 782e76f..0000000 --- a/ckb-debugger-api/tests/test_json.rs +++ /dev/null @@ -1,18 +0,0 @@ -use ckb_debugger_api::run_json; -use std::fs::read_to_string; - -#[test] -pub fn test_sample_json() { - let mock_tx = read_to_string("tests/programs/sample.json").unwrap(); - let result = - run_json(&mock_tx, "type", "0xee75995da2e55e6c4938533d341597bc10add3837cfe57174f2ee755da82555c", "4000"); - assert_eq!(result, "{\"cycle\":3217,\"error\":null}"); -} - -#[test] -pub fn test_sample_json_version1() { - let mock_tx = read_to_string("tests/programs/sample_data1.json").unwrap(); - let result = - run_json(&mock_tx, "type", "0xca505bee92c34ac4522d15da2c91f0e4060e4540f90a28d7202df8fe8ce930ba", "4000"); - assert_eq!(result, "{\"cycle\":3219,\"error\":null}"); -} diff --git a/ckb-debugger-api/tests/test_rust.rs b/ckb-debugger-api/tests/test_rust.rs deleted file mode 100644 index f0936e4..0000000 --- a/ckb-debugger-api/tests/test_rust.rs +++ /dev/null @@ -1,74 +0,0 @@ -use byteorder::{ByteOrder, LittleEndian}; -use ckb_debugger_api::run; -use ckb_mock_tx_types::{MockCellDep, MockInfo, MockInput, MockTransaction}; -use ckb_script::ScriptGroupType; -use ckb_types::{ - bytes::Bytes, - core::{Capacity, DepType, ScriptHashType, TransactionBuilder}, - packed::{self, Byte32, CellDep, CellInput, CellOutput, OutPoint, Script}, - prelude::*, -}; -use std::fs::File; -use std::io::Read; - -fn read_file(name: &str) -> Bytes { - let mut file = File::open(name).unwrap(); - let mut buffer = Vec::new(); - file.read_to_end(&mut buffer).unwrap(); - buffer.into() -} - -fn create_mock_cell_dep(data: Bytes, lock: OptionFlame Graph Reset ZoomSearch /code/fib.c:main (781 samples, 37.26%) /code/fib.c:main /code/fib.c:fib (755 samples, 36.02%) /code/fib.c:fib /code/fib.c:fib (694 samples, 33.11%) /code/fib.c:fib /code/fib.c:fib (572 samples, 27.29%) /code/fib.c:fib /code/fib.c:fib (345 samples, 16.46%) /code/fib.c:fib /code/fib.c:fib (80 samples, 3.82%) /co.. /source/riscv-newlib/newlib/libc/stdlib/__call_atexit.c:register_fini (7 samples, 0.33%) /source/riscv-newlib/newlib/libc/misc/init.c:__libc_init_array (83 samples, 3.96%) /so.. ??:?? (7 samples, 0.33%) /source/riscv-newlib/newlib/libc/stdlib/atexit.c:atexit (42 samples, 2.00%) .. /source/riscv-newlib/newlib/libc/stdlib/__atexit.c:__register_exitproc (35 samples, 1.67%) /source/riscv-newlib/libgloss/riscv/internal_syscall.h:_exit (501 samples, 23.90%) /source/riscv-newlib/libgloss/riscv/i.. /source/riscv-newlib/newlib/libc/stdlib/exit.c:exit (702 samples, 33.49%) /source/riscv-newlib/newlib/libc/stdlib/exit.c:exit /source/riscv-newlib/newlib/libc/stdlib/__call_atexit.c:__call_exitprocs (180 samples, 8.59%) /source/ris.. /source/riscv-newlib/newlib/libc/misc/fini.c:__libc_fini_array (68 samples, 3.24%) /s.. ??:?? (27 samples, 1.29%)all (2,096 samples, 100%)??:?? (2,096 samples, 100.00%)??:?? ??:?? (455 samples, 21.71%) ??:?? \ No newline at end of file +]]>Flame Graph Reset ZoomSearch /code/fib.c:main (781 samples, 37.31%) /code/fib.c:main /code/fib.c:fib (755 samples, 36.07%) /code/fib.c:fib /code/fib.c:fib (694 samples, 33.16%) /code/fib.c:fib /code/fib.c:fib (572 samples, 27.33%) /code/fib.c:fib /code/fib.c:fib (345 samples, 16.48%) /code/fib.c:fib /code/fib.c:fib (80 samples, 3.82%) /co.. /source/riscv-newlib/newlib/libc/machine/riscv/memset.S:func_0x10248 (455 samples, 21.74%) /source/riscv-newlib/newlib/libc/.. /source/riscv-newlib/newlib/libc/stdlib/__call_atexit.c:register_fini (7 samples, 0.33%) /source/riscv-newlib/newlib/libc/misc/init.c:__libc_init_array (83 samples, 3.97%) /so.. ??:func_0x1012c (7 samples, 0.33%) /source/riscv-newlib/newlib/libc/stdlib/atexit.c:atexit (42 samples, 2.01%) .. /source/riscv-newlib/newlib/libc/stdlib/__atexit.c:__register_exitproc (35 samples, 1.67%) /source/riscv-newlib/libgloss/riscv/internal_syscall.h:_exit (501 samples, 23.94%) /source/riscv-newlib/libgloss/riscv/i..all (2,093 samples, 100%)/source/riscv-newlib/libgloss/riscv/crt0.S:func_0x100c0 (2,093 samples, 100.00%)/source/riscv-newlib/libgloss/riscv/crt0.S:func_0x100c0 /source/riscv-newlib/newlib/libc/stdlib/exit.c:exit (702 samples, 33.54%) /source/riscv-newlib/newlib/libc/stdlib/exit.c:exit /source/riscv-newlib/newlib/libc/stdlib/__call_atexit.c:__call_exitprocs (180 samples, 8.60%) /source/ris.. /source/riscv-newlib/newlib/libc/misc/fini.c:__libc_fini_array (68 samples, 3.25%) /s.. ??:func_0x100fe (27 samples, 1.29%) \ No newline at end of file diff --git a/ckb-debugger/examples/file_operations b/ckb-debugger/examples/file_operations new file mode 100755 index 0000000..8cea5a3 Binary files /dev/null and b/ckb-debugger/examples/file_operations differ diff --git a/ckb-debugger/res/file_operations.c b/ckb-debugger/examples/file_operations.c similarity index 100% rename from ckb-debugger/res/file_operations.c rename to ckb-debugger/examples/file_operations.c diff --git a/ckb-debugger/examples/gdb.md b/ckb-debugger/examples/gdb.md deleted file mode 100644 index 79ae970..0000000 --- a/ckb-debugger/examples/gdb.md +++ /dev/null @@ -1,17 +0,0 @@ -# Example gdb debugging - -This article introduces debugging programs by using gdb. - -For example, we want to know the parameters passed in to a function at runtime: - -```sh -$ ckb-debugger --mode gdb --gdb-listen 127.0.0.1:9999 --bin ckb-debugger/examples/fib -$ riscv64-unknown-elf-gdb ckb-debugger/examples/fib - -$ (gdb) target remote 127.0.0.1:9999 -$ (gdb) b fib -$ (gdb) c - Breakpoint 1, fib (n=5) at fib.c:2 -``` - -At the Breakpoint 1, we learn that fib (n=5) at fib.c:2. diff --git a/ckb-debugger/examples/out_of_memory b/ckb-debugger/examples/out_of_memory index 74ceb0c..d7902be 100755 Binary files a/ckb-debugger/examples/out_of_memory and b/ckb-debugger/examples/out_of_memory differ diff --git a/ckb-debugger/examples/out_of_memory.c b/ckb-debugger/examples/out_of_memory.c index 82ffa5e..7d23428 100644 --- a/ckb-debugger/examples/out_of_memory.c +++ b/ckb-debugger/examples/out_of_memory.c @@ -1,3 +1,5 @@ +#include "entry.h" + const int n = 2; int a() { diff --git a/ckb-debugger/examples/out_of_memory.md b/ckb-debugger/examples/out_of_memory.md index aa8577b..feff516 100644 --- a/ckb-debugger/examples/out_of_memory.md +++ b/ckb-debugger/examples/out_of_memory.md @@ -3,17 +3,25 @@ If your code triggers OOM, then ckb-debugger will print out the function call stack: ```sh -$ riscv64-unknown-elf-gcc -g -o out_of_memory out_of_memory.c - +$ make out_of_memory $ ckb-debugger --bin out_of_memory -Trace: - ??:??:?? - ??:??:?? - /code/ckb-debugger/examples/out_of_memory.c:23:main - /code/ckb-debugger/examples/out_of_memory.c:19:c - /code/ckb-debugger/examples/out_of_memory.c:15:b - /code/ckb-debugger/examples/out_of_memory.c:5:a -Error: - MemOutOfBound +??:??:?? +/home/ubuntu/src/ckb-standalone-debugger/ckb-debugger/examples/ckb-c-stdlib/libc/entry.h:9:_start +/home/ubuntu/src/ckb-standalone-debugger/ckb-debugger/examples/out_of_memory.c:25:main +/home/ubuntu/src/ckb-standalone-debugger/ckb-debugger/examples/out_of_memory.c:21:c +/home/ubuntu/src/ckb-standalone-debugger/ckb-debugger/examples/out_of_memory.c:17:b +/home/ubuntu/src/ckb-standalone-debugger/ckb-debugger/examples/out_of_memory.c:7:a + +pc : 0x 12D28 +zero: 0x 0 ra : 0x 12D3E sp : 0x 3FFFA0 gp : 0x 146E8 +tp : 0x 0 t0 : 0x 0 t1 : 0x 0 t2 : 0x 0 +s0 : 0x 3FFFB0 s1 : 0x 0 a0 : 0x 0 a1 : 0x 400000 +a2 : 0x 0 a3 : 0x 0 a4 : 0x 0 a5 : 0x 0 +a6 : 0x 0 a7 : 0x 0 s2 : 0x 0 s3 : 0x 0 +s4 : 0x 0 s5 : 0x 0 s6 : 0x 0 s7 : 0x 0 +s8 : 0x 0 s9 : 0x 0 s10 : 0x 0 s11 : 0x 0 +t3 : 0x 0 t4 : 0x 0 t5 : 0x 0 t6 : 0x 0 + +Error: MemOutOfBound ``` diff --git a/ckb-debugger/examples/print_log b/ckb-debugger/examples/print_log index 4d6ea95..d9e460d 100755 Binary files a/ckb-debugger/examples/print_log and b/ckb-debugger/examples/print_log differ diff --git a/ckb-debugger/examples/read_file b/ckb-debugger/examples/read_file new file mode 100755 index 0000000..d6075d2 Binary files /dev/null and b/ckb-debugger/examples/read_file differ diff --git a/ckb-debugger/res/read_file.c b/ckb-debugger/examples/read_file.c similarity index 84% rename from ckb-debugger/res/read_file.c rename to ckb-debugger/examples/read_file.c index f05420b..70cdf31 100644 --- a/ckb-debugger/res/read_file.c +++ b/ckb-debugger/examples/read_file.c @@ -25,8 +25,8 @@ int main() { printf("%s", buf); int duration = now() - start; - printf("duration = %lld milli-second", duration / 1000 / 1000); - printf("generate a random number: %llu", random()); + printf("duration = %d milli-second", duration / 1000 / 1000); + printf("generate a random number: %lu", random()); return 0; } diff --git a/ckb-debugger/examples/spawn.json b/ckb-debugger/examples/spawn.json index 2609a7e..3fc389c 100644 --- a/ckb-debugger/examples/spawn.json +++ b/ckb-debugger/examples/spawn.json @@ -13,7 +13,7 @@ "capacity": "0x10000000", "lock": { "code_hash": "0x{{ hash spawn_caller_strcat }}", - "hash_type": "data1", + "hash_type": "data2", "args": "0x" }, "type": null @@ -35,7 +35,7 @@ "capacity": "0x10000000", "lock": { "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data1", + "hash_type": "data2", "args": "0x" }, "type": null @@ -55,7 +55,7 @@ "capacity": "0x10000000", "lock": { "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data1", + "hash_type": "data2", "args": "0x" }, "type": null @@ -99,12 +99,12 @@ "capacity": "0x0", "lock": { "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data1", + "hash_type": "data2", "args": "0x" }, "type": { "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data1", + "hash_type": "data2", "args": "0x" } } diff --git a/ckb-debugger/examples/spawn.md b/ckb-debugger/examples/spawn.md index 3f35f68..dd54c11 100644 --- a/ckb-debugger/examples/spawn.md +++ b/ckb-debugger/examples/spawn.md @@ -3,7 +3,7 @@ syscall spawn is a new interface added since ckb2023. ```sh -$ ckb-debugger --tx-file examples/spawn.json --cell-index 0 --cell-type input --script-group-type lock +$ ckb-debugger --mode fast --tx-file spawn.json --cell-index 0 --cell-type input --script-group-type lock ``` In order to simplify the writing of tx.json, we designed a simple DSL to assist you in writing tx.json. diff --git a/ckb-debugger/examples/spawn_callee_strcat b/ckb-debugger/examples/spawn_callee_strcat index a0dfab3..87c245d 100755 Binary files a/ckb-debugger/examples/spawn_callee_strcat and b/ckb-debugger/examples/spawn_callee_strcat differ diff --git a/ckb-debugger/examples/spawn_callee_strcat.c b/ckb-debugger/examples/spawn_callee_strcat.c index f2f3f56..6871f31 100644 --- a/ckb-debugger/examples/spawn_callee_strcat.c +++ b/ckb-debugger/examples/spawn_callee_strcat.c @@ -3,15 +3,35 @@ #include "ckb_syscalls.h" +char *strcat(char *restrict dest, const char *restrict src) { + strcpy(dest + strlen(dest), src); + return dest; +} + int main(int argc, char *argv[]) { - char content[80]; - for (int i = 0; i < argc; i++) { - strcat(content, argv[i]); - } - uint64_t content_size = (uint64_t)strlen(content); - ckb_set_content((uint8_t *)&content[0], &content_size); - if (content_size != (uint64_t)strlen(content)) { - return 1; - } - return 0; + int err = 0; + char content[80]; + for (int i = 0; i < argc; i++) { + strcat(content, argv[i]); + } + size_t content_size = (uint64_t)strlen(content); + uint64_t fds[2] = {0}; + uint64_t length = 2; + err = ckb_inherited_file_descriptors(fds, &length); + if (err != 0) { + return err; + } + if (length != 2) { + return 1; + } + size_t content_size2 = content_size; + printf("fds[CKB_STDOUT] = %lu", fds[1]); + err = ckb_write(fds[1], content, &content_size); + if (err != 0) { + return err; + } + if (content_size2 != content_size) { + return 1; + } + return 0; } diff --git a/ckb-debugger/examples/spawn_caller_strcat b/ckb-debugger/examples/spawn_caller_strcat index b0d8bdd..b4a6a33 100755 Binary files a/ckb-debugger/examples/spawn_caller_strcat and b/ckb-debugger/examples/spawn_caller_strcat differ diff --git a/ckb-debugger/examples/spawn_caller_strcat.c b/ckb-debugger/examples/spawn_caller_strcat.c index 5edcb40..449e348 100644 --- a/ckb-debugger/examples/spawn_caller_strcat.c +++ b/ckb-debugger/examples/spawn_caller_strcat.c @@ -3,30 +3,57 @@ #include "ckb_syscalls.h" +// Mimic stdio fds on linux +int create_std_fds(uint64_t* fds, uint64_t* inherited_fds) { + int err = 0; + + uint64_t to_child[2] = {0}; + uint64_t to_parent[2] = {0}; + err = ckb_pipe(to_child); + if (err != 0) { + return err; + } + err = ckb_pipe(to_parent); + if (err != 0) { + return err; + } + inherited_fds[0] = to_child[0]; + inherited_fds[1] = to_parent[1]; + inherited_fds[2] = 0; + fds[0] = to_parent[0]; + fds[1] = to_child[1]; + return 0; +} + int main() { - const char* argv[] = {"hello", "world"}; - int8_t spgs_exit_code = 255; - uint8_t spgs_content[80] = {}; - uint64_t spgs_content_length = 80; - spawn_args_t spgs = { - .memory_limit = 8, - .exit_code = &spgs_exit_code, - .content = &spgs_content[0], - .content_length = &spgs_content_length, - }; - int success = - ckb_spawn(1, 3, 0, 2, argv, &spgs); - if (success != 0) { - return 1; - } - if (spgs_exit_code != 0) { - return 1; - } - if (strlen((char *)spgs_content) != 10) { - return 1; - } - if (strcmp((char *)spgs_content, "helloworld") != 0) { - return 1; - } - return 0; + int err = 0; + const char *argv[] = {"hello", "world"}; + uint64_t pid = 0; + uint64_t fds[2] = {0}; + uint64_t inherited_fds[3] = {0}; + err = create_std_fds(fds, inherited_fds); + if (err != 0) { + return err; + } + spawn_args_t spgs = { + .argc = 2, + .argv = argv, + .process_id = &pid, + .inherited_fds = inherited_fds, + }; + err = ckb_spawn(1, CKB_SOURCE_CELL_DEP, 0, 0, &spgs); + if (err != 0) { + return err; + } + uint8_t buffer[1024] = {0}; + size_t length = 1024; + err = ckb_read(fds[0], buffer, &length); + if (err != 0) { + return err; + } + err = memcmp("helloworld", buffer, length); + if (err != 0) { + return err; + } + return 0; } diff --git a/ckb-debugger/examples/timenow b/ckb-debugger/examples/timenow new file mode 100755 index 0000000..cbf9f65 Binary files /dev/null and b/ckb-debugger/examples/timenow differ diff --git a/ckb-debugger/examples/timenow.c b/ckb-debugger/examples/timenow.c new file mode 100644 index 0000000..c9a2621 --- /dev/null +++ b/ckb-debugger/examples/timenow.c @@ -0,0 +1,15 @@ +#define CKB_C_STDLIB_PRINTF + +#include "ckb_syscalls.h" +#include "stdio.h" +#include "stdlib.h" + +uint64_t time() { + return syscall(9001, 0, 0, 0, 0, 0, 0); +} + +int main() { + uint64_t tic = time(); + printf("%lu\n", tic); + return 0; +} diff --git a/ckb-debugger/res/Makefile b/ckb-debugger/res/Makefile deleted file mode 100644 index 49a504f..0000000 --- a/ckb-debugger/res/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -TARGET := riscv64-unknown-elf -CC := $(TARGET)-gcc -LD := $(TARGET)-gcc -OBJCOPY := $(TARGET)-objcopy -CFLAGS := -O0 -fno-builtin-printf -nostdinc -nostdlib -nostartfiles -I ./ckb-c-stdlib/libc -I ./ckb-c-stdlib -g -LDFLAGS := -Wl,-static -BUILDER_DOCKER := nervos/ckb-riscv-gnu-toolchain:jammy-20230214 - -CKB-DEBUGGER := ../../target/debug/ckb-debugger -all: build ckb-c-stdlib build/fib build/outofmemory build/read_file build/file_operations - -all-via-docker: - docker run --rm -v `pwd`:/code ${BUILDER_DOCKER} bash -c "cd /code && make" - -build: - [ ! -f build ] && mkdir -p build - -ckb-c-stdlib: - [ ! -f ckb-c-stdlib ] && git clone https://github.com/nervosnetwork/ckb-c-stdlib - -build/fib: fib.c - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< - -build/outofmemory: outofmemory.c - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< - -build/read_file: read_file.c - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< - -build/file_operations: file_operations.c - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< - -fmt: - clang-format -style="{BasedOnStyle: google, IndentWidth: 4, SortIncludes: false}" -i *.c - -clean: - rm -rf build - rm -rf ckb-c-stdlib - -run-read-file: build/read_file - RUST_LOG=debug $(CKB-DEBUGGER) --bin build/read_file --read-file read_file.c - -run-file-operations: build/file_operations - RUST_LOG=debug $(CKB-DEBUGGER) --bin build/file_operations - -run: -# mode=full - $(CKB-DEBUGGER) --tx-file=../../ckb-debugger-api/tests/programs/sample.json --script-group-type=type \ - --script-hash=0xee75995da2e55e6c4938533d341597bc10add3837cfe57174f2ee755da82555c --script-version=0 - $(CKB-DEBUGGER) --tx-file=../../ckb-debugger-api/tests/programs/sample_data1.json --script-group-type=type \ - --script-hash=0xca505bee92c34ac4522d15da2c91f0e4060e4540f90a28d7202df8fe8ce930ba -# mode=full pprof=build/flamegraph.txt - $(CKB-DEBUGGER) --pprof build/flamegraph.txt --tx-file=../../ckb-debugger-api/tests/programs/sample.json \ - --script-group-type=type --script-hash=0xee75995da2e55e6c4938533d341597bc10add3837cfe57174f2ee755da82555c --script-version=0 - $(CKB-DEBUGGER) --pprof build/flamegraph.txt --tx-file=../../ckb-debugger-api/tests/programs/sample_data1.json \ - --script-group-type=type --script-hash=0xca505bee92c34ac4522d15da2c91f0e4060e4540f90a28d7202df8fe8ce930ba -# mode=fast - $(CKB-DEBUGGER) --mode fast --tx-file=../../ckb-debugger-api/tests/programs/sample.json --script-group-type=type \ - --script-hash=0xee75995da2e55e6c4938533d341597bc10add3837cfe57174f2ee755da82555c --script-version=0 - $(CKB-DEBUGGER) --mode fast --tx-file=../../ckb-debugger-api/tests/programs/sample_data1.json --script-group-type=type \ - --script-hash=0xca505bee92c34ac4522d15da2c91f0e4060e4540f90a28d7202df8fe8ce930ba -# mode=full pprof=build/flamegraph.txt - RUST_LOG=trace $(CKB-DEBUGGER) --bin=build/fib --pprof=build/flamegraph.txt \ - --tx-file=../../ckb-debugger-api/tests/programs/sample_data1.json --script-group-type=type \ - --script-hash=0xca505bee92c34ac4522d15da2c91f0e4060e4540f90a28d7202df8fe8ce930ba - cat build/flamegraph.txt | inferno-flamegraph > build/fib.svg -# mode=full tx-file=none - $(CKB-DEBUGGER) --bin build/fib arg1 arg2 arg3 diff --git a/ckb-debugger/res/fib.c b/ckb-debugger/res/fib.c deleted file mode 100644 index fec7e77..0000000 --- a/ckb-debugger/res/fib.c +++ /dev/null @@ -1,24 +0,0 @@ -// uncomment to enable printf in CKB-VM -#define CKB_C_STDLIB_PRINTF -//#define CKB_C_STDLIB_PRINTF_BUFFER_SIZE 1024 - -#include "ckb_syscalls.h" -#include "stdio.h" -#include "stdlib.h" - -int fib(int n) { - if (n == 0 || n == 1) { - printf("n = %d", n); - return n; - } else { - printf("n = %d", n); - return fib(n - 1) + fib(n - 2); - } -} - -int main() { - if (fib(5) != 5) { - return 1; - } - return 0; -} diff --git a/ckb-debugger/res/outofmemory.c b/ckb-debugger/res/outofmemory.c deleted file mode 100644 index 9ae3efd..0000000 --- a/ckb-debugger/res/outofmemory.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "ckb_syscalls.h" -#include "stdio.h" -#include "stdlib.h" - -const int n = 2; - -int a() { - __asm__( - "li a1, 0x400000\r\n" - "ld a0, 0(a1)" - : - : - : "a0", "a1"); - return n; -} - -int b() { return a() + n; } - -int c() { return b() + n; } - -int main() { return c(); } diff --git a/ckb-debugger/res/type_id_update.json b/ckb-debugger/res/type_id_update.json deleted file mode 100644 index b10546d..0000000 --- a/ckb-debugger/res/type_id_update.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "mock_info": { - "inputs": [ - { - "input": { - "since": "0x0", - "previous_output": { - "tx_hash": "0x9aeb4720bf11a6c51e476bb8c597e3669da1f0d28e73e22acdaa76d391e5f09c", - "index": "0x0" - } - }, - "output": { - "capacity": "0x9f05f8ee00", - "lock": { - "code_hash": "0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8", - "hash_type": "type", - "args": "0x75178f34549c5fe9cd1a0c57aebd01e7ddf9249e" - }, - "type": { - "code_hash": "0x00000000000000000000000000000000000000000000000000545950455f4944", - "hash_type": "type", - "args": "0xf0f0fe2ff6c61b8b2382ab7ddc6ce354a84c6bb49c1787415d03f7bf226fe383" - } - }, - "data": "0x7f454c460201010000000000000000000200f3000100000016010100000000004000000000000000f0160000000000000100000040003800030040000d000c000300007004000000050c0000000000000000000000000000000000000000000050000000000000000000000000000000010000000000000001000000050000000000000000000000000001000000000000000100000000005a040000000000005a04000000000000001000000000000001000000060000005c040000000000005c140100000000005c140100000000007c07000000000000b40700000000000000100000000000004111814522e006e42a84ef00e01c03b581f43c6d91c382972285ef0000339307000089c74165130545385da4828097210000938121b6138501f6138681f9098e8145ef00c00e170500001305a52819c5170500001305c524ef008027ef00800602452c000146ef00e00459bf411122e083c701f606e491ef9307000081cb45651305c54597000000e700000085472380f1f6a2600264410182809307000091cb4565938581f61305c54517030000670000008280411122e4000881473e85226441018280011122e8c56745644ae0938707461307044606ec26e43389e740638de700135939401304044681441c60850421048297e3ec24ff4564c56793870747130704463389e74013593940638be7001304044681441c60850421048297e3ec24ffe2604264a2640269056182803d432a876371c3029377f700c1e3bde1937606ff3d8aba960ce30ce74107e36dd7fe11e28280b306c3408a069702000096966780a6002307b700a306b7002306b700a305b7002305b700a304b7002304b700a303b7002303b700a302b7002302b700a301b7002301b700a300b7002300b700828093f5f50f93968500d58d93960501d58d93960502d58d59b7939627009702000096968682e78026fa9680c1171d8f3e96e371c3f89db75d7152f003ba81f44af886e403398a1fa2e026fc4ef456ec5ae85ee462e0630909022a8bae8b854afd59832489001b84f4ff634f04008504b3e4242163860b0283b70420638277037d34e114e31834ffa6600664e2744279a279027ae26a426ba26b026c61618280832789009860fd376384870423b0040061db83270931bb968a00032c8900f58f812789ef02970327890083378a1f63148701e38727fbcddb3e8961b78327493183b50410f58f812799e75a850297e1bf2324890075bf2e850297f1b7011122e8c567456493870747130484471d8c26e406ec9354344081c861143e941c60fd1461148297e5fce2604264a26405618280aa8581460146014509a003b781f48337871fa1c398477d48634fe8041dc1b368f72023b8c81003a8073105463b16e6003368c80023a8073123b8d8208946630fd5009b06170094c73367f72001450ceb828093070720233cf71e6dbf83a647310145d18e23aad7309b06170094c73367f7200ceb82807d5582809308d005730000006343050001a0411122e02a8406e43b048040ef00800000c101a003b581f582800000000000000601010000000000820101000000000054010100000000000000000000000000b019010000000000601a010000000000101b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000e33cdab34126de6ecde05000b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007814010000000000000000000000000078140100000000004743433a2028673265653565343330303138292031322e322e30004743433a2028474e55292031322e322e3000414f000000726973637600014500000004100572763634693270305f6d3270305f613270305f633270305f7a6d6d756c3170305f7a62613170305f7a62623170305f7a62633170305f7a6273317030000000000000000000000000000000000000000000000000000000000000000003000100e800010000000000000000000000000000000000030002005c1401000000000000000000000000000000000003000300601401000000000000000000000000000000000003000400701401000000000000000000000000000000000003000500781401000000000000000000000000000000000003000600c01b01000000000000000000000000000000000003000700d81b0100000000000000000000000000000000000300080000000000000000000000000000000000000000000300090000000000000000000000000000000000820100000400f1ff000000000000000000000000000000000100000000000100e8000100000000000000000000000000400000000400f1ff000000000000000000000000000000005000000002000100060101000000000010000000000000000100000000000100060101000000000000000000000000000100000000000100c00201000000000000000000000000005e0000000400f1ff00000000000000000000000000000000010000000000010016010100000000000000000000000000650000000400f1ff0000000000000000000000000000000070000000010002005c1401000000000000000000000000008300000002000100540101000000000000000000000000000100000000000100540101000000000000000000000000009900000001000700d81b0100000000000100000000000000a50000000100040070140100000000000000000000000000cc0000000200010082010100000000000000000000000000d800000001000700e01b0100000000003000000000000000e10000000100030068140100000000000000000000000000000100000400f1ff0000000000000000000000000000000001000000000001009c010100000000000000000000000000070100000400f1ff000000000000000000000000000000001001000001000500781401000000000048070000000000001c0100000400f1ff000000000000000000000000000000000100000000000100ac010100000000000000000000000000230100000400f1ff000000000000000000000000000000000100000000000100160201000000000000000000000000003201000000000100480201000000000000000000000000000100000000000100880201000000000000000000000000006c0100000400f1ff00000000000000000000000000000000010000000000010084030100000000000000000000000000750100000400f1ff000000000000000000000000000000000100000000000100b8030100000000000000000000000000730100000400f1ff000000000000000000000000000000000100000000000100c20301000000000000000000000000007e0100000400f1ff00000000000000000000000000000000010000000000010032040100000000000000000000000000890100000400f1ff00000000000000000000000000000000010000000000010054040100000000000000000000000000650000000400f1ff0000000000000000000000000000000091010000010002005c140100000000000000000000000000000000000400f1ff000000000000000000000000000000009f0100000000040078140100000000000000000000000000b00100000000040070140100000000000000000000000000c30100000000030070140100000000000000000000000000d40100000000030060140100000000000000000000000000e80100000000030060140100000000000000000000000000fb0100000000030060140100000000000000000000000000110200001000f1ff781c01000000000000000000000000002302000012000100540401000000000006000000000000002b02000010000600c01b01000000000000000000000000003b02000011020600c81b01000000000000000000000000004802000011000600c01b01000000000008000000000000005b02000012000100ac010100000000006a000000000000006d02000012000100840301000000000034000000000000007f02000012000100c002010000000000c400000000000000b50200001200010016010100000000003e000000000000009002000012000100c2030100000000007000000000000000a402000010000700101c0100000000000000000000000000b002000010000700d81b0100000000000000000000000000bc020000120001001602010000000000aa00000000000000c3020000120001009c010100000000001000000000000000c802000012000100b8030100000000000a000000000000004f02000011000600d01b0100000000000800000000000000cf0200001000050078140100000000000000000000000000de02000010000600d81b0100000000000000000000000000ab01000010000700101c0100000000000000000000000000e602000012000100e8000100000000001e00000000000000e5020000120001003204010000000000220000000000000000247872763634693270305f6d3270305f613270305f633270305f7a6d6d756c3170305f7a62613170305f7a62623170305f7a62633170305f7a6273317030005f5f63616c6c5f6174657869742e630072656769737465725f66696e6900637274302e6f0063727473747566662e63005f5f45485f4652414d455f424547494e5f5f005f5f646f5f676c6f62616c5f64746f72735f61757800636f6d706c657465642e31005f5f646f5f676c6f62616c5f64746f72735f6175785f66696e695f61727261795f656e747279006672616d655f64756d6d79006f626a6563742e30005f5f6672616d655f64756d6d795f696e69745f61727261795f656e74727900726574302e6300696d707572652e6300696d707572655f6461746100696e69742e63006c69625f612d6d656d7365742e6f00247872763634693270305f6d3270305f613270305f7a6d6d756c3170305f7a62613170305f7a62623170305f7a62633170305f7a62733170300066696e692e63005f5f6174657869742e63007379735f657869742e63006572726e6f2e63005f5f4652414d455f454e445f5f005f5f66696e695f61727261795f656e64005f5f66696e695f61727261795f7374617274005f5f696e69745f61727261795f656e64005f5f707265696e69745f61727261795f656e64005f5f696e69745f61727261795f7374617274005f5f707265696e69745f61727261795f7374617274005f5f676c6f62616c5f706f696e74657224005f5f6572726e6f005f5f53444154415f424547494e5f5f005f5f64736f5f68616e646c65005f676c6f62616c5f696d707572655f707472005f5f6c6962635f696e69745f6172726179005f5f6c6962635f66696e695f6172726179005f5f63616c6c5f6578697470726f6373005f5f72656769737465725f6578697470726f63005f5f4253535f454e445f5f005f5f6273735f7374617274006d656d736574006d61696e00617465786974005f5f444154415f424547494e5f5f005f6564617461005f6578697400002e73796d746162002e737472746162002e7368737472746162002e74657874002e65685f6672616d65002e696e69745f6172726179002e66696e695f6172726179002e64617461002e7364617461002e627373002e636f6d6d656e74002e72697363762e61747472696275746573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b000000010000000600000000000000e800010000000000e8000000000000007203000000000000000000000000000002000000000000000000000000000000210000000100000003000000000000005c140100000000005c0400000000000004000000000000000000000000000000040000000000000000000000000000002b0000000e0000000300000000000000601401000000000060040000000000001000000000000000000000000000000008000000000000000800000000000000370000000f00000003000000000000007014010000000000700400000000000008000000000000000000000000000000080000000000000008000000000000004300000001000000030000000000000078140100000000007804000000000000480700000000000000000000000000000800000000000000000000000000000049000000010000000300000000000000c01b010000000000c00b000000000000180000000000000000000000000000000800000000000000000000000000000050000000080000000300000000000000d81b010000000000d80b0000000000003800000000000000000000000000000008000000000000000000000000000000550000000100000030000000000000000000000000000000d80b0000000000002d000000000000000000000000000000010000000000000001000000000000005e0000000300007000000000000000000000000000000000050c0000000000005000000000000000000000000000000001000000000000000000000000000000010000000200000000000000000000000000000000000000580c00000000000038070000000000000b00000038000000080000000000000018000000000000000900000003000000000000000000000000000000000000009013000000000000eb020000000000000000000000000000010000000000000000000000000000001100000003000000000000000000000000000000000000007b160000000000007000000000000000000000000000000001000000000000000000000000000000", - "header": "0x1fec8d7fb1841d1a1364945072c3d277f1f14db2270112dee961af7a37259ec8" - }, - { - "input": { - "since": "0x0", - "previous_output": { - "tx_hash": "0x52898b53616bdf1995885f86d413be98dd430a11bd5de687279c3a37bc1265ec", - "index": "0x0" - } - }, - "output": { - "capacity": "0x2ecbd7dd4e", - "lock": { - "code_hash": "0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8", - "hash_type": "type", - "args": "0x75178f34549c5fe9cd1a0c57aebd01e7ddf9249e" - }, - "type": null - }, - "data": "0x", - "header": "0x6ec95c6fe836b8f61af562b533da48b413c8507370238337f7fe582bb763f413" - } - ], - "cell_deps": [ - { - "cell_dep": { - "out_point": { - "tx_hash": "0xcd8a652a20ac315d09137d11f6e24f1b552c255533658cb3d7be85594f00b9bb", - "index": "0x3" - }, - "dep_type": "code" - }, - "output": { - "capacity": "0x5f5f04610900", - "lock": { - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data", - "args": "0x" - }, - "type": null - }, - "data": "0x9817f8165b81f259d928ce2ddbfc9b02070b87ce9562a055acbbdcf97e66be79b8d410fb8fd0479c195485a648b417fda808110efcfba45d65c4a32677da3a48f936e0bc13f10186b0996f8345c831b529529df8854f344910c35892018a30f972e6b88475fdb96c1b23c23499a9006556f3372ae637e30f14e82d630f7b8f38e4ef40b269d5a8cbb79a61dcbd848be828515c0a25a7b4559320071a4dde8b2fd662aca63a7da8dc40680dab1b2788f726c4c9a6dda9dbd4d6e3e5362622acd8bcf9c4caeddd2be99ce330037e9b413d0e7aeaf265f398a3eab45d6e64f0bd5cda647208282608a5b5e7fd13b8d013a8db541a866d8d17a3605925ba40caeb6abecc27fc0d115fc314e7574c979697e0bd9a559f8a17ad0953f6c7f0e284d4ac379c4fc62a26cc050f8e5f37a488d8ade9613b7671093864fdd9a7b0218933cccb08a05d8917ecbb9178c1e50b984956ac5ac6706b24f45e1e41a958f8e74a771bc653c9c9741d30a8d6f9dfe2b12d3765b3b7d756dd4302195e6beb32a084d9a85a40198fdfeddecd580e61c6fb75b0518674c305d2d1c78b2875d9c27387f281ed03db52cbb5291fa91f52da061a3a47afcd65eb128275890a888d2e90b00a0e087ee2f8bcad449ef7853c6f94e53111f45f09e35a465a96ea437d4f4d92d7586ba2f69fdc04c5a5d396d82baf40eaef6dcc28c22e8483a6726ca872281e58344a2d4aa0fae4668776b979ae9898eb21cfea07e8fe20a4507767db4ceafdde77eb569ef699b1cff6c0954aa0f4d1ceae3da9d2eab097e96851639406ab11426c5b383861657574276de8d7ebcf6af079494f44ff5cef93d243a497a7a04e2b7a9bc0e554c870b5639726500cf6011a13861c5a3b0843b3935d9437c09be885d559be25ef0a34817110f87102d49a1d3033e32c33fa934f5612dd4c4abf2b358c9981cf8b3dbd679c03b1712e3b1b4a1f3eda9d25189cd534f5485307b41e323fccca4eddda9cdc29fff5efdfb82ae424918759050130021bd1386b4d10a22f677d2b536ba73b42482688fcec701d1880ddd55b336945b665d85d296810de02143745f5d70cca69e27295e0843d3c2683daed66b0a921ab8dd6b4099b2748920234cb97ce324ae5ff1279882adec03fffb1a2de1ba71a5ddeaa34f27b6f01732987ee3d446d997ec015f64b140e572f52b7beb02f13708e27bfa8e32b4fedda551cbe9022e540ab26a7aff330c2833f00d7f87ea8aca1d4e8986c7d4ace9da6dbe7227de8b5a3e6b081f2fde9d9ec11909fb1cbd728cf8a2e815d06c7124dc482640e0e3f0639a0c561df1e866e100eacfd82c92659c476dc6c32ce60a41921b4e669d2cb651cb66380c23653692b155308d6decf209ac8048569dcf65b246a828a0d1048635efd6e3b42d048ba338bad246af126513f8b704abdc242cf22e0a5d60b0d7fe55af94611ec0b0b3013ce841054fed2e377c027e69dfda6ff971696231bd0639deeade78a499e0015cfa2337455e4061556275d6f8086f198c3b979747af25e3482f91df6b7ff6083eb9d0dcb34e8070f6d988b71819901db5b60498c6b05e9e1013bb44db14fe8fa6bc223fe96ec938da78106d2f8e42d2d97023df37fd8e9c731fe0cb15949351cb0dc105e215ac4fd027449bf5041ab4dd162af5eb2832464f5352247ab672913aa01dbd0ee50198a089810b0c58cbd06fc806f8b30862f5c555e428b9b6bf5e9502c6be508c4064b5bdeda270f04d00ac6807ad50b43561fa01aeb2470be4ced5ea6702fe77fad6be6260fc3c51c3f30381cfbc803fab0ab5e9d0447d88794dcc54c344dc58c34c674aa54ad6761ad75937af7c74d22ec99d4022bce700ca19ec5bd469026790d9e55096972a8eca93f0e0dc9ffc39b451fb54b50df689bc38e40bb797a4445d09e7a904cb596b6d9ec28d533994021b5653406bc0d525c404543bc6e65fd8118f26699f9e536312541cfee6359b4f80818238713cb7e4a5e116652d0daece814f525ea1234f4b5a47093049a9c94122a0553b664675bbbaff3c3542ad62f51b081308b42edd6af413f8f75745d34fcb13ec1f1e298140e1e811d88ef0247d630f93dd7bb8ce86e9330f277d6601c67c7b38ebecb7770d93053c99678b3a19b6e26080a40b686782af48e9530f539771b5328ebba4d9dab7400c858ce0b7c5c7e8844eab9e44ccc91c9daf2373c3a70ba7d111afde49805ebfbb59edf3125ec2df3a14dad8d2f3b9bdcdee05bd490c65048babcdee3dac9df6c215a122025befbe84b1bfb2126669f3d3b467e30f71ab077b31ce31d0a977ce222c6d72286dd06431143356c298cd730d45e47f29899b49624a3d1a22843c1fa986b97593bff4a2d23092a6ee44442806ff1f61de3c4629957d626ce5c6ec2536c2ad9334edffc06d2137e3f20829bbddaced1411d15f7159e36657ce2ac1553245df51a31147a2b35b06345c82d2754f7ca7644a01883902fc3a5322296b7a94f5f5760e4a53f641ba4f2f535ef604647cb2021086fc87b4924c1d786cb079ca0448b9d9709170f5df886b92c284bca0026404b7e5a47e90b4bf40e5fab74bec65a5db4dbcd3fb093a6d65bc15387b8194135e4986974a702c6c87d4fe28586c401bc2022d13cc58e332c43e8d772ca3576619c5b2c306fe7d9ba4870d561c0cf4ed7e6780f595e1d3d619d480996641b0918cc56bf4307a5c1fb68d47934b3f2b7668aeede874abfdb0c5725f339324e758366533c09985d0c5d697a19d033ee23a049ea04d30ecdb30fa3bde586fb7306e8b9d9914669e29f2f951c1d66000833f070d5829c8557ff6ae9a17110bde6e3f5370e92f42a0067410ce9933928a2a5b63c9a3758aac0406fe794a3bbe0c959eba64af0dc7fc44c4b5fa32bf3b1ccc48529738fd873ae2638036a053d486b188b88806ef897a7a4b43851899080fb21ab8041206e44172e7ef77cc6322d953b3f96e04c7221831ac9d937b7d2e64254724fbef46185c944e56c87b9a6709ddf1724baf25cc4b817a29def20272257b14a9dc35d782b865fcd6c4dd8af2deb554371ce345f4ce65d99d89e844f5552abf8e0dcd515a87c497ae8513cc25cdd5e68a89973ab06c7cd05297ad1c0663cc1d09ac830c0cee861061314bc8d9caeefba4f61842f362d727ab155c3a1fba37a779e7e2802fe12da306847b6c29807297a3e9441fd3a006d14232adb94c0295b5df29af7bc008d98210644cd6da78de3453b05f4cededf62732560e32f5529cd39ac50a1ef544705b3f5d9953a423cafc6d98f49eded2fbc8155a167a65acdc840fb5cf3e6b0939a742beb31d83f8af99a2484d850ed2f8ddf98cf6db266bb064927bf998ca2cacc45e734d124bb6d769659accb974f922cddce06fa654a5897b838da807988cc8de3e5cbea52114b743ebe1a1966e692ce586a596c4fb4f74516f48437c37712a29b75948c6ff4db596e7f304a6c215ed88c7919799a73ce42a0098364cea64e0f30bc5f1744ad34c5b887fd8c01c62db63ce7951a717e64dda8a4e9741e695e3037453c1095da3af13d73f5da9b41780757c2756a1ae24969321f3408c84bbf63e64de14eb41738e12c52885a01508548b6dfba6ec06918da4cca9cc5a267416dd0ce8a0efab45477a2631184578ba437c5bc6c0b354e1e8dfab820307c964b22829d664e863ee930192526e2998c82a6d24180de958f8501d7f9be6ad47438aa48e09059dfca8d947ed54753ae2cbacbd2f12ebdef5491df25bcb124328ad2d597e5f63725a491e4ab777c3d8a8a327015fa0bacf54c22fb37ec02828fb4c789166cc750444162793734b89db2a5af6057ac041f057a50126b6fef33c11f5c0d76b4ffc40e610b10ca47ec375108ddb07b84b8257297165a4815d94406165bb1544b963478081435113329dea0157d7e8b37c2157ce73960fc27818ec452168e44056205b2fb0aefaf7e527b3f3d9442b487f78deb47e99349c58bddc9e29cc74b3e486bad30ccd3a4e0ed4eb04db3af3086359062d42a3cae08958fbee9c5898d2727d8228a378b107684f40fba753949f613b93d82292b8be0efbffc781cce6028738047d8241675850704a4e206ccc8e42b28f5786889cad4d96c8c4414093e90dab6f91c6568d41cc65ffdb4f76dda07f25a4b479251982ae63356c90269a2a855a90de83c731deac51dbc7346c578451e20e0f81e3ecefcb98d8b4d5a487ddfbad22b5a43f55c041cb8fa8d25ef99e6712109c566899fb4d3bb331c1acf645094541244d9150d07e4efe9bb37fc85c6bfceba0048437741b8737b13f534723e46690bb36ed5407971d0998513acaa8a2b9d7c41211c270de75c6e1312b675e69decf2fcd0a129a697c1392d2119d5f37040a5621464f26796303707e9b2caa3b5bc507fd7ed8069b31c3337cac7065c24e8deba90a7e9db845f73c08057cc8cafc015be2fe206da317dd7063de49b796449158982a3a7a1539fa630b4880cd65cadab5b850ab3a9cf4622450940a7ea0447395e63695f5f15c17334e10ee2e86098dd91103174836d28b1f080bd85e6ee4fa6c51e873068c08847f0d1ff4ff0d1876f65db66dfdbc22e23d467187840935ab428398824ace6d342041cb389be01d304fdc134eeab73ba571832c53d4487b4ee1c7fd536411730f746bd54591b7be985464109638d9b046b5e2accff8ad0bcabf3138d2ab47e555bde141c1c70546b5dea19f2d16607402a96c2d8b87fb2073c8db0f4b1f6cc4c54f43af7b0403de85759b94c48b4a069249136720827a6bc90543a5426de458fdb83f6b1aafba8740f74b8d73b59a4ea15031e41b349c0d35edb15ff7e71d47a330f01e12ec9d928819677fabf24a81a09d3e49f2894ddab32cd5bad5e33a3d3987c6ff80e6f8f2f221cd33261162e46b8148d1161e9266f9eac6d2edae1b915793dcd9ce3562189f532305fb54783c1cb860f34c49295d57cd79387ea31985d155a047126b34a9171f36174f62f09ccb34798b3a66e980cf51fee2e5442a40aaedcddcbc0be968b23bac08ed6b2b2d7ba9876283d45673e2c6b716d6a2038aa256a35740086f11ddb9a07ee1e8c1cec79c4aaeb254e4cf09a9846a4f6f9c5ece0375f4c5cbee3af2a41c28db5a69dba1686fd2bc79d4c8731e35de6f720e62e30187b46f083ec47e493ec164d67b0258e7726961397e4506a18589da30458caa7c2e8d040fb620e1531465e99bd37d56560b985a46a8bf9975885d86b0ba7af90829738f0f645c280f9a5eadc07dc4e024180b17fa66e7e9d8684d72446991c3928a519082e2c293e5d5ff6519fa4356b4b6ca92e3451718704ae589943020a91e12e6932c14a5407948c07b4dda394f175b662244d063c58bd1ffa685e9a53954740d5859beb699131e0f3a5572870d978657288c66f7aaec8cd0100ea1a4338d8dc1670a7a119e24b4f492c560d8831b0f4556eed67d730ce25f92aba365e077fba39f3a58392962a2442b5e91f5c661e4cbf0ea7fa58ea1182d249a54e14f5f2c76b6cd8a60d03a898a56b4e862dbd6d02106af8355bb663fc23ec7a7340714a4b7e302c82846f5d4b20975959583edcba4d180a57120f028f20ecafbe2d5f2f19095d2bbb5a361619c41399fa586be916edc0bf340f45f9cad589499828b345d249fa7e08d05143f10481287414553ac7e4cf6aa3e0d2e0a2925bbc03da0446725a47fa86a563601d8454618d1ae06da3e79c164c74d66225e6983654c7a1f90419e859069cf5673807d5200ed7c42a11ed4dbe280981332b282fde9bf847690276d371699a39bb955e65280146c78413168ba38b7ded9a9ca97537318111c7bfee5b080968363ff239662fefa0bc7194f98b5d31b56475c05e4e97fd998a9fc376d48f94531a64e436fc784c69f51cd56fe063d53f4913ea5694aac985b0274216b84ebe1a1b4b42d226f779c5c227abae4f910e17423864f51ca407f5a291c190b2bbbfa71e58360324a2fdd2abdcdcf30e1ecd1014abf791336be5b629212599bee15f596821d1eade3ed46b70429784c49068ed2510780384ec00cf4f63f2a1b6d6dfda1698b88a4ed2cd29917aa4585884893e9c453d506f1324f6ae54e644a0d0f6f209efdc6f94fbc5b88402b44b54f2cf8a8e93b020aafc99924d34338177c5c946a7f1331eb6b3f357207d3ae31030d0f120d30623ffed248d61edc8a93a1bd17d25600606318ff0d81f3610a4cfcfcb18ccf4d10e0ad29dd7de307feeb7c1ceb3dcc1b7851195995ec3d3fec633a6d79518adaffcf447885af24890f343dd26d0cda9983d515fac610680a272f87a8a873b9abe7f5dd4d625b1f4759250469e8dbd9fdf294bd8272aeb7628cd559e011c86dc61daff39911762882d6e605a779ce94f4c0b52e2fc49e4b282805c1068f7a28ce5dfdf8aaf1a676eea3f7a840a6be0cab1a0f26c293a5049f050e6f0af3418da726b8ea2a617d9194bec5809deed024143aee521e1c0e4f213a14b3e13b2b3df99b49502847ef67fdc36a1e9b3b9afcee8043c6826a362ce27b8020546636a082c42795cce34d5f6484b7a6d8b8c117421cf3ba389b7c22527f41909019a6876500a08692fcac781fb5a6f9be147e0444ad2a38feaaf17c4de2c4d24b88768993f01691c0f1c0fb53dc68f6f461b59d5b86fd4353b8e8ee904517bb7baab28dd1e008495b9accfdf9f24dd9c6c7a6a6001ea8da93e8a1852d6cf003782c24b49d4b7cdb3a7f769e3bfcfb012738c90f42a321f13e28cde96d14abe31eac5d80720255166b95e6528636c8a1c662bbfdd8aaf00977471dbbcdff3c86ae280868120256b8396d0af4e032af5859b027ce649678958f450340e2f725ea1fcbcdaa374a665b10f7ed416c56ca06c567419aee300a4d60beb2ea72034531ff874487ee90d30074dbf077f2116015131457ebeea2a46e297d3cea85e07028825edf33f9901e3e3d1fe3f99f61c72993d3155e31e5996d1e54b1a8fe9eebda25cd253b0f01f90c7605477c40fa6be303c118a55eab08429b55532f07c074549087be48485fa61dad81873a99af1494ca5fd556d3911a457ea93ea7b76c5e47b251bb036f54f74b4bea733589d2801ac45cda8748c997aaa17e057015405644b756854fdcd8d0bc4e0c938070090175a9ca31b2a5d3c57d21bc8a49cf761660f27dd9f8b9b0fb818fc9673ded4f9e2345a99794228b230c03c79a1f85e4278c04ab0af95c3fbc3e9f299729aa9a3ef0d0aa6b80487cc131b1face3740b944edcbcc44fb795f38c7f34db62081e1d8817edfe3960d4bd97b189289b1104a27eee53ccfcded47db929ad5cac7797cdaa5585eaf7e433c5966059eb450f8ebb263a4b4abb25b9d9a2431a2f24b62f9a42dfefc56b250a6f9365da338ed466f5bc7bc0ee348cba696ac93cd0086d9f106f7db2ccf2f8140c383adc139164e8c0e6758009dd40b77584c2e16fe17344fdf798b33b92d659c3efe6900b2ef741e41cf2f875ed39974c5a1117fa8947c2ba50a4c66b04c3cba69f9bfa17d6af6298130306c773b5ce60a3950f2c9e6130b19b880e68f4e71a0238cc439df9394b34e61cd167023c0a13af1c9b35c186fbeb2789c4029a6d7d344844c7311eff8926b10c8787b65a566d082fc9ce6e7f981c4d5253a3617fea606a65727b43f75e85cfc831bfb1677cd46658ef75b3dcf783d9b81d18d24565da8a20dc774b82ea7f89bd35491b0573665d0c68e57cf0789ea77868ab1567b9491111eb8f4b99d5b94671655d94d625ece76d9c3048813ba1b12c019dcc4707c4d4a20f7e03835ebbe114956b1536b95d5689b42caf6cdec62fa1e23b7560a55c02357f03f43e20c834bd4833717f8c33780e87be10a6f3cc9897c982ecc8424e376460933647940ac4bc54cc442149a5413378073ab3a8a792fbe0e54ed77175eaed0d3b1b2a52873274860cdbca51d236b270afe1a2ab23f86abc8970ab7537f78c01091496ad422c6aa7f77bb18dac7ffa8c826a73b9bcd809fabc07d152be264ef7823e9e954688ba14135d5954d95a773d4d81fb949d37ec347ebf1ce3ce6d1c3bc4018a440fd8d44ee10bef4901fa6bcf2bae47b9269c586bc0144ad68f8679b4081da0c1cdefebb145fd58dbfd4e46b54e6aeaf6197691b609eaeaf9b42a680072c08a4ab22e54ca12c031b18b6f72618cf1a43374b0545a5b92c9e5390ec6bc2e790779b7c1cc3dfc5a51e284ce306d96489a17a023f92d3dfc3d26d4548d202a124e16ae7fcfd60a7627e189e13c8595620de330eb8ff7a007afdf62c4127689daee332242dea2a4c0ac32007c853069eb358d4f5aa60f8224754548770fbd49aa6aa7e79a0ad6b27dc06cdce7c2a11f8ac33387d9797936ab48a725dace1cc167177a363f92529191195e04c2dfafa2f34416b12c1f108118efeedf17759a9ae03aa816ffbd4b4be7bd90c3c0936739ab0b42f942e01dcf5670fbec59e8fab883df826cd3ce6260bcbc895d8389f3e1443f573c37f84375b1f67e6d102d71ca0d194bf7bb802d9b95a021c5bca9fe570ca1efdf86894335c30e45cd1f54046ef65af25a03475522938bc8f3e3f291b9d3004568a2a50291d50556e725d1fa2b0e99608393068b30c59a724f313e472887b4b940e51ef7a85447c5f50c62edb1ef3fd47d4588e3ab602e0c9ac90b02d553e42b6aa0fa4d4c0f6698eb3e22990010445fe81c1311948acda7a020cd26dd3aaf090652b89c6d87a8b96c42a9dbb8e36335dc368388416959542192192b89e6f23959d314857d027be813f1adb84656d57025ebabd668a59d2bac1ae9f14b1124d6c5dea65980c6a3f5fe4a76e5911649f47b8e70e21c374b4225c16fbea5068fc317e06ffde9263016eeb2626cada00d43e52366b915fae39af4580f0d67cc4cd9431cd65d250f25cb1a803daf33dbe5329999675850436d621e9bc82d0c753ade784d1ed59aeff568b223e416125a943e00141619d44fd3f08c01ee1d1cd4779fb1ebb9993c4b0d315f0d75c493bafd7fbfa3ee9ca91cf0022be4bfc7b65ed8fae935f09d8a11f307ffd8f0d1ce98d04047ddede2142194d2c1ddbacc8ec340c4a5a358e803d6368143a126b5e23c8c6ec1be5e820d9ef6b9a4be58b6ff20fd4641a352c0c755988b8d58670363f4e7e230eb7c1de5fe50cf4bd4a44eb84ff4ba26f9792ddcee59b5cd632ba30d186342a5ebb191cace51b8e4df26aed772d4a9bf05bfdf84530bdb5275b3a7849db624e99d677528900c18b3579fdba666afeb23d4e50e057d993b0c5233d4cbbe43f5ffc648faf3c3290f7dcc1909e824fd5e39a61dd5d390942fe67dfaca9cfd7be07051af1d1f59c842f36228680c28cac2220b6b87a47bad896d9311abaa657d8e6dfd147bcbf52ffa1a19d0778fc8097595b499b37624ea307fecca7a63ff4bef80983e107bb67bffdae911635f9a38153b4cc931b2d4f75eca007a0b8061030ac69a1ddda1b4b70fef3f906cdafa10a246fb149f1d1eff9850c0dd17fd32b1a56253fe0dd6401beeb3062054e7c6374d08f8c81fd84111730958ad78271ec8f2b9965c44ceccc4f3e2a6efcbb9e65b89722a51eee97d8cb7323c75c894772397a45b27e27a5480bb730c2628ee9638fc2ee371df13f54918eef7a447055581b574c0df6982f0507de30c2bc7a7f2ee76d0bc9f8edcfd74cbe2a4c45c00cbab4186bed22261e3a9dead0beb362706df627a24d29d1cd72eaad3a8e30ad19cd9e01b14cb35f2359a00267435ab969429dcdabed7d466754438841f79dd2e6b4290234f1c6306790def340733ade6c51ad0a54d0a98160902e1c47ed611c7825cb68a870b666fc4d987058708c3c66f4c589b030294b888d46241492685a0e57aa4bd5de9b4842b2f73c1afa3b85fc2226f779f283632903e16673d685fbfa4a43b4f68503eec7a765d17fc54cf2dfd9bf8f0340faf4ca83fad3f2618e6dffc0ea23fa5d2d0e77218f70c738a717c64caf0b27b40ccb67cbcd10c6ba8b1ae2f53691c8f797013bf84fbc116085de07c1a8c56007a00a300264f67a5380d9ec6ec9ee05922180bda57db700b580470253bf4edb3333f41f9219d298ff0e95ebd297df8cf4b7192c6d6823d263bfbd15a811bb8ab74de4aa54d2fd387ea3e0b9116c42f589d3535454fe182777059c01690e968b9538e8b739e42f9f63fcee3f154d91ecb082bf73169bb6fd34558135736596e5585534370e6e4307bdb88eb59a595c60d7470da358d870ab1c9bb130135998463989861ce9b2f4697d2cad4041b97f10b581eb010cd3d7fee4d0e330429680430cc513c006220bebcb9cc2dd78e55d5a08256909010c6b155c6e1748ad4738542e5619dc48b18624af05dff9f8519c49359df01a6846ecb11f22aacb90f9ed21e45e3ac234414937cb43730d1a602d9d1b92bf7245206f1382099d7f9a3715c5f42c364b1df107c2c117b158c4166cba7d2b7c70592829781fb346c6da21cf2dccb5f4f04f815b05f1d3a4e45a1aed3c18830aa6fdc3c3bf8d5f82d5b654a7413e8046d081e8cab521ba241f32a3f6bd340a157de188a4f3a5a467a1168489ed8979d64dae1e9d57a44272f59e855890d4840225c469316dbd04d1dcc131a1173ed91f33744b04cbb6669d316536a996f6de172cd0530983924997bd78ebf5d06cad77d0441aed346ac25d114dc104b61ca0adfd7cdf864d9c6173430f0102ab2eb22ad21eb1abd65b097c887af809fb477e3820a7d1987a4f00028d2cd66fc58f985d863273e467fcaf71e679299b70875c9fb610cb8262b06de941a313adfd70f5d0edbacefbf17196410c9dfcd837c74fe0bc497e55831ec63bbc13ef5c667057c12fdfd857903ed327f56bda5038770c60e1e29ed24ed9a28dee15fb2f22e86d9f3da123c60e90377da4315ffd50e2d3db89cc5749ef9c7ea109424ddb29de3765f6bada17408dbe090d77f73d5338c2e9468093e09a0be1b63833d19d63cc6c918ef5761cca36d2fb296081da7637474722cb4bac97f9ba14b6616d402f6753370502a6830f82fa277994d71173fa79cf1e0d0906217d311f3e7398f6cfab418b0f6043e5557ef697734c1e61e2bf564242b7a4e659795a7efef91376cf2d5c0d7f058219e7383002926bf2f9e50385af38e7cfd9f2e76a71f48a30390f053901bddfc1207667d32bef3572832e7fcc4e366e57281c23825209c02a4ebcfc9439a98266e17c3b1a41f4c83477bee09ee4e1fd3ef9ac143dc78480b277d87eb294bd0c98ceda84d37508c7804701b4ffc3d399218cf7e74ad139ab8ab686e1e77a3fe6ed475d8bea6866572a43c1a6e345121c2efd768a8392bfd860bfd797650990a39529821576045f619735b3469c85104fb10235f6d5f824c8c69fb0f90647dc6209a80c186e2f8f3a5bf5e6a3e9654cc6c093d1404fa2719066bb7227e91d98049999e80c172f94634568d52639cf21ccefede3f08c7eab40045ed14f1f7433a90381bf908f4da194139d32aa75d6f6bb208274ade53fd773f3589e80aa631c9ed364023effe6888c5e6f46d56072dce583426e7efa3df8d4e0bab9e4b29ebb60da890e691cf2fe9762c448196bd7bb250e05e6b93e2d94511f2878df154979f8b3c759bea6b37475dc26d6e54144a05366f3e0e34600f4625d6129859704b840fc8c2649ca73a48d4ab2361cfb402a771b873b5b1d391b895b418e7d4f4680d16ca8653758ea211ce23a392d6fcd5e1cf002d65b29ff1d389f9fdf3b5f44c7406f69c9d7547c213c500c35db8453c0ef3d0ed6368adcfa3b6575bc1fc73b9f7cb47810822d85a85f598ceab0520740c0b28a66e930d06d63f495ab2c64287a28f48577495a2f1447828dc21392150e69a94af0b477bc256bead58a5be735045cab3317d449948ebc5db4ec8cd58c716d60ed4c26359d7b8f28ddcc8bbe86bbe3c13f10ff552f693b8bb0c87167add603abd1061d5678d6d6214573fb225224724fc57c089be5b17044e0f0525e4f3bf693d3f81bb6590c789897f78bd0133753e08958234b394a43f59cc703c6b15e0924eeee44070a73cc71746e90dd1e75cdb4a84c6755cbc4304106273d9c863b3c7688663af999cd26e575e7556b7cb5583901aa254242f2ed27a0527ff444b073835a7807d62252287772f356e556e6c4665d748b649f3bef34df0b41df3c5631f2d8a9f7fd9fa087386aad543d30b742f92c548d67b6e943cf577434c6a23441881da2c758b0de5052681e8dbfc7c68f0b177c95dc9e620444396d997381631cf5d0572b6b03104a491769702919f96b1e1640c552292324ee9dc1d37ef1cd277fb9b665b03a926fa27ebc9c31fc1c7606fc1de08ce07eab78f80e79c9e54a7f802c637dd3333ad1b526ced447768762e3b03fd8e98862a11254c1178dea6cae842d7bf94dd7f43c2f65ce98aedc87ffebce194f2e445be7314955ca794f20ff3fb8931acb4173310a3c21c8a6d864c8ff1200eead0d281aefc4389f573719f52e80fe7be373d368388fdb4f78ed0c957688d8b9ab6d7764144d1ef3b64545346f32d9d8b2a5e684ceba016c7c944c923164d80be17898883f554782f95edd51b602b9634ec966bbf96f903ad4487feb9f1dde079b03df50fadd4e2a70ddda4d0aa4f85478985366b0d282d29abe8dbb001a99d8a29470ee6d001b363b0a6e0c56b7164aee761dc046faf611a4f83e1e7273f709afceba6c931309b88807c4fa2422fb1454648f466bd50fd8f213071f00a7e3fdbae5a78db1624abc3bdf51795570d891eeb35b2fb539fc4d06c92f323bc500df2eb5ab0aa82efa49d6e5428057fb438900a4435d385c1a2257b1a7e18a87b8751189a3049b29aa3b3d8e7bcef270578dda57c5cc266f80a3725966cee6a6e07683ad9394ab8557267920e96b7679738ca8fe1160800b679b2834dc30f058c7048173541bc1970ce23cf81cd9f695d3981190465297c82b28fb675ef146398c92e9cc91b8b7b2a2006f5cba201729d489924a58305862586dfe4789a84b753c069e4e3f9ddd244c5d22847254da4e0522cbee12db2e45d077d60ac12ea314e333b31537e52bcfe8ee7de31045033b6be62e70f015a076a95c9d0a5679edf9bb02b9d8efd4ae9175a8d2e7636267f90d2ca166f92274ce20e0e96a521462694341f384a90d99f42fbd2c26e2cf4d917896f60471a03ac0bbdb38a7ab372aa7cc903735dd6dd87eff1f782061ebd8fff4f0901b2bed6e3348ddee57eab53585b1ad893397eb916de3d493255c7625d92b78df4c35f29c079757982099f9bf22e530711337a33429be8957d3824ffafa014c7f46bf97e530aa65b87d94d946c49f87f3197be345c9e6a4e35ec52e92940c6025dae60183c577578b095ad7c15df62c1841238eef670a43b69852ee629b630ccb3029a979c89502b9275c7caecf21d4b451670985ab1e72019b736d251e644b59e3b642e18b626a59ca250c155dd68932e4c3fe2954d5c8f7ad7ab5a68ac10258c26d40596b32eeaf442a557c744277f2298b8e4b9252317f08793d3d5c456323d0663771419792cd46ef46c8816fbff170a178353ec6783f4e28ded24c8de03ca93fc9261d49932e77e20a221742f73602b7baaae565ef44f48228c9627ffacf0d606b3e8081806a3dafc80f16fa96199f61eeaf322ccb885ea22408d6ca2613706ad4d25fcf0afc2f054d6167d365e39dceac8bcf8c485f639552b91aa7c67ee401ff5b43ea0c20da01145ea039d25c973c635b02498c49052362e2f0a53db0d343998a39315028b52f1d19e6c1d0853f220ca7c3cb6545e830a15e4538dfb2df3d84287b3eae93ddc70cd820b4de2d0ad0abcd46068f222a956fcef025f76299349202ed3756e7f1ffecb8b0e7fc796a1578bb3b7497d3217f056d006a6695a10bf23ee8445877400e0c32ffe1639bfe9b6bd9b4f1de7fde41d56a87d1c7b8095f6329acc97d2c6c31c94183e8b85b74b57bf5d84ec35ea461401b0e86e9ddb128b77e8479336aacd7601b90454c173b9ecaa5c2955b17a2ffcd0da1fc68058b849e3a6ecd35f9c6eab4705f6d2c644590ac13ecda02895f57242fcdeedc9dbf0a9868c4b0b60341d5182f335d5ccb5d04b2383aeae0d2ab1b12b764398ca96cf807af3f6e5a17feff635a8294ab92c727123ccf3cd11013face9d0e15b3f7d58267e02a1ffb7110397b2741d1e07c228f7c16c60e2f0c79dae99dc350dc6f510b8cf3bb7e014f1578bcf7b5c280445988aa634f9e69315c4b7d1754f2e72ecb93707020b56f9c609f394a050ee8e77831e0fa954b5a19a86b66dc88944f0816abaea8996fd0ce1df22e286a2b73dc627d6a6b0990581b414d9bc2d288cc35e272ef1ecdf7c15292181bb659b88312218bc93855265fd08ad404c0b66788ae951e9b2131942220f3f1adb82c56bbca4362d80201ca5ec20e6c5f1e7851c83dca115116c456ea0df1ffc44458b0d35207a9fb1a86eb0035b95b96f11e44de6704b7faf22e702268f28417ce7e3aab40ade951df8d529decedd13aeb26cdc8f57c59cb279517ceb59b98098706cdc4b7c9e13c5dcc243fb5309c5592beebaea3d6fc7c0366742ba8ebdae3fe3c90678533d77565b08e7812b80679dfc76a087a094f791d895716aba37510b7677253a8e15be1ae8d7f0778ee6deff871bbe1744df7e8cf5f48ba5eeaaf52c20f50231167e6e424cdfd025d6eff8d43ce2671ac9a8a804a9e9820c0b6a83d78b1a44582812cc5f9c4e2e9f00b71663a9c27da8742f284f573cae2c95b0ca64fe6130bc4a869053db53d77194e69930fba3d6914dd23e451efb13990759b67d21fe580b734d036bdf8c539296531cc6a093d547f0b10ff2b080d65e62a9bb9acf5d913bb3f549ed2a215f6ccb48d7abe3076d69ad5eb6588fc3ebd5af5437d60425d4755d7bad13e0b537f4755610ec7cbaf4bb2fc7c621534f9c46f17543bfa6795c7b19dbafdcbd7f6b97c85cbfab6061c30571683fbda989d7227bf402f7060b3df632d718f9d51c78c779d17ffed25be4dfa36a5ba392f591d4a419d4bb6976234e040da62821bcacd023bd9ef9f3a68044b531b9ee3440f99c1fb33b203b80c7d128171c38e554a946b949bfccc9bfaf2ba67f5c0cb25959f771f28dbc8a309a740203fe8972d5dca8958edee12de512733aa0bde550bbadcef5c5b49c6a267eaee046fc6f388baa3b7c1ebaefc03d4fed84cc7728e8a3fab256a80b97ea9e94ba4ef8bc60735d35eaabe941c1c464f33d1698aba79925d57a0cd8959d8afd0c03b1df737d2d3e71dabf47da7703a333fde78a68e2b259b35309100217fba97d0adbf9266fcbf2f8b8b0b7c5ac846ebe802c8b9a33fc59238ff209f32d32a7e66bdb6ea12e2ac185487131e1405f0957fa122f5b7fdb7f019574219dfef622362d05cbe4c7c382fc9f56ea1a464cbd180f7fbfdd04a16349666a330fc1a8820cddf1958712fe18c17804cdd4315c5e71b671cb1c50908b2772efc0a2ec7c73dfd6154fa98447c516c5a55bb7f24e6c260ca6052fd17c0095f73b8eb6d1509bfdd8ddcbb7fe767378e7472d27ff3f4026d5184f2afd03d0d87691b7098dfc2a328de0ba5f59186780cb82eed7b9dcb86a05d38122a8e37dfe23b4c8dd83903f58a78ff2fc5f19e27613cc206d7ff781a021a0af90ede0a9911d51fd52c113cbaf7f16f24e07d1dbfa0bd559061723c9cb662659bdf6ef56a2c117eec1855cc7523a024069f1da9685ccf7d4168a69bd8df4472692a8cc759d40095ebeeab41a4560659876d5685cb97f4b3d2b8eea607cad7a2f0dcfd0b4d3f5a0f8ea1f34c51589e874b93a6d6e9823714dd5a448dc82b96aa222a48fa49f5b7e00e9f4f9959bd8c26032a06789fd672d75b752082222dd0587c6d42bd5e097892a3edaac83f01dc31b79970e338e8e4bdd3bcd770a5717719980555b7f51ba55d6e1bae1dc7b232500b379d25b62395d6c71d5c0f14c599de264419c5b7490298b4691815b8e5d62f74a9f98f6fc34ba71cad2481c59f381b0aa8dd8befadddd3fa03636cc6c0e3b2c5e04899b21778dd364f6f532e7046116961704f8ef384e21228177642da3114684f94c9781ef4a8d0332b6d81c7d8a0b4afceab8c7ee157e49f09c322323f11a9fcbd0437c01a16d9d5a472b6486ee9a09995079f46257fe6a824ded788ee4f77b1b53d0742244599a8cd8c49d91c78a926f29c8eea5af3fbe816f8c4a9c10cd40eb067ae9aff7552bac824d1ad66f3451f5d6acc3ec9a412429b4388355e0732bb9acb5076bcea268d749de6a9a351f5a96b0b2732feb2f96c0427f11891382e9c26a44e316f224628f2abb15863e1870cf34b4a794bbd8a8d4cac35e76827238eda859275bb2f12e370e42a1e3dc82e32c74206497ad8c27be49f63865bd544a8e58559e1a5936572e21d9eca93ece0de4fa54fd36d2d3f48f402db715e80cb5059a4b32a15a5871a1e285f6be9902bf8462bc062a69e8f0ad96d554c8337aaa7efbbaaefdc6a3a32374d6eb88f813f80ce976fb257f246ddf7aeeb48f7a521dfcaede01189e7871683f149d6841f59edd106c05f7e84a4b1877e0344b14013e1f817c4b869a7ca3375ddd9de8c5c41d15913da1acffa9c857942f1d225ee7e03406b4fbdcd3b3ce2071788ac46f1d7e4095a273d5939048984ceb94c2feb76ec4307b271c53ef83041260e38de1ef8c47e31c8215f1a0b832f3d355210bbbe11532329f4f13ef908b96c84129379c011cafd16178715db2b975ea912b158e1fdf4c9a7e2fb56686db3d5fd76df36ed8fc2135ad5ab038d30834188c2141163755e35d099849e44c200e212488c9201fe29bf3c64adf6e208599664e37405f0956393d864653c2d6fffa21a789cff90f1f8fba535e14b15dec3f28fefe32bc82be118577af39cf036e8408986eca655f8ee6680e55af743712b07062fa52ddfb0d4af5dad60f777935c7ebfcdbe7d849d23b41fa3c944f0a57e70c1dd4758bcef9367c9053e083895b5ebd5c98a38bf9bd85fbcf9546ef4bb115e170d48f834c4a793715ebcb74150379df259591cd48f669123fecf4c8194f9c7e7052fab0cef56dc8e9d36bad8dfafa6080f411bdccd655a8ccf5f58cfedbd9e91b00cb64b451f43bc23e2a724c4fa00bf90923df19f9c7a7fe5b5d0de6bba9e2b03f3986471a4198167f6ad0915b92d177cb727ed65b9278c76acdc3e17c17e412102775029009e765c258151b645ef59049a9427df33be450ef173ea41245508bd11ee6d2492a741b789968b9c4211fcdf2e1e8411f4b2dcf3aba57d85f4a950d855f2887be5ccd11347ba1d845998521c772ba511d2d4b5f32bba613f0d181937193dcc5bce4dc1a07d7d4493d9d2559208b2949e21f3b5508c3f0b12f5d2d2250891d3d3833a77cb8a31414d50dd93dc3667e7672a8186682d2c1dfc2665bffe054d57254eb4954cfd812daaefc2787e907747b261722699518388e17d09b861138208886afaf97c558afd983b599abf8bfbd44d5d2db385eec980ef7b5ae7b42843517dc7a2e055a2f0f73091b6921e4369392768bf00da75cd2b0d68b612e05052521987a703a75ad76ca7976552ac0a9673c1e76843b9441e8ff9e280b2c9979e80f9dfb0c331e5d5e38d70e532c4862dc95f8b453a86218c2f081a9071c2919f656d31bf800124ee41759583f8882d2cf60830c6b9e19128b4539aeab283f75b5ef753b2334e967b6b7812a0b68b069240be33be8c569d0b3cd3bb2adaaacfb5509c8199413b0918d8c650f1e9db28e514a22ac815a5a5b48a683954acadbe8b43156a1cede377b9b11cf3e80b48d76a7a875e3edf542c8e39e3c00d869c1eb100201213aae170f46c16a23ea9e0dab4465f4fc65cbf7a6db0e632fd5d0260d37e1135c14d983bc410c1ae268535c00da50ea5b3e883ba99f485715214d6add9a20e1108dbfa9bc35632a4ac7e9c1e452c00fc5f55858c7823752dc0b89f13468360454583e72d5c13b02ff12d329f5fbbaef14e268766374f8d9b1ab87d09ae51209ee2686ce138f166d15887a16b66e474eb63bb8aaf08b330a77445ca560ef3dc365c9991b29b723bd3a6a57642d5c893a39b3bc409c2ef130595b79165e5124d9323ec8e1e88e8d1003657266e32303c29a31ee4a402e327b5eb17a7e993dafce73a8577d3487255ced5c506f795056ed825f91b2bf0b19a84652220fb0ddaed9bb279041e0d508e15a66f91d1c8a750fc5f2d05c22055775eda1e21e796a7627213da181320904bd1dd702ed504846e7977b48879fad5d14833cf58a911db3aff83ca2373ac2c99e9e470f58602c3cc4bfd90fc61b6a61f3aae87c82799e276f9bc83e3daca503c3b99a580d9aab4110147e72c6374ab693e66ca3204c0537aaa3c576dba33843c05907d6a68761efa4a452635e852ccdf8c65d38486f4e460187bb0f7f6a2ef5f5e90f34881d7cbcd171d6a8a9938542c302f6a6f3426bcb071a5f6af21a46203656f69c48aa22ef63a068afd8be6711733263a62444b781cba03e1a9f919a00a794bf563e1d7636a00cf220137020b2c3f7b863020848f9305253d3a098d70ae566addb54867e01c20523383b399a25d9408affca9f9d1f5d7b6a6f5d9a9acccbf943d116665c3a707fdd4e4549984da7b6af5a647820f8eafdcd7db120cc8b2ca0a6deb7059a3ffd17f50a42c727077114e7cada1742eb44a1ea55b08125a01b56a3f9046bc9cd5dddfed4e9edc1cb677dda2dc861969cf6e1cac026c091e8bc2299c2523955682ae40178b85fd91c29316101bf302d04c14f38893b73137994b842b832e68a89f9d459d42f34131c1c0e165149cad1f1bc82b7bf0350daa92a5efc9e808817a8bfa9d0924676b645f8c44bf051b710fc40dcef3c78b17fc5a7c46405ec763aff55b0e354d2c3b9cb2d0987df67bea2ca6e8e691f202a585d5b865264f385c9f5bff929dfe9be7ba280a845bbfa5578a32b1313b64ee98e6bd431a80e59bdda149767eff16be4b5a8a649fea4f2f44a0d1a1ff2d30015b295547e87d14501227a84d664860c7c31386a826a13455fe0875f44152c7220bc0b3fb8f67ab4e6e6e0142fdf6382c9fc4e952145a9236a36348a3e615fc76c7cde60d88b72e5dc091baac86ce9f755f206653515f30b11001c3be5e3ceb462e3b4372f12dfa5891f1f405e0d85d444d7bcab15cd919bb8f2a01c5e2b3a44a6cca5f3cfcaecc2da027851866b5f9f3df5ae12bcf35709e01809a58c3631f147f25f913e30ad37077a360ffd41f2112eeb6bd3d4cfd40f5c339782726f73334558ef0b32224976388bf16ea2f736a504fa6d8c3c7e89c1f7d184125715e97fce884d29a1b636023c300b4032336d33a732b516ea72d86903ad084684d82372e1d69bab4369fe5551d896c661c1c25f57a0cfbf8c19aef73c15262b97f2c2467a8294592103e7a27bfe0efe59be222495308b26e6d5e8e5b0af5013eb3ad61f0b78aa7c145a0db98990083c18225af38cb6896e051eb9323f942b47809f37886f0c398a253ef416d486f36faddd574cc4ab531424b821aafa729e72ac3ffb987fce448110d8476d641a2f3b17a67e7e828d74f97fdc14490ce7fee7f2aa1aaa6d14075f3d3e717c41c4c5e1b8fc0f6f4cef5aacfdc1798ed22f1bda999ac28e8fbff0efb23648bcdf1cc14b3505071e98c4fc5eb971cc84d6efc62cf40aa37f739ab095361f51bcebc32c7504c3ee6aad6f97315afd3a2b54de3a887668ae4470892161b9f683ba5ba2ffe8f3c9d62bdc29af4c8543816c9c3c80448bfd36bf1c5ca5c9c53458f5247a6731de8d2f6397087651365622b227d4f2ecc245617987fb90f9efb684d05f0d739b8c709c9f0e0917fead02edd7ab53b4d9864ccd5069c0209843c41289d2cc25e4ca22c6d96d5d6031ceb5f9d6a927823e1e4720c633ae540cf7091af33f3b34a5b31531af7e2b2c4523a1ebb4e3edcd4ca18f6ef979f7a6373ef5e745c5af4a198837441fa77883343d93aba6c0ce2ce3063d60caec7dae66b1aa378734611752c186815a99cac2a3899b321273e78a8cba8014543b54d083eacb83c04a2230487cbd124b72a801377d2ab2e9e911469607c9edb2d89e33044b382b2745dca0b9e20839d7d9e75774dd640e473c82c39092b285f80e78c71d314e99986936728a60ed16ee14e2aaf890ea6c17a26f7d76356b0a557f1c42baab20871cb74e71fd27d36b7c60be3174225998d561485c1205870b3d952cb1a26d79383fcfa39e28bd6527551c07c47175cbc2e25f79ef06518cdc7b23a7087d3b8463433799f1dd801c9e6eb2adcd65d7537b287cad05a489c9be408a123b4f6da65051d494817fd8763b9739eb98b1bb7baf66bb579a517b6dc1ff669b90ee5204c1f65f0f9c983a52f33b6bc19ede07e52a89f78fe201a5595219c804d0d3b651d29a950895b3c83d6ede72822af0f2a2f2a6b43983c969558379a5e2761d60657a0bf6b98c3b9081b24fb80ec6486f0189b232dd03f5d841a456490f29b627d84ff46e5b5de7f1661d68988384bb1386566044e13963ab0cf93a3b2a388eb90b852dd13332510b27e3654277ae7104650603a5a54a72624eda7cd91532407b1839c359d3620ae9cae66faa3493778e83a8dd21bc2aac9a5521c87afda11b8d34ae5f82699de190cc4f5834fa16a4de15473043a8430207d4159c5fd4f5a50f010413bd84d2a312ee68ce191ef2abfc01e2465bb007ba5cdc51c7f7b4076a9dee46ba57838700b93ded701f4f95242bb471ed6909a096919fc6be51c5b4f55148633c44a06d8df2d6e6db0b0eeb2357e1830f23c07fc57fa16009258e7e0bb16a60b4c9de2511ab1d31acaec6f5e4e908b29a95ab316d5764ee7d28d6342ce3f17f265aa0534ebd7879bb9fc711e2b0ff2eace13fe99f542928b504f881bbf2d6bf504dbd63fb2786734bbd732373be87a4e1947ef82184ce884262757d53e51a5a250eecb244c8ffb5b947f16f18a9f6f7609d65e127270095ac34af66d4cfd24d92c8b54a51e985743836c8611d60432a2cbc83b5755e9a09eb796636353311bcbbc5884b0328b34dc9097c00c091870d9db42aa3afdaa0ac60252a94e3026996af66bacb0b5f36c57130f880151b34207b8764144e031c941d10bae1db8f7e6f9c64d4d264f57f269049c5135b984b95ad4df171716257eb9264e5a81aac3354b19fc7e281717c433a4aceb37c5e170d5b1381c28f2de99c5dca6355011358426f69933f70f8fc2ef53478a861ce31ad657130c1459e2498ba804c95e4c189aceca32c48c8b3e3611ce664cc30d45a91c75192eaec7cacbe3fc21a6e5fad9e5cb8a8c583a07c31bc135c5060a0a2be37b8b80da6efef8af2097ddde30c0f08c184fa07df02869818e3ac6dd9e0dc41287982d2d0f8df3c33ee4df891008508b6235385ea3566899c6e9aed3f2c9674cc1b963942c13ca25bfe32045e2ded9a43760652c21d3c10da4d10879844efa53adb22f1610d6b69f0095b7626c565a17aba538632cc6e3ed9e063a33ef8bc1c459d3afb3572b56d625e6d2d2e5f2218be2c2a858bf6bd380360d49ace6ea24d59e6fae909e93d3dc729bae706a8b061f4613d1c2d0e61ccbf46b57a635a0bd163478ff969dcde291191e6118555d9e9f7a4196ab18e8d488e40d2536f1e626e191aea3c50fdb54b8e442cb52c5a947bbcc7429377d41a3431b1e173f28e147b3be88b27d55445dab62a088f0ae2ba66905a398a75ea579b6974ed5b6457afeba7bbcfbfe0b90a65286012604a3116d9e6e39e3894ea295e3330656ce0f447582f18103335f66f6a7ac13814a18ca3fad2152b05bf5db5242d631b71718af8c0ff7606cd4ee4591c48521a1498982efbfb828040ec1e61862170c0164dadbf2c50635c5bb087521be00af73cb7dd1cdcc6222926bf4f24c69894b784186c9b5d1ddf7f7d0c11855e7ee96a5b8c17db1885cc54bb4416be4a2c162b2f1d838e321ce2024ef0494c651640905595757de5b7533a32c614f2d4696eed370f36d1d14e5ed16d94f321156a2b926cd468ba6e00b1a840149455943fb5c9c693ea7e62311741eecb9c96e403476765839ae2acb2b2b19718faac58f53a02f1cb87c9ef690c74f542bc59e1bb5d569ffc4282e332f4ce3b86296471ec0b79d3656a5a19f04f2818aa0f0931016bef837b1d8d9680448673788bb861bdf33d16976b02f39b5011b6c16ac5a6e970d6844c64875fff069fd5151628bfab632368613a7c1773582c680d0922560b83ff68f9ecee0d46ff9c8cc692ac92695b3b125fff345dc85a95c526669bd4f3aff880fa3e44251816eb48f14d204365a0ab8e9c0b1a2df44784468072c6dabbb0a9311d59eee0c88c308465a09dc34752a99417baf9cb361746d06a79821b3805f0741d105840d3124193defa2502a1aefe10c3189b541fd3dcc7d4acac79537a8d36b847778e44737ab5a68259bf1b26e209ba750992bd6db4ac38764e43cbbd45d54bd26763311054e95a1f22090d55af8108055ee964caee0732f1fc33ff80c13b12231339d0254f2be8dc6c925db5dc6fe42a5b8171c9b849feb468c91255f255875b2899b9185186262e1e8f7463887dc637f6626eb1e0f754c4e30d261923da2580ca277e384d7a3986ea30bad4288ec2a6b91b93abd7dc49fc6ef5945a0341d549632047017eac5e2684811c17325e16c0cba022bc68dac637d3343d4ceb78baa4059cf178e2dd9dd299b0ea83fddffe53016f26c6f0e7f951504d822f0e0e6799c49f2b1f23aad341409f853f01350dd032a58a25201ba9b79c2e55e8dac6e6e523ed5a55bf7184d3000da477ee3b3bf75434de8dd1d852f9a8238fd2403f3a832699c3edbd06aabce53f8f1edfcf4608c292869a0e237c3159fc02dfed4086f6fc1d308052ad16268c1b4e6b60a3c9077836e6ca6ec112a40483141a28002ff9c4fdcb9540124ca1db03e7ecbba22f3f021f2bf61a204159baac0949fc754125b80115b8440c6fe07413aff69198c3fdc48e1b5f4eeff76c75135197c25fcf7b06fef898c703e5a0dc8387d8c2cae5cac62d63a278916ab0298742b8b8515185a0ff7f93fae5912f5414f9245b4c6d4ac25c72a47dfbcfd519da98cbdb3da8558dcafea19f414e8ab3bf1f1a53813586dab19f9e59e34dfc3491212ac550502a6092d20d81da6c4a64a9c30539c0265990839a08467ac5e020cf16ded9218b299490387683aa5e110ba29267afe80f269342c7b6896585291b482248ae34146cfae8fa78380dc34a20f8dde921477e094b94f6ddd69b964bafe88e4e76044cbd2515995b741e4396b7f895b0e9306575c45f3db72334bfebb5070103a95f1e7a321731733aa604afcae134c1b7cf3f4a0babdac996ce1abf633781075c78d34449b83acdecfa2cc978cd8ababba56392e7e15fb8e80feedf03f8bc90f07bd8c3a21ae7e4a205bf7fbff70e2b0f22b544a3574ed0a7b19b636e5710cf78163c1ae1a9952aa753139f8ce42096ef080e7d2bf8c51ad8c83f26a9a18d1846ec96e30836fff4f05cc9c4f8514c7c0b801a3e056e73745e39498c3ddcbafd02727965e362c328e4fc4f38b5e1c923c8e3989e3886b75c48ce25aede591c3f087fec89a24845b567757c4a0db37f7104180664d76284be68b641c9af4cfca026a62d9b50d153fb70947bd531858d1f1d664b31d6f10f2529dd317f349e5846d38200084d5c9a44d20b08f10c83aab29f21f228dbe553d48b8868fe588e248b5ff3d2cf4f326f4bd4ea12703bbad57df93246e696c22927b309f115e83fb24a99c29bc83e731f83ff9f7c17538ae40dd0a3e9b3254778e7f8b989e6a9d412ee7929cd27413252bb821474db5f140fc038de47773bac3e2bd74146e3e9bb69056ea75eb636b047e3137018d94e39e7722c49b6afd3d0f3fe028eb72ff496133ff6020b2b95bd6085a200aa1c065307feaa945ba4d32d2c6304c38f0669784c4b4bcfed434110f3cf4aa25456b89757c817d735e75378ddfa1ede555353cb698e93141aa3e3ba2229a0b58f7a77c24ad10fe7d973a800a404e98e33de8977ca729d7fc9e244ee5623c9141aa0a11359dc4f7db326db06fb411963e98aa254689b866392f7add84a9c84e909c4c128cca02bbf2522fe14df4828ebf82eaa99e6cca9630f408e533ea49f665c7f2f0b3caf98bb69082fb55abe0789176e61bb58b86fa78c1c828b6a7be5a0cc78b3e74a45bc55246b562448b497013af9e1c1e4f78413c0524123c3a70f97e9a934eb03afe61ee1dd1486ccf3727bccd3545ea16bbad8557e5c4e0ec430d25a2ba22b706899aca225112afa1c8c933709c2dbb2cad059eb08338bd0bd200f181ce7785b6e5f62ae372a980c0da4b69a30e518dc576cdd2b9e682abf70500be24912592851a6006fe11f673a703e4cfda281409b9dca22af097a62001c23c92f7499ec9c82b4260593ea6bc16c9a4959b0022b83d45bc4101f54d7693e94b1144d341f4c7b51542a40c5aedb3e589629bda70b20197320996a0154b016d136b388c17c7e489486814772b5dc5c847786628f20c6fed7b4b38f271dfd8fc5eb2d26583dbda4801f86d1bb5c12547c992d9e0e2eb6db4e7034a5f54d9253ac18534f6f78910ea07b62de1adee02120ae9deeff4b8e9ad0e1e603d0a93f67c0415ac16dfcfb3bf20bc586f47ea0c098336fd376d46d1601bc98037233d7e180fb5d469e9f411c72b17ca53837f5220cb7784a8511fd4b92526c56df435a3884ad29a6286d6db16216b25bf2e15d88817a6e004069372e50b7b8fe5519aa6ddf2df17555a839122a6bc121ae4cc399dcb45c56af37e259d5299b2cfa25b23228c8891e6727d860863855e8ff2a7bbdc2dcf8fa32573960aa1beea7bf97a7c3bc8555cf376ee30b8aba1f1a514caf5156b2ca456a8a2d377c886972b2ab33685da9d40f4023ffab6b5c94f769ea297e5a749e17c520831fa52b4ba4e4c20a6c93de5ac2072670433b32c4d811d84553c0e74ad94d3c3ce9f9693fdfc6463b0e49cbabaea00df847bf17a270f96fee3ec416e625ae1c0b9bb01fae68db33fa5f3bf1fdba9be3ffaae5b5d3b51e10b3ddc5ba3aa631164acfe034390997a40c1203eb961c7a605a72679814556a9d190548728bcf21de68f9f8ef707fdcecd1ea2f061ff241e15fe4ddb85211eb8947b497b67cb0fd415bd9fb63a80367cb7047bcf2d799ec69d5e38131c437a3f816dcd09a4d961ebdcd70de68eb5ed949a91950451e8f3d274da48ef4f333d653fe4516cd3bd3ff48af63fe48eef48f8ee6b76d2ef3e67f3f1bcf4d9676ed261b6abed9d85ff9f8921aad98834bdbe36c64dbceb9264da95906118949106910de323db45e33919d5b7b3ef8dce6a4688788403dd2063d8a57169dd9db410b6487a2bef56a3c7761f7ca63a1417baa6dcc10da09789a9a18ac45e29e0b6f1eed402e7b21fce1c1bc50db7a19a72ee8ba8204ac3014df7beb789afb98720115edffc115ba67d61bb1a3fa6df229a3b37a1bcc29a59e71d184379a0ba259eeaafa55654a2f18df3d35375c47e5a705287f0d5c06478e1d77d45ee353ac529b93f8a9fbf38afa2bd03ba5cbfc34f007c65aa9106d952417ca8021af88cf214ee61db51ef8b7036c388b87c41a8ba41900849ba6c4666e1f9fb946bf2e651c709b5d1743b1077b7b996f55714187cde827897b40cf6793be35b24b821ed9bcdcb05651dc91cc20f84bafc2ded8b0cb90da0ad46d01271119ed5de63f4c9da20f7c451d3dd66d098e1de100cd6b1b79063c99f1a741e48855ac1f1673490b06721df53b492d72f4a4e8ea6326f174afe2e4e173998469df5d9063fcdbafa79070b4c67be51fd69ab0b76dd75ae0aa4fc674fa22a12d6fbad3f4541102810820911097d2c83f8e626b8f64925681526573cb33bcc2231c1514cc40f9c8f3ccf2aaeb50733d0168c7a9609b556c5241237e3b7a6d0bd3ff2120a555a22f11178eca47eec248e4ec2b165030451a83292008ffd9803ab2b3ed3be8c81d5b7f3bd86b8b6e2ecfb6703ebdad75e4aaba1d564b44efc5004ccc969ea30d9e0dcedc9dd698995528b3ff34c234c525c5faf21a73310fcfe4214ddb8c5eeb8d5beeae95002a9cc463f3ba6b0149d5e9f9b2dc90dd55197c8da92197c30553e4ddbac8e4c3024b4b6834d418e385b625b9cf5b61646a2ad24d30dc036e545dc2b3598fbe7e7bb6a0c549c5aa2cddd7e01fd01eeee8ad50767c89425d7c89cf5127b43678fde7affb368466120e11705eeb3a459a287e9a222552da8ef541787b517ed0524319512f6cc07670b6e14d959f214b2ad01bb281e6c43ab720e68478a0b8650cf906d3cc0b515756b1f5b58a66854c5aa7683f007445e073dc5670900cb5b0a77fa43f823b5a1918568d0b8280999ad85d1524912d4547780a875a3b1d695a9938d8fbbaa392ad087d3e894e87869c83d5f4054fb0b52010527f0efbee2948c9fac9f48d8f454f2280c37c15fb1969b8378f3d71640a94fff86a160a6e1573803acc25d1deab35bcbcec34a0a35260f22ea2b71b8ea723ea4a0501dfa7374eacb6e830a0c28781cb8e27bf8c66887e8afdbbd1f22de422be33642cefbada5d1b281f497dede8dff4a67ba2bef92ac8ebc740b028feb260f7a31e38ca660936701d1618ca9ec3f8cd7bf0156061b9795095a5706d79499f6a5c99c2863a12299f33dacc31659fb4e84f2e1c56197a80bcb0266637f2d160f09f8a5299ac1ff6ed0b7db2aeba0778294a9f43d7a71be10d2f91ece5b16fb7713e07926c89915ff4c7649e0721c92358d7de85fe7e2e63c9bc8576d1b4895d82e3ab91583c9654b33634d9574e27428c6a1fa3786ce0bcded222f4693fa4bd607b05ef716838cbfcdf2e23d626f80eecd7c72cd6d6c43dac638fa158d1f7b529f272f4369de0e2b2a0efda138e366e4467b6eba7a63ea348d2782d72589428c800fc3837a5e3d6b298f2c021832306dfdf6006b2a234f3e55af2b3cb9e56da15deee95b895fdd217ec537586c896314ceecaf2f4d0b1d93f1c31a2ea2047f7541c6251d599f7cb0d013d1a1deb349743aeae8f6f3de3e5071cbf53548c5d9413301a9b870cf9009915a1a7d53567e728dcb14b4f61a553775c6de26251a18285d197ca00de9ea98f808648576f7cc12fb91daaeb1e2bdb9534eebbb394a4c14ec5ecc0dce0ed177159a8bdde5a719197c8ad6f9f7ce01c1cd39471609fde8b4c0c821e4efadfe14cd334ddb69dcc398a216578710032043a54e58714cfc79b04c90edc2a33d505e46888f48bded0914abd04350f60b1209e6cdf21589bdf221587c82bca72870869d5def990ac02f9ea76babea2f99763121b3c6bf7394349b426afd0fd6e4a53dd4ae6170d59fa2c6b65cc0a269d29109b39b207db732800c3a0e406915393d158e8345fc55b0fe530de62f111da8d6bc1fbe18f9a34fbcee27f9f94722ea2b574d4389f7dadecb85622175f0c7525f5b6d2169cf327b6a2c452843f9bc58189d39241e46a9d090b7f15973d6061ada6ed1cde61fa73498ee3914bdc9e4a20497cdda8bb9bbcffdc6fef4e34e09ab7d86c1f250cbd4c44b6ea99ad936a361b3e4239d6a7331ec611943b6eb82bc0c2bad59178062fd322edc94f6852fa2aca6d00cc1261c20aaf59f1470d64eab2a4520fd9c18033c5a66ca74266fa287086c4ea31134748042714a0476d585b4d715a70947b04c5f561bb18313a90fb1ce0fd934685eab4177958c2a51260d486ceb8be79fdde72714bd243b7aaff4cc031e79a39ac650548abbb988129c079d7404ffd8949661446969ae0ec1f41fcea3150d4a56ab5de0b4c31985c08a7ea73f7cb6d94905499fc325a0c7d018d6a7d2b6c3bb5384896970b13fd5e9caf6c2f2a04fa9edc6fac77bd76eee01ea7c84f0344ec3c9faf2dd588ebc41e2fae4a7c88ef020dff9b6f148b54ae2d52839d8b078d7b90da00bc52b1dd20a415feeaefab19b47f4def0ff629cb34d11df26573dbe2f911fdd06ba4bea7dbab5554071d11fb27b32b08a20c555e9faed83df10c9ff80055f8591a23c800760a870c15c235e4e2766e7ee708c5650a535ce2c9ffad60d440fba27e64c7cc4ea59885d8da6f9a27a306274524506945628150d46afcbfd31b613b7a45312332d21aaa68d330d7a1d60bd383aad349e5efd673c8526e06688995e016916d5d01b7e1d54cef2b115128cca1a07ae2565c5ba96f785a0abe9c7755ed2ffadd4b2d6ed4599937e6e56fe6d36ff60a65dc36fa91d663b57f29b227ccea7e58954a770d4a15f0026db3f1dd2683014bb4eb6beafa3e6765df2e9517d27a26ef3fa111bb1575906d5e48a0b7c93c70014af50b337b8a685e5e9d7ec03c5977e887667fe15ea06f10ab7eca1b340d0e4521f3a5eccc7869c8999b232cd66eeb41a2c052fcfb29663bd36190b86a6e2a5587ad8325b229cee8a8f650229e89ad5b9e0a434d099108b1a78cf89ba587504f6c68413cf34e0b4f213de07cf15ccae99c98d0d33a96f93e805772805193e19902eac883e6facfba753f47eb4ee4177c2fe8515e21c7e42f3a6246cf212fc86c6b3ea9ec35f0632e64f0ac9cc27b4c75687782e22b9de522531f0fe47b53eb2b400ae4e7643f146c7956876ee7557ce3581067c31bb68020fd892384317879d74dcf0a13503e50f08922b4e9b8ca57bce2d99faa8a397ccad23094458c042bee9b2ee784b8b0a73d277166185322783e82c49b1063ff53276c2eed72d2f3abf54368a5823a81de340c12f13df22b3c90193f2d59b78ed0d0e92fe12809747688cb9dec475b0cce33d2ae8863db5917d238ab0e1a1b58d85668d328a20a1734d2ddcf3ddc48330d2a74e083aca910c0fdaa763c8476d29cea786b4410c82d2b20f90c191fdaf1e18fa64406ed974c63941907923a59045560963aba3f771b4fa9c8d9b332b64c0e68a48b54eed9aba48271f8c8efe8b51161cbffeb480b39c95d5603840ab06afc973226ba6a26143a72a1dde83d337a5a1187b799e5828bd6e5ffcede4085c0c5f115c1ef52c802dcc6296c5ff5fa6723ba4985cbdcf8358aa2caccd8ae4e7fca42e81a8e3a59e6e4c857ec91a2b56d1bac5c177281fc540a7cfd295f4b5a8ac2ff223822e86947ee5f3820c0e63f41381946092814058933c458012b9a8b97a0ebc87640bcc6a2fc66f03ed927271db1abf22431cf90f92c388c08cfdea635d40f0c91341d6c00f3e2ea49c90469d3829bcddf886c6a01f867f25c23f1ba9ea2517f36aaf5297600b713731e57934b79f3f0324904c8b9b1d63f5c323e0a9f126956bf073d20fb7c0fc62be8b45ba482392d1867fe08aee46d017b3817428cc8389c3324fdb9764f0a2c3132ebd024a306b2ae8371beeaefad5504e7e80bd3099309e036e03cca0ce5b915168d7efd0eb258da98dd37b4918cc858202537c6346d7c94fe58ae7496c8d9b00a66ce6ac612d28923d25f81d9718df9011c07da82275ccd814841b69f513281d13ec123ce9bb0769c47501dd1731c4fc015e5755f4237511a5454c204258b5551b670c0c24215aa06d82a5deb4d0b5632e29dd31059d4e303bfbedb01b19d0b2de79c7b877618836951ae0e94a14c48d73f75944190e4942e1ce768ecf7b56ba43f0a215a215e1824e90e895a414dc8046b8542772174f49219d25177ef7f231b48c6a373225aac4ca1f67163178c693f4927d3ed6cc870b7c5a915292d6af3ecca7f797037d7114e969cb8e7b164f6ec832978203e9c185ba049a839c5903601d15e3bf41411f4545392e64895586856d17422be06db9161f1f8e6d3bb259be7cb178176eaddbfb828d6e3807cd612d42255f9f920ed9cb22561e56721da038d12b767917fa56e06cfed833c93d2023d88fda04af4233c7e15fc8d6025158fb7b729b25cbb279352ef01ddecf63958e920ec1ed39dd5f702daae510a037984d7c092001fdd2cd980d0c72166ab18684c8fb1383d2b86fb93df6749705d74c16a234ce6aa7a9e48fb6fb3bcf88903b073b771ebf546cba1733e6980c974e4fab658c04c27d46b7000ef1fb2b3e8a6bb6fe5531877fb7e6bfe8e803bbfa991130a74a3176b13478d94d27b1694f3e97529ab7ae2281c4cf5bc30f98dc7e79a4d30def018035e5ec61b22fe3b16e0e13b289a5ebb55be793a6d364f429a8940286dc42f24fbe51673e6e4b198a9501e7f8fbc8e16e6a9f3d2c6bcf7759a019e16bf59310fd4bf777978c36ebf395ae3c78f6e6cd03aaab9f8dfe678b40c24626e8ba3710bd2c001f8b67c1eba7ee473ce957d2748dbe7b30bdb1a13b2763a26799992249df7b2470c12f85a6c19377728cde6369e0a5be560efda3c2e03e184135cb3422af368deb8de464ccccd8394a83dc9965ff51d97c54e618389213eac6d125f6b48d697acc9d94aa5edc541977647222d2ab23a95a444506c392cdc8adbe375f814aaa9825dcfa64984a0cbfe28a51cbe1d100d189d4e490a0bac542541703efeaeb2d92d46319fd11d37e8a8a6569c3bd52d83b5a12512d4d1262546e030276cca6d1b4af0bbcd781a9da296f57529336dbd5fa651088cb569f8f0bfa5c6b0abcbc3091bb9b81bb3cfa09c9449e103168bc1725c6ffc44e3de403a4c54b96e8df7ecaa727d8e3aa440a6ed633c27f2a584890f250624db024ff75b1886cf93f50a1ceaaaee1e7a4f365ef1bcf285611a3c8a921eccca6d3a2e885da67e06aa43d9f39f867e4b5090c388d269aaa08492bc2eeb55671db63e61c0ba8c8427c51342fe096cd3f01b1c93299d28d9556689fa4a2ec8b527e51af672db8512f3089f73eba707435263bf0daeb0ae1771c4d80f3ca608ba6098ff66ebd5c5dd875a51c75516e67407f362367dbaf4404eb9df058baef2bc54ca42310c1d864aecf016a571b8156c15156b1ce4024653ca8bd525fc616025a1e608713aa693433c4e0683a12612df66d7fc7b95887e7ec1beb59101b2ab1c04022daeda5f9df8b803949e945849744ef32f1aea2c5f207b7173ee33d16931c8583a7ed1201a8b6132ffc75a2250ca81b9fc752d49d3156dfafa0f928bd9e5697d5fc3981c54f60bab6bf3ff859367f7d4f6ca98fee21826bf0c3514edb8fbce9228e3d6986263b2bd1e08081e02beedbc96619798246f35552b8707c05e0fbe2e46757175efff0af8ddd5869162aa93aec8dd8206c08ef382218e6eae00e960ff498d31b2336306668188a9318828beebc3dc0870aaf6fdd84fedc14d617ddd27ec976e4663cf9844812f5a7cf6d6682be775c0bdab85b5aea58ea68bdb7217309e6ffdc0d2281d38ab4e4d2541ffaa308260d756358435515f5ccad55b7764e716ddda36dd2d183ae46a56310d56e92a2874f08c76ce4b8dd00ea96147c7a2385be28fa2234c1e821a8e3fc7151d274368d6512efebd2fb3a1cda278abc6774ae8e16ef8be939799eb6f2e5d7e6da4b2ba123e15b8bff6cf7be14aef8fed88d20ecf37d3e0e3bb6d149a11393379217b417ae178c2b5ddf45492c95107eb18577a2e093c40bf0742841509e0d11e534fe0a0ece80000b612b8de76c8d0b90661208c68fe01cc5c14ebb7a8bdb5cef283851d01dc0b2032762e51df534dba41bab2b4ba04d8b3705a3968d8e9849ad88435b5d1165296631d3722d8359539f5aaaa4c4bd273ee5140bdc7e40a475c1191bd2f65eae4617743d0013b9a0418cdaf27dd3d2e1dfae252dd4414560ee22498a3cc475f9bb318a5d98e7560da3541c4cb5a6fc458cd4a7cd3240569a55f33d7f129f7a297f102fc2eaf484dd9f6e5469ddc0542fc67c23d3194cec6888273236f1d6622b6b6f87b52da6f91cbff3d49d4d279db080c0a375f80d2e1ddd6d59127908d5391bcdf232830befcf7a83ff13b68b22455f9f9330b80c018011802bc5d91f3417dc67cb0a6779c9c7b6b247ee8a8338fff169d3343b3709422dbdcef307d2059c4e5e26be355265fd04f584c24a8ba958e8679baaa4d3f197aba0fb2dd35326154bde47a1a5620f87d88f33291169acd0b634429029971c0bbf8e500b133a25a59961a16529442c446549917c36f6842ac838704610429fce6a52c9e9859c8f5f23904e9c7bd9a3fce0584f4740b7901a7248a4b30bb6ea628a9b12b76c61d5d1a1177a3930599ca85235613c961899ce4f972a37a48b538e424f585174795d6fc329fb6aeca87d9c21faecfd0a3e24630c91437d38249db48fb9803dcf71152e48c3054db7e358c70f2ec0542c29ceacb0b96ec213c2b7abae3633e65d2cf68aef296b172d37695c19259430cb30cb4d0cc89d3cd87493d486a26583068fb8a1b494ba1cbc9acc9388370b93557f66ab4e810814392fe2d5d997c6ba66c29a3e6b36fb1ff9862ee0b31d695dcae1f895072b84fd2bbe7ced22544cef0d92666b7d82b038d37e504e901823f9e0335f9e8b3520b756c8f31bf281e53ea938ef5b351ed0c41053fd1c1e82b5acf46a6bb02c1a450461fa0bd295446e4d727e4111de5e1787e7ab420a92777cb8ec5580522bede20c0ebdc39eded15c6c0771c2d32cca597c3b8e9387d531827477332652da4099024c072bb32e5c34b78eac1d5a775d472b0c7d40bf6c35889bcdec27e8272d593f3e24c4d3fdbe722dd069970a230d995c068c012a2550818a7a1165c6015d124b796216046b7a81630efb1ddf7e8cb3503e86ceba90bb34bd689d396756823cff41aa6e902744af8ebb1ee906e1676864b69337155e25d144dbfb44212d1bb11fcc2fadbe38aa56189d337965e606b0a641863e59723d8a420db493026890b9b7b36bf4b960ae9131431fccb80938de00d8a415e66f4cca967edd431f11db5185d1037fa55b061772b47076437499272a9e81f83089ae77ce5f78f0de74ff5471f2fb366d316f9dcdfd544a42c1c0c6f90ae0ef23e419ff156d28aa74dd3a6ed43e294f4ef250d5e8f77341972c991657f5482c54d2c8d41ebeebd8e7ff131152af6072ff6f121ee227dc6b987551ae02337f1f1b555fefae2d38db08cc85f3ff94b4b0b9666ba1cb42d8fc6469c5db6c6d7557e716b7da4d223aaf6d0b3045d7a578e679a4d551739c10339e9b0a701db34acaf308e2a289efd44d0611a9116cc40480e29b1cc067d9218e2db5b29599d66a1b3193335619007cb42aab788711a6b747764a4e5f4c9b72d465f64c9a92a1d8365ed6444029a245dd0817207148b4fb512da94f2fb8dbb23204d8be0805f592c5c6b7d528673ff2b23fb100ec847ac85ca08940b548bd1dd81c491d83c125e461dd5dc1e58b48ed9f2dcb4781bc22c6a8150261b1737152b9b4c250fe6f9f1f2c66a75d3bed3bf158260db44d6046887b52e679d6e48db6e0f15852e4d133221b6aea21969c3122f3bf78c7fc5337182d02da8bdc74d8320e3d02bdcb864d2edc4284d3bdd1e11c024464b14c31730f0e6e3078f34603271aa57ceebdf351d42f8c999708496944dda73b6ddff1f6b12dbea82b14d951fb9a07db0b88f30db28c76913d7575afb9a6624afe2008776a9b2c8ddd9248fca0f7eb12a759ab360e3c8f1955e10b91dcf5fca47f673dcd80a04e0d2b3a75c645e1940964b4bb9c1a674869cc4669fc9e7852ba66a8442eea9227fb2057f74b1d48575c642a2639db78afa2f7d25b41ee765882c6a26640fd1c3330e8779a7c03b42e353da451f727d76a301f9ecae06a987985530ab82988f21bb7ea26c8bc521bf99a2b4e1c3c53bf475250bd387d9bc653f481d3a9b1e7600db89924c1b0c69b44e3ae694d8af2b27ae3943c9043840b0caf8b1347e9cea42405669baeb2b7a40f7698a5e2d5d396271af48f75c4db736b349e8eb7dc5a33ecacf7daadf28574345fa4a239a5e8359fb2b33dbfdc5b57d836035721b2557dc3e3b63ee12bce9a9be20a9133b7b1aaec93598f5def3467be60c15683ed591caee35101cb78f81ec1402877769aa37cbb98e2e1f2e7b5872d56776b7cf7457b6d81519a4eb0ca59902b6cbd7f451de68093febfd18348db81d66ac5a11059d03224b0f38ddb3e8c7b4670fc0a79daa6284a2161099e7ce107c6fad12f29c52cffb64787b32f4303a2567eb72a6a0785d691045090fcb9833b30a2aaf56fd092f53bda675de0f301f2d8552b5e9479b35501b4eac2d9525cfa3392be1988bb5ffce30b04c7c4ca305e13df0f383534afc75a00c4c5e0496feba017231522d8f6e8c04a5e303bd6eeddfd57b4ff211ba51412392fdb827f53060cc996af53b703ea99059e5b3f4c3619777ad9c6aa2cbf8dead4291e862f24b590b6f8d21f3d1a19c9333b7c78253ffec9270d67d590f906ac88664c75c27fe176d15db17c77c34566c3c81ef75ad2bbb51be00799f5f365317ee029cd70c5d987a94310050c44a7991b48e19f94fe1baab16446032a5bde50db3ffe8ebb5f458f848f925a280d2c951cc2946bad90a8330e6032e12e0dd401d5b22bfb428c0caf32c256ea34e95670eb1fc4fdfaa7b2900e36b4c534a4d41bb9889617524f72fedc65c46c816a0beb0c7365c76cc5f8a12c64b34539cf35dd57d06f218f0667eaae4f8000a961a66c586764aa3cdcc041525d21c6cc64a9d61cdb25afcd9137a4a426c88ed1842398b48f11e667fdacb474fc7d55d9a026d0808cf686949e774181e87b7d4c8dfe2742724510b3600669c5763a3170fe060204498dfd8d7abedef226b0121894979d0a15c3584b9a70d60937485e468773b11e9594c2d24b1420f7a96b7a82777e50a6b2009f5423b5705a57480a263edc2c8b0d7cf0d47c7e88513ddf4201d8615abd5bc8062460f05e5c5acafc484d3591a1acc04b8b639d42165bb9887890c6db20b6779b539419f8232d2a1a29ba936a6024693782f4e8a911db7491b0dca514c2a2d4b90464b0281f28a04b838dd5fcc7ed0a330dc17c98cc1a611b5eb0fd1a778b6f701b74aa536799836f558970e5570b0096432b8fad3432b5f010cc21378973429b25fac444f0f28b6ab8330f35b344d43fee1834d4c77075ba9597a7fcd2d2c1bb3d307163dce48df084cac97f82aa51c251b088dfb76d1d51fbd6020d7cf13f5c282455677ee404abeafe2c58ae0da88eda829571784f3f9b1771b48291d8fd9c25c6f2a7b71535baffb30964174b060fbf481647c2c9057fa763f54e2a01307778e28d250ec3e085cc9d79c1ede28f82cb50f79751bf7ea953c83ed4837c5bdee432bb5e3d329c73d90bffb460053395a63835e1d169282c74d8e9734d6547c29b1fc93ad4aa957b9ccfd9b6df7ae792070523b785a4206c1c8825fb9c4453aa432b9ddc6e002a2b3d3521cd8f28bc08349f5bb57be2eee73dda0c93c51b9dcd33ee27843dbcbe84fefcee19d8ed1d4384610e127cb20ef77cf871e95a54007b50cbe36fa51f75388966630cc4532e01e56fc6b383bd922fbeccb39049180488ed939a0d0e35edc61d5deadac5fb74eb3ee4c7ce5a649231cc2f44acfd13af6d8e9941a311c8cdb58058cdceb05ff3cb2f2ca452cc59e85565c5e57f73d648c0af7398ebecff07dd0c11332cfbee5c6f2079dc8b622de40be779ad811b2ee669dcf521e858d2404da0fae9d7119c09904954736e52303336285810f956a0f09ea3c16b0f8d46410e1f77cd2c51e2267c76ed6a369ae03174b985452d75aa07baad0fdc463f0d0c7eec839e8049757c7039b7eea4d52a4f8e99954afb2c57a704ab4cd678f37b084f101ca5e0d329df6f698029ab6f22654ef794d24c978dda354ca3ac36b05fe3393976376037b3d6bef2690e3475b05cf6129afd79e2d6886302dc970018c99ac775d762cb85845f41ecfc311854946f4fdbe237d3936d85b34f4e8efaff5f3d86287c70e88fb051dcc8be8076f8ca180c237aa75085a822bb69a78f39405c1c58cf82e6fa2ef5116e010f29d77b93e50ad8f0a8ce207a35d108398aa8a78db2cfb303563771fe1156a2e4aee3ee966794205589a0b124509f90a30319844d777fd6e9b20ce41e02f4eb943a4bcc92d14071df0a076278dfb6ba80df16d74de1dcb5df5923e10f1abf7085411d416b3d22512cc2c7fe134cc716df68a4d243e235d14eaa971c6027d9ecfa72c2d0d85ff3ee14e0cb6e1bbe253a869f978388a85c3bb6f960b0fa1b8ee82b28bd44bff9a536d36f452e02b4f8edf34b9f4dceb189d31913bad94293c3ada9301dcd1919a6625544fdbf6ed320d5e6366c8bee7cf1c83782404c453d6f92801c1eef1b027bad45024e5d0c995a0a0301f83d2fcc914d98b37802b182881abb36666025ed424148f070cdc2adc86220ad8b1fb6a36ce3dd676482782c5ab057a97c4e5f7081483ab94dff867d9edf0535c96c09143d6d5a5ca02bfa2825bea39933dffe8bc285dacac7d893ed51825e688b80704d5ddac3708320f9982fe81a20fe7fbbc8f5ba92c8df57dc1ea8a31292ddae38b61dd037d1d20ab0b5c60508303a6727d393fc0af682a6cfc78c9d46ecd28d960c1ecc493567b001e0be500dd9111ea258bb53168718b1061663551b6794f85d80954f4ceca7d6db6506cf772ccf36d1018bdd386df2077480104a3b3077fa9932e0ebc405119b0745b057d7d0e269359d9d3f6329bd72b90263141114e2e27db6723cc7c0416d7ba5350dee2c77cc9e18df3d3f33b110581c5e4b13360f4b5b561eb0ddbb0349cd3a2541c9d4906fa8d7cff1a12d74909241a7f43548ee1bd32a3981b6b940e189f713ead54b5f1023eadbc82c8f2a27cdf0a31ef63c0edab633847d2d7a40f39f1d758b44bae6bc30c846cb4ec66266ee73a9a83798b2f3367c810636baf605534020a27afdebe4e196ad189c65bdb1b72f07eefa177980960f1a00c167d15924bb8aa8d21466268ee3483f9302df72b5b2bba25f74fa894b2fd7fc8c4c927307ed15eeb42a96008ecb4543baec399d5bf914adfd31ac614a2d1e89b71d4748fb3fcff39dda5e02c5c13ac7b6a2d57a721661ffb69d4ac75804e3f62cc980b8af21dc1b97862a74045c51e391eca2f4ea206b55ea93b2b69c3b07e32ef952bd4788afa5b5c4be7eb0c31a6a81ca2493c99130ff60804da6e061166fe59e2ab804370d1ee50d7a022b75d7d564a322c6561c6c28c9acdaf573f242a16917be3cb7662cb6da797aa530c006552c274e35e10e3688cb662df4a4a52e568f49c5b5f6f0f4b8e4af7b7c1ec3751e2560d7c152d9fe5c7f618046dc17845b791018dc1ae80f8d1beeba5cac859cf906ed73812da93f3a71d2b11939cce85aeb99665fcbd21ae77d1214aff47c506919bef0632174769514f1529e7905362f4cd66321e814548f46f34d2db076b6de1993950f033259292656206f535bda859f42ec071a89c371dd0ca404172b7500dc1918d175e3d33a604c795d1fe7c19427b9a89729a0b55c0cc1cef3f0c67adcb96c2477d21a77e5c2a77025f99713699ae16fc28f3175062030645644da78961f32b7c61066d05d7f60d1150acb4beed4f213baf53e2441b2d413806b872aa8eb75e0a74169d01d1e87738d408f5e33a0935dc6b49fea4c7efeb0f9644970aa3fb9659678b93306735f7b874062479e83071fb95a8125b1b3f1d44b2488362a52f054fb766615cb609c448bc2c10803eefc4f9e83cf8f9cf6fee52e3cd328e332e25bda807eb4c81f27369ed416a84fc7e208021f818c44c410570662147602cf86ede7ae53ad22fdc11eaa998ae38c995c2b84510770284994f1e8423076ef5a55db140cd0df8f34f1da8eb2c971b880414c1d3926594722c0d2e0d1406c7b5af844fa94e4a305e2d52f5d86b341a06ecb90ce03013abf744615edf1b10b16b86efd49da3f6f02e693d3f6ff4de58af540a358951c84a5d18e6d46f4c8851782c693fc1dc4ddad029986c785b4d1a8c78b70323194ec8a7fe7417bb56a49b9344d729a83385926515f1e335ad4bd6212fdbc28f5b2ee3563ac498ac0dd899f1cccdf50739415fc6727a67fa5ac53b36c0da80a684c8b0b827816b511ee7f8d032b95d627af8696545b0eda45bec6bcdc10626c98a18e443f60d5ea6820425acddf83a948ef9bec579a1b41d3cc33b5a356157d043c46e8160b3f055487cb8c9a9a21812309a4f05b666e396a16f0f998d58f3e9c9b2a789a0281ea99ad439afd27f713b0f9601b17cc4cc7f4fa2fb33d5073d820321ed8d281701c06c5219fbd42a682a91a3e1e3adea53d7f7f93ef41e661abe1fed033f0b26d6d0aaae4948870ce2bec4f7f40f65318ccee3f9bdbf78d474e89cb3c4b1de4f4bc036d24ba5bd4dbcdf845bc232c9ad965324e7bffb81187030618baf3871c9b2fad9da750e0db9107ef2bc11f00982bcfa7c657fa1b33e95e53bce5b7d8747f8b02adecebb7c166640a72b4b86499ec3623b8b70b082d75f5f86d6807385f2004c872b4da59794228b78f16a09c47171bc7f71e714cdf22a421a11f52a411f77bbaebe34759fa5acc8c545342f43b2b3b7680b807e00f143ee1bbf684466f77a63497b1ac85d95d0a2ae0d01fe613b04f465fbbdf8efddc86dc0296eb4f5597b9dddc91e9c4516c5099b5c8c749f7aa224f8ced0d74f3116ae95747762eab1a6fb9c219b08a5b42359fad8f6ae14d59c33d53beb710fa44ef4d3865710bcd043b7cd05a01b15cfc29f24d0fa39b9d0868e50c4927dcb2275c8daa74e2a3fb2ad16484f625c57788bf0efd8d2d222eb2c8973459318306e85be810c3c1f2b07f68b67a5aefac93127d3528d1511b4d7c48940482ff59c4924de90163207b3d28b46aa46bf5a9f9c6ff16b8737e40eba33f84f481209fa955aa9e3badc164da4ff5941f249343440e1cd2a58e5300017693c73e4adc1d6127b24077c72562607e7da3844791cffbfed49a61423e4c6abedf5c0f34f928f3c72d66ce54b1121c58a266590fdd5e1354794751bb6457afa2cb34600587caede5c8572dd8409affd03d9ac7e7b747de1748d3a6b7651ffab5b7facdb69e17284f901e6b20c8d929bbc806a731f0f0a169e89ab366bf011bbea2c68a3ce25f793e7b9f53b59d1b34d7131f52747abca454b483eb4e334919604c8a2f372dbe4828c185407425b9f3d72a413ccf68b838859775ced7e1c48e19b714316cd7a60f3d7277d30894a4bf7cb888fb5c118ed46c41c2ec6019fb5e00f80726a858d961d76951d76e39172c7962b30258125c7eb3dd3c0583ab755ef99999e38f3287683f896e361abb555461a5c9cd2055bd3aad8021f0f6e012a05be0a48552f9cf2e577dc830b38313d40936526fe731020dba11abc7321b40acd39b84243433c72ea84ccaeafcc2327dd1eb280da4c769a63c9a027373f8f539501c9c7444b906442d5bc8c1940ae8fbaee3423e6fa5c00d2396c9aeaceffa2987d827c0e9acdfcccecff087fa503c881a9a8884ce2735f417b7254a8645725b09bc13a1d9b24f1c0eaab879772f472d165ae9e4eab009d71fe0b15ae1ab5076d14de3f78f9c72813d868a56111e34a88d57e75814cce697b7d0a8c3b2df5a6d0847e619b05f734891434b8022ff9804086a841cff306b766bb0f8f20cdca4bea6d5c30b58e8820307382f87eedfa6333c97c17ced39ec4deb0b22240fe9ec24ff8d14dcce80b82d63be9aad8bea21dda8a19dfc930d61382f0b3b335f27b9eb8de9e290f34e0b76f1262c9b97a282447afb7f91894898e5929e0e21962cf34813009c89db099d111183dcdcf425a23843f59f0e80e2e1787fb603d4101e3c225bf80b183eab0769d92391c72ce950f530e5b942bba40896743a16b8a762e85501744ca1e3f3219bfe86705ab271da8afe1116a3ec3c6071b1ad5dd3d3ea23249b076be32a558a1296d49399943182643ab6e1449c79b313d26b78880bfbbfdf3cde4f6fc424bf45bc02259f82b59657f4c0074bc957d1e607f8f76b9aa3a25ac2ebaf34639deeff0cc8dc3d8cb84d55993006fe1d91dcf4f3cd056f14d0d41dceade4a1fc0bfb8dae35a700a7366ee738277a0572f5818f763482c428f6eb3efb91970913b27b2d8a14ec47c4cc083feb7db4e91c507ae9194977b89e61c6085e4846d24fb09ac2024530026003d8ed9c794d71d24532a551c321dfa21c2234549725548cc7be7d4162f6432d75b8744a2437542ed61c0a10a71ad9503752a2c2ed2379d08d22fd25d2b36ae420da7ad39cbfe18a6c2c92fa1b249a6d0de7c6f1ba14bc2bc53eae17115009e4384433725aa5312efed7016dd5b1e109e4074908ec16d300b00fdab6f48ca61c73712ad0cb967f67762d0f3075ca99d662989cbb2e71a24ec89b10d1101e34038e588e7b0f30aed89285b3497a18197fa2a6c0dac15379f81eb8ebcafbbf82e674e614081384ccfaf0452789351b9b00c13ab0e2ee63f13804607d816bbdbf0109cec1fd58fd69187ed68ba5af312dfe1084929f666ae35c6e92979c0233b94f2c175ae64eafe4b4dfcfd450068c662222f05116b6af97e1f99c55ead93c8b67633e60b37c0ae0276e1fccffd7a6d821e3551e663f6cd10cf7284d99c731e46f23d06cb92c6020df0c91ff0ea7ea5c55ebdaada1a08b0ee9435ecc0d93eb3fc485eb7822ad6f3c11855fdb3635b2723f15085fd60abfbecc4f4d5928bf928d5d3d4765b7ddaced290042e5ab0543b05542509bc84d98e831a99e65d4385506d49646b230912027deeb30851220e474864ada703ff6313417a1a8f36a34a9b39d8ec135235752371f330af51ca048fd829c6b52cc073611e350e291c92a7fb09122e2287f7cd092e338ce3da5c78701a6d41594d34fb4a353303a90d6a7ee50b99d51478a17b1159fceece9e9793c8738f27081044348d1979103d6ff7738bcda2b21b4b37902a04ef854fd77b2889907eb51e801d6678593daf00ed8c1d65ab98754ff0286c0db60db640c24c8f87aeda7eeee922b0d4cbc0b9ffb1669426c49f58e794f641cf22097e7dceeb98fd8c08be1b30c561b7482085312d2db1171407fd63c332be23da6496458bef58748f7dd4d848b5969d67df2a933be60ef1539c2d0eca722b01ce565ed1b8c2cbbf13e5b1f247938eac71d5d18a8690e290495b5a68f9ebef981916e5d54531e8e78542427d9c4c3cf669155424951507f55268c7bdf2e7fd56c02897f5203d5f8100c925366feaf615a4f54246f1d43c24ecde93cbc72dbf255fe8d56d73071959a8bf6af44941f54581f761163a99b9be19f988b682df467e91c9f502a613767eec9b9c39d46830c904919667d95aa67bd12492652fa318cffbce5510475acffb91561b4c06b1ee549e68c7e8a4c22be3986c348ec3793b4351050f8991556e3716c9cf717a34874b05cf149cffdd2491cc1a85356f111ecc69cc553ae1f030f10bd22d56dc49cce8270543c31cd258f0bd59d9964dea2c5f07712b12921f9312a6f0ef10958244ef017e08c511c1b703136cfff641487ba1ee70537495955affd0997e5e5025b9be39a20caa50cf7bbf9bf024c0da5f4336c64b6ad0a94c4f4f01d50fb6ecb6c81eb53f431dbde755f0d93bf2607b6da5ee94219da6bd20f17d91ba254774e4ae1270ee68d99a269d58b45296f76ff4497a52052a64b51b39f970e01ff04abd1b603e827b195d6dea562c629d9e605cfd1ca9c3e69454022ec4c748c6ca3ddb6657d5fbd9fe85640d94bb6180130c022fdf0a0d37803b9356deaf152961997b407cb69463e7d5f5cfe4ef9494eae4a75838aff584810a3ffdb8ec86fd2f3742deb2647902cce15ec8387e0cab861a2e950a60e1db6832409759c228e01ca038296ccba800fc52bcffbad7e4a8ed0b1a35297cf6c96f4964c9b9ee7ecc2267f1c62397f7042c02c30d3db8d508c57a92e4b53b7cf1f1cd1915af013c20a5d7724dad91f1ef0f468e93641f8483006853eb791de08041fe04b20df3b1ec4a5c4140973337214972e8c2f268580ff612060283c823d6cbea0a95f62d2aafb27f597ba6cb0d868a3ff05ed97489eeac41f1a4f807ee3416f27cebfaab96653d769f3f455169ccd75d0803740df15c069657b6601ad0b257d891266bde2da98d622734fae536b1a36c61238c8de8685054fda079d17425417ca186737bece575566a9b605d8cc5ebd6663790905a005b3422959a58ac507c2e3bce5aabe6cf40cacc4479eadb20b6c82ec68add34fec0c8d66bbfb9abf0bf258d89d5edc930a7003ebdd711565322e1f1ad5500cf881fbc518235f2a5f6f7bf18fd66939809687331c17924a6aa8914f8c09c7a3a42ee78c629bd6142de1fe72c4796e89c25412e1116ea76e7021d241905ddb326c9f4980bad57f1d40e730e7c72b40efb0f918de0b240b81be6ff54bf7cf90ba67f33d7940e093b7b6e1fe87879ed6f297ea636f7a7267bdcfdb887d384dfaab1d5663a15603374e7f18c89ef0e5d81948215f91769a6f8ed77bcdeedf10ecb539ecf1cb4467f818feda27755fe9c49834909bebeb8f1c6a4b9a1a2fe60f2da585319f1d63a5295e631961ec98e8e710414c0324335d54ab49977c616c64136f9ad9eff427e3ba1e2df1986d35a4172c18d2ac46a5c61675ff5dfb3cfe4af663cdaa84c4e47b6ec26970c6f6f39c442625b4b5fe12bdb7d68b067b35d48ece30107839e3b2d91812d6f94cf133dcfa31a6977037430ea7f9f02c5e1dc1376fa9810fcfeccf810d9c0aa849e14065e6413d50a50522c047e9a9e05aaecd3a55bfcd88a3d4b7b897059c220d978e583ee96df06dfa283d9b49474da94ec0e4d4b72728e3971ff3ea8eec9dcb8334a9dcb00c90c5faafa86a15806b7ff79829a8fc87b7c4aa10f666095aab081551f9fd33949f7768be0778c2d1a5181ede5df21cdcde5f05e6f11ea460f1999bfefa592fbe5a372217fc79b216e1f9ec70b31d5788550d5b713cd59877690c217ed4dd0c2ca9c8f3352e0f5ee94c662c239acb2d1fc620a02a858e7dd5c9390bb44204012d40acce137f4b55e541b66a23ed722bc9826222382c2142ef3d932aaa1f2bf0726942f46cc838dacc25bba330dde7d3c1410eee8d50a4ba4ac1a403cea65f280995508bfa56c1088d06d17d2951e82cf7f840240fed2c96e26fb9c381b54b027c1ab7ce2e89845aff8eeafe787ae41c327f1a51602ea926231a86cc71f7ad6ac67934f336a5b197ef805ef40d4b9398a89ef52ce183ba42cfcc3f7d42be680dbc0faab4f74e9cad12fe57432febb2f64eba492213ff48b13bf3c3e328327a6d6879abf181f8024960a16c21889a274e93e9c0d66cd5bb550dc635cdd10fc39de0f0ed20f962a5b9d4935eb71acdf86b3f54ac14740363fdc7da510b62ff4bb669751126cd0ee53b79a34df76de2f0dd1bdec3d92163043c76bbd3b409cf6478b2b320044ab6476b2b8b97ef934ed3245503dd6ed3bcea100c0236b17c448517a4792f29feba0a4f94f244178393794172cb6cf2f0f0f607ee37301633ef7a51c2c8c2aa1b9cacc2fa82b7b9b4f84b567a38015e7b39897283641d83c2da33630a8bd7ee96edfe6716f131dd6f20ef32e283af4d0e3dc2578c46fe8581fc39d4f5b1fc93f7a6452c2542eea50c333cdb09023ff9e89738ca31ef78e13dbeaf65b08bdbee00ed5b34ab57cfaac42554d2ba4b76b561fca3cffb1bdf0d20f3ae0d0639f0b6b3297494c7627990bf18088e3170ef07eff1e25021a8bd3f375a5ce6fa059955849470d584b8f0cb0c564cc3ab24f46b61caa40c53b298790ffac643907e7f557d4176afe4bd864aa7e0a18bb66a75e88758f621a412370c7ec9c02df89e91675407ace814663b0ae96e6dc420914af7c700bf813ba84a717d5baf039c445fbaaa3ce066b6b3f7bbe888abe08e2162d3988ab650461e1a00ee1944ae62348b91ee7dbe43882c04e1952b9a2a6b8c1fea5cb513db64cc755b5c1f4bec73458e23b34ae58a7773feee5b8319f02f820fc6808c23fc80cd916a417c4ea5ff1b64c61ea83b0fdb1f705eea169336da352aff076e32743e9101f0a5fe02acdaa14d79f6a51767b5b7df240fef9d7abe41dda8d08435eefebc08c50f468bd036fd5d46f9d9bc8ccffe61a713d0801a34e13e5a35cd593d7ee83ec55ce5feaf940d3664115cf4b550649591c8b7a99e98155dcff2a4e422fce5e176a408f11ee0f12b727e4622e7464c7891c1c16872220b135fa67667781bc282ccd5e0cffea919ad0e14164288d42f3a726cf5e9637780cd27060e8b7adf54c7866f19290be952361206129d4905760f14b8efc72c0d31af3dad882abbcf50c1cfd0aebe012f4c89179affac055bbbb754c596282687282ec30050ef66d3ead3d76cabd3d0094d254a328348f0ecf7cfa07e37cac4d293d6784cf5fb4b90fcc9ed4af83c7bccfe60963bac407e8ae62aabca722c29f47ae2f734eacd975705c5724ea09e65d22fe76b2678d2a04e4d9e89fc05cca56393ea2ea2e6aa287e20283d77b1d439671f362fde10cee259d529021a8e75f961cef3dfb91bf82ee97e6a9876dd609414f7501948406eb36e7484b14da96e3d2246e2372a3d9d0d7761ec8e71f755c87ea12d2baed9c3c1eddcf2fb02472e779bb5eaaa2999b2b9eb43acd123e89288518912f9cdd1996bffc075c6ef142408d63923d2bb3b24a2e22dba4b87443da18f647815d8e8bebf90da410004f4278d9d06c860d8f2878d6d75c0c6863882d20941d2e03d31f3a32bbba7299a95bad910fc0bd5294d5144ae27135d1b0e158b51cac2db3ef4fbb383a5a1793a6456db6607c9ba6ea727241c639fce7888df46a9e0b37d0a688fbf14ff1259c777d1354317a5f2992fb390d56133b99b1190c98c14e4864922a118e398a17099c1ed93beb9795546193cb21075593a1942dbe10f7657a1d1d3ccb3a1ec89fdfdf1f1e82f8ec93897d5bc4b4f4a3c2afc7050c77c55a8ef2dcb935b6518252e0c1687850bb55a654833ef6d46db0330387af6f5decd83a0e0590aad8a2a50414523a460984d43bdbe1be57b891cf1e9a2625658a1b37abb783661bcc39a52c09852b4599cc71c43b00661024f7099e2268e58043319e5d7435b52ea26db570d31211248096388f5d2846f995f42f49bb1303c7d62703d196659d41a0ff01c2037f372dacddc8693aa23ffcf9d39353ca687fe8850f1e9570412428765ca115579fecba1a9ddfca283f8bd29a14dd7b8698e710b07138354229e6898c231cb6db5000e71ef2e67a1f14d64227f732ba5958a0d686987143b0a4b63472c346afb38d9166b91f79731fd482559db0ca4e402078557ba15a429a6e42c4f4f791fd7e20cc3ec18bb8c71e9eb61d22ee8112785af0546d418a8e42e023cb8b09ab4d27b964e3d9227d40d8025e86e4c1c124f928910a304c19954eb7959179e5b57d3df95832c25d5de473f87b298739f8bf7c24c068b1ad314187d566671630fb83d0ae50a45f627bbb768744f6215a17518e5b86a2b5fbf044021ad25e586504c93d4704810a727f14a2a6372ff801ffe81af20fccea2de81a68e2c201fbde25fc6d9bc1b1ac244b5dcad3dd913978527dafdfda0af593e1ab1ab7cdbd8a8a61800e2135d329f755b55af72c30c1339f335bba96186d6c3bdbf7bbe328a3f3d4309da9036885d2ffd69206dac98956df0f783e894a812b25b7411bbf8bc962875b70644d9949960afeb54c98bca0501b83c73b8f29b58fd85f1e87ef955eb18468199d659e528078b7b3106f47aee9e66de874a8b4740b68b2a5c5bf50deefa8bee49a4f3e8b8683e128877e4d67d0de1d3f9516b30b0e7732c449498e285ded01823baa99917fb988521a9f1fbefc2fde97dd417e9dee8c26723a4a176c54292037d073a6ab01bcec292c66890c6db72f4d646d56b42991b1ccdc4c67c448f659e90885c8327d9896d3064203e066e853f5319ea95e8786735ce6b8af51c9e8fe0bb5ec940ed9bfbf1a2de31988bf4cb79eadff27171f01bfd1bb7ee66c57c8ec9192c061b9f295f726310271700124050cd40aec0aed38f656862082c346366a1e5a4958feeb6e87be81bfbf5bf776a6984e17e34a6bb2817189726a2d979132289589c6a0d942a0bfc67a8c7f2b920d35bb939b03e909033f4d974d56d19abcaca086e86ad30a3e7c7c81d42dbe9fa6b3301299f2ff5cdfab10a72a1b998c7ceb6a2463a3c71fe2c905c0b0f515f8e5d1d64821b302492d4b6b026398792d8d440ed7fd9812865a98e44f210483c40afec764240d643a56bf4da0356506bcd36450a0d75c631faee3e9273e45e04c1a28f347f0d5e8302f9eaffc5c7346f6773e916502e400f5e59e98101eb9c5dcca6921b74ba5ec1a485b6932b6f53725eaed384f62da05791772ca71d720a20565b1372288c2486e25a543b2eefaff000308a1ba6dead35e4d7de84f2819fe0ec876298c2705ced5b6e41f87f6c192ec7597b1a2644faa40f2d43edc9337298e51968328a04e226ca6839549e97669fbe0fc957e119ff341067e42365c7b47c178e3ebec6909d65155e062263fa922421bff99ea18659b5a16938f7d48b7275616421dc5f7bdbef92f5330dda9ae433bfb508655169f2e62b597ae003d194b591110fb7ff44765b8bedc1d3811e0a10f2e97b5a29a9b6c7de2756238a024163b6d4767b28ee7a6da5b209d0f3d52bed2714c8d1cd909afbe7c46db126636f5715f7ea3c6ae80cfa012710c4165635ec595dc3c80c8a1a209fc234e2d9beb73c22f420c1a2e2e8075b1d4500d41e5ff40f038360f57cfc4270465abe53784caa9c8f220ae2b10136673894810afa534d6cc61c950373d064892338e4500676da03f3971f02511f2a1428769dc90de72769ab374325341874ad0bd52b260511f0e93b619bf7dc9bc4cd14558fbe8530a558242e4660e078dcd7e4899dda87d49b24befce90efcd4822cd73f1994088c9044f2b4f828cc94bbdc8914a2bfd5b175614367bdfd4f3e38f65c10c954301b58b005f2ea756fef1f275f2f56e862cbeb2578afe5faa9ca1678568d32a301ed0a57d7ae5befe5fbe214b5573fea1767435d6ec5a9d3912b4c7bc7506951aa79b9e96ebd2db9a2c805ebc7267132e42b7ef4710bec94433cc0e9c0f377d52e66669ce47f52620134256db93144b2018c745a778f1a4cd249d94a5c7abcda5f00022ed6c9dc0b6b1951db0adb6d40990f6dd23cb361d33b2270d24cfa6e9e58cac163d0353813614bc5de3eda6a683642d9d166bd76ea0797bf12270e1a42a3b18ae4ef90129d5ae0eb359d55db97fb29c8f7fac997c376ebcf0bad63afa1eacdd9c89c59176b2d55370d7279c59737bacbeea7b360e696d90f3f7f36e5b48eb728c446f9fe54fc477fd0211fbeb2e3283d349ccfa9f9c62e6386b3d4e6003cf2c800f446c2250d7bc06030ae4fbe5dafa4e94115479621b01886a93cd022075b6460a0ff0e2b263e85f3a246744e06fb3588300667d93edc2ad8e1e63ffcab905179fa26da39bc7b591f1f8ee2ee72127eceddcf3b4ad83389830da4adaedfeb2d071df93ef5b6f22c3071774ce3332c1bccf5cd78b0766f9188645e8fb080a8a14bcce2bb50492a08471468336904e3a6ec4f7afa4ed3bc3de086f9cb3823a9f537c1e8cb02f22aa65371c7c3164ddc54a5d6b90293d65c131f9dfa63a7c1a8239fdca21cf0511046ac9fee1f154972382da3612cc8244f901157b39bb2052dcd34eef26cdc279187dd6f071b725474651d373cb5189c64f4230d6210916fb9114deea75355f2d91e00299acb1ec577676bbc2bd1e21f66d7e4b0d97c5cfa4f48bd8eee7a4e439be4ecb277e76c44cf999c81556a454ae32495acfb4a2d90663b7a7fc13f1e4b1d886572d752fdcfbd33146f47ce412291ca8f8c386362830d03d8c3733ce2fa71e6e90483788b8d0aec9c77f80b0e2b60c786b50fe1a26ffcc14dd1cfe58450fe2066803dafa62c63a42b24db711a00c2d96c32bf3e638c6e87df5bf67dd336e0561f493c33fb9b3fb2eee143ecf8ed750bf57de414e7d310930715e16ccc03940ad370fe8c20c470c47740af154ce36d03e9e8b735ab9af1cdfd8f1a591169851612297c562a61ad364f61e47dcab3fd045f0976ec2e36607992acf674790fb09bd9d86987959ec16307fd5bcb9b90db99679925ff9e70b6b8397a57785563aef075e7c1b8c3dac72d324b54b3611befa83471faec68297949e7422ff57e4cf51156419af0d063c52224a30058268a67933643c6eb1e0e97eba853a8ca152c6efa5b2f754b3477473499dc0981ce7ce8f837098f59824db01f31af9ce146c658a82bf4b88a17073f0de954ac06279dc8af1809838982180d92cced5f4ef1fdacd6c1de349b0c9550e5a233685abf917446281474a4b1799d705dcc9b0fc6fc28bd4f06cb9476888933f3a3adcacb66bd440ddde77d7764b1313aa543485393f6f81baad2cc9c5eee4379664e59124e3b6448340ea92517eaeb5a17c4f9c49baa8e4134be5dfd51c06e89e14857d62a3a24f808ded652084ea83fbab91af112de597ffcfa9128e834669d03e0e3d2a132e5d28734eedf621cb72569e616d10f359ff56729ea3cfc066c02a0ec36918b98fab3c2bb3134d6545b61cdef036c7fe897442e407ae55b446ed5d8fb5db08e7732de6fd9d8d93abb66d1a3e4de87a41f9290bb72209acbd31753f90a8201526529f74283073ce86ce5305b191560f140524c02daa727dd60dfd0a25fa0bcf0aad90cec021cef461003dc2029e2b96a1915c7b267dc80ff9c0090d5285ebd079054bf932ed99e17510179910933061c103c364ac786bd3f7a5510e805eca56f1e901ac93761000aa03b90d04e4df040dd5c9bae89bb8ee13bea81f1d9152b9d0a2520524f0588a8b253702a5630e6987fd25921b8aa4fee458742451ace3040fb46bc67f2435eea36ff568b9ccacc16d40812aa1d54b43c7eb47938d6ae05c00998e323b9759ade82cf3787e01ded1e408aea8a2b101949142dab6318ca8af2b998a0dbf4b3b844c745da64c743e8f34c6c243776c0c9a73eaf6bf7716048198f4aaca58baeb6e3b1778c662eacf7b2c387debc5699a53f57c2335cdafdcade9676a0f1ce0277fdf534342e677daa590010fed14f9d5907de8295dbf53c9dab0259507a5be71a49f530748b8744e8b6af58bdb96c0fb5101c5485a91131c209f8f24eaa656c681b83a12e657da08d95654805b961706dbcf4e042af1552c65f33ac4806bb1a28eef1f7a555e6afb9f8e90cec28b875ae72d5643606bed9410c0b93731bc7ea02c18f8f04cb1d1c928aebef46ec8bee9e6f27e781ed4994b25ad3feb3429053325b216fd8133431807c3a618b83f625700f94bf426ee05826f269e729c30e0e429d10402510da686a2a94703e9b398b76e76046193294ae352a630ae20be526361d402262c3e6c86ad8b946451c3d984c4b495338da1764ada21430cde15090f3bc4992b8a47ad2206d330f2a3f61cd2849e0c9f2c6df9dc6e539d362d781825817877ae178acb9d2bc9d6b909de2aaf04019e7b20c28e2486d60e4b5dec1a88aeb09777835193a06793ddbd6a5665fdf0ce5428e35aa70922087b2f80df64ca41c646d6138b7d7b3dfff998ecde3260594ec8c81187a1289d26b9d111d843223022f79520191f9e6158ace0d5c8926e8f52c3e1144d837f764e7fd57e834220a90902f7e0703aba1dae3d7f790f2855d0b4082e3399ead916785cc987fe3faddffce1cff2a16e8d46e27a3799b4191db0b4d0cac7bb0d7e22fd8fb0ae2a0f13febf9c7c93cc6f055104279743fa1f8f698ad0d46a28c4f501d8bb756c1d6624370d22fefd246c546a761122fdde205ed690bb65489c6456c5242081ba2f26754043cdee60326cf95fd9f92d3ca117bc26b024da1d5b1a4ad5890a0b730483ba32a6801114748ffdf7cb371f02a7c5c557ab48140299dbbb860affe6fb6cb6d5c6d8fee9670ff918dfe804f521a6f2da3f29a29e72833afdad9b0e3c84343b1b2b3a451364f5ccc5f8697e9fefffd279b7a5c82158e33bbd323dab5864c6638383a71bb27f0a712a4d2a8cd6115536c6aaa5ca05d239ff918f2df87765bd71151517468325e4277d4432d5754b6587ef3c1463194eb0d41e810ec12ee7faa8af77c66fce9c7419a0f3b72882c75e84635aed2c39fe78a631ba41e21d4a1fe781c8971539ab4532eb7104036b41be59dbd7f60808b0f40c94649fd88eec9909cb5a7b252ce7b8fc0f4d47cbfd2266a11a05a3e3c700fcefb3590e9a56f8598750a9b98abb3c29fcced07cff6cb355405fb357bdf563992e3400181aa5a4e2edfb67552640bcbe5d82693ec318be46c52cec98b70d1ea591b50c2c0866b09a5961503b25ce65e27cf53fff223722bd19381834ee0ecad0b345077e25aba94444a841a4712371d34406c1bf84f1f69e287b18c2e15a23ce1e21f4d7af7b19e4b3ff133dc306f77a7bd556be7c3a717bf953965973dc88045b8a0263605f83e0f703f040fd4e243bd5ec12c309146db74eb1495416e61fe4fea58b6959e8b48801160b4d85ef77fc580fbdbc11fcce15afdc820a2d33041de01af674d421cfbbe3f43bd80c2d6f2da259af065ce8aa22435a164890e22b5e42b1effb41af9a666c0dd7c6a8fd65c2f1e94b6b47cfbdb6f1b3456d2dbf0246c8710d4ff4bb9ef37a54ebc0b443eda381c659727754f73bfb87e1fd22baeb63f59c2b74d66746834c5148c4ee8a85815453379d8a42682641500c82e33c286607c4b87401de44024d8b32e414d3c11fae1e6070b3c05a12bc3468133e32a94240aab5a7ede30e988dbc9a2a75b0c374217950f08e8465feda8eac4882bf2815b0566808780672096740ad72a492648d7fc04af95a1aaf2de666399c2a5556fe8cd7ff0db46cf5f5ceef325f1d51deea57cec7548ac686055be7b8ac814559943f1fb4844f372f83c5234f5d385570e8e29cc1e38f288c7291acf5740660f8560117205e2fc993f11a494d31a4c3446fd19f0923f9719aac13fc88f2b5c3af7ba37fd131e5b55eb609b311925f1ebd42261d9680d5cb85411be997f8e450f6385bdc8c67d986fa120b6e0ae536438b7e3354050c502be89542f1fb6c2505549c5a67794e23320c79863360e44923a69f52eddc55021598797d4a4b8f0c10cbf694cda7fb5d1763a4fad35332fc7b1c3e7fc4a9ed7e571589ec22e4db0b5884dda838c3271a5fe548aea47684ab1f454092a7bf7e4b8590b5853ed8638c845228e4d72226c112d87eadcf23ca0ff63591f8e960b2df28bf2f1f55f5478f7d4cd13b9d5619319d71670c9e81b5a3a992609e80079d9194803d8483f2cacbfd240ea3d4d304c218618d09a52fbbec2c0fd776f86a0bca78ee708c36d53d3942bfee596b898c9ba442e35abd73ed5b44a989dea9676846e142e0aa78565d382960e94e939fbb9c09edb7e8cad69b072358e1b307975d2a7b3fdbc1a2cb85d93c5f65be5b0d74fc8d2571cf6f522189174578c8084d2771e0254bfbef8d840d567fbe6aa62cdd3c7b170644bc52d6f83414bea53001afe0cd2bbe7e370eaea01f11b31f6d25e8b68f06e6f4c193c6131d24252d48906ea4da4e4794be21f9401151aed5bf08d7fdad261796ace7268169ab2af20c706775bd4ae8a5fa2bc0ae5b3b6da28b91ea105168be770f3b8785261143f2910b59f799897062a435d9de2e8ea25e8d12252dc8cb8d85ccd6b5c9d0944c59f8481848df2e8c42deed229abce3f5afdf6e964f90078f39649dd3dadae18212e5a87a2d799d5d331ab63576b5df8c70a14d0ba39d5f75f124ea33eb992003423c13b212e3d03672a90f55990786655f270928825c131f58a513f1d97fc40233403f3191778a839027f623c327ff0c2ec2969eaa5b28211fe9ae1d46bf04785e07ecb6f8cb43676cd5a1442fded0193a1c03bee0bd6f141b6ee86884a785d309198124dabf8c344067ef396d66da2c1db618d405477cb3191125c6f2eef6765f7b897cc02022e8dd6802822ed6db016ff9c30e7632d49ede82605efbe3c21b0b246ae39563cbe11cd1e96576013d1e1e874aa7522b20b4dc09b2038f3a4abc3ad79069be8b6ebc3e3f338848df5c0415874ae5afe111f851e48974c5b075bd3a60b0058b39fb407ffef430bb9d17d6ac15b6f5277cda1be8dc2d9e88fb40db4581f8101d540f02f30cd3a95528f7d8dcb7c03ed42983cba12bbb0b757a324a763bcaabff5af0d06d435458cf02130ab65c9691c7b494e9a493b32f5b60a20bc9650a9793726c860b53b08fa1c0e733b1684851d38a995297fa050f8fa9e435efef5aa8b3e205605b1f6df43852278ae8c778ee09e800e7546cb3d6039e5b1ec2e15e1130b57a5bc90c2555d1d552cbeb32fc785b516d660f59569c0bf23c234c5ffdf1a4daa0fa811cd663c3522dd98925437533c719520cfe19444458126a72859fd1910abb5b0124e6c3be983c9bd23746b19eedb5582b2339bf9413cfae7b4b4bb8973524162d95f4868bf4bb6dd8307fac5eb6b492ca733d49133a7b8ebeafb47d49b3126394194d271c9a56c83c825fdea97bb5b551968ee77566363e20d9a0eb2c37b4d28ec3758a480a44abc6b65d80b788c1776d8aa8f041decf42f086fec2d409702b3fa2861be9101ea4c6cb912391986983b4787be58ba2acdd6c30198babcf72413750861235032a893651d6be7a0682647aa172849daea1fb79dcabbbfd94b3151a05d3b06bcddaa20a5d7049c16bf23899b5c2ea57b140f11f29307602e64e3749ac0415a975d8ec8679943555a05c2fc5380864f4e2b9dc382ab3b6c2c578fccab59ec76c8eed658cd03f709e24d19d3e93d7917f4c51c11cbdedd122fe5ea8c07856e6057aff7823c14239a916388a20ca4f021341e73aa5eee7537422e2ffacbdc9e7c87cdbce5e276514b6b83fdb0b59a50f27949e72c5c069d870c530ecf6b8cb5d115716139c7414d4f8a8c3c248c8ae7b61b48fe78c32adfc4b47161b79b84ea2d47dc9b76bc03990ed28bd97dacc0df66482578ddade455ba28fdb43aad8681cfe7d0c032f1ef106f364a6434c5565373256d92afd8349d88fb824103b748aca39cfa575b914fa773e6f0637673683a35a0d7c239b6ccd3f82e0dd2444b5168f19725dc6d14b3e43d145436dbba32b9ce9ddf2a4294da491e60c8d155acec4963a3a43d26ed24b59ee05d394d347122b43f6ae4482635a9a0323806a62278bdf32cd56c550439f4bee08b14ca27ef37fd594848bdd39ed7c14876420b356aa94def8f57948bbf6182a9677b2817baf4a07dcb25bb8b5eb9f8fa2c210f6cb6aa8323c096aabf27474dc3d7bb5c2dedb370e005a17d4d6ebda480cf643913da0f704f8d3e93653db086a354e6b5f8a1509455608502f14fb16fc367a1fdc04f8bc58afae326b4e582740e75fb89da5adf4103ab7027ef226938e81a2c5858624298e781d20f401aeecea83ba7e98f0d815916e6f4417a79eb07d2b7415c227e3332764f8a6c56721fd797ed12fc1adb236f75d456d42ee9c46b47ea5d9a494bc4f56b8b0ecc7f5caf73dc6d3f8b1da6fa53e1cefba28f51b5dd4c1ccae16e172a1c191a1053cd1840cad0070ad813d1dd21c890e83648469e2910139f075911a3ad48a6797ae999c4d6ab16ba2a7fa9f0a55d8856f1b750baf3f8f32441836c455b568938d3b145d77be1c3186639fa3aa5cf63ce4a42a065d8a21d1ef766cb026490771123ba3dbef1ec01e5ec6395ecc7972a4088ebe8c605438f040c5209e78cbfd5ad0717627dc9b2bfc98cc915fec481ef8de40bc95760aec2398900d58dd64466d194eda01a2e87269b52355694e36d4fc0d05890d9a55c371dce852806ec4b4a7a6062be3415653597f085c8ddbce908b52d6ade1f87ba867f4ac946b991ac379060ba95e30bb28fce541348c64b1f2b9e2b558886e16b2bde592a30542f62a9d0cdd377c1bdc94998f10b9a6d8ac42fb82ff6d309b9c4119fe3838a71dd4a8e5efc5944f28e5ee38e43afcc54ea9ba836ee68c9ee240dcb2ac394d885195c309e7b04f68ae840b3da273e254f11c68781ec01cf7717c7eeed4728043841a084467bf3d8beb6a00b4614676fc877fe69c65ebf9c829683b9122ca456950ea08d94f30b3fc47660bf39f5e2225e85405dc32830a53351d96816513415db3db7a0ed14240255ae237f22a6e133b3993d39f2e325ae03f4a4c5701798c0147f1a1aede7e45dcdb7875b10aefd9403ca9417652d4f8419a85944fa49a01e1a52582f37701c2de9d9ec27c46a6d57a56c12eeb75a6c91758dea423f7cc7a5636ecf5ca8f4c175eb47102f14b6d25e617df1c311354d0eb504008a16256eba55d157afe511bb3b9a7da388f3d6fa2f1bd0a11f4074f4592e2fd8a8027b7c8fd8dd91e3707e456179df09f716caca347f3cc29e9397bd3e6a4f23624f4efed903aa4e8228cd0157491b06128776a6d53fc76a18bb96efb3c8df2bfd179123527d0e961cbe6428cfe7119a44a89d882dc43e00d2528b32bbe0845eee3167f51b91701c7780f429654b67bf76d9a11fb2a99d0b7b51c4d305c65c7fdfd1de72d7e422e0d07b951beb048a3c179deb01c6b984bdc30b7cdc262818947b1b407a0ece37a0d8d15f274baff53d8f462eb3679d67166eea32fc7977de564cdfee10f727cc05849c3476026d41e13ca68a6b980ab917529d9a32c01e3b1010c2be2c1f8cdbc446a68767bd3d36ccb4c01fe924f64c0bf2550154286daeaedeedf09d2d7ae0691fe79afac2a1507a5820f54c5377c11b01bd7717d5d0389250e0de684ec6755273e5077f9f8db62ffa31f018e7e9d9f9821173f7e26763eb660116e36a2d8827108fee2c78b6f413a97e3c71e0053a4dbc63196905783a170dfa39150d272690c75e6183572de057ebe662d699e2702352f269cd8971da1dd692ad5dbc631fd718b48e9778d7644659188abfe482edf16b06fdda3f88dd15106f2f521422f9287d758fd0852aba529cce7daf84bd5ed6ec0fece753f6eb12debd0a61a7658a71db839c590ae3302919890168919fc74ed326e5ab4fefb57b22846c78457b2be9f3da344b3397383a447f1fac264b59e6eea733f0a80de37504025e613ec412fa0e02afa6cc93fe3d7aa9635e5b796010358a59d599233595580d6cb38c4ee9bf1a12593b07fe54aaa6b6e8b1d78cb6fafabb3652d41686fcc3b8d2f431503ec08af49ef3314dc275dbb1a024210b300bc7161409dd54f8866436ecbd602295779ca0bf69a1f0f980f072fb5e20ccf2461e2c56b9e9a479188522f9c1a5d93ef4af612012425934727be134b5d02f6993544de220af704238abd194d94c1588301776c4ac7abce4cc9dc77411e7c1e8c0887ac36dfb0a68bd49eab6259f817adba859a781bff9d9855c77a178abe2a92e215d5e90e726be9cc67d5297bcbaaf49eece454698a1bf1f01455a38c9af558cc3f1f87952115abb47f260f37a08e3c9c411b65cac15e96f18ff875d19a8942a1bd3e6248adddc1c50016557dce52e556c7d5d4465ca46c22dc9ae148640e1cd02bb95e483fb27ec57ac5a7b127dcb3287358a897ef00a3550ce36307deb30739b97842129b3e9517ee214e0549622f0a1feb0eb72f21e091048925920a52c70d70b2a42b4c3fb23085598bdde07a4511f849637e282c8ac28603c1a5d5c72cafb3959e72678ba3a4c2692777ab100aa92454b72ec1a66764adcf962ba0c1a2b6557e3823e7d28503d3e4c8505184dbd031a121cf80d3de3414487dfb77b001af983822acbd7a723d27099b6cdad89fbe94a7880169ae546af669e6593d3841cca4db085e71c12766a2b1b5d45c8d999dbf2bcfc5226ee1f3307f1e84d81735a26c6e3054ca672789ed5e098bcf65440f3580404240cf42aba6856fb54f0c9e8e5e9a7fd38c0be71ab30c6bfeb0c45efe54983106dfacfaad8c50073ce934971b8d7894588c3d2eb956e9dd3c01c2e25ef6e7d0612c9393ae76f0f3391ac8989683052455d43de2c977cf788bb6cd1d5b3153cb797eb552640baaa885ef5cbfb88acd00d0cb536c9f9c914d9973a0d7b783c6103208af9abb7c67472c9fa0111398c4cc813f925e73683038f4978b73f75951fb7c665970fe5470afa8640efe06ad4ce612714d6007251470b77a0360a586326343e580136bde3f11d7712be078a29f1a53f2d923aca944fe2b37d3426465694f01d29f0ae3854ebbf649efa61961ebb64782dc55248f3bd7895d0f058a31c712ef796c8852d2f65e81b2db15ef5125ad9530b2eedb1dba119b85d967ac4e389d820fa85690fb7c3e96380cebe80c81b9941ba7d11bc2b7542b68a2e7c0e321e436849a899beafe6e53eebe54e2f7bd577bdea6645b75b4276fc940cf37d5f0e390d11a186ffc02292d2e400cca4f342e6e932764730027ccc2029f776d84ec3c45fd0782b800e7515ead1a1c3faf6dd7ce76469e429edccb4b4fd7d9388c45ebcc4afc6f4b848a5d19506504ad10761d81c785567354648d59b334d1e543c86e35c6831d7b8c421423eee076a16b61802812ee955440bfa39ee2127da3e36e0c130da649714c259b78120858074c9141644ce37bad1665fc034cfe94a98d590c9a08b1d0dfcb536406f51df9a28120d9effe3fe52f9cc5e491d8c1ec291907ac671bcd5d8f616451280be7a2020d604ac1020f56687b2a06eac3fcfa83baaf6310ebd49074993dfaadf1145a8c48757c4427339c631c7919eeb689d68aeb90558fb7cfca54ccd024d2f70f4d3bfca709fb59c79c453c3d973094a34e8ec5e3817e03d1f14241b7c8b022eb77ff15432f00d526e8de658bbc99198d5d4550e72ae016abe8a4537dfc6d31b93af471f982586e463ac7135e1188b387d31275d63f7ba838ddbc169b6e6c19cf8dc4b593af0edfd4cecc748bd6c66204917e59ddce7142758ce111cd9930c9f2b4ca9d14dd3ba608fe3db37edb16548cee278b21e06de365804ff538df8201222bdf50ea8827ed56b00964cfdadb831a0a6b0a30fc9f4d518de9a1e928a83ae4ebf957f4ce75833397df30785b88e29e1c56d16140c030a0eba3f64173660be67f4af9fe0274ec5d033e939b7858f0a1ab5c048f4d6ebeb83e21926eebe62ff0e7fd10c839219159020b024e32fbdd1a081fafc537971e98d74ff42a94b95ce1d23f213377c83cf203838f6e7551c0afc85a865f3b610cfc7f00c1dedc5524394ee3cd3cd4c0cce824dbbbba2bef3765e0c19bce8bcc1d47c86fd8a0db43faecd7ea5c80c0766ca99bf3de43f937bc930eaee37e6020982d62b1074f8f3a8e2fbe4de02a1c33c4a3c115386ad1d787e8c2c52a0e61414f411dcec9ec5d9603518d955347319a47c1837a5b9b284057087f2c297cd070d423c1bafbfff9bf9bf3e546cd541318d0d4842da3e0efc7ebb5fcb19a347b0d01d7a8b87d85024a71e676881db12d7a62cfba2931c8e803e37ad55eefb7ba86e5b3140ae2ac36b777b7688e444ca40ddc87a2d7eb7627ff5c9c61d4244dd6d188a84c677114a0d3d2bf10799f1230553c06738994152cb24b8c36ea8485d26c90719dc58649b16203ab2fc8f8cc44d94179d537665d3b0ba0084d11a045d4121af5a33e40db4de34cba1215ad55df3286ee042048b192456cae8881fd169601796891193d7219a301ff395a2730dc99719fc228efe7d7e7af42cd6c7867b5ef45538fcafa3ea2168ab1981fd4bb686de646fc8ac143a61527700dd5698fec318223a0b9284c4a8af3da539d84f8abdfa2428b13dca7b318e69d8a6379fcae986b9b3fb107392a5eceee0778798d15b0d11aa790bf08efa1e67543ea660ae8445cfcccd2b7b94164a838e564c456a96de8d76f3a0a86f16877d30e8d821dd553c5a76159afc6605799bbd77fa67560f3852160e7b2104dbd325c1602e852ddd45c2602399da8e77c027a645e836b70db12d390ca777a60dfb7e798b50637947f43b436c362dc376d97d9b99191727683ca0fdb9dc2ef821d84f4c4d97d5099689a6978fa02182ab3f0c9e0bf7eba8e6eddde233949a5a457f2187684d83903ec0a7d2382def8ff0999152a094f8d5961b819690cb9346fdbcbe1f3f23f2c3914a2a12791e1a45984075cb8a33aa51ffe829fab59bd74802efb9e29399ee3f718c17e870ea0535d5d0acfc3a71bf5f1e9d2a7f457d25b2c90e117efe01b74999dea9b0c8379cecb80634edae2aca66a0009059fa33d45cd352e6b36567619547e31273996bdff2f23ae911013def1d410725d8a540a58b04416cdab98aa32e50410ae4cdb6a30a9058a55a60eda715b1b8aff9a166fe8b88e0138f9f379fd2ac295912c7ab804ea6b40a0b059710de4dc23eb9966ffec64417db48237db809ede7ff1b1bfca9fa7dacdf67fecfd6ea63819f22e7274d3b45aa69ba904e9cb7ae4d01a6181e7bb9a0b0d7fac1844871a846ef13bad14e7a32151b31f5543ef8ab238117d7c437792f1c088fcb28c94e1f4b93c1d3e1ff0e74ffe59f45a894954ce111856868a383633c1870b4e39eb19ff83efa3abcb7881a4135d04a1a435d3cd7c689de1081d71b4ddc7cdcbacdc8b39dd551990afb1707ef13e0652e5adf5114d345ab4d63d224c02dc3e814e9bda516f8126d6ab4a29607a002230fdccbb7f1b616597e8046667092857a3676b1d1d8e274623a8deaf44849e905a52e748c9dc471d0f0b9497f614bbec48f140d6c053165ec792b04ccfcc45cd86dcee6fc99c498e28c5bd9222effaec5083cbe7ed818b9b9ede28e8bd9dfe47f208dcad6f5d72b7b6125b12238c345694360d0b458ed81bb05da9b82fba8d09e28f806968af6f9f6401d4a17cae7d57dadd8b2de3392918023cb7d95f2cb131bd1f20d416b70ab80278bbbe4f755e31404edc3a06fe034b06fb801c54cfe8730e434aea313c62a5e3983fe037d5ce0019e5c5e2a8d064a8615fd345e8f184588ce685d00f864621b5f3463cf127d91e338f810715a5200e28f3bc96e6754848b00dd2a3a0e924a9668fd43fc466e489c5d6791a0220c1a1be371ef8c725b92d73ba02c8a1ceae4aebe18548874de28bcde1a1744e1ad1e3f5451686b6a3d2737fbc447b9c0a2b024b1d83b8876780631ff01e0a1ec01e8fe5f6373e81a0e2d11706400f32fa71da63b12947582be9e8be0dfe571532238a50e9ccae569088935e5fc36129bd7d26cb9877bd74eda1ae05758cbb1a475eaf0dd251686da7f999be5c6899fa8d7e99d65c0107e070101583463fb42c0abc3b7df9b47c1b350ebb7882fa96430814fd113108b6888e96b9404cf1a58efb1d9aeb1d1d913c131e8184114339380f3865b9b40794ac9dc5e8ab832d0881d7048cb43d0a4c0b26654aabce987198e0a3c0349503884013f2fc1623b2fd93e4744d1f29a0d6d6a47057c8e8e7c915f9d91e4436e062c4a70adfde2c31720e4d7d4632cea1701dda4d0dfc813a1840e217f15a561df1dd24c6304a95c2d7a940db838cdca3458c495fd595c19ae12dae73ce52bd1c94860106ab01a1558ecd602fb641ef14b301c38c42effcf6fbb808514a0bd28c1509edb0ee62256d7cb048da591f689ecbb5d19d3783214906cc886e16e9ef4695f1d736df61ee8af910625d6b760d8a696f6e247fe72872c47ae86d7cc2450083caafc8726b8ac8594817fbdb970c30220acd9e0486c2d348db688754cc7789f59eccd2682b84c7e8044d74888cc3b98fa2583f39c05b089193299d14b6907c5c420e0b5a1ec5a31ea53a5784c8372ec3320ea8ad4b3d4dbea58b21d038d96a217165b01958acf24024c8f2fd748f535daad57658b56806741a037291fd2d6058206f8ce4fb1f969eb5c4abc2597577ef57896436a9e84c9be08c171505547524bd7322323b885a1f64df2f4d111ba44a85b3d0befaa944c3017f83b2ae17329b9bb821641cf30b21011dba2233c6dd349215469c69a2fc2accdc545a8f4ac6a5ae3faf81dfbf43e7a1bc7cec1709ab4e6e81575f29eefc98e46352dc0701a1e5058c527b50a076eaa93d199fdf4fb444c0bbfac74319379ddfd69cda4c80cb0379e701b8b898197713a12fff3c09f62dcb6b742354ac2c022468ec2a0a6fcdb86d969dc77076c51af22721968075a5087ae77564ee75f129c918d44fafd636c4be21ec34d202fb2d6b401b6deb95e8bc3da2deb207efb938e5ef57f102b6e7d3d693068f2f8eba9d685694b863794d6439f5be87f51dc274f7bf1703966bdc0027674746ce009e44fb9dbb4a07646ef8bd582c9ce4d84575a8bb6d4d981caf898607d82a9bc616c0b7f28660e6ce0f653ab68d1f36e20efda4beb32fcaa38455890b4b3796404a63cc510cdba0e6b6c53ce37f36866483857f25285d4de6b097d36fd14b18aea1ae2bbdc07e87b2fd372cd25449748eaa2182a3966904e76d64ed025ea6194966d0bc6d6fae01f2f2c3a1b66fb71bfdfef5f5b2bbc52e10f919791393110474aef8ae0ee7ab27625fd3c83add63da1fc5fa629a07f47097fc17a97107bd301f32cb97eba3aeb639bf6a46aef10625b51644a1458187dfdf87a2043713e9c51585391634a5b6be3322851cca1b05ed1d893e065c3539f83ac1f64e23f781de501d71cff8c990f5bf2134c821fed71e5501aa2ec3d2178387358152d4d3f24996f1187857d908e076d9868ced9514e2600292ab4a95fdfe8eb434dedc285544031dabe5ecd75ab06985f7034b0170d84378b14494ac62e0b6463ce974f2beab633c2c3b16f22d9a8dd23b8e4e84b71c838a587dae801dac0cab13eed3e616f02e948e2c2ebab6b47fef1bb7dd55081d500bd053f4eba26011247d066b1b50dfdf23f9350a18417df3f57f74c6a413c49c80c6a95595799c5884bc50d4bdfa7d6ca2bbc99b407eb1e6c979e7de23e40c03fe1934b06660df8f1d4860421ce4e2afc59c6189510c2c604fde6e510830e0640ba56a63722c224c7c6c6010d028eef2b27014cd8694af67b4de4bb7cfaace52f449a3e962c07e3632f7851793df6f005bfc8ccb6c882a8d33218bedf91a3bd882549ceeb1945ea05b74d8f61a1e0572b0c87b1dc1e7508e5cd7de5248c779cf7f793d68d46aa9352f19aa6290fc1eab8c8293d2c4fdcd0bd593f00080c91722808e5da8b11935ed6d77b2671b1bb05c31ff7b62fe0d73e7f955eea8325f28fc5eb9d1690fea6b8ed6c98024dd6f7b0865bbeb553c9916f546a465ac9e18de1d84546dc231ebf3020f8681c9c75fcba200fd17ccf0a069893b4b5e295cff74fa30bdeae4bb147ed3edd3a77710f13b8ad5314c88aebf3873e3a3ba727bddd91dfe91537f7ed32bb546c926f9eed66e2814bcbcb6dbc1f07bdf12a6e693e7d01b9e1335275eaad7883a1ac8fdb6f4826833bd872db067b2eb4bbbbc0525e8eb3e341011550207eff5ed6ef0b12cc9c495d4c75b06b920356875104612d555bd4fb204a771ec4fd9420206f9a421bd921d235c167398a69091a6ed1048c5032ebf8d4f669aab558687fc384d54a9dd388c4d0cd0fded7ba177aff8a615076991459d3ce556553605ee2f174900ad6ede524f0db0f09499e018596b5e384ddf68d31904d2addc5acb970e725b8163acf6837999af2e7626bee6275a8d18922749e5aa76d6c0f025fd2056bee9e24b02bc4d1be18c44f58179bb87f3cdf444a9d9d3d09275f114ea136ea8ddf54f35c352e118eee7ca48718db11023deb4dc936533e8ee0b2ad4ff0ebcc6dafe5e4641906ef8f6fa35db0b90bcbd8717ce385023273c59068f4dbbb54568150be09aa6332cae33d95de427c91a8051d6bfcaf7b12d0f59a036fe7db1a271925cc7d9f8a37935a93fe3bca2d7b7d6d7b2f22bfa98aad2fe119c53d03c601ed8c7792d2a8cae285b15720caff941aca79ac6d24056c8f2e4e1265b3b3eaccf71fc0bb800c00951a2cfdf6baef4abcb632ae0cf7eecabcc1a195a0fde72e3e8219b604e314fd3f8d408c4637b2763f194be29dbe07cbacc0bd0256923b65988e8656feb8cbd96fa789a0008aa0c89c6859b8fd59493ffae4101484b4f32324f8fb6ff3cd68be8f314538876ab2c197fcf6f033a5de0597c154198ffc98114ffd70e61330cc16bd9d633c8711a2ed33b9e1c353e95a9e5254bda08d3cc59d80ecc875437f81251d77af037146431b1a98188a3c3ccb026c38450c92e7d6286003fa81b0ff56a3455b2e6f7583ccb82a06749764a9b0b583977c8ecf76087ae01fdafcedcc178d40e602dfd32f596fa8512a1cf0b445e947c69ad471822f3c903c8d6b4db7c7f7d11714c51937331761c0b75d0fbe13edcf075d4db73db3829888f606f9ed844ab4b2c59996733bc4f69496301d71faa75f65c625d1217de7cf55f5182076df39ce86f04801f4ccbc956be071a22e25b0a9732e0b7186f85c2ca2896536bb057ca342a6dc184e173bfc5e23de0857fc709b54634cd46d657df668c68b06af14d9cef517bc1ff7d19d4156484c8260e8fc6b8efd6e66c4fe3c1209a90e98dbb559db42f167da9f846110642e4c2d4dea77468863aa8205f6ce8f26161e1929401cabf4d53ccd33c81574712eae02db34e9671ad06c4cf2853dcd33812d66dd421d86a6c2faab69e99c2456c47e333cbaf04c2fbe8e3df53289b411a34ce6436092ed379831a50148a6602363c7a885f4276bace5f31407c01d43f324027e4e15589e6686a56c2eb39eac7d4e43169a03a06ef42c1bdb3faa5c99eae859f5f65e256ff9609815e0792c32bf5b27e4b67fda974404b5e9cabcb4048ba9db2a52f5cce66a938646455668d1c980f02370a8fe2a8e90cd88729e652cd458af6c3cf894a0376861a63345e57167b3703ebece7f229675dff2e084c91ddc7b8573231f381fbbe09837fb898a26ea9fdb7edde30c655ccc2e1a5ed1bec0bb83ff0bd6f2d00e4593268a6be3ea9a070df713495d7c8922815cfb6245e436e01b298f5ac3ed640b4857595452714b7c4eaaa3e0ba0933423fc3997b2fb6750566a36ac234f4f6a776062cbf487ca4896e4bb871411ee60b948d6e83f57c09c8f21c82418bb429c8d4cf6902c8a5ac2d341be21dab48a1d6b7dbfbe6957cf2ff2a900f009b63c64ac57cd9b82fe5e4b144805db36bef7a92b1239752e291773c7fca34695bd9a9c77c77a32eb35948c519091438ca065852365f3bb2c0348e7d694c5328c38cd2f8d852cac217d006d2c1dcba0db6a0ee31a1854a3da080f7dd3fd072baaa7cc2c27e2c75e095f2ba12bc58ff775330f744f7e9e582d90880bc113c92a555060df59ef863773d1bb0cfc697c36fcf595612c294a10917173f17f5d847cf280a04f8b98667a4b8f5ba8631b5884927c2041824d49528ee4299bd9d48fb387125660a3d03b048bb2e642a331bdda47e72565fc923723a9c02790618ab22a35df81f56d8bc5b2892b3af5d7105a0410f4818e88eb3f059bbc743b20eaed65e25be659d4341b0b30f13cc49b1481da7a00c8f0892763921c87c45eb70dffa7e4d0286a9f5d9b0941e5ca627ab7155c99264b59039a91073ed18865e03b2549e9b6922b2e96ba0a2ae49b220716d67faf17c889139cea25885535669ab2967350c308c59e64fcb0bc06d6073a3369742c5cfe7b2db94d661347e62209ae123a6cabf53bcf92798c162e768bedcd19c70ea54903f7d6b3d39c96805a05a74c319eaf56625a58c93f7a4613dfd3cb45d417228f123978cddeda909d17b7268528351607cd290c288bfe6a17a861063f9ec8e16fd000e6c183759ada56e6e129f2e05ea368b9e1937037d901c6c2a0f8e0e682eb0a02888eba6a00d8c0b8d04d6a7e61f4c9f60d86c0e7d8ecaf4a143fa65b37ea985ad21d9b91a1011336937af2f1cccca5f4daf3efc51c7ab9dc4c9624f4671d3f4e9f12940afdc222222ca0c818dc83f9263416e13427fb3fe6cb9cea84e954ec52f1a60f3ccbaf6883720f2344330d56eb1979fc00b3a659982a843241a93fadadcec44ba0d07d4a8e38b81cbcf96f76af82377d1cbda51c86248b7d28c681d343228311b36ff4c6edd64c4354726d3849fbd78327705cfac7386e31a9110171817485c6e4799cf8282650c4e3c06a800b71f2aaa3f3028a2d0fb3d48a29d235fd6f4af58895bf5b5e49897ff7d0e0d46878a407749cecfd87b511cc24cec19a05943dbfde7e2933a93e395baab08ce19662d5501221a361a821dd54ccf61d46f8a49f89c5794054718e10ac77daec4029e3ccd2c209195af05be86d9e72db30e8aa9e910a5b54c8ece3058b927180bb40fab1bef06fa5e8ad3eac9f34eb13cb0435a959d430955eabf5e1946a561905c589b1f68c969ccfcf4b0506168c33211688a77a32a8472db2d3066dce8628e532709d6abf6849a9296d76e6ec519dd07f2baaee2d1e7d27535fac960f71849fed8675b0d626539cf0f583be759c3ce2d21e04792f92a23f5e0d0def4acf5556ceb4d4b4da47d6f40e7b2257b80f80da44331d669e3458799021093af3df3ea06033b720a763ea8448b5c0b51bb1f544bdff9dd7137f86f4a0a5e33760822d1c726a3c211ff75f3a1fec9ca695acb001caa29b9fb375d09de562b87d71c6c6033b98568a55a4b1ffd4c7c6ec9257d57f8869e83afe60fc45a0588473218bb621db52c7077ea44ce1105055ab9c63c2d6f8d7d9c2a70a0e1df1419932c5a8688627c3df27b98c3823b7c295874b52f59a9954d8f472255270775fe320b47b2254992537e83ca86d0e4fcc8ef91365011c651cf7353c74a355abd53ee288f5af851099d4702b068b6a502af0941acd25ae1c1314700a2f76827d698439a29c5c1eaa4d3b41df56feae2deff2211444112ea6548e36e1e977ba941d18a999006e2ff7dc6c83b8ce2704e50922a5af59c39453aaecbe01b6aece684b01d7ca6df2310e2f45ad09a793afc4806acb4d00db90cd45b466ec9a80330f488b78093ae2f0657b292b2538689160e20dcb06e85033c5d0c7779fbf584ac2cf3b6a731162343cc4e0c48c3063bede1c17d9aa929872cd04274fd3db7b6b3da05ffd8e66cc151cca303d9fb01132b2272366387b05224e989b3d35716147f1746905bc7aee950f34648b44495ed32f85292d6ee6b9544e5e543b65e1bcc75b1b778affd9adc95b6ee12582fa70057d75aa74712c6100d19d6b83df949df087dee1a46cc1a2efaae3c55462be2ed0aaa69c660499573c4d67474f07b155e24db7802ab7b1996e4d48eedca7a770c101ba83b52da4427c8c7861587848a9f7be41f561481f90a276fa0c6f1db47699805e310e211efd96a32baa6b9ab864c6d22f37d3980ee94c5da84514a900d1b1787638d8f149547c4ef9acde727c0094cd12151db5b172b0998bc6c4adf1e17c2ae25e68ed79dc6c88ada66e6f0fe010359610c47555967c90cec96274dfc771bb20fa7fe62a8f2f33e854a8474041cc79acf52dc499222cf0c541fa4f404fcd2886ca385d06855a964455d8df34f2796abb368eafbd95a4def39528d4f59c0db5e02ac959bd9b0da80f7121986c48b87b209b86e7421ca11318ebed2fdc8a384da1999dc26956a6766d1e29e8123df57eb23434f18a5885ce626b9bef2f91bf9be0ae18db8a93b64555122680ca0714e9557990ed62c9f09acf5f9f15329fbcfdc806fb2a393f692a7e7c8792ffaf96bcbdb75fdfaf9d65bca0f10340f9fe6179b55e68eac97c70c2a6afae7f5d86be74cb1dff28b0f05874a1caffeb8b9ac06a6a03d7bede674800d9e19aaacdf58674f086876451d8036b8b4890437af08286636ad75d6ebda029c101204593f3dd218ab8351c6bb50da1e59d3278a1defaab67405760b986fff916ee7460418bff5d566c00b666fba39ed2a06daec7da1cc13432a35cc0498bb81ef0e3294e6170f316096fe7632a01dd63aaca742ac7cfbb868aad2ffb140595e0425903f606e8045256c6b721476198df79f878c61a28386d2955a7681cd688d3aa1823c75cb8ffb761b6fa0be88a478ce59441017ec95f6ef9d2ed1d1d1c7b28e05203dc558383cc51cdd6c6b0414f654368806124b692eb332026455c1e3b7ebc4675a7295f030d1a141e4e1bc6133f220c8b6c46874b0839cb051070799c34593bf8aad0971d6911fd6ef475d94f9f9d502981dad0066aba0e8ada38ad2e85e53da3863c5e13becccfc996afa06975eb77144afa1ddfaefe8f2d9c79bf6e41573d4e9c3ac633fe32150c2f729c3d43141d19d82c3a70ddb4e4ea0697ec65b6c7e3a5ed4e889183cf5e74ad71b5b60904d05ba855011b59b1f8ebe101b23d1e0e0fa5f22ba8eeaf65ed5e688173d22ed44328e83ec6bb91d087ff986f9a09b8afed7725b22c232c6e7eb4539ffac066ea7c8044f6c82bd13b654d18c016452dd06ee9f812828e4b5147536fd35696b0b76855870de65038862d8b118912a49b4560490664a37e0da3bd3fc46d8354a6eb445b03e845b15eec385f6efd73c021d47d4af8325b59ab818d9ea6449e80e0e0845b98d313adefd343cb434293fec009617e551143ae2215fa72ed1c79fad0a2651a72a6dfbeea640a90de8ecc9242a85b671029d3189a51e147711024dd6bc542efac75ff8bd3bce7c93c4e4731a218a6266bbfdd4a250c1e61779935334717157063eb565629c1b7924ce9ea87ec53c6adb415143b00ede64b564a0db5dcf2df482839648d8160f6f0b5f601f73de629fa42d5fa8be959bcf0f6ecaf53fb97bea9d438e94afbe481f837c3fd19d43b92d18c092bc2dfa2c91074d16a24f5902e67191f78a1b928aa979eec175624b631f39ef0e5318b673e88b66dda1f8033fd73de5c314b61b77cee23b77c4a2155fedbde15dc954a099e909c81fb71b1b9cd59a25183e81bb06d7a18ca90e4d9382d7f9d008230e7f8f3ec634a0b6712c25a0518db2dadde083104f0e81c8e827f826bc49499b979b84d13ab587a350a8de35c16f7973bd9145a74c1c98910678c74941bc5bcdd334bf8c26ed8c1d90262815edaaf98531ba12428c82871d05a4da7c126f96a0b947ae2b0bbfb66746a1982c9551f90507d6301f0b646454e25b98f2ddb33c1a14864ceb9af3844e6eaf9917a18c89e8329535f72313dc883c2bcbf600fd09677291da8dcec1be67984b03c381ec9de790f191adbff4486ad2634bc0bd9345f019804de8b33890049a26fe2262b612f10fda48c245045c86a9b8cb828df118044527b91714af1d42a315794e63df5764d86331c1b9c8806976fc81cc8440bebc9daddbe5e1e70fc518220ed30f77699bbc6c483f2a758fa24f209082529a76212d26821215293798fba71002d8bfd1d5f17b072c8039b70a5f118c1cc9d07000844559416f173484e0169cacd7e921e00228f748d89d73784b0c235dab9779867f035cf91bf4fb76557942bc8a2d65f04f2d913933d53b1392a0f7ab5078fac9aae7d057efc6bb00bd14d502ea6f0bb752863cb6327423afba2ed542619dd37e7ed35d1fea921ac7e2e4c1a9c7f19e910fe8e0020602edae94666eb80065a7b9b28916c22581cf7126c4b13f3289b6c8d7ec22a6a3b75572d360a179bf97c0be845d68bed223269bc9b3d1d972e2ed2917f6fa380808985f3339403e26de8c57faf734a6c2cdc96e29ad4630d2b7d918bfa0278a63fc25abf7a310a66059e61e02a9ff2235111bc86733a49f5d7f1e0656e304296233e1380025e4538b5b827b45751302b3005788bcbbcade614e0b6993755e0ddda86b340fd443276ade2bd5e21a397e40a0a0e503e121f836c1d22cbc81947f450b9b69d0aaf04acf95eefce08a52f55ac88f52f6268613535fb7c89878c72f17529e998228c337ad685f32e34c394334c4718006de08c9b720da44205ea2c711d73a3a45787ce074737f5c1c450da7c043edcb82002947655b8c53fa737811ecba7ff0dad6cf014143ebf4210241760c92b8da96b910af7a2750228fbff98ff3f02c443846d42b5f3887a99be3f9af36f89d770f4c1b8f1563d76c0fa2ad59299e594fd09694da6051d622f613628abe47f4ec4bbb72a2de82853c5cc327de58a720536afc8fec5d3c2618b4e04fe68c891692a000e45530500d1f4469d9bdcf358805dc5f71f325731913a3f4225ea8c9716c5b8de7881bcf46f8db6bf8359fb6b6ba24601c0f9bd495223286aaef403d3c9462b1ba716646ab53692a6e62611300016ca00f7014099d5ad329cef677eba12d076bb70b45cd94f617222cc2769fafba282f075178769d258f1361f876198177de093d0f7ce29dee23f1317fe783fdb1c2199a8d34121f030b38eb41912ac7c83ba2a4f16dc281d877463072c97519266507c83c2061c820b9ec79e4a34d0f7950856c03bf425e712c5fe59ec83223e88ea10a2e69db8cb358b2612f52e6da802043a7ac7a2fb1c13dceec98d14e9495be2b41d6db302d68e92e587e57fa0f1ed6bd5bc2e4913b10335d30a069f8ea30d0455df11e8abc6711d3f7a5571cf14f7a1ef2d0e29f245e05a548bd84bb59a3bda07510c44d957a62e91412fc7bb537a0343d65e3c3e31b6432411d2b2571dcce90c2835af30435a1eca3f164c9ecdb4cb122dee623215ee3a22f94908af4bdd6ffb574096b6ffbffaca8e83657c37a4c11d8be2bd289e7dd656f2787c467122459b10a23d7cbef5349cc3f3cadee673962c3904500c110086a80259fd06f4d0d7637d74b46b3a34d5ed49b0332535ae83c1e47f60690d0a1cf32f71a69711f8b286550f9af40860f155a693ad747316eee27259d6717c6f1aec3dbc4708097cfc43937772bd03d95a482e8a747ca5d055fc706daa782c30f09a5885193c0e401af380a16a76e529aa1f9f8815032cfc0a805da85ec87eb90db0f808a532dd527aca5aff7a5b8692417b43a4a0763c90f4d7297445c2f1a59f564895dc9c7572383feecc8663507d5de8899acc4f590d0f6b83c9c0fa94d082703b94ed31b49bc5c2d1be276771fd067d1a2fd6feb79326190b9f3bbd02d27fae8c582b6264ae41c4f2759331966d5f8e34d05446b8b2fd8421cae94d6a72fdf0c4832616671fc83c56e2b92997feb2db9304ac7a653d202822d1d81f943605e6a2446bc6a4c7cca0deb5565d60800427760864969b3cc615059e1a83be54c9214b6d50de7e1162b7f0951e06ba2d9e78efaf862deba22432de29ccc15daf00f0a853606fd651da47348a793d5ffa7acf220c7f3a2033252c04425ac0e6f5a78d68ff9d3df7611d3c4fc5133dc10bd520543172386c6d7aa675f0965b2912c76739cdbc31e49aca685a3ffe558928fd4f8845be02ab4ebda14566adcf84bb12cdcc30670b0524652890bf4c2ce9f0304bed28d44e261df9791f239f2fb3d4e81ebd305f470f87a8f3986837de8715ab821423886e312c6d1e284e2c6065c08175ef1110497ef3d508f7c31634dccd6280f7e5dd9e111cc8ad8cf43651af4af04ed5fc02ce32e4d3f7ba4f0362a6c7fb7f3cf19f1ee4961464237718d22d24743008808c327f65a0c7be9897f60090f24b4bfb1ec06c0d74012e226058d40d77d931afddebb5f79f00ab18401822b10c07a6ad5978468d4c702b3f8ad84d3ba8ae9fb59fea05fd8babb6e2dfa2615d21dd388c5eeb6a14a56771a44641adec929e0b64515b4caed0acb384db83f935f070bb2e11d843d230c14e794de87bd0aa7707c871dec0d8d52d8f655cef7a937f53caee7c5cc295beeced49a36aa99514968c80bae39f6ecd54c549b1c0b1a7f44cb0792be163e3ecf90f75a9591d7a2f50e12dfb6d4c1ebf74442d420b069a140fe7f4eda3c5d19d26285acf7262b62afb356369417f9b2c083b26629412fdc19e6cb9ec6866dfd7055cd6398818def0a41b89377c2f6b06be487eadfd77fcb7c52c242dd4101cc528770dc3905159f5be2512f6d2a37239fecfae72a1b90d70d2b9b5e9e9b28cb64c80d35e0de3b571242c4813d6f06f3e027928283405463141af308b6468950c35fb11f61b3570849e4eb33ddb06114182936a378dcf9e615cc96c9f34c63526de62f714d89fbcbac0ad1c0b41883e2de2cf0ce41291a92d3553e79e0fa5c8e0f967dc717ab85367575eac7dce87baeeecdcd727397ed13e16ee174bff27a8bfb418ab19a90d2bb9a97eb5d5deb1d21c6d7029727fd0c409bc82c82609e473d53bb86d5ec998019566c6f58bad638fad7824b12a625904873a34dae81ac2fe48c254f7bdb152609279b29352aebb327aca56e07447547fe6d848b876879c5fa276fb2c1cc5469a4f2d46c2e2c84113c316351016ca6b71dbec93f898073f3c3e47d9f8024e92d792be059e86461be13bbd535c357854c7da14b3263afe22a45f06f05541b74e750d052d359543bcbfb45a7c2fa9fd295b22fa759ac8cb94d2429963084d1ed1e7a9d87967291cb84c83a81d74cfd73edbbd9ad7365ae35d442aea1339c2d595bb781a4d7961ec3a08827285064a1ba7b5309271f18b386a706c8c582a9275c46c4b2c8496001bbbbfae58f461971fe1a77ef00764d9f6561a77ed25afb60c0a02548dee37e31f2e02179745a5b0eda5d94aba6db2a8b93189eed17b1362eace17308a84f57f4b15215e10eaeaa1767de80e9f3e277dc797817bfbe9cdbf2bded232be1bd248bbe0a1ea5f9b0f2a2caf13712315973c3186c64503584664ef92ece98e3a0a51b06ba18ededa7e2a4c6fb69dc7fb2bfb9f32b67b5dbc7533d21b3964efd556852a281bd693ef0245f56ac291c42f98cd5aafaf5292144a85e2cf608fd7533b9ae5255afc839ebb4b5d3f86a36e6596605bb510bc00c1fb181fa015f2920fadfa53977d89f0bd954bd675343151020e8fcf0bfca6bd4e8956c05e5fcf26ae9f774399e202de4e1ee07ad39751029dc6cf72571550315fb22e03eb45ae6e2a3c5aa8e5f9a6dcee2dac20d7bfb2f1de3091b8910a938a0de7ccf9d94c11df3f690a1b8a87812610fe02cb1149ea96fb456bffb0a353ee3abd5268b34ebb5f24eb7e445d133f8889116a6b54f95b76164addb1cce5c3fdb17c2d58ca8fcae26819e0d4fea8089088d158f2db75e1db0eb8f75fcfbed6e00e09c1bfb987c2fb9bbf85062131d0579fb358902b43210ac98f17da3103d88a27516f6ba6d3e9dc6d5340c05bf7e1f9c17be5b35db259d73a8c78e69cf347f5aa05dd9cf5540499fee9ce76e2540850ee0ff3f0fc220863b54868302bc51faaeef0024f12f2c9b23bab632e1881faf71cd530ebfb6a015e5eebbd704d949bf80f0971eaae036bdb8d64f65d2b25af4c5bdf001cb527c2703661d20ff98bf29bfc36836683e7a3e3d0135e07d99fc6ec75d9e7bbdb4d61816c60286cacf176387c888bb6919ba8f24dbacdba655e9d545c132ef6291c042d4de16c43f90c6be2316eaee7d0ac88618985859a9ad087afc194318b777af7d9f7b5aabd639e8496380264e8981d72267935ac2e744fd8faa93da03ad3ea1c8a6aacbfc2b1a4494604c57b02a1a71d207b53af00d4b84dc8fd453b14c10c27137d71bb96e683d202266d28ca996aec04a8ece61152c44ce8b2b9bb07a0b563e9a8bdd5443cf1713e930aaa0f20f659f6c0c1f51421547902cec3dc2fd431071257e6f6e245ecbcf31b938ba5e4f85df6ad83aaa132b1d059850b8b0317e18488a91b622d0c841df603909508d3e8dc567fb632156373aca188135468a2cbce7eeb9f52392bf72451c75086a8a0ca377cfb33c5e2f3e9a9214e91a68172c1dfab3886cc70b33c187c80fcba00afe81b4ad2e9de2c8d6bd06fcf1c5642569d6372afa95b1dac753e9dc73abd9ceedfce3c2986c173407eae0d78cd4bcd0b158f603bb423aca4ace42a073db6d9657ed255fd925738da671404c6f927768d0063c58fa9f8c921f743e4d906c00df8a7d9ab6a103d1dcb7abc266eba8baf2f52ed5ebcd2a7b461709485cbd00a2e017b479e739b2c89f041f162758d6b87a9d1827b10a0c1dcd0e9260ffdfbfdc95b635bd2a64132ee2c24acad7a26c01c22c76cf4591e44c61664abc0ede41ec7cd4fc31f4cb86469b00b4efd96c4d107089882448304c4b4a7cee93a1cf4b2b47eddab327d5571520b1b4106b8ff5e0fbe84c8835a8f01913d2d0bb53362c5bc5d8519ef11799903a4dd2b3a4a03b18885321ef27057c22addff24adfa8db59aa152dcb73494df95e2bd5ee627c46b1f987e44e5b427e26572e26201a06ce1cc5411657ef5e05c3a150e16893e22073abbba97e23fa4e027f2a8635f3fd3fcfcfe366e6668cdb305618b92d9c9d616cbe77cae28d3c05d8d2a5daa0512c03e1d830e5918d03a45bba9ffab8829cf7ebaf86a6f6fbde19580f4c4995f5eb655e1e0dad2780b4ebb4a6c4a97a5b807390f055819fbd661cb68620e935396e337177380bf89f2a228c8a0cda51f973f2c3b388592480018d9e1d62e46ad781fce99b06c22822401f884bd50f83ac03dfd90d99fa6c15000439d2a70f3d0bf27e83d64bc1c1bec0f394f09d9f0d39fc4c0e70be4bcc0b019bdaecae8606be122f0a2966fa080f0cbc6e3756f2c17372a897a99127717ec9e65953123c0fb10828deeaf461ea9de1697501a6d25bbacbfb3eee18552d511bbcb6611109277dd1d5e7b344ea721cd89b0fabef865504dae80ffe2258a2915df80bdcb5fb666cc15977c930732cdda6d4bb38f48345b227b286d61f5c924b3de96827435e9474b947679c994e01a80ff4b2c6c72fc08bbc75ec3e6a982a4a11e69019645a27a7bebf6b1d12e823fc227f2c304014e6f59f56a65f003e920bdfc917718cc70952e4d2ca19b5edfe7b05fa15e0ab406c1e71869846a99e03624c244e829edfcfa984593605ef38f22ce7d2996b0e555858a970966717ffe9d77392cea92d2b6963de7f700861ab3ee378e05c71019fc4d7de5180ef97691252a5794e51236865a834931a5cfdf37ed5082b9d788e4a2084c46360de8e047b123ccc12cbd0f3a61b703515333cef7165996b90593d1b7e0bf3c33dcdb047b17a3326780cc1fed6f6d3aea24665a256998f20dddd11b562beb114106f1d706678a147f614d318a3d3fccf5a9d73a7b6c0dfb78aa7bee24a072f6745b03b2efd292ce30fe606886852021b7bbbe78094a07e17c5df241e30cff96739d6e1fe18bee3fecb15100be45f1aa064e6e264da0cd67c8fcef6c82c03a83b911cb519c603d66092fbbc92a1319f8e51d894c3972227eb3ab4676ef482fc5ecae0464a0d1ffaa5c306aec38e6fdb19d00ecc237943a4228443c21a1858316d962ed0a724d73430c648687d8056c53d5f06ddb2593484b13efa91feedd84fdc5083ac8432bbc6818de27d800e14b7f2b72dfa1ba730b65bd249aa3b12fde0959a8c842d33eee3776dbc6c43e1228435708a463e9d7c994155b5d0f101fe14ef5864f1ba72fa2e653772701ea02c081175f2a1168da5015089a0ed532fc856ac185f90036e5a986519952f8fe56e1f3d29288b49ad05d5d91d01874ce41f4a253b862c3837ed6656f0eff566bd6ff91c96c458bd8a84282e630f0eaafa14566ac404ca516a7e8d2423fe1845973ba32f5c6b4bc83b168f800627e9e5c7655f0934cf28e17b32aa850b1321c1ecfff6711938259acc0abccddbdab18938b869caab4d864cf7486515e103d043a2b9ccb1f692b84ee072624dbd52bbd5fea4b83d159c89947acd3de6b073f23f27ec61ff034922ebd31fa6e859ec1ab57a9ff5e3bcd9be0959634327070bfb758284fe1db8be0dce415cdf36157894a0dbf8ccf06ffd58025bc3c8839fdf3d39de4043e820d558788737b0d019e4058ec0d817426f07fc91381c70ce3b8271c7beb6b157153bc90917ae2167bc1160cc6928e3a919993d52fdf2a35c86e21800a7311c700d6552c5b8b797b559303f899334aa2a1da2d9a95e4804b6468b4b9e6a75edee88ed48c15c6033ad5f7b72267deb1b952cd82e1249d0adcd223a8e627a00189c7c317ec3f9e9bb7de1a28a11474a0aeecf02b7b2e31b72546edfa8b68d3dd8e7bda55796cdb8e6d31724f5cb185b8597be52392a848cad5341d1726f93ab42de3d4b1f0d7d32afb85eb95ef0f2e8787d97e2322ae89a48fded15a666a1b975c661f8b5f3a69fcc4a6392d307b4d8daad901ba42f72ff30a6fafc23798f5714d28e2b9460ab7cf8568472534ef8635bdcdf1a8a28965b6d56a2b21283c25fbed006c61b2242a7b7f1d4c1325e0424e599262304fb826cbb8691fe8b708665b3e135c52ddb7567c738473c6b2c63c37d2bb7425e2d43d16db2c7727e14af29543263510104ce69b817a44b401dc816567749573df136989642c0c804c25e7c6baf5666894f10f2f18eba3625f5323788c7fa8f5b5643b91f8b766a773d50a1081730ca0e970418bd2c9a97098bab8afc6d5d91d057d8f069d99085b326ec1ca520f1295eb7b34727f40eedde55ea0e3de6d2114aac358e36a4681164151053afdb7e58edad3bcc7e45072ce5807c6a311204be0b7887b9bb82ab1ce450df3f22af95f43e6efc33f4efa98d1ab32a0d176c2d617fa6d5bf03ffaeeeca7585ba5174f4d57b971bf99bc4062e057a4358f4136051fe772eedc0fc167ada3583927d76d9b783b89409bc43b00d75e05d03f79228b5ee1ae735c8ca05ecae2b8b70c87a37ae61b04eeb0a7c69c50adecdbba04a94426e2bca9d726af1c707b408b3cc3a7f8714e1bcc525497480ed8367cbfffa7a00ca5893cc5ad00ef46dcfcc551f95fc992c73807127548e69257925b70c1599edf247d4d863024cc497821f8e26af1caa0962c90e43161ed37162a83bd6c3fda8aa106bb11ae76c6923b7f07b8ae351eccaf1e2e23e0fdcc370b7d6d8a6cff17f38bb95fe79430a4d4f51d1df429f9783b315f03d2b90ce65d598bb78284c387855d7e8ad106582e2f5d974d6fd4f09263e81a4953103ce3164399e104f742ee1f03ef5461397611dc3baa81d79501b2297a1c5f3a4faf6ec773970b81afc39e9bc44ab5212e9fd84b4b44fb6a002f93bf6e221806af4e33ed0b0d46db6437ab88130dd94e13ceb4d3d71f9002357669d8ebedf732099483afcf544963e65daf87958660bfa703178ba382e5025fc2fe7a2d05a046ef7d8ab6a20c5dfacce28f0b74bf064bb296a7f392de7c48a0fe99050a3a2d65c6336e559c75eb70ad7f6654f385b8075aed2c43608274422685ce28b88e859f94624c046ecf6738a63b45409337a76ed72f386025fe389211dc919f466066d62cffb7e5e1a7a5034fed37e8d57d9ab152daad27d35a3e2a6bd9c6548ace4bf0227ae5d7e865d24e3545e9a91d6065330ffa82b40626459f2f79aa5d435c34c0fcc47d49d777affbe58a3ef1de4d9310abba4f217e8bb88825bf5b43c514c1eb51e135baac4f64ca61da511aef2c147f8d4c6dbad30bf95c3e931a55def9cff5cfcb3f0cc246d8e3e44a40010ab47881faef2e8592464148d9a4d5a6968b25b8dbcc649896bd0aea136298d96a19124a4327c428e67ffdb0d5ffe20d3beac4e99febe5ce67781ecc5c54476f9b1c4bb60c87202f3adc1ff85c7d0dbc158cfb781b13f1da002531ffe77134c75e00c7ddf75d8ebbf61cabb0e0a779e8db6066863b20a377167124edf894c63241173f4b70b5fd19b77eefb4415fc82136b89320e11a888a1caac2449fa419acee59b4a8cd3522aecbb165fea6f77a11bba909275cdc3b6f403f0a4c7ac84e40869116dda8e291f6412c57ed43a31d48fa73204dfdc3baaf0d93b0a29077d4e47babbbac6b3403b490b8e1b9b7e37d391b468e331c42ae5fe8412b72815e95f10226b54b31a6863022190a014ea25fa6eb279a15a6c46ec470e3443b288cbbd03b7b6e8744d85e47031cf1d3f06bf311ee2f44dd41225e357d2a5de14584cded815e38bc4dcc6bc87fbb9c60b3685f9cdcc890610ee29816aa1a9108c388ba7b97dc174080ff34dfa3ace507864e5b96df3ee496dfd14972b2b6d6bdd15e12b16ddf8cd67bd3fb4305b2605e44d15f71c70bcf5d0bb0657a28528b5fc613e722f97cdcbfbe7ab44a8c8a45faa5c90ff51043b6dbf94cb60ce0495b87be89c114ef7b9ab5869fc9649227829f70100d96583150f18328f6aafaff03493de54d8e464b06698abed228cdf0278016a34bfb29f97f56e1db8cf1fb5e9d2e8a1cf233a325e752a20b24d1cb0d20aa6247130a9e283f8eb1b7e1de122b28c31eac413e84466b904bbcbd17706cfdaa199ec082b8ac108ff311ae81c87f9823e1b92a2e8089239ffa4646d58e5839a72ba6255a37123e1f722384517793a1f8d8531380345dc46cf8ae980a9c1caa7df3e85d00796f4e310797a39235e0e966e2e1df599b540f5cae9ab6fbe8ccb9728665af059b867aa999a35a6ba675e811c4ae9ebf0f68accaad791cb6ef6a47d820b56aabbde87165a2ed003313e6be321f175cee05c1bafd799929208402b04c33d474a55a88a1e5968d43d649b672e9e4b85c9c57fd5bb4468f87a73d9fd927884d6dac359a222f60fe1abf474e5ff2e91cf8642f6aad4c3507ec60d2070eb33227043c3c74086685413906f388365e5c4ec426111804296f7890ee640dcfff7151849aa300e6610705fa385c02e45c3bfb9b9e29ff01e443634e4b7a589609e5ce2ebbb365c432f14172fc7016393a6880336b5ccfccea94869a4265a882037b7d47d6e530e916d3ab66db29214168ca6d783d3b35a0aee0bc39f52b4c2c87b385e2010990d02424f9f4d022711c39596141dda91fed373b6fc8c8e4af04ce077bd03599de06b4f30889dfa2745e090618c4f449964d412eabe35691df6fb5d23fb2e3ef00b5c3adaa521537af336ab05f8e6a9425494ba8568c66671b2c3c44cbba7ff3a915db1581a0b062fd88824eb3419fece1323f9265c774107e86690f16ca3f41c60505cd580edd6fe79b70682bc219d76e4ce09c16a5112a256e6cfd8849e6b98a0d676279655b559838e2caeccc8f68c87887adc111aba9b43018bc813c2ec2c45ad9b6a59edb12cbcd958ef2c8d0f3faa079193361c4f3894024b6fcba8df3474b5e44b7431fa21efa6c1292fbd53ce8bbc498da9f72dc21aebafadc8c2d580036c3c4bc9fc0b2bae17c179fed6aedb31335c7325846647597561bd48b1f796dd973547bd56d2103fcd3bce3d848a27e4912f93d4c5d4d016138932567936ca30f631d956d808e2bf2579e71ada644d5adf34f3c1641c16ac98f3df807fda6fe834a09f24701d324430ada6e186bec8e6b54592028c4855f2d31c52f99d2456c80afed1b655bb3e89828333447548d2ce13b525607ba792a6eaef857b003f2b58084558873aa1128113bb7412f02da4d5cb76d402fc55296248fa0e5b23e2f45c75d84ccccc437257a1d19cae3cf1e25a99a5ed9e1b59adec796a3df34f640bde425c55ba0b889b5e036a0a651a2004fb3740aa66fdfe80f33d593568783710b56acf5083a157d67f54d0c28da877cf774675de524f410eafa15caa21fb5aa925f0517f6a4050f13b8355c1021651f94a950e82bb7cadfcc2b62044f2dcad7e9419bd28c5a9660a4d283e8c8535b6945d25cd256b2ee312d7060d9e59fefe086e0ae07888d7cd13ec8b60f0dc338817258ba94d985d87d6c0326a3f79bcb3267cd9348535a5ec7e16c6a45179a68e7cdafca3155a1193769ce65b4a577ef7e5a0bd2b146c9a684a9e7d5f353c5a5bf87c8b071797e63197e4154234bbdf4298bf469214dedf43c530074ea09f4349ff9fb54b2cbd3eab621975a81ca6fceb78bcc072b9fdfd5dd1978403ad71038026b74da5c4f1753fc6d6d349d06c8769757b31285b9e908df039b194a5105e9f1f98f5aa55c3e29646bc06c9b01dd48fd30335abb64855005b438a6bb0f21bede0a005ff9b7a743c68e2bc87314b605086913ff5f076f0ddf5ccf2a7dda2bcb841bf635fe615c88a09956f1ffc88a79fcbf9cb3c9af91a26cbf292d0f956b5088721693cfd1d5b2a0d5692490e4adc31f89de63fad4b0e8abdbad78cdffe4affcbf7823349d761cd711d056033706111f3ee2efb1710350fde91340dc44899b81fb3a5253f0860c3afba070e6b8310b26df59f69b0a25cb9de0572527ef597ed0a3b57d15b2dc13cd6b13690895c3058a5b3dadb9fc459584e5117fb5c99cfb0c278ef6b0e68165526df0fef353f5b819445537fff492b004d1520757bdfba5ef7651c4c4ec20441497e9b232bd056a39395dca70ac2c1d479cc042f9889dc18c8ac20f5644d858396376a372ade15e7348453f50a87b2f0d46e89c728d8d2e40b8b384f67010126e0e1b9bdeb0005380d87b632be2da4ca84f89724168de0c19a8c31941ef7d3bc4d98ab7386f1ed0b3a874de23841c85dc69cce70de932ff5b174f2087515f4f6c6715180a2e75342bff58e168afd3cb08892e0e5423fb94e1c9fa666c537c2e1dc88a96db0a8ab4aa735a4ea269c714fd8e9e1704717234a6f04a6bac2b97d979ab575c4d18d3aaa867d345a13524c797f9d45d50b235edc1284f1171834d3a2d7916ce2a25f626363fe788cc3935aea1efb00504d1f685f6873bc6cee47468242a31145308e1ba3daf932f857e27632518da1fbbc427278600468adbed0d390c690ed832077cdc60a957d5cb081d9f3d123e1cbcdb7c1f18f8b33c6d6ad089ea6fd9c7030839ee7608a4e8d821d525e50d05bff1cbb35d94a2618e62406bfee78a9ef43ef223a10108ded1d32bc9c358272df73faf1531d6541b434db25ff4625cc78143da22973c4275a25a40c6e559e60e280eb0d7881cd417b539d02cb8cdd50838855e8f7e5f9f22dcb40f20d492038dd13e422272812f658a6926962a9b447c67c14f58c81f78dbc15849efad29f3e46e30cbfc6188bd207585fe050c4983d42f57a5f41334360030bea0bc1eb355918ed394613b6bc00701cf0223391006c9ac8286136e378335c938812459d4441377fae456d9d42d9aaa7531caa89ab2abcbb1c92e2966ddd258bcfc15c000f6b25c26c109140403dea16bf0fd9a7ff1c08c8820ab6b2f98bbdb6da10107670d965c2c816e9a145aa680753431394292cb56f874665348115059c56938d6d5c2d6d977df11c1650f581f99e9002c19ba1135c30e9273eea7c3ff0f238e126cfb92ed9e3bbb6bb58728042c9e123e77d41c60e1ca5410306f014a6fc98e50a08c64780acc1fba49717c24ee96778ca3c8480718727e7c36e32889a934954897ab7cb3e8d8f1cbb0a506a25c7761fb5fd420ee9810c6736265e4786930bc2145e0704b855d40fc886e5eab6851db42eae1acf42d9f17feddeed40aec46c2acf541bc1754131eddbe95fedc315a90deac57ca9647a867a3f0a162f98f5f813f46a365c55b39c26495e53776b302385a3922f513740012341add8bc60640ddbb9a3655d5cf9fdfc756fd27b6d5b8b0ad3864c867b351ba8f2e9e4922fd9d74c5c9f56c98b40287267265f3827916e8990b444736c0294d9188a7f447a786d3274f0a7640e744e80d02c044227ecfde3d724b8836db23e0797d33335f0eb4e3a0fd240ef9fe2b0fef7d50071e2a3c3a742acc87e48ac416a399a0c6f5cc23316c6c2e73b476f9f4ee312158e4a82b211cf718189765db0436e15477d04cdb7503c731286a5219117613397f083bd350333591675f415ad6eb60c7cabcfc38131a963f905390d96ceb97632a1842b2f4a8133aebf4f2a89cef08feca50796ecb3b3a3f1b8118bc8eab4eb7c8ad20d7947e667bd675a5493a111dd3b4c6e8478a06cc773f4b887f923cfd51fa2833c6f058a00d7a4ea28bf70e452f21a7a9814c5e6415e6ce0bd51997823ffeb29e69a5ac7930b88dbe5aadef4172db8109b8a4f048a72d21428159bd5e32ccb67d9717e177cb3c9ae5d900a8044e2d4c9d9952a0a4163490d6d8a28923a2100acc6826dafd4575e0a8328f4bfe6060af0d9f4ea9aa751a6cfcc9e9ab3df921c7bee50bc7a363b29131968af35d991f7b719144e753277bafc7b0ba3ceac4879a2ac79b7a1ccc9291333a0287914f87978b6394133ce508f412209b835e277ed48fb0ddf904c65fdd639abd0485bc5cf3849b23624110097e06eff72ed1cfcc56d4e6b7e802b448f01a13cf1b674bbf3d2dc1e5b8c240861d2e4b1c757f9b2287cbec1283cd57e4920a68a7fb5f2e291f553f4b5b3d4fab46be72d6073a419244185deb475456dbaed79504b139f8d60d6cba355f585ef58947b40bf014020fb202229de0b970b9e61e62949edce0108d3fbeb2a0d4bb73cf9d85282546a0c8a3d1f5eef9efec0f917c6aa7068f5916fde4eb5c2830979ebe1a7048d0437c8d32055719acc2b9239cb19883a33783b24527498a8cd07c6005c6459e36fe8c0f386f708b7cc0be11a879a5494f01f3aee9b116a0b2b898bf3f4f55a466e2f588087cc25fd39e9fdb203cd5c4fb5be350897dea89f4ccb5c12793125a1e4a5a8110f63ae6293f94c23abb8943ea2ec522b9f61480ce08fc9fa2ef4482330d0459eb449e6e74b4bacd1cfd6ef08d9a3220a89740c0f610521a9673ebe43cc49f4352fa906f1452465506e10c02649b99a02d1eb57ab38d291a6483750d2b3cc72d25efa6b8deab8ed10fe38be8dc28c124bccf0497fe6a295d198e41eb1667b8ca2b9681f424187236664937da5b51e717e2e6480554050023d75c09dca98384a7aee130f9dd2689f7c14b69ca00d2cdcfa46371c4522a6ca2d836abd94b732efacb8d001bdc95b6326b96d436f054a1feffaf9a536bd48ef90490c49bce6ed2f7f0408b4b869c7be2d3235db0c08a94c7361bc7a69228bbefdfb3510d15acd64341cc7ca280f6eb1746bec009603e9448de56ab1a6ccb9130514ac05c7b47890a6ef4703bcd14d0cbad280116e3fcce2ca9f4da4fed3dc70d04254cfe8c60b450f238ca4c207538a8497c089da21c9f216fc80cea45a57bec52ea604fd870b84a04a523086fa8b8846077db601c58324583d02c0b57587272f1dedb67e54938bc10b450d24810cbbebb6050238f227d1efed4fbf56aedb994dbe3514904c67b66d99548ef32fd0f2edf4595f0ea631879fd739439bb68cb55e14d984b16d46e07e46906fe8c1a4b4632a7ead77dbee1f0697fbefe3c78e8bbe98afca293c480ff4ba71ffda5466b970469643e2ccaae21d65afdfc665e45dff13040b3001a221a240636149ddfb871d01959f6ae29858e52ef0b0fe81e35ef1de00f98808e5c80dea875d077f928879d8428f45bae9415f3edff4672ec9add42800d9d06bcadadd7b98362886cc45549d8eb582d4746677ce2815268eac78d5854ac34758decac7f0ee60645234c4bd6e3eb365aae63f361bcef70994c39c8a91198a5ae68af7b4474842a82cf3cad324aaabb6354537d780cce3e21e9aa7798889a63673b32f1b619315ad15728791cf428934d790305c67cd056a47e8e450c63dc9d2d159475004d554cc8000ecdcf7379601879d72ff5671db2e7411cba0c0e9f93edca024a7ae44cb87a044717d2e168b6b27dfeaa81af632fc99a66da26fb01814ae2a32897eda3c04baa28b6b017d8f16ed8dce7a895800c298d4bdb7d5db04d2bd52dda89319567f8f88a01a0a88b5126687dba8afc174cab9cd727b9253e8260937e0c98df1e8ab8846c60b98bedff6f737f628dcdf438f33de1c0e0e460daeb50c057bada445ee06e71c68373e0f0898e6c89ad04a0cb219548fdea38afda77fc73b98c63744a165f46b9dc3bfd2d37ad0bf958081ecc2005f46aa31c638085203164be9697acc88b1c7efa613da3ebc38644638d07c2b094b046f6a5e01d84c80979283294e6c33668670d3f40a7c4b2a310b33c6d11bf434943f1b4a88248cfef2d099901c60aca2b9e02867c2f1c247d3b4615808470dd53155fefc81622d1ff1c26f3f05690cd6e90beb8cc95ad4fc074642f0ef9c55fb0a6c448abb9d6d04c6c9d5887a42a91e5f772e101c4ac08dc7306ea90c2095079fd7b0d7d4db6e80c9299b8d30e0a2bc123bded94348732be7df3d116866acd781c932d93de38f8ab227b8b24fc2e328dba86793436a11268c9ebe61ee0b7d3d3a520240cfe290d44759b319205754c22ab3e698303e0e15cc6e803469d8a6ad3b50b4033b1368dd8a600767376724a384159ba57e52c3cbf9d7986bd19622f4585c6d9bf58105353c97f222b811bbc284e6f748f6c472069f82a80b9c6f02cd76cf96b9f7817bb77eb6ec817b1d692c941ff459fb5022072693deccb95fc87862e524fd8677102e1c91020aee32264bff524938fd66ec1c3ec939a7d6a57d9a4ad0bd0d46e66e882c27171a04d7a48359ed7bad2577b78dc506d7a20a938901735155bd40cdb91122ea031a484b1ef2e7a3919418a3c9ebc03a4cf795b66d30d89cf22fc5b755983d5c460ec75882d0721fedde7623f4708b622ce900dc1873f0dbe8d7288c2284c6715928a0a1d4917d92bc699b27e66db0e18b164fad9a3694259d75cd9f9bedfca8c963f927fc0536a5f929c80e7b1609993b2b750cab83800f05848ee9c7f6bb2086fe618f901ffe8801080dd2027a88b87870d0d0e6bd08b7612f03af0d1c7d2e53883025fa7dd498ec22bb10d5dab451833988af6d7b4e65aec67e187495b2c51cc9ba441c989890f67bb7c832cca869f7bf30694d548ae1db25ae0e8d596c18881e85b03953e05a9071c7e3a440fbdf2e752e3fbf7f626e06d767d099de7744799b794768e8e08ee40a26a030efd796a6c951bb6a1852cb3e0161b66e981ef884dc500bbbfea78af33c0d3cfd3698c04d82946ef05881933150b5d850c4496d7c496a73705af7a3e71d03b584920c7a0f93dd69707a4df2613c374d69673556929333d3f5a14d088c5facd53ac661c5337d760af8c2470747f76cdd2cf8faaababadcd676cd1cfc0b59ed2388023b52a2f5add0e1f223f22971b3449c612ef487cc64237b9edd5b3964e4ce4b00cec6199aad6284b57fe25bfedb4e74ce6a219375da0a338aa5c47dbc7f044567fa72da68267285a423aea1e9c2a66140bb00cfbe64e893d6e4b2f41fe76a6f686af39f1d6f1038c893e50a82944879313e8fdbf05c89bab36f64ea8523256e4fae194374990c389c4fdfd328d412ca31d42f1522830b4c785a7f025bce40460836822a034e3c61df56a71da06f4beaea353c989b59071450d09ebef6f1c74eda458bde0fdac274358ed2ff07f3eea493a40b4acf4fa67f3b74afd505fdd463dc60763a57e6079a0cfab082d3a1cdb0a52cb206548cd9d3ca7c1ab787a476a04d1becfbb13f3944b1f6257c37e100f4366fab833797fafcfd4837515b58d7e29eacd09fcaf2a9d658ded35fe59486dc45543cd60fed18cce35b2a69abe00335b4abcb3f494b4e68bdfceedf27659b365c1ff4ae40326265d62bb443c3525bc3cbfc29e07b907f71fc7e8f01e528159909445cd5eb83a976761c5b188588929ba8f5be25e93dd87e0c6d9c58fc43cf233191df7f2976b60e14d26d431cb5182719011e04ac4b2622eb61de4c8985b55980c186528261daaa3c00906462fad035dae4772a878fba8801d1d2d354b83c13d6d20ab602447f18f0a1f551fe3a616c13ea3ceec327b9550b67ab9fc34ee2b80814f94db48b1c8a4063c25243e33cfc1b56bab7aa8c3ae2a731f6a20c4a8f59f114333310784f0271d4e2cde0d179581e2cfa5c5715a2dcb2aca26928d49fa418e4aff313acdfe40a13b81dc1256a918c1c44ba52056ed8ad14bf5c1f0c282c3224a2c13c84af5adb25ddc6f1e220e9715894e94264ddca6cab060cf4316d2615310c1c04de918f3e5a43fdb03066853737bd77ffcf05d080d6576bb10ba7eddf4a6aea3511c0eeac676ebc755f65bdf1277f4e6e0532ba8394a4f0af22ec37b3d1cc4032a0988b7d7c1e15aed89aac8983a81b457d81982b7c7521ababf12638e04ce645b8be7b7a20515c8066809dfc0dfd587fa47b2967fbe22c23d039f45be491e5e11e26c6d4228db46f83b50789eeb170ac971dc0b12c3def70835ac830dff0587d5c3f9155552d7ca19d76b6e2cc1192dc5b4b625e51b2306614d8e63c7ddd2ec97dbcf76026ab33225dd4cbe0d900ec7ab3f5382653c7ff1d8156b7da4a8ec56307e2be24421d294f93bd9474da821615faeb4792df78b82cb2401bdbdfb9dd8852fef5f0d76c012a33167918b2b113b25e2f2c09fa1cb13e2bd21774020f5dd1f6000ef235c5c32e09824d6eee528960ef7d845b28cb35c297d4c06d33d3f9943169cc098cbd3591823ee9161d896da7c4a7f3e3874187da6fdbd811615254a16834b548970909c0dd272836f8e71d91149be9fde1771545950225ceb394536300601e7e7de39f6827a2b3035982ff3c0bfc1eadc4455ec81fba497d8a1b24c6cc0e9ed0748f134579c6d09a4f2018d82e46b5d67c3543c68de8ba61388f1f528a26aec8c7a43788b78391600b68738754d340cff470b49dd1fb8fc9a453de02808083f0bd39894f72225e4526813ce2efd7c56b36578679c7a18c57d6241b23ebe7ab905835c7a26f25477f552d476c878b9ebff364f5d8ef8ced332ec53aa376ed3ef6f8fa0ebc11520bd387e8c607094024d7871e1390bbe8cb3e9adfe7aca54aa43b5660efe1b0940728444794c50de2c99bd49efc8ce9b8cae779b11f62917d20bc24b5d55547b437fcc1901d315834fa5ff52906ca7b43e594169a82c331e5269b8bdcecc7288fe0f7b089f6723d892c6ec60303f453d72d13338f3427434da199c9b723330fc345c4cd6abb400c8ebd707f0c2fa4480fb6b055488eb04f63a284f6a4ba911dcf10de015aed8327c4cd4e04e1278cf92ab730a067b647846e6af9f881a2ad8758bfcf35f60981812f97ed0a0ab750ebfdbe66ba46b688e1ff13b3d966f626f7d197c0bcbdbf2ff27394eb3489163f5b28b25702fc6fffce603a34c85024756111ed74744c495512c3b0fb36ea72d2e3759e02d5c47d17c251385b261a27d5b9c31cd96c55748034ea07dfd0cd9517b9ee406ae5c0165a023cca0c5ed0270bb73dbc330e263db7569fc84567bc4781561fd19aed2d27a58aab706bd45286f85d4486f0bdf1a7ce68a5d72c85bccf40f45d571059f16b20d613d48d4943227b142d9674b876872d3b6fb1cc13c1ea7a29a231803a039a0e0c9fe0fa241b299699a8ce98f5e33b0838ed2c42ac710075d2a855a536ad2fa40b4553082cfec1bfcec8a7b3fe0fde289b4245e16b75d2cac1e470da4e08c7c20ee0eac66b53a0f6081125392e1e8fa97218977232390a12c67fec8ae9c945d533d034fcfeee4db6f56aad57cd4d35f1f8a0a1c06c86f89c50f9624721c24565b0e7f92c70bf5b3201ebd394acf3e133126aeb084f4f7caff73c55d7a889145690cd8be75fc4366e5588d875f5c8b1f7a3b3c299ce6c18ee3264adc5f87c1ba937cacf785127004212a4205fe426351143fa6bc36d919efe720f853808215075ecd1dcfde0bf999fdd49cb9792d0d182a1ef9331977fd5cd6eaeb8b860a39055b61fc6d30fd4da03334e38632ddd1aa3e039c047e1ff7bc78562b19354efb45feb7843148cee754efe8c01488ecec4d3c2c6a3c46854f4de2e4f4b75cb8a883b79cba653b83c2ca082ef04bb886761fd327562916aa054773994a8f7b4e4f443e9960fb4f4a86cfde1b6fdb7c6c27af51aa447751198a6bf1bd98ce74b85d464deb36b70fd2987aaed1596d1272e0c9267f0a06459356a2e2af987a45cde25a91ff6f51d660f16f4adceeb497c1f5afde341f00edd5b57d759c0f3515b4f8e4ac1014bf55131f5dc9fc5d9f4cfe31f246da02375be36fa5a97d28c6a2f2771d9026fdae62baad096141b0ab53f125487e6ed941438d702edd4b2cfdaf2671009b354acb45ec58ba2d40a214aae2c052d6f5dce96000d9b5fe0dc17245a94ecd48dcdcbb1ea44e2038ae36ac0b789f780998c03e329e0bfbfaa624998adbc5b23c2f95a1ac89287b22bac85f97ceaa826a6942e890f1b4a4ba260dc226685a2214314d3669c6d6f770349d875c7af63616bd0c4bf47cf41f1b763ccb60d16700c53825b477b1ab158725357d276f46cb0d7fb545647e0ae521d22bc0006e068bc728dd870ad3c47bd494c2d096ab8cc62e556b20c1c9fb6e1e4ab0fcc9e066da64017e2e5448edf4f16e311e3b946485d70925b421eb00c22906f259b9df45c2e6be46b084254455820d5848a931509080a29dd162419ca24e2e3f103a356666d91e11c871a92a2eebe1dcb1649ed6bccc2d1f8472f823095aa68c3a974c22713e9088dec0f87d8ecca0d225c143ae526246c934e20512c3dba8fbf1737814e7516de89a833015e48fde51c6516f545d91a4bd35c99b4ab879e0fa65069d562518aad869dc2123675f00efe7f6d633d388c1346bf1b177f9ee6e3a80b19a80be7d8908870b43d68abc3aac8972f4202dfcdb93f69aeb8b1b98765d2818270352009be943c1bbe2f42a1a655db1f0ab7e89ba5e203ee9806d6f42cd707f2b722eab0e33dcf59049e5ffff390df1349100d8da5f6b464f69720a165c8075727c908c25d2c65faaa35a3195ea4800064c7f4a6407cb98aa4631c20c675f2be843b8a5af7e617021d722efe7e27b08b03ebe8343c345ea319a9e3c63781bbdacb3c69a49bfd2f92f7534f804112c47dba691ddbe0683a93cd739bbc8673f76d0f75186d8f32c74a33eb527730427665373516bad2bdb62709788c5e169509b4c9b0df744ea02242650d62d6fb14afc51718c282cdb86214301d87e7573b53fdb34c0bea8f2f29ac9f552c94c1f01303c59b4acb25deda9d41509bd9af3b1e0a064d15f023d55c6aeb352c9f8e2f417772a43a2bbe7e0bc18af77d7251b938316409dbbb2171c02745451caf97e827e54994d179b4fba6eeca0ea129cb76818847212249297f77e67bb8cf2830104980f59ae19ceedbf984f9792be601b41c60ea4b612137eb0b80928a37bd431d5e324177f48a217c3d6f2893fb93447d764154be97df1eee2e05df5d870d7b79a2ce923053069085e4cc67dfa4ce671f2716f41e0706357daf546fde9db6f6b3562cff4d079ab4bededb8dda49f1677470173d5f91fb3a2fabbc96ffa94d4570fe020441b331b789fcfada243d811b1d4e4d1ef7a0c79dddfcd57ffb69a8eb5619df093bbe66a3e65179035f99804adabd952f769d9ed48e78c029f2316b5f814ece844067cafbd91a28a5cd52d147bbbb763a47bbaf63188b7fedf173b4f5e96748faf99bd97258f143cadeca4bb8953b01dc7996f978d72fbcbf62e00fdb0790fb611b4734217cf42f5eede7ba3931d8cbe1e3f8c0782a3a77ba2190e4a0633d975b998367453d84792421a1e877733f142f0885e31f89a2b732d978bd24faadbf40af4d4e1fd253faec2a5a2bbbce4fe80a340873b4cbaba5381304c2a066e47274f3cd32e42afedbc88e7be14541895a23a83f19849ba348b373da3c8c4f2a8a1ed93708175d338523d3c015cf729507b888019f917929c55a44687305c392d88bf76e351647df2703db162b3e3ab89b232fdaab3c11f3b00b2fbbddadf045c313a65818a414e1d5b8ef203db179cbb96eb4c2a3662c4a566c89771047a878fde146e7ea4b5afb7fd5e29c4268e25a927bd00fab1ea8e4ea98f027632d20909a94551a562174d191922620f9dce08e2b5c7c0f3e8eef20a9d61f7e98a30f90eca2cc1258f79083372e24b29fea86fde7e627115c1b97e85a2084749a44fca916be350358c7a086634408556cf921a60abe0b29039772e64995ff32fa64898f8f264636a2cb636cb2724a86eedceb3dc0389d874b8f46f978040936f3c5fe963fb3cffae60bc98484df6daf7ab0b0afed4b29a6467e2d462695ae29adf0d72bc9d9503acbc6c25dd240d9e2366563aa95d19e3ca018281a02ba4f4860f000ae027fd606af930728e4cbd10851239e7af94d175f0efe30bcc6fd28f0c24a6e366b1519c91091bb4efac1c79970a7e19f69ef30c40cd5be616a6adc5c3b86ef9a708704aa051d3607a7826cce96a1039320b5bc82dc641fe685dc6e4e740c68000e12acaba02115648fab1e8a5a561502ec6d7cb1bd9f1d3c33e197ccd3c8797ad9cb5263a334b1d68e0b8038536a50831ff00e4f308145195f87cccc3d31badb00260d9f116c71e5563b722191c6a3e2956163228f17c8e432554777f13d28b00f8bbdec487c10032d9f7edf90a8608c2ee0619be372c219d1647379209d927f690993b5aac4de543ff48bba8d1ab907f0f5cfa86e775fa9953dd92bab7113f2149e506a4e93299313249ee48536cac24c8e5c2e08337f98ebeb15c7d1593d6efddb66e37cba1b7a7e7664fe02f532a5350b51090eb8e46280877c1112e9a814ad2e7d2c26ba7779a5e0e07a2e41af662e229fd477d14a03d64a50dc87863afccddcf33d58a8abee5abbaa8fd92131134a5494622e50ae916e17213f96a34c8e5b6b2e9d684c52bf31c0a1d456fdaf8aac238dcbb755769a2d4fb5e36a9dd656ad8328f008c03e1fab7e2059d92307f0920d5bcb2a2a19f1ef2bd2bec459d33c902bab04cb64358cceb06186133882acd0d6c61dcbd08609889b751e1053075bd38746a7f3fee267ccc639b1712f2e6490d2378d75e49d0a44c6936f80abc70d1a05a5f07f9b595b6487fa867528db17de1f13f33b1dcbbf3e3492eb81320035889645ee8a7b86b7313bc6faf4a3cd1f83b91a643e19cdcb1843d24bf287f6e5bbd8a1091ebff2d83dda321105eec6ddcc2e3ff1dc7beb6ad17930392ec912d2b5439e05d5890f1dedfa60bfea8121a82ab8e83f6f355528783881d89b424337f03c246bc12d9dbadbdca9cf3aef0d23835635d15f819e9e28bd3a96537beb1acf956645509487a28d612551d7543a72a0e56f776330d4c751fa23905e035409deab2e0bd31453ab15049ef49b45bd5c488c13b9ed77f2aa524f33cc8212eb48e27d948e96965a51f0aab186d7fc652a994d3a1f25de2d80cf60fa191e9f90d02f5d4bf37b22cf0352bfd897314894fbdc0c01df82ee83c632d5fb4b1bcbcb79e45bc5bb2a224dccd1a80bbf971b946a6f75110f742500d929726bc65562371d75bb378f4f1831ddeb6fac77e5d20c93015b0616120031cfc4504b795cb379040c2619aa9cdbcf648f40e5f4244dbd1957f2aa882365afdfe79723d409715702f60e62d6221d90c93a12e9a4d49a22bca2cb4227e5b36e6ca2652df88e5dbe8d5c252d52f6e21e4d09a43bc513d1b95bdc236b900af92ef306dc5e0ee5f55683b4b48060f3e87a4c78951f30f9a662786d1db40445ca7027d17bdc25b317378e29a99d915bc724232e3d6f01caf4b63309883fd52bf7b2be560f99b05048d1d87236606c981ccd9f76218553937456ab16c01b0cc1de0209d71280b98113534a080540ddcd947d445fbff870e7e7544b1a617e61aa70be66b19df20d807eb261fce6099aee0fe4258a32bf1aaabd09a53497da01b070d0c432d729c17ac9bca1d66260a33f6b523715f5a45804915083d6959940bb4080236c143087820f1f246dfb4c9de0e7786234fc7d042a5db310d82d1d240fc95908dbdb5d5a0118d4022c75be003dcf972cb3f8a70efd646ab0ceea4dea01e2c70dfb409917a50dc968bcc4ecf42b23b91c7e9487324302c4c955131b51c80e58bc1a2ba753c1191593cef9e32b2ed27372e55518e9dc503c203ffad12bba960c9f5d10cf15a468c5ef10b3f8f1b159647c6032e9d2c66ee8f89465716a6da656fe1c84aa8a847e710ade6af1e07ba58dfd0d6e00a39f5a5a8697b07ad2f60d3ff3c71079f7b86ee8f5c5ecd58fe0a97573aeab4cbc18e2f7835d7c3cd8390b54273c8fcad1a8095cd42330664f3d920b16cece95c8c97f8ff70b8b213345790320e9d1d6d8f0131688c4f15baef502e9297f5a325e3dcbb237c5f744d02b6d395a8e40b6582bddc6cc60c8212a77f76dc999f645c49b11f7e1c79277a94cc3a6ba58571498c56e60f51a9b6f53d1c1874bfe53cf3a06575feb278407eb1e1da117c1b517d3f740a10f34f15c3a270a414bef7359ac187cd52c78bdb4d9ceb8e84f938f7ffec382c2f73f3df7bf55d08179a971b21a0585cf4dc7c8376973c91cd558a6b1030481b981b02b9cc388efc5df49e89411500d6376a876644cb46358da491033202b151660512c7090f8033e67d2dfa234b7b702503f342e7119455b43030f6469efe855d006ef1adf913281206918755181f63b77f7f93268de825a940ce44bec41d6e2b6602db249388419aca4869cae2b644bfd406687ec66d2ed2e7ad5517aedd33cf3504b2eedd923a430ba86adaa3c26f4631053bf809d6dd58b1063f8d63af374b5d70744c2cdfc39841a6d0f142e9d2dbf4e5b6b83b51deef994a552d2967599146a80e2127662b74741dc7d0c0fc54a0b31c5c2553f558f29ca714f87d862da3753f8131dc82ebed8ace7102453d1ffd420cc823b2b448be95fc190160fb42e925649e10c87e91effb577ed705d32aeefb2ba65ddbf1371c46fde89593dbe2082a3030a0094d6b30feb1d5d3b958b46031ce5aaaa1cddbdf1e8bc2dd771e98a7e8b0dae249e136f4c05c4e6f2608c2cf040672bc1688e147fc4365c041140297314863e64e63ec17315418289dcc94c19a813411c2a7a4f3650407228ec6d5b48670b9a2ca0160bd50b0d50fe184edbd16d1144afaae16375bd9834979a2f0072caecd80021bac6fa609e6f5fcbed3ebbc473d3314cdefa26d427313abe6af3e58c9dc1ff63eb7e6ed5480ad0f85e02509cda23b974be892c65cbda22bcea5e667270b4f4eaa959797d7d8334d02f8991b0159611e1b14f98ae7a6cc1a746d6b4f8d69bf60ab17312652f8b884d067b381620795734e8fa13192c961e5bf6c6e1408349d2999d467b06d88af19c0080a09168664301d7f9e974b31820443b36afd0bd63eb7cd6b6c2f2a07d41a321379fc14713a9952c532efcf5a4ac9030c9a56b0619fdaa4ff4a893e3201bf6db264299fbf69b25968c0295a290723407fbb685b4f7d48ad164213504e60c6ca5ec6b6dc362b4c496f86557746e0b336b3302ca4e5d929e0ec28755994aead89618255f932f51bfa4d97c503addea75e21bb2b0ddc409645842060bee8c431e2b1b574ca545bdf5f26c905df6f68daa77ed5531e56b6101790c5f22337c97b67f3bf0e95ef0a74b9f9ed1c3ed4f45312d28bbbece5fcb95cf1d124d9bce22f6dd9b0d7b762ea0cb2f900856947120420522b6de12de34278dd43f250193f0b9c38b456b3a743c64f909eb37c43d31b7bd12a268038454e72fad21e1eebb57b659f009122b3e5b2c9879aecdc6b654da62ff9e2dca36a111d7cd130c8df0cff08dc3f4b703ff6f7e4b6470c8d74c7b5e483b496ebeb3a4cc0eb603e403d7a12ed3c48249ba70c1216720f0e717f5b8080b0bf84728f696bb896bd724bdb11ec9e5adee8964163ee8a68f0a757511bdab4e6a1043d8dbceacdd2813d214525850df94018bf9557f5a62b55d066cabf754e75f11addb6849086ddbda0433022103acb3038464cc057420d29ccb01049166f49883260567f2409c7ce1bc1471414bd5720eff89847becb9db78fa63f668617c483a67ab2f251f930aba29725a420f4d1918a5985d823bd3b1ffa2ece3a21435c49def1856004f00c08ae75167c258ae6ed862fef1ff2b83d8a33e3cc27ae73d3242ba8164b299c2ada9fa6ef7adf4f3d26004a14eb72e4ab8b8cbd56716095bd644dbca55ae38c0e1c4bbe27b7ef75c5130e9427be095cec52c4069cd4b0188de7385217f5c2f36d5489d77a5d3536a0f96964a6720a1098b21835652c8ad04a54f717a0cf29d1af10fdf47b3dd63b0d1425cdced3268002bd7e8060697c7c0e92c0eabaf74cbf9aaa83639a6fdf6bda5b46b57c2be7fabe284f0485a7a1faf83d2553ebeda1fa545ac56392fcaedb57babe5ab7a3713ab65436bf828311b04908f1fcd0b6dc6657943def9bdc1e66279626da614453cb19c3dcb95ee0fbbfb04ad1a345cc9a3705f69a05e7b7222f93faa9ccc8786e87ec3079933b800f79e55546f02ab55211cd17ddd190cb719486b7d0c7fec6c2d102521c34b27d2c29c5d211ba98f9087e64890efb78cb02ab3ff7f45f16119faeb60a29b14dcbc2c9d1d7884115f69eee54d708245c74fe66b35bd60aa8b54b3876179aefca0ca215d1eccd2a15a89a57c9847bafd68fc70f07fc8abe383872f6e9505787b2fa65f0b3c09014316c95e4c6d931e94e760353e83ab8d397532d56cd8928e09fd5c1bb4966852480196cb7a5d64c84dffb123e8360033f6e0f3dee70f8ba9e87dd5ac543996c719430f738a5c62aa141b0c896561d4c327add115c9aa9c304bbe76e01f88004cc0cd08e8d5f1b748ff61d132b5772d51993da1e6ab029beafa47a3071fe53174bd9c92d0d7c930dd03f4272b90232c1e3027f87857bb79f9af71590f8398cc54c9ea18bd67115e95443c360e6d6f264ee7f5d65326a87f5f34591ffd885b228daec98c9b666571d0c65376f8d10da7fbac95bd09f36cf5da9e0459eac11450f74df131713a291c8f6a7a5dcf37720fa7af31e0d01fb3652b7505475a16bfe80016f8bf09e10673a56ff137b2ded3d4d08e14d6df8be6257edc7a70f6a66c088cf324cb80135d16f76f2bb75d01774d65682cb2cde485e720d6cba42e425e5f386d15e40c6bc914bd6ecbd3290593a69a6ed509f29377132912acd21c90596b3b7ad53058bd5aa9d645ad2f5bd8f796b00d16fb4ebee1fff2148b9057c07f9ab58dc725a36c4eeaecf5cf4cdaf74c550d9c3c7a292bb79a09b58211d68a00d9f87f898811fd693de142f43c83c965a7a0d0eb7767c7f49466443465f3ac8498d603e8a3992ecb3e567c3485f5ea25eab8ada1010d8c4904e4a34291daec1e4380bbb02080daa5b17e93bbdf10ccb7b5b185949be10e2a2c65a8ebd19fab12daa08df4ea9c03e7c1af7c669a688c8eea57377da5597cc6de41b386b9324f299ff18cd74192394b39345b67f6de7ac5805344c0fa5a728c41a1e7cc27cf59cc519f94495a4045ec0f38a102594599ffa4c88b11c3a7b2fc161d695fcd530eb7722af539e02fc4040017cc1446c4690ed8e166852a54c7e83615576a1b58ec2b66cb6c8cfae15fad075c73230f7e2e6300b5d65cdbf88d4b8e2ed2d8aa9bedd81c1983eb093ef008337a7eee968a38b679f27e98791ccca350d93f62b9d2025e669a02f6eb40d5dc330f9f3d0168eca3838e5fe3fb08baa3a434d2d8ad7c87768706a066a6a85a5035a086da3245975d6f405f090fdaec59c25776a7690910448331e1c17c4bd40bf046db490f08e935ed1fa5bf0e7e2d94f97ac3fdb68124618f92f79884232919ae3964113da2973093c33cc5fd4213f95cd605ad263780c79ce247f390f27359098d57aa080293512e774b8db5f8304bde82bbf89685dd9ca29e4df60b380a18c8669f59bfdea65b667f42167b225718b9e8eb2c798c3959ea73a7cb367a1467634bfc79e6847ca8bed47f9711ab6a7b3588dc20a24bc597cdd348bce977a1f0f6091c22085e9fc4ca7d7a2ad298c1fc68a20a5e23008c73d5b9f0d884ace7f7727ce52a183e3904e3b48b4cc048a704914bae80db105e212df4a843ea57c288801e076697d9640a552b1b2d395dfe802cde4e8e1e2c9bf43ef8c7da791a446f597aa340d3e72338291003fcb7b54c7cdf9c6dba512652b9df04b45ea5bf795b8b343313c2a1c3b3f8084222b554e684a510a0fb2c9020de896daede031ec44cd8555c9f77ca04119c3b0c009140d6d6780b33dbcecd3290c6a69fa9c498974b9c9cb82956fc97a408d9dcd9477bfadb123691ab751f1b4641acebf891cfb7976ee756d7bd2728cd3c81331b98f55599d892318753fbbd3a7c6d5042065da9d0d5f412fa8885756076cf7ce8cd138ba68acad47cadf01874a50d0fa4278d369394c45d8cc5afd65e1855303448233781bab98d50b41e4402dd0995fa4ee659fd9c489b94fc9e4d5edeceeb49feee9eeac48e1ad5ff03138d74cdd615ecbf14339cbd1af15002cddc8ca0451ac81552ee83aca6fbae9845ffe63dada8a9e8433e651c834e8fa30cfa101ba000900cffc14d2c97d76394640645e21e39ed697e19ad1bca501fdcbd72fa5976b2d560ea3ac1109658cd9064f7e8b17d7916b687e47d7443552d9063cfc4876aa5d202a5e4461f9f827603aa782fdcd27047281be2142329337dee5796bce6b5975e97bcd82270b113968e63d3f6531406abc35978389281b8a48de9df70b07a4ad4b5e3b345b48e08d9d72d50ee2fa2c1c43e1028372bafb124a12594ca4c1d1d7f7e0436f67573090fff02d95c55c8eb6e15fc9eea1f86a5b280c708e18d3b88aaee870876cdb435ea67a6c5039a402ae905f07373dbbee9a789ce51591102a3afebc5fd88d62826854eda459421f3189a0b7feed3c8602612314df52e3f4cae70d30f44babbab27d848a8e17fe2630d3cbc0d4a34ca853e5cd095968cdbb3f30be44bbfba2617538f1c696b90dd104fcbe0bb9abccfdbecde4b32d23e8f9fdd1876810392585da96ccedf99b00d3234009c5fcb7928c94458732c33d51d6b59f41731249311a27651306d5ad4878ba81007bb9ac0f4ccd645e488b83fa51baf58412eb14cbf1ef849ebdfea6528c577ffc84f23211459f60c718e86c2b601e7b8d0a54a6c8c92609befbade24199e17f0597d525926a6e41004af97b0060eef50f2a2a8e7163b91e55b80530a1f6c909b0dbf0cf2305cfd3aa39065011403ddcfadd3596d8aa704898c0bd77b8dc54d4d83f68f7a1d45fc7df93f1ba9686da1b07f3a36e6aa39429666785bfc4c482fcb3ae761b03bf6999e8d36fe90bbd86d74c3d27a7eee865e414c4269dd558772300fcf2b7cb8fb6d2d9972d5e5b119bc2a257d3f370fbe725f2c456f37367d2fe31a6acef30736b20b86aa813a00f53bf5e89bba370a3594923067c349358fd0dea608858525c94c35bbc662d1a48f019be6bbf80987f38fcc4679db4eb63e616ff81100c7432a37baa044673af079d9c32f0ca830eb8d789d4e101fe9432f0e299fa8500b4005cef2077172fa80f2210fec95fc268f30ac5fb7975b9b64c29a41b938c970ff1d9277baf949e0db8120994309841267b77c3941f04107e61977cea5b4f55485c01d7205f1a946203e0a2bad924d509d1f9a0d09a0e712ac6f3daf199a6033a92ae2ee16045c6f27fe70308e1a5da021cc528e16d3148a362a85d28facdcb23bc3821b30480903871725808b758002726d14173961b7cf0f49dd29929eb90a4901d34905d513d51f4955cc9ce3b152970270687ca996e56f880fb1c621dd68c4474573adb3ae377fb3ad943f56cfece584c94b5664d28703147e756b0d7b78a95943222b2bc6657c591ca17c77f9b1cec71c0457143bebfbebaf23506291759be279a58bbee88f19b029cce716de012ab073313d261c849a9b6c6c354d897d066694a09989ef89bdd48479190cf28b93c9c88e69acb45f3b7e1deaca8b62d7245b772b6074302bd3aa04c4e22b21e11f0ba4206ee122eaa5f692511cb7973d21595875e2cd238ec4b564ba2de08d628e132bf21c602c454c834e7bf86bca2c0696c1675110d1198e8fb49d04b7bbebbaa6b850cac124918743d941b72d49e9751821f899e22be614142cdd31fd3b6c923a324d49c4ad230d816321cac5c80dceaae954d8383de4e224c873d1498d98ec1db384aae7e16e5910857034a937fee6e1c27c5b50aa9eae238ea7857e8f726c13e2759dc884981eb81c9928df4a565c0245ef14a37c820bb66312923cdff5bc89d35c639bfbffa6281e54a587bf70357a0c4febd37e4067d23908b58efdef7ed5ddeea6636c6b735cab13b287f9d742a871da73d5f6a3af7e23d881ce9e2658006e1d92c7573011fedc52345ddc8fa55e1a7355068a7fa8a92875108dfb5523a0c81839db1db6d50d80fc7f3d5cb6d9564b5fcfddd0c8371316ea6c9e737717f7650f8ffd4a06486335efab93d5667613b39e20a2e3fdd247d80ed5f9d5e5fddc2e16458e6e680590b5a728a3df55f27015e37a1ceef0d6d21f15583f8cdf0cbce440ed41cf5d63a5c022e8d5cf122f0e3e836c67be6500529eeb9e994508e566904b318aa964734ce86e8052e60928aed87bba2fc6a97e52ffa7eb0cb43eac830189da41d2f84ddf18b655d44b5fae28c3c111ca37f0362f567e7ae64e0281355dfc62693bda40af99b79ebf8c4ea458270e44e1fa41734c351b27a3a477a4bd558852a9bc42e5ae41c89e7f5fa932069a1cab21cfb1b334cca7ce0e21538f391a12c79c612552b19baf71ae8446e8ba1706198fc4204f13a602e81079504e6dcf0e466b9bb097bda3ace954dc5b40ec64c60f5f05cf58de423d66ee8b521a221c2b52add5905a57b0dd49352aecf58b9e4ae264b6404aa6a282b30c072e509fb429f29f219d51b784399404927a81b6ef4177d3e9876ecc7fb88680ea07305c179cb2e50f312042deade05b088bc6554930cd1dae025db28869a0caedd5115df7a20fdac296f88c5b39b5a949d671e032ea110d169c3f59e0c92ea3c14a20b7c655a7a2c281cd9ff4d45531228c9fd7b3abdf5c2af101327d6a6f6fd56b9485add5726a57cc17cdf85e361a191cdb0c62a640459290721b5fa367f062e37d09073fe66148ad8c236291d30361d3b76ac13e02c4d103b781cbe94453715b55018632e8890c52832bf7885fa7eb702d21620ce9a72c5161424a9447eb6a91ece9024a5bca0f3060e1b74e0a8c6bd69684624c4cca383d55cd8ae292273d6e4392e33e778755d484d2460aa65d4f40dc36ab65cd64a07b4b1580aae52db60030f8490970c2f36a41375de8009e791b20e2cd7f13265824e226765c1e1c7f0569501dea31e4168d8aef09a477e9764bda55fd7292538667a2262414088c91c9dd7a3399f85ed24cba29480a602f9a36cb7814f462eb861f2fb6f0c80da75e6c8c0444c34ac450e93b5b26346223a1a977849c5acb83a240028ffd8de45cc1e88eee159a28692304f659327287d3e11bedce0a4c6cedd851a4d1f5c9ee18104b83903e6599d9da406a7081b2df73747f9e358bc985a2aed98791cb51f9407a6ccea1e9a665ea2d8c3024dd4e05b28c555d96a0cc5fe8f7072c44b9ff392720ee32ef410256a91ec5c974a0306511af00d133e1814cf67c92b5f9ddb8fe2eb53f065f30645c42967863dd5b648953a59aef33a704bd7581cf3b02f7d876628d1ca31097e0b0b6b1f7421a1f5fb3f7722f94ac3a9c8f456807eaf3c661db4ea75fcb9e405223f96573514016a1c8f27dbc0acf1b77d2f36781acd14ff6c3c61f97e3f3136c2edd743b4ba4186693a66ba910a96335c2094547f62c64a3142a902ab46691e01fe692874c5ce55bbf3c82f59baf9839e2eaace638ae1b265c2ed8ed8ee3e221cd7bbc19510f2efffe587d6b8f79355102dd792c82c63f3fc9be24a7321127220ecb328a6a5b731fcb5a9f9bcb2db60115a7918329bfb035e2c3033c95ebdb695d49dc9d9d2f1d02ca4429bf373f334ac8bb4631d055fb1fee5a898f2879ffb6846e24c018b0a8fc9928f3bbf2d805aae57fd08ce697f15fb241c3b60a765a3f9890a5c3fec2b6f60370d1bb4058057e6808129c78ca302daab46772b42e6736ebeced71eca35a23ae179d31eac4be2076a449d30baadf4f636e443ac8f6fe8af66a1f4dbd613a9d41ccc7702740b933411a0422c593a71bda975aaefb47b1eacd59beb68e83399cc9558e8e2b3ca05a21ddecf0493d0da7155b2d2fa7da5f5f61f7c87e9c568c7b0a9cbbe0609b98e247a9968d2da18d5410ec98f5ede65d27b6cf7754759c445f110bfa27c6056669d4a46b2cad86f7e749325077ad1dce10ea2f94a40e60d138a67956bce19f8df44bd3212b6fe8964d2863f0210c3a2efff01a8cfcd86d3af3b0ca4ccfd7437cbaba95da0804be71bad964908ddabf8833df6c34b3ac6373d8742a26a37ff851cd86868962d79ee560eb19f3264bd7e26ae9f254f4ba59bea54e44ff31a4b32ca5b481165717c4827905aa86c799dcc542adab2fa0bda01e2f2e07c51c1e86c3c3ae8b6de9e6e017d1d860bef7190c318a42b403119c25163516a0e94ac653f1c44871fb1c15a87e2541609e02aa5129d2e1de838012feebb526e3fd52de4d7c663ad5f9ff3178d41af19622734b3fb5f986949e665b6234f2438efb7f0078048a4ae21ff170903cd911a8266b7fd9b65e0844725cae74484dbf921bc8e1a32d77f24bc786bf91e345ae80645bc08d72a0b67b45e6e2901d6132431574f1bba766a9a548153a266487483a0d4334ecce2762467a489407179188eb2a30b7f498018374ca60e78797b347f7e34252b8b5268ecede603e148e231c1cacfc4badbe8015650fac064219b6cc3219e9c0b9c52f425715629017796e4b7cb095f4fb76c86032ebd6a9e663301caa0722148a47fa1633b6853354d65da1d2feb7be5893d5bb60fa832654d151c7d6abeaf6b9d280054007d6831893853bbcdc3f09f14db777826552cc6e260618dced363481f80a1140f79f0ecf2519e89d158589bab2e32b45a42b35b007c6066b3e3c9846ad107dd56519851bb791323cb19cf79ec46f1e0d64aeac5fff928537110ab5d6f2cf148636bb10307d3ff1abeecf32d06a7b2da10e493680a44bfbfda4f39ac3cd0f9199d4434bad1e50a04e4386da8c45d1b5be97d085cd87017b330f5ce1323159b3763a8b50792c8017149bc04b6c4d45898961f857dca77a9c473a66c3c6bb6a44d6231060b479a60057f18fffa004b1c965671cb632c48ac6a1c776325ba54458c8ca916456e23865e9c0768fb432a08737d4e7f12d3dfd77cc411444668beda33678285ae5fa1199feefdc2dd787de950ccb9ae5a392e8c361dc6830f29799bdecbafb7bf625c0c0ed2911f42ca047818e09e70de614d63f4349fa0c38a47bf88097b5576e3f634dc7ef74b7dbce4f6b574556f52e71a9610bcccb2f352f7c8cf3d8f794106e796c777c0a0a27172134abdc9e97d4d9da971edf25a355f74b988e286632024676e5f0c632688fed492191ec31658d09ef0870c6bf461ea18e00c76860e52db18b294ab388e7a15a37c428692e5ed9a90b0a878986fbde754498efb0df3241ddc2d3f0d34a5db4be0b4c05d6738c6f3d148b4eac10dd8b7d70e517da01fa0e4270852c93dae18b099bffec6fcc7f5c6f31e43eb55b6af56ff71e39125449b5e650975a20e103272ecd6289a04b488439fc7b1d742b8bdfa9b72da9cfe219dd382e3ebf35f411b51ea90a78e6d50029d67c88f29ed99c0bcc21f970f5358cb1eaa70b0ef58f0e45d82c438fd82a5316c5b73f7ec35c4f27b6c4eece2088701a899f5800b89369e54c8fe81c619a1b9546c1e33119844f18323f9a133350e0a8644b15cd39d3ef0ffd8f07044709a998a93b5b646d81f41ab134860096e0cbfd617b816de89723f950966524fba8445a4f88b1dfad4c071222fc42fb42f600bd67cb54af1a63d1757a93f55ef63222cf3b6e8500eb45df06e64c751e9256af2f19b085dda0ada7a9e80eb1e01bb5ce5dbee277a060f1b9bb4b7ed337c7f2cee2d5b31739045207f9b4a2903cb075cc96ead250516a8ac60c7fe239240e5a51a189457f50a9fcbd465771ef8da12eb6618975c3e93d9cae1c836df8f8bdc2a9391e2538849525fe3f22295ea169130c71cd7822225a0d0b65e8923d51ebce3bde76e6acd8456118a5bfae0b0c28c013e1713923528632791be3c81dc44cecf30dfe4553099d0b39a14c5151e5fc79daa70999b6cf922c93d2d7b3c2147627be9674e16ed140399ec0afee639b208388d4423199463c4414de9767812fa216b18bca3b53c28bfe4e4eff98fa35fd7bf6034104907012fc3a6e48eec51184b33346f50080cec8e275d265bba9dfe07e04957a1e7e7c012cb25394993b1624cbc165b1f9ada19d80e40a2e4660a739f8f31ab6c65a460396b0c9070bfdc3cc4ed3a1751b7e6f5a96a307338383d82a4b40e82793d39a1d1bada7fb30a03270f08c6fe282f65359ef225d3dfa7750ae37bf60de239d1fa57def00685c1e8a5b0a5f4293c03c7c60923702b8f2407f9090ec9b032495ce9480c9651440c49d7d487b6b153de24f5be4f40bc284e6a76471a9e1c96669fced9183a55834934eadf803bf6ca04c769c81b7257781887f9b30eb2ca80b9697c69a8c10a9be9607efa1d66b5655d842e072317b66153988022582ae3713fbf1bbf534c0e2151081e78b48426e9eb1cbd7dfaa4ec32c5dc001cde622d127e4faecc557369e6cbc3bde936a26b73a1dd7b4291ed3d9d826a8018f75343943cefe5dbff2c121f1e2067f160f239fe2a7fc41c4e0a48adc7ba8812866ff201caa41a1af190a8ffb49c4385ca49d4695dab010bda9c56ac8ceed07749413c473dfc1617c4df881647bfb6544f1b3bcd146c6c9457cc1fc44ca0045cb109eb63cf38e26cf2d48890b9c2d2e4d565e2bf09e9702b81ece42adb59d3b343995c3d4e0061bc1704389e916a57d9fc8fc0670747032ca29c9499c26b29e35f7e7ffee060e7c1da5d39a3d3932345e740e96e703800de0c854131bacfdf231670f016176d03549a878a4f51d68a2b8b6708d2cb0e33750d30771aa986f65134f2ce58e0c1aa54644de511f220c0c996b3086e79268d90453fa5aa4da252f5fe1d52c5f919845a60299b74307f3264fc08e87546974c8edaf0f598291d707c705a6dab22e8417bdf3cf1c8049419c3478916444dd909d6ad7a5d44604ff3a1d629c3de1c9cc017df699a484244d8926ecf63d40ce5258a94f38794c29d1a3e8c624ca9384867cfdce67591221cde8f8681b08c29c7831b3b193ec1a7a78c07517ee351257137ed3f7105879b092036f43b86229da017dbecb9f85da0c03a95b8f678eee9f0d5b62f49ed8ebff10f1e9d88ce9ed9b90d04fdace182c89e4362948bcfd9982e67174257a423d92d5c0d67a3bfbe56771b65bc90de5cd7f50531543f7979ef06acdb23ce95cb489a4a165ebe18c64feaecf7742dd257b4de1d2799edb573c0b023c0baa6129680c9a36706c9da15c947e49c93d4fdd891775a8bbf8e2ad437ffd3bbc8187266c026ec8c3c0898ce2a0f7506e7212a4554b55510ab4ab446ddaf199e791140dd5f6ef732f89ab5195238eda0b527760c989642dc55e853ce5148ed0dc69947886b4a1cc262a6fd3aac05cffc7743e32278de2c15372dcd798c40e684ed758d2343d11169adee6e256af96b3a90bbc82cd2a64ee2ba057a592c08c05f6bf3988dd33cabe0387badf21615dcb131f97dde77811680cf2f5b506d2a90fc1aade826d20ad73fb8f40374ae4167c88823dbd11ffb2e8dc2cbf227d3c6ddc0ca6290bac2388b660abb248ff7d9737bfd39456755448153cd1cd7d954e736305b333b4729cacd0a03dcf11ff088e21153ca53745110625567be697a09e6f03bd7362d4a838fcab286435a59d801db48814a699dfaf598c2c63ae844cd3103a9e791f60fc4d037cf1d2e36cd4f5c05e03651366bc825c332d9b04fb6164b9cd98ff268e8eba9d44cecad4227ca4bd93711fae5409a1089e840048e8e34104083c14633ad3bbfab2b1935da99eafe40da96e677ea33982362567ed712a56c0a8389865e6c409577ad6594ee2bc197a5460d83b9567f6453d73d33dc7b600bd05ff1059ec24463041cec5ba2e110e20a25c6ad17c3915a9d6bc81cb9aeff2dbf6ea572a1b3d5c34a3bf8fac59f115d7adec00164f0fac2a409f9ff31bd6d0de49a79ddf628478f0d10e2941a0980aba371ec224aac8c8a463967ed0aa579d7f9e2d2058f191404cdb7e099f8cbb3020c366889703923b2fcf3aa3beeca733181c93f186acc8ef477b0aa500f9fd839fc79db77ae417bb050e83a70c74b91a743a98f17b278e774526215cbb911ebab9ec2ecce8fd7e11b80e10490b88b92b0cbf2343efd853e3f94d9b83fc4cecc2df7d5f98e8223a4280e1795a797f975514c1d00df706fce1583cedceef1f0e5bedfa8c2666a95a6e230e74bc37959e48371b713523126ccdca9b59d35fc9cd0fbd01c2d4b96e326595bb4e30955d0296d943c443181abacc5f504a96c33066250503f0b71b71632616c6c87e5c5a0af73120c15f3bdaed33a47053e883e0aa22133ba9e56946bede6e577623e7223271175dd91372be7d8a3289b824cdfd49fb13088ac91209c47283a5eab0931fda0aabc2d74301b1363ed3dce32849261740cb5567c5d52bbda07c5fc7af7fd38505eddec96325aca9eabc4ffc65f863f4be5dc2b9d20145abc65b3428e252790ba77e1b79467db8b22921ae300a781c8199826a715e8d2e702b203cc9de5dbceff8cae269fbea3ea1cec2495c1455e73ccead77c1628ac363b2ddf512680ef604cd367a3d72c5a1b2877e9e8de032b5806228774e611a035541579566d0762e16affb43a2d88baebac16be6574e45b35edd0df7b584c008a658ced69c72aafcdcdd28d3d052a229486ba3a35c823896d44dfe868d1e088ba0106a2ed84b77c14d15d7a53ea970dca1fba8ff699ca6701685b4b879278c996650e49a479b9eb88f186eb8958c84a87e197b7ebb3cf187724da1d0e0b0aa984c519fcc5988f797e547480346529de514dc5f70358ffce87bf87e4994beee0aca7f9cd0f2b95c155b9e604ad3a4e3781097538c1c86e1c15f58d5b363521b587b68fd4a1bd39ce0ce26b13031f619d06e0bd9531222cdae9a71f276baac084fb2097c2a5e127d1c4ca643b5620d8e27535a18a3ae17df5b29c0a45dec0a4a46f18e2cd1d560422230f66580583301631e2ea46fff6db9d5317b8fbe50742e129768b1dae36c60830881634b196d4d62534c37a2c61d53ccc74c284863d62f411a9d90a4db4e5824d4dcda9efaa42e3840ea7922a60f6b80f54d6ae50fbaf52f5f6d2e54f320a4fc897990f26ffdb90fb6265bf679266d664bca56788ac2a81faa03a4e3d1468442215b19d9602c4ef958318379f59132ce8b3b47ad79f7d56e4fa5552440df0f3562c25496131cc5b31fe078dd7e8c9d5e3071550bb4901b455beb95ba5939928bda09d7ef83c622352563b61acfc0858faefbd3cdb21e93208886f07b0161c9b0037f42ddd210afd6b4f0acbc097cbf4f55da5b066190f18ea78119e10b37ad8617e706b0a99d112f24bc8f7a069b0f6122438ec192214517f13a10e7c42317ce44eb6db7e6c448032c9e8cf318cf55c83501b0e21e29ce1e1968f05201b435421f8765df23f06556bbff86990da882049c6317edda3828a55edff606f0797e9466207453662dd27544530b209579d2147961e2ea8418d38c9278b6f9e120cae12c09096a0cfe53925c31a02d9ad57c4774ae259a2b404d831473311e50030b9d1dca4261ef683cb941dd5470a54ae7f29b63fe5f01e420691f7c3288f1ed3ae71301caf4ad36a9baa474c548377dec9d13e3d44ca7ed8cb58994dab10dbe7b49800aee49fe45809dcad873401f63205782f26cae9e56489e00f6b3f5a636eedf5fb24d2aa13a350a8e7cb4ced6333b8434c5af12670e5a5d97934ef0eca08973bc255bc4cd56a477e1a9ca05faed418748cb277643241a45dd2298eb1fa8948d0960cfdf433ec4f31425fd2eb4fb9b776a9a4a61ad3b8b4d9dc4f5349f5d45d9bb7ff980a13952c0a63093d4f35fa9a3285dc52cfb8983918efdcfb1aae8115ae797ec59ec8c37d6ed8879f9df81535a864c9cafc3078058f1bab9825a8e351969f8e5a6d0568636bc537335700d45795ad74c258c0cfb638c441187d507a4920d5a24bfc93f66d59f54f7fb304fd03bdc6b3ccd5335cb774fe5cece92317173a9bb0971ce9ed0966b7afe814120acf13eeb4bc9759a23beed442bd778e0e55580078de10d48d5f231267fa6c8b159e18bd714b82332cb75355440a51598d0f8036e1e8b8cd0c6ebf478bdb1323ccc904792269ef6a90033ff0810ec828bb5f121fe959b297bad8a9568604ecac5447f17b73ba45f6e66c5e95581f22fe2a4767f280b51954b968e65c8e284ae8077b82f4a7d9b735cce2c4889b345129c62b1470c1744fc64db453d475700957e196587e6cc9d8876121325a7beedfea06f0d8c4624540e113ff4aa0f10a58025a7b942ff68604797218a96a489414ca56cb1af7f9baa638e0e676faf0f0e14d6b5e46d4ff6622d7e0573b105904be4883c1447640886610d1a551b5e6c19bbf53cf2b7078ec1bc7b4451cbc64e8dd84a2ed102901c72f19ff6177b2116e29c4da47d9c147abb1cb75bbe0377d3efcfde1f76196712fa8700f9880f9ad9aa80428ed8f7f2d0d218ebdc09560d8693833dcdce61ff52412d6c999819bc81e4b5730aeda2d299d2a7dee58a174dc30f073bd9bae8423bd5c4f7289be0e5cc5910574d299b7b308e5cb4dbd08d879d73b8026d6bb56250a76fc79c215390c3953d3e47333ee5d2167b0b9a00efd40a0bc52d3154963c980edbf3850fd469ba3f81516113ca8314801e4ac2497ede7c2eca3467b6f474080b2068d3ffb4e15d26bcfb3bf4f851199ac50ed773172bdc1630cd73f3b611b85ffb60c25f9db2e01ba6e9aac5e9b380bdb15f4faf9de3f7c09e32327da2541963c47b5b2394775fb1bf28228006495df0dae7bce6b31f2651fdfae68bd13f486a5a5c2c18a2b55f1474af4cf2048e887ac3ed772bfcde824bb0b6d3f1d1a1576e4fadfd542e47e84b8b4ad2f92e26ed817466e3f66f6bc03f43abe7e6201c041d945961d638fbde0e67afb11e358619c6dd20b0a639a2d921e71d0eda5f0abec24c696dc84c60387efe3eac82ca8a50a0c71cc95c725fcd28b0af1cf2a4d32b7168a31af405e50bf4b83398701bf936dc302ba6346bb7cbf37af12b811eece7b790a766e63d224f7653a704fd7ff927d05404f926958944b1098ab6d4376cfc86c4b5e5cede46ad0988075ffd4905017f60fbc327d648027aef4a69c6678eeb54b25d07f13d40f8d32097ffb08c84bcee93dc27ee0e7926e03a386b1e9a0aaea25a26a2d28929e4512d234671b61cbab17601f78dfc00f25cba5c75bb55692e43948b88a2199150e4dceb394c944a41c70fc12721af0392fd3c8490c43dcb03fb5564fb17e65da8e5f95549161fbf4b4eb990a2f1b0576138fa7e369dff8226f10a07b3f6b99d23023b7b7afaab7d3365d0010836c73881e48aba4d986ef6b944cc488570ccacee8d9fd31dec508fdfef7cad11a13865beb6219df6f199511dea2cb4e419b37a625a75e2239069747e795854ee951e6f4a99d2606db8040df50951ff3e638530694261b66afcb8edff2f38e4a6a15d644d4d1f03a9386e1257485a1076b43442d3f44315b15ce3ac5e4bcd12d82c663cc4f72132764cadeeb24f1352fa5946bbc8f12d52cf3ffd1b49920286fd7b890e2b587d19b4133825fb20938930acc8e453f6e87fe0b22ece90e437aad13e7e000558727b68c44a9c77aec6de8c70c5898a1c383fe218f88f8fb72ea84a67eabdcf8ea07197bccaf77f8aa6e311b5ae1e781cdce2474cf50c4db22941041742e4169da66346b6b6a8408da9a33f04aee536c6d09d4e70074f29f2f25574aac258b394011e4e11fb24b44746591f8fa0031a4996c4f7199b33c0881ac8479d8c5c9163b2664cb5d7f5475af5f79a7cf48f274d1ea4d9eaa339e61492dd24cc928b06c6c8cc64018231614ca8afde539f11f3c8c6f0ad16105a18a5286368d0a7662f688783e017465da8370651f12f8c1cb250398307425e9c09b21d48e4ba65613be6fdfcdd3ccf20c7d14ec35a12013c082eee62a6215a7061f810a171dfaa9305d67d21f104c25371aeaab1475b10a32722cb4c261b4fa51888a11ca03993bb175ace2693da13ff748afb8a181a120dfa697b2849c215aaa430c3abd6fa6a08758ad32c4723d627e483f67846cc94feeb37dc7622475c27fb85e952646eb8dde16956ad7f5faa25d0a7231c05f396aad59c741bf88122305349b69c82a969c44ecc3e7144eab953878536bc8eb4a6ffa641b3db3464217fdb971e5fcff037d33b61ba632d687962bdff6ece96da3f499196562c8bdcda95ef0d09fe20f620db4de77142e211b40d133a14f4c4e788cba4098e24647d059c3bd3db83a5ae5575f5304201838f73044eeec99a8b58c9af57f01dea52db92ccb02efb1ed1d734d8bd2c3ecf01d2cc1a3c3e92a28a7128509b660660b459c291f6bb2d872ee4cbc1ffd220172e390a19b9c4de141e40d3eb6710214218e5010210375c6b32729b6be7f42d440f7d433dd2dd10ea3d1adb7ba9f9b7a20784067502997c346065218d128711b3c2f0f4a54e5b5568be388e3e50010e6d80181b7f4d8a220a08edc84f1dacb29c5bae556964ed48e203388a740460f74335f6c6c26f560c917e23e29d7d258d1a3ffb9206461f592f9f0a4db6d2ef801e2803d719e28818e1a130bfd42afa18891ec40bc867a43a84167da5b945c1c0724e5efd76af937bf9f8986d2d851e4be404a60aeaad1f2cfa8005f12eb9db5d2634b422a666caed3ea480b5b2d69b49f54d1396e6da79eb6c85f131892f98831ce16b4a0cde6a96789169d8fdb8d8399c704eea2fcd6bf0e1a355934db0fd5e9d4e34fb665a4739d15c40fc8e791426d7be228a8f4843167a2016ecfaeb12c916f792cf7397fe773ef05670c3d265f7a3887deb333c5f535ee75013f51d9b980020da806b5d73c633bca5f60bd5f4cfc400d1e26e44045152779a3feb847f3bbdf4720b033d0fa1d955556d45a90a72f36b69aac187b59419b18757e52b221777b17b0d5fe5a84426824aaed596a25de23c057ea10fa0f21fd36f5aed49ba114a44900721c5a6b735588433ad2ef57312abd705cd62225c39eaf91de321a7408bb36646e6dcaa219ccc9319b41b4d08e89446b58b86284c3072031275c56a4841d2a7104db141aa47322735c3c282f4394105dd0d5fa418dfcb2dd0a1d9cd6faa23bd638daf2d7b6c96a8f92d09398a0731620f4c6ce02c5307e4fa64136f6dfc1ddf7964fb0f207a940ad392541ea36491450c30d24d7225de69c8c7cd979097692cf40235480437e03c3542f067625b4602464bc257f87e593af2b9a6e776fd73649f5957f1eb0f189542d49bfb02e93c39158eced1fd4d0c07d7ac407b1959926a54f9335a5f5bc9b1e141a8393a4c7a1bf133c0c769e275ad5ad5e0e4c953ad063c1c881320fd490f17eaae4f351d3d89d28d7b4b65c21010d62c6fdb081c8b24825ea9e09c6e68bc64d854106fee73c72ee7ebdcc4b3498ef2fb97c8d6767d0e1f3ea3329c69864bbd4f3df9bd2b091598feffaa9311c4d0d31486aae62f8f54d0a59f6a4dbae5f71465e18f242cdbc85fa916bac48a8f398390808c6242fad9fa4b5a1410c8f713d321e4b083cd8a23d4cf2ab42cf9e65cc3c961fc81a76f2f0bbcc843f94f0aec7585779ae49f2edb69933844d55fdbd7b044bea7141164d594ed008677547ebf034ef8b47944e079d85f3cfd56715ba199a0f824a8534f5d4d50eb9c8915c553010c1594e118385da2eb036d51b28ea340fc3bbd7f5987743a5869552e7d825e8dad252fde560196307596e1ae3020f3f3b3ce6e3619050039a51407b29bfa362a5d62cbedc9d0759dad4ec3ac3273eb912ab49012479f00d3eb2fae596b00f8db482f3b095d89d5ad93ff6358fc4849844eb8041fb41f213a0ea9f985e5411e01bf4b6581f325e3d7c43707066c288564d7b6cc47cbb894447cb232be06f4abb5a3ef8c25ae88230559cbc79932a0f949dfd217f2c0e0c708422ae2c9d42a72a84a7c6cb35c7e7518f9dba778023b8b4f082b758eb42070e1c00f94203eb4b5fa43e34b5cbecaf419f3d35e59c69a7a994c987959795cac7b498b45fbc6f53b0c91a608a771f34a4f18ce1b3aa9e753c1389210b632252b1af74f2231ddaf4932a11d082c26ce35600db9c008a341ea2ed89be7e4c1f8c58da78e7b173180bc763e601a7288ecb6e06952f65fa43151483d35f5ab38f041fa45c6a30062914e838e78c01d698b25218e12111954dd5d6837a8a824534254112295a53f3c8768fd2eed838d0e94f30e21f89deb8cc7d89da6c1ec31d0fcc21be7ea4a364b43262fa12fb5e7b7f8c48fbea37c95d630a7ee221e98d63ac632d821ed6ce869c487436bfdc3a4eb3e52c1d5e52754a1d2d0d59a651d4b800eaafd300c2fa14faba55e9fab336e8708842681ca2660f08e24cc4a47d6c5f051f891d1be373921bcaf0ae93dff03e0f8d31fd025b5626fae1292ead2b7142f591c07f8ff5d8b4b7d4e615e8891baf5ccd5965bf33b6876bb8da5e5bc853b35ed18fdfbb577e34a6064530d95bf5d759818df3559ad709b1498ea9ac65b30190e26aa59728154a2216ba392d67a76e38b5e8e432fa90c24aa1c667bc5d73c7eac0b2648125fa2d5fcd455e61ff427a962124fe88c5dcd6dcaa42270a45ea14e294e61d04a1c8ac0b5163f658344f0044f2288f100b8840fa9925017aa57bc8941d95e6138c546ec424a4d2bf021a3a977a6af4cde14aad924705fff9d98e76743dbf3b55a46f335526313dc49ee7e98fedaaf7a8afa6b40cabf6ef2650844697fd73f913af57bc13e982d6fc071976a4c1489000bac48925a14efc1d7f70b248dddfebdb71bcf28f7372a74dffd3dbec972d0e028fab8bd41bf5407c694a3f3fc90843de8b2452c761b3f990efe7bce77f8afa477f94a08b166b43342a4a0a8f895c6213525386b2500ad2f70b1d2b8f79af0ca99c6c14f101b6dd871fc69123cff0ed67c1fcd0fe776810f1f059117a315f75b6b6364130caa64b975ff85106e937cb1c87f258a1e65b91715b0c1f51f076047c95e57ad62d794bd41d4b09581794cb3bac845c1c4c1ae163f4d24d77443a699fc5beb95c7f9bf993b08b021310937743c33320c4294cac1425f0b40e70b3adf4b6336946887d3bcbe2b51f46f9a2854813a5f8b5be2e06c3465ed3ea8752db0045675ec3c82f51532a6980db0e0149c282df41bcd4ea359408773820b8210b860f6d91eb769c628bc8f5908299d9b006ded6e0d1510e9f76c7a86d5a231e56018038f3dbba72f907d81ff3b05bcf4ec2af2dd818ef8f337ce4a12a2ae555e1938a3d38569ba4e03a1d908d8ee5be6d97ce1fe692c39d464693bc60074bee4c4cf39bb371c21b604463dc7c24d6a4e0a9ae77fec904a72ec7f168c95c9dcab0b05b675a13d3044efc0c28ee765a3938edcc68efbc74cb3ab102cfeafff1f2bcf4f572be7c5dae88f5539e8930f311374e20a98355f9ef2c192fb4b92104fc386edd17be2f5759247c1cde2154c4392a78729b2f8f1ca047a0601d05b81a6a9e3fcba84046135711952d71e6a15ecba505560f08ff5f0a9a2e8d22611caaca0e78b4496dcccc73f42c75e34fcdb2db8eb0856a6dc0526ad358b1598bea121cf1c886f9748d3a46461e4c8ca3c203e51e3d6887f18538ae6ecffde880726f47a90a62dbfdebc8b60298d3e7601009b4de5d21f3555da2765e4a19c82a5c57be480021f0d9ae6f9a2e395e4c9cfc07b57edf214c8d4accb9e37d0693536c99da9354de920f2e16b45b383b6a612505a420d18e7b1722cfee82d9603073783946361d21c9d010cecca2332b8dd769a4a2b7d944658d0081a5408d0b2a5519e9abd73542ca6625bf46405078c67fc8770bf11e1702f05c5b28d5c90bcd392ed892418827b86bfd666f2fab593d4e919a41b7f69e2a682a42b55d139cb8d1fcad8bcfa969e8a46d4478e39c8c5a86b5d2278389422dbf315f3fdeeb3bf351c0039ec1467edb31b11542b7f3055601f0eb4b1f1dbd5cca012bfadb8eeb9562c7bd42cd801051056a8886664491f7777e5067d7777a59ed53b7f904d4ad834a857870dcc07955f3691bc788337183bc946de171738ab2fcfad536e00644745a6738fd43fcf8375e672ea09e2341fcde7331de369c89a1d56be64eac9e7e275162e1ead4805c8341a5f9d626bf928489c84cea147f28ee7797299b4cc07b69960011cded6c2c43a86a6ba198b20d4e4172fdd2ce1aef89a14d731e4ee1a76e44d60e0dac429eef701ac1055a5bf4e0984b11975c5c68f82bfcd712ca1fb8f70512bad0e5e55f77fef2a366af3e5e5e503082c1c801ed95e226e60021ebb430d0aa0d559dd49aa414bd5950a1b3145384372196855785ea6094f0a1ba50110621635c75c6049abfcea3479a0aa840ec0efccec6cbea952bf2a3d3ef276929b945707cf36a7e388fce5eda22c528665b7362af976facf949535ab21287fa188f283ccee3a1b927901440011c4f8a440e966c453a35bd53573499b48778f960f14fc38bb7d6d348d0fc902167cc848d2ee5ff7e051da34e9e0074138d65077e49cd65c95a76e8e51d0a67d9c2f1cd3cf171727acc7923850f8c2e7ab9086d9552586bb53ab1fbdda6478681ff1dec96c9e5b1010e91a69653e53913d28fd641414c09ce70696afd1647ec9f1a7e55f8938b6d00240cd4f51138879bd291e25d599b63f794fe73836cebb28ee364c4d801fb6a8577ae3bd6986614a5536cb21a6b00e5e9406d1ae915ed52dfb75412e2b630c52e16c1da5f0a0d365c70510d18ff6f70d0998ffd15d9bff160ea5f6bdbd759995f29d1b98884f8a78b9150333540536ac8bd2f2e09bdca5cf902d23a69a18d6434527beab18d93f8b0d58df39bf03d9cea5986ed6cfe146845311c7c8abd12663a88ea3fef7da3e16a3b22407ea32c431a6adbe4df64c82639761fbd61c3a5f0d30b41fae4b9e541e7a3981f0fd8633e4bbb0ed17843725b4df30d1ba3c8c907a872bf4edc18dde28c708bc9b6fc13a512f3f66c91127abe432efaac24dcd0991e97c559cb0809dca9a3d04c51ed6c7be516577e1bce249291db61554acdc16069a5f9ada513fbcd1a2d3c87c6af84197376287d861a8fe4657dfceb83d9becc977bda697ebe362499bcd895f7ca4b2d0effd27a95f055b9739c25d71978714ab9107c6bc7c5872c136b9053714df066e1ca72b73131c0ec6b1cad8032b2244d8c316e90b4cf224ab84108f6fdda6cd27d0933859994ff643c2c75763413642a8b19f8209d7eb039f3af79f0edd7c783ac320281115d5d2a04f5c8e4a379fddf97b520dd8b5a573f72b25250040a0288232f6dfc44e6bc0fc11900e34bbd883583b43925e12df0e90e0e4f080e2487c8006e3e35c0c26678387c798f2bef437bc300b44aaf6c5588f0560f8074d0c649fc428dc57f58946fc6cc40c1b3eae406b2b7e0f49116d1354b10de2eba589481e36c2bdc3ad323ade8ec880a0c7c8f406a5c7c5e66532f677e1c8f729b2ca145c2f3f5d3a17fc076c9ee9d2bd1198ff5baa156bc2c3e19cf51b97417027dccfeeec938dc74a226092b8213831144dec2e01b3fe60f5108f038361205cf9fc4d2148375c3caf90ab1bc48c3b8850f7be7d25ca868c48047fe1d40e32fe67c258d05fa28f4f56e033a6ad2a76f6a127511fb10a04bae9bcfbbf162dbc208a359675c7d2943643a6297c3989090019346c3b3b5be6416bbdffcc8241d7d24cab62a0003bdcba08a1db8eb7f26ecc3a60446fa6c443bb2d823c96d96bfb9842ac0a64c54a76dca12cb5b62ee3c47d3510e2bdf3387c0e26d2a00aab7ba4436cc753af6e6bbb6432de7449e83a9b90f34311e593ea43d2b54986d872d68bf75d70638560a2214f42635f66883fe7a0ddbac8e95ea3511d286979b047ed9eef223f3842c9e7ce0961cda47e95231a873d4e670a69f7d8944dc0ee5bbbdba72fa09a919de393d0dc7e0c9decf6b03367fc6b4c618dbce00cbcf7420b2c84c9e8e1cd76d7f1d43a7e4052654ec72e55e6b78fad456612390bc15f85c4549bad4ee51716deaf594ef9d7f0b36b9dd49c80614d3ad39af360fa9d6e951c02a113d86f2baf96b018956a559153f0a374058001fc60e3abada1d5d2393d980ee7b06b120d3b55a09e6ce1785a6bd4c85c25def9b399a4f716aac19f70ccfd141a1f67e5727f53acbdbfbd2608878e512a29ebd86c1c546ab21c8ad649c9694a075b4a4d5ea79bb7d6f12d85dca7aaff522b7a230c3d82afebda5a0acc805798bd2f97b75adabb117dea52f0bcdab94b487cb9492721d99bfdf9a40c610f7accbf8a401e4aed8f89f9d61d8dad6ff97c39cd8b98a5e60641083ea9d49e4a68e11cbbd710f5c2408b2940b0d902d6957297b4a44405a657d8591aabb7e2b3429f1504dc20f947e0300eaaf84924754c5a3eb20bda123f7cb39dacc492ed3ae6919e7a514dc4236a1bc72e025f379181061b343e4004798d5c1a95767d63e48c2e50bebd8e96972b6d5bbe41648829c194e18ab55ba1ac4a929e4b40a99d46a5fc6be1f72c248c6a88a4f47f399b248ea9e4344231f9cd8d7c15406eefb922880b61f5a2b7f4970857ebcd1ce35974695137ad98b513b40dfc95cbcf131b642ff3f8d80366a825947ca07b7a78bd754b0db3a921b617579d8894a5db91af8a1550a1f787e42854840dd553a3496c0f66e39f1bc1bb6aa3c0fd75ce7085b4125f6b2c94dc135eac0bc9df42edd7fd55ba9db3d0ad200320ea964cc8493aeac768f0bba595141a8dbb618467ea1b75e96f02abee5d08afbea7b29f56e2f7232a1f10bdb55c7c3eb8f2de70fbb7979c912c306eac602821807e08b4386f7716159436c54ab8f3dead578df9d7374db88633636cd2588dcb631feb9e56131aa307098ad17d78ce138869b548fbc94a45770eb651203a82f4c69567692bc9520427b0b16e26870f8acb49691e085f267a1028245f6a7ff4eb9e267b5d6c042d8267411c11ebdaed2cbb75dedda68e8b0176969a078baec415c6755baf5b0fe373eec97c78bda8bbe28b81cf0c84dbba10dd274c8d2ce2c78657cb20379783b1d794487104db686103078d32d132a371982bb91412c3fdc67ca2f89344a7b490279523349bc30e182bf52eed118d2e48cc90749c7c318b2795c7f3e3c8fc30909f2e345098f955cb9b2b92359ee931272337df375e78b92a5ceeafd9a332a401fa1fdd2a7a21af11c188ef2a2a722b2c68e1f04ac4e15fb96fb1a5778656cdd01f7d104604aa8186fef3b0b02292f8bb53a17c3cb375cfdf9e04dde2692888e61c96ef3b8e17e57e96d163c2d1444266fb7a013c4cc26e2da70435e2ad9cdf45bf412f264bdd19c413288686959fa39a1096be564bebb0f059ec11b67a72fa062a81509d11594420b3deb414b169042f2ee4e19a9a685523549fbbc734fc1cf095033e13413f9028efbc2229af26c88e2c59537e304b3af0123642d5ce1f5cdc6d075c5f765b04b7bcb80e524c7483df321fd9078dcb6b0a675ce258f9976eb3594096a6e3392c7762c3d54d1a0d0737a6b5e97076fb03ef62fce210115717fa210eb168f24bc62755f8de4d5ed9389c6ae60b1106f0f58d1dd1cd72ae03cce928444cac11b441f80d093e0926739c1f9cb130d6d4657b4eb2cbfe4baf156da71d425db4b0943a437e3cfddbb22f0ca843842ae175401df1b204a970a5608bd3f6798d36037806042903ffdc9592baf234af195218d6a13f814ee53da1161ff8658aaf15f72a300b5103adbf401ef449a8cb305fc2836718bdf7f2aac4dfc44388882551fa2d11d7d164eb5d1b9f8ac60739c6747a73e8017caf6930a51473aff0a18a07c97cdf794debbd4e41de8b8f32522a0821a8330dec9a79aac55867c2f2effb48cbf6621cc14e5ff239ba63616f502bdb018f5d58fd0d0ad4814886cba3f3b84f4d8a3ebfb51fc7f2ac5cbba4862ad3f07580166a3019b680c5274cb23155fab0ab8c5beadaf813fed1ff8e9bfd6ffaedf830524c9daf3b5f34db2d71080bfc4304fb5b5ccf94bcae61448efc305d1543fed420df46be06a04a74b7eebe3fadf80e46bfd96e7d2538f491e66dabb6a01ebbe95f87aa283bf18f5d1296ded05f010855e2edc0ad5d46ca95976aabb6d0d31edb29fc9b0af17e57351f3d24c786372618e7f13ebb5356db380083cc41b9e98d8a1fa9d76743bb5fe92cdc2b43b9b99d877df113d96353ac5cc0c115feb4c4c113803c29811eefbbb5092906f1d80ddfc5e6d7740bd651fbf7b4abe7001eb0b1f46868413cc4dff4496c5fc9d34520f6cced3262098a957389a321d8ab9561345b1c0ff2ab47c332ed1605b5dc59bea6a29c49696e5756f4d9a6f98c10bd9024c0c1af7069fdc485b3befd2becc77b3b6af7ee621b784bf97194d7364cf577dbf519f7877ca29e88124e7fef353fd59bd7336dc486819de628060c9546a7a6b23af096c4e2295571af2cb432bc44ddde3fb8ac5309f87f0698a7b1508e29e6a93838e3668cbabf48bfa7088e8f0fa16eb7e7e7ba88fdf68e7dfcb32c74492c9ae205687c20f0cbc5199a4c68c9bcc58e8e2dab253345640d22aba53551bad206b1bf070941f87d2f6931f9c26ef0f35fd019a60fcf41c5fc58d2a407bc03f5524a8e5343791199c9002477e1702319bab537d7ddcd07cfaef6d6139758c513b692ffec0c0bee4a469e3929427a91f72bb854ca380fccdb37c8aed06780393c549c11737537a1c1e0063449f670e58d702d73f21a6de963729913e8a69e49936b57e1e91c8ecdb796a1cd1f17f0eda8c749d348c3d61f4b86499d5f418116fcbee20defdc83548cff476e67d3dfea00c477c25488fc83c72cfd5b09888aeb062b96da2312a52fc46a98968968cd4b5789cb9ec1de62a72d98d66268c8fab2cda987e0c6da7e121fcd85a48126b49081831b1930cb74c614a49f934027e37036a867d3bb4e6d528b282ca6e9a835b59faef3ef000117433fec7e39b3f424d6afcffbe98a2656847bbf59691266ebddf27a83f25acdd8fc73d1abe8feb4495086c82e8dee36d7573db09fe269449fb093d0c46a93ce8583277d0e0c6b91aa9c973b3d271e55f63cd782462d045100a04526b87edc95902a9d58a50c0ef2743318bd316453bca443793626797ae4828c02b9609b81427613e341ccdb84561f0690a3dbe0ed709a26da8ae49f6471bd9b696275e6118f0ca16ec413750b4908d51879196ed285f2395fc72256a440f436a3741a45bc12afbdd1cb740df70254abe1c85de135602d2f56e0b38c599f369acc8ee5339ab102d2acfaae162f2cc4e55127de288b77d833cd12f8527881af1e24e91b108ba85ac0543fbcc6d40c749ea8db0d9e9cf7b9502d956407b69e571602b6c50a0b75ab1b8ba3e7c513ba8613dc7e5add086a4434c6e4fc95b057d714b5e6a8dd381afb5ca1e3bcc75b1776392de1fe1d017d587c373b91c0de6ac87e36bb1b8d4d8159128d474d96991e7f3d5299714b4d3b0259a8aa38fb15ecca9e8f64051523d2f5a45abb47ab3aea7ea766efa66e095e493f1898a9090d63c0ac444d9ab7aa436b9ffbb159d90785acce307747560bcf8d0ee098ffff5379d537846991f89c93fb062a60d7fd522cf1e1337b3f34912c9a177c1ace6ba6aaa231328b9d473e196d511f66829d469212d3bc052815d4a373f7166e7a479498f5c1565bb0edfbc3366e7285799c88214880872dcee74c9e562a7d292ee8ab474798a580ca09019f8268eda8bdc0a8c9fc58367641824d3652371db8a9e4d14cd7f56d4ced3f9db7a7afaa7b244cabadf63821b6d6088d7be413a78856719808066f3ed36c0dab28db944194311f0243e7efc0143fdf5ce60c2a8f1df13135ae0ba41eadf3e58bd4d7199812b7fca27de72a307421128b6b9f11609e2b20eba64abd3a5d54e5e0f220fc6b585572cb36b21e3a00023d08ceac0be722a23d479fd220fc3f0c15a753294bbc891442555aa5d8171b47164c700166f870438464c1809de3ac0e3eb8468ccaf5f165ce18d9213348b2b4d65ff535c1c5d789cc8124c5d53056e05f2096a862db664cccfd37a4ba501192fa1470b39d841e89228ddf9aef5e907c31ea99573c722bd874b9fe37ac7b7a6449c99edb76272879903742028cd22eca2753d95b6b0dce573c91f5744cb85a56a0f9d18330d2853ed06bd7a7a03589320148e02efd4c066fe13bdf31dddef4e4efdfc75df5bc362f98d138edf72cd6aa307245a304b42c910a0649c64e8980bc6a6d586a43acdef08cefcf68c4a62d1ae3f4c70779f547c5d393469c504a82ba7a574940b507e81a8c66964a119508bac4f879538438fa8e597a2e647ac1e0511a10daee419f52503c395a2103a04edb964fe1fbb80f3aede4d786baa7d8bf5424f0468aec496bc662aa0c75099e2253e726aabe0e9176373f29165ac79f0c5df32c4691498246245923dd0860149f71e4a21a03ccc4a74439fc9bfd187ea43965332aa1c47ba6e188386e8940dfad8b177a0adc311f0e0301fbf799dd0d6df8aaa7cc95c6f8749c06b46370051ef482dadcd4d4930f741f5c8fa64bc7087651f35b8a03bff3a1ee9e4b1a66c41d6893f316865950507683396f8d94b6e37f1135fe68d37a5785be9fa47eade970428cb4764b9e8995e1d8f2467e56d43bad7209f0b41c778650c61a1bb53cb170b4c836fc9ae3d19a299c7424b183a0f27bce5e7572873b62100b0a3f4a954703a7e377316d0b00f0abb8bb99a2bb1cecc99a5c10e5d5a500fe2ad98fab7d255b0d096b4938a7ae42948531e1a641b27aed3bdc27f44b2df451e58c1538a9047589dfa7af8239a2a52f281b4392f55e9148c8cf2a7b569c85ea2d63f943aa936db0e39e54ed68a28a9748a7d17fbac9e567c2f735f1bc7b90c4428f545f59adabf36f1f4a68a50a7992b642791322cf61c58b5155f81cf77f2465e366dedb5bf418c0f798946a226a3bae7c4fd7ff2c77707301c823b93af25431a5004eb70f9e0c02e2c8528686a56d9e58b13dc40344d25bbad94d8d72e13ed01837b1e76467df9fe44b0e9677fa8060373f1db9262d6c5838b2cf6580ecb0902c56f14db363d2bb3fc8b235f1492eda4ec8c5577efced6d07ea75e56e825497a50f5bbe36987f3b1eb07ef2779b7446fea122e83421ceed5299c8a530e281ee17b32a3626a78da411e9e7d9117a75d4f1bb3a483938b68791fb277bf6a5dcc94d33c3524836030cf98fb112936cca8622294ff7ee563be09b05935ea0245b0b65fa2e262601430a52e327d4e344cf28390fb2d1e3c9e903cb8978914a5029b3feab4a9d33ecfa84e0919598ec8725c8af386a13f23be64a5dbed0d9dd1ef6f959662ea48bd40bd37c5edf99e386eb2ad2f36b3b22e40784b8461f1c3a0aa79b5244a5669ccf2ce0f735a064d5f9cfa747c4e80db6d636c49a2e6eb47efdee7626291fb1fa36a8aac7e8959eb2f02c612325869354a6ae7c5e1de2c6cdd5b609ee6b6c2e75a2166252fee1eafb5f77fd85072d1c151d278aeb47f18b554f5cb8445c8060de65d8c65962b86c9b5caa82ff57df5cc5a2407d48e1944c7bdc38c24a83b17f95590426fb054e0cb51703b132fc6b84c5d4054eb5d30a7bb9a1a20677460fc533552edc32bbd31808e29b43c96a810df6384b883e99be3d86e5403f0e81c949332abe45bda4f14034ae1073ab39aee5af097619284eb5bade43b7c1a3d1e20f121d3cb823753150bc7c48b13d97f262ae659c81ab90e490716ea3d5509438ddf9fc991d69a6bf260906ac025e118618138034b3804947d768172880cdcdb8f7871a502995a240daf53c0681a8e5b8b913e58f9a9173dd37f8fdc31fc69336653f68c07b6c3dd1a6b709f256abe6b460cd2dd995adec1898ef77caa3db4ac59e13378f1cc2166f4dcaabb6898eab4297bdfb2f7c9df3b7201e0dfcf91dfe81207cdeebc9c3831bc266c59e50eae712f6d3c9248e94b0370434a4182f0073287edf25f403da09996ae416a4312c427ad28db6f659ea0dc18dfe9fda77190146c8748a411d1a7b86124a166877ed528bda6426dbf28fd956bed0b6475277f742628dddc346222f04d5585357ce9db01b87af04dae61d721ec30964bf0a3c93104e1ef70e1ec39850d61c3d359f2f9596129d47f80e2d725f11d7f78dc265d6d01605be840e6504d0cd03710f52bceb8415469fdb57067ea25bb595ba7d808f4dd45409490995570010a90e7df978d120b05c1485965f66cc117b0f91e0663889fe450d4098a5353311bc61c9c316e4ba0ed7c8f86a6e2def7589668094a5ade404c21b37cc683481baaab96dc622da19d2d465457d9cc592eeccf0b37ae510d16003f6a9e81ee0eb53bd30fd71160916fad7376e835641e8239374461a2d75447fec595f071b7446ea4a582891de1e4c434856918bacbe1d4418f6a37111cf799a0ab9f73687d5e8a9a618d710c72b2ac02d636cc7ee70b2a83c4d81a34fd26212abcd0d9ec887c0d6b37bbc381c65159f793441e3520c1929810392ac129e8f44371dfbe54fd4b5758f197ad9ad9d41de253e53b31f8cc48e28bcfc86e7e685e32066c24c017f9f54c7889e1800033a9da54b066d867b71d8b68b0839aee1d5a2ad54e0d420206a4f255c75ae59c5c1547f0513e5829c01337e01f57bc6f60c9cff8c1b29d51e69667fe9f1f6b99faa472424b83db0effa680fcf50cd1844333e8cdce7b51bcfc8c6fb35c3dc5e7dcd0f226950496e263a34aa046ff4bf0f1833ff66c48391a7d648eedca2ee89dc681b61ed6b8081f72596238aadf41f45b5ddf2ff6eb28ae30a4d9c6378f7b6d15fb925a9b7f50bfc2e0e463577dd5d8ef40e34983b85ec13d8f3c979fc079f95702f0f80bfe140682a01464f6d977f1f439673443a363d336a865c2fd70e641102f861d5698b44c7789e203ebd572ec5145fd71b46fa893723fa09c4dd6faa6a7e254b2638b8c9451e7bb370880d8ef6b537dbef5cd49dea219387bdc22e94c3a115114f4258796d3298a41e09ac0936b08d9fd50e7efc9c4331f4963d86edae1cdfae6ba3305a36e9060d6b49b342625c546cae4a2e654664cf7bdf67631480e55c97d7caf34ebac234658599b42805317630ad3b060c6593981edf308aa15eaf88562f5b99e5a05e91ceb31eeb8997bdaf6a0d99acb2dea9d3c70404a1902a2c13300117ad851813326d740a5c68e19d2baaf0e6ae3e8601c19b9ed51d4e33d957c6c87b87922975ee254df27bd05101d0155cf59a8527e170d01046c0cce7274ffef95306d0a94ac83fdfbe3303fba6dd824a058c7b14a02690968d57b7c07edc756e9dad9aa077117c7456b82e60c5957aa054a569a25daa9577ab79ad1f0a6fc5d1b163fdd99aaffe28fbd68a4815a3b74abd78c0465c0e956144345dbab61de3ff52f2290d74eb6261abca6e2e08ec75aa6bd6135ab6be87801b522ea4739b5281dd93a04c84964d3f5b5c3bcf7b4b0495e627c6a9303915b475d43eb5281861ab975aa3aa1620043b38be88b1e0dc92d72d51bdd113d6f6961c09b9356178d750cc78c8f8dcf086fb197284cb2cbadf5613675c9abd0554cdb2729e32370bc875a541e736fe0a62a3d2c9ba8882dc31a9db474fffb20216d045c0d6aaa4baeea9c34b0ce71799f97de806eb666a8225621b1cdc5efb980ca3b54b34ee5431b0bac8d8d63f4f313bd09f607bfd2fb779443b5a97d19872bbc1752e131575e5791a815a95ce867340745c1bd3adf49194fe87023baf6f3d6f47682cd1720bc1ec4d3b7f7dc8c4d5eda09e6eca33b76951ebc35cf0f61911e6b1f4559e58b521dab52023b924795be1e4d6390ee494f2e84ab360f1bfe000d90f7c62cc8f457fccf68e2d8b19a85a4e66fb226edba04a97b366b308ac181a2fdc34107c1aabf5599729c7d178c53250fd34c873f3465c79d57664a3235b36685e0ee996224e1580f7e7c442188960134cd8d92056a15906b084067365d7baf0908f09372588325653942b5c9e4b85ea197bb7b25738650c45dd65f321bbfd453eb986481d1dbbb2ac7b9a7252bfb7ae78882b781b68c061a8418d36ce4d31e4488d2f3f55da5af8f3c0d3d36d2b5ab20b7a115fe73ca543694780369ef6cd7641f4491b03e5d7f74744936441c7cad6f74b959f941a6c154bf4705af5c3a991f32f7e8c70b24672c016770b6918ffc2f21e106fbd12c86db29a989d6da715dcb34c4e71dabd102a7f254d8af3716bdc762296414bd1ac15e1dfbdcb47fbc5274cb9aac30c72c1eb90540930dd034560b531b1ee94b3d5b53c2e8461c20b687da5f466be714084f2da97702cd0565a04b6fbef05023bc6dd938d8da54e7bfd99f5640fb023c8f9a824da105f2267a91af2a4657a18442a15edfba0fa86020a30ef9b3c306acb10ce3792fc8d5c876f22135d568619f4a36177f74a9cbd09ea7c85a959445810a0a22add101948cb6310202f36fbdbaa3d6c88832fa40e22b2563047f5712d453dc556db36e007bd32f730d54e1a5a0c8178ec956f0792645531559c0323baa961ca4830af2b3496ab5837c482f3e0de214ef11c2a0b84ceba57eb309b94e601f9f9ccff8df47a28b1c3ddd93ff56dff9ea24dade41b4ec5b0b26778899644ef6b9902bdd356b185e92fda246839aba5b430fe3acfcf69e807736b34a99ed299f29d4601e3360479536b2373794189da4510d044b428e2ddd6df88fc5b4aab8889bf60d403549d976537c882221cd8259bee37dbfa3144185bb6b6b604a671bdd6e3ad9fff7e5f9bf513c4230d27e448cb0fdace71a924f069015c07b1979dcd737da87622965bd1a19d92560fc061ada6958fdf5b5b71cb3b62bb7988d107e373d8ccfbb8f1234b1c8c9af93dc9e871a2754fcae3c1b3234b042db02ad96bb02cdf506eb29df8c687e8490a6424cf248905b710ccab9c75ab67a82f9ec37464792a96c3954b5fee48339d9f6c115d00d16b68b3e7cb5da6e446ad94e45fafea58d3751fd7ad1286d68ed58c5089f7b4d06c33c3f2ecfca5877a6ded513b83c042c7d6f6fbc3352c66c5ac6c893c20af2a590b561e1c5176c10f93348ecec1378e29447e1f324e9248acad275f4997d1ad018e899914e18b0826aab3f88c90bd0e0aef8b54294834af326b58a1bd25c5e05f144deb3b1c6fa6b4209f05d13692bcbf9ac1c78ce00462b24229d7f18e9eac8850ac1914c7ffc23f14bf403a2c1bffc008bc95bd389cc858947acbcdfda99e68d0a2a44e50e286402ec90e6813e8ae5e9614dddd639a17febb01abc84e9238527a72c21c31cbceb01c2b2a2848e07bbacfb520f3a4c7e4aa83a83606cd15f7d554e25aabbcc75f67d799908ebf5d69d6c2c11065cacac3da3bf75a1f83dbb01a65b0428ba5393f9288d53f0322f5c875615b740e2a484feaaebf85ce4103a78ebd287e3885840b59f8e6494dac350306253773dd902b02b972e9ef78559d0cea84903f883c60e693ece985e5b7f95b002b6275243854e9bd360d9895baf388835ff317bbbb1ac4600e321b8d6dd908386787ad12dda0115f5247743fe751662847a53056fa0f8669d084e24a5236501112a595182b8a1538c93ff2b2c7d78d081b83a7f733098e42db0e962cae125b5d324e0fc7e45a65da335389dfc5692db3ea1d9d2434f8e6a32cea9f9481159473107b3d8b277f70ffbc790b76030f0add51a72647645fa7cacd304aad08094cc95b1fc0662b3dd5ef4b23d6ed93764d82505e0d8a9c579293616d7237e0ce44f6ea3514784665e6345c707677a699f694603a4398370e80da7a8b48d420a85e7ac569aac3cf478d74434024486e8d777b885f494245a1db6615d1841c5a2e74b869769fff2b9a2ed3801ab80b97128546c3a1ce7930e90cd1d5591835ba8782a33433e89198596b94eb75824f05f41caa7da7fd4dc45c8922cdaa6ee4924bf2da534e4ec03e37f547042b9419d69355a54b323bbf321558dbaf7c9260f902918d4ad29d6f32fa6e8fd5acf6f9f79bbdb8b0dbbf53186b4b2b75f17a6ee94a9ab50e2eab0438136d89b405717ff0becc4922efa309568ae6fcb0b86fab09df5343f8000ae71b829ae690872a3b2e32e04537916e158457a344911e246590b6d6a3518cb855399bb9a9ef1081f8cba23dea60bc427a1dcc88ef9e1816f176b7109ef5633552010a9f23ced8e683df7d63259ca569ec2303fef6503846030e5f5eba8355899257f2085a153c458d0c2d50fd3209e75da5a3210d423de542904955dae9eb9e1a4e61f0405a7bd87a49c90be3d7b5f963a05922b86eae98fea25f5067e037cb9ce1fb67ff503d760cffd68652f3f4099a141603bf123ea9b485ed39f9183271c135e19ec4d1a13878d7146663148fd6f4a6e472906112f006cac97e6bbabcb9d2fb1721597920083a49a444970fd4eaf0ea2248a8d7fff22519dcb26c9b27858b069a485a56843a0acae36361a5a155391788b9cc2f7c3dc8414cb6af34d1dc4416ade20fcd409edfcb74b9f05aa34455619fb17c43f26f08ac06ffe16fed7d099e79bd2a72331477cdc609cf4c8aff6daebe57095880a6a2510e34ef15f7b5de6f7bcd29198d8d0cf566c2d38951a85d9ea3e922a8fac2feb553815ff969a115d85a2de624f1068af36c8ba4da28671abb7a1811279f422d4c1522ca1167874c1242317a8b32a3b0e06f44b6ad3a9abba8bb36c9946de5673f672f26e7af59e48a1fa0f6060da4ea4beacdbfc05e467d54f153d8ba420896883339c4c8f175788dbca64d5374e9bbb8cd4abb0a4e5e229d68200bcb2c74464e04dbcb52b1033b8aa2a6dbd6a77575fd02f6d2319ca9903e599a34c85107054079bf38b491c69fd6aa651de4d0c5d352c46cdedb5bad4458ab5bec7bc368eb50cffeb2d8e9659fbee36e1e671119ce811901da52b36839574d14722b296d378290a7e14788959f80f270d831dd45fb0b8f5bf754c0c41b42efbf01be71b663ba70c7b6ba627498d82dd774d3f66df6ae1a212e1474800dfd2a1ae77547e6c23fbd9981235f900fedc81acf26720ff7858d494102451ae18e684385cd1a9236f8baf919c6c109d3916bebc42a3678a5f9e684681c1ad49858414fccf249c60fb880cfc5ffbb39a22b85f6ef44609ca85c89157cf8878e9928e32fffe90cb94ed9c3fe195a97b093248a04f7a6cb376cd77945e5689a0aadc4097d17b715d9cc04cc4b75283bce60f7dc7f68a6f235e4c69ab8f1cf968ae746778ca5807d925fa0098c907954a9f9185154120d80b94ad62dbd15e5d95c5b16bd714d0d646273a270f5ce61bf2a3095c59a33dda5235b2803ce944f0e83af83ea870d4a339f8382a308fc9da8e41580b8cf965eda743f7eb894de18d640f80ae3750b6ee27e24b2fa5f30771a4a7fc694aa7f66960ce15aaf22d7b9245aeee189d424ed127f31abd091ccfbf3e2e31977349d09dffcca400cc893398989d1f3b134ae51c5baeede84b2817013db01282c3458b633915e68677afe384b8d0844c9919f58b49ed4f721e8ce4914ee50db0a7441bd3de55e6c7b643c24114679bd8d01c1f65b49affb1de868da02f0d0f839c62c20e2cc1dbc2d4d82ea749c94cf7ee4f7657d1394d34f6e70f4d5fc2e8a4b5ec783f501571de33c6cf98088ad468f3cbf2ee8a4167dfcec1449cfa43e731be4df6815fb3c1e46d3c3ddec370989f9b95da3196f0d3862020da3c49f13923b238032519e32aa5497959f814d7246fda18b1ba65c0155275e433d945ecba88fcd64705cb9df1d2397e270e87129804a6bf3ade4df03a318ef2b05fcb428a18d3f1c063ffd5aa65539e2f4cc63b249f280501a22c53d0dd97f1e17ff72a47fe8f67f5d37caca26bac6beca95de76165281836ee189286a13f133b819cf707c552b9aa961a55d7b3ae12a47b576ddc729c78d07a02216189218556e3303a3e425a466649a8695ecd1401827d454ddfed25e25faeaca82c8e05c54576e4ecebb682cf6e140d7822b883a167c6a09d6a3bfcceebaba244568a46fd6ac5d4a8f154f935c60c751e691c14ba15299a5486b67c58fc8944280ea855c6419e459358a1261fad0056edabd18f9f0f44e1f095102e04b673f0a8e66039eb42b2e0fd6d87e54150bba49c46e8ad798537342a6f69cbde0236a0f063f06da74d9427b83b3207b157af42bdc3b5a635f8780387e6fcf2438a882e2e2e6d66fd523ac791afa799da7448cc34e4d0d6c796009ef2f418a0ce5527467ab3a77711e512538fd224ea7a8770cfa66709fec0714a6b8c8a59d2727014d11a83c815567db73231bf9e34c6180d76d1a836c3f2cff50536795f3df8adde65a668a0cfb7d525dc3085c0698389794da1f74f4f223df227aa268428477853a835e4613b0c42e47285caec842ccdf7a719b189a9673c9b96ad88154ed7eb9bb9847985b4042b42eaaa0a630581e0cace07ad98443c6e2301fb14a6ddfaa03b9e29abc6bffd8b883ceb703773476ff0533471d8c997da7a0bf4a8a14ab98f6280e5cf583d25e7869c41ef1036c4f48ece6c61482d0f850d648139a198e3bddd308bd7f78b254df704920253f27faafc9dec8cd4b60ed605322db1cb13223394fcad6d1eaf493dd1f06dda5c10419167e00aacb7d4a0ce655722b911869700a78304d698903eb3a853c52135513b0f65dc9d2c65c0b682116247ff968e5972117b958dc08c23cc58fff13e1a0a479996b83ce15ab66c4a7a5ea1a1d4e3bb5d8ed9fa777454b1f85abf256f7da3b184cc7276efb6158c0a3c73816e36c1fac8363218c6d001d25e521cc2be039ef21981bcf07fab65e671fa2a66f83d8343d1214a5c4c6d54c45501ae1a4150bf668937d0f6efed822284637f24d78ffeaececd8511642f679fe9206ea525740c66101073d438670c7ffdc87037665aea2ac2e7662d18ee868591532e1556189d8dc5ab2f0512727a72bfcd24890be7a164257e1dec523092a0fec71464ad3bba8b99674fcd5a8df2d752cc4d0f74a7bb4a807416b7faa0d94d96f7592cf68934c8ca31cbfcbbf122a169d4e61dc1aec2c5bde70cf6a0ab649f986a833166cddb9e05728e65b1b5e22ed7ffeec627b309a98078def214f58a8c1c74aeb287a44445220149db6ffb316b0be436e7af482d5353dc6014dee56d275df35a94478b3588efb2e9772131f1556e60224fef26f1a96efc8aa2c26cbf698cde028aa4404bca858b2c851c3b4247d8706670ffb4ec2f0e7814d600695328e68d37c5576fa38e05cdaf46849afdd5a8d63501ddd3b223a5d81cb49b61396fe1811eb3f4bb65c295232fc3ba7d4d435c37c4ee1d959bde46d1caecd27c73fc86678d986f7aae3a12f0201ab28a047f0fe70ab325a7b825568c2eb279d089959e45088ef333c4e867e72e5157451ae25d91cc0635ccac26adc492a2715b93de6ea5ddbd8e8685f3842258b7abd151bbe5f2ad4e0ba706888120ffa7ab4f55d779b0fedf74fe01b7f5fcdc014657c4c0b620a94f433e77650f214b172f552ddc5d498b284f672cbd9a5600c1053f17af30bbb4105bdde10d584121fb8359bb1b3975678d95def74a8ab50dc8f1d134f519b32aa535212f0366ebb94a15c9baa6c757b44d524136e1895a7dbefc32f794da5b1f69fce4691046fc758f84f25769437107003fdfdb1125e94f22ef5c5a8a6595813cb9513c81a265d5ad4fef52f887129c3f5441f1987c3b85f779726b07ad94ec7059e2c974cc0d97d075fa338b03b98e83cfdbb00a47736066f6d6f3ce59afd6c8398ef41bbc3fd05e296969318ca29661f8a517afb883b0347cd6b9bd59f2cbe0db36e664c6fb00d9fba9283cc6b2ddeb49cdee0371eeb0125c6f230792b7a50c518921843067c4639c06fc50f0a89cf317247acc925c8a928ef346f36bd085c7b7dffaeda7f495212ba3bea5d2cd1b62fab7d6dddad2049f82834c863321ae80b322e73e2003361c42ac786eb60a0fb83d9f61fa0c78399c4f720c747da2c58e8328a803efac37a779b064085d82d37110469b2177a8432b2ebcad4f15c2a5eb05fe27e4277fa6449e74b7e83ebfc7245ebf0f898b6018e2b0f07764c3d03dcef479a83069c902f46bbf3c9eb7371d6ff61003ad452029eeb0f7b25b2ac3f0c213924cff90a00b63c5cec74271d935612b55332cd2aed879b0fb0e0b5689bf2e455bbf0591405da78e67d04aa6fb8c931f0db2c063df3bbe6d7d198f625cd76a801a44d85da8a837e6e42d3665e672cfd9ec973fea59a82743180d49bdd36f474ce87d89849d6fd37e078e7b7876b3a9803942d90c215841d6338b22bae3fc8dd7d1116012ccc3383f1a149ff70c317b15000da591368afef9429e126af151a561561cbae68534a3b3ffd0bdba260d532c8c2d07c4e4eec8ed27716c6ae6b27003a2336e66fb461acfb1e24a3a1b7a30769fd631b0c108600436f2d3a47c289f720764a86a7ae9a12f7ab7dbae15493607ff96fddca688c75453788840f96bf3059c4346576a60238bbf42a1423367e46f46570f10deb35fdedfa072b0c2c14cefc667574ddf4fcdb79ba3e0ec98287e22ab3e464f6fba6b0a6a299d671ec65695830f9d82ebe7938c21a824e9c4a973f33fa8b68919043332fba2cd488a71bb67b0fafadf4ced3e21fc0575867d7cd4977c75ef99911b0cea8cf867e1964c01a4f47e417c197820213cf01ff55d1f00b395a2730b417fd1769d489a26bfe2d5007b8bce3ebe1f8e5743d7194ff21f6323062736e5530d02485147b5d216794c4fb3bb8b047b668b4455ff434a6459fd0e80bcd33d927ba239201d06d11f22ea4bed8112911e6e29225c043385934070eb8b99e62f8c62d1fae921da07265e90cce4bf9b790f152dcd00f68c982243973146c93115af0ddf9798ecf41fb985264d8eee143b25164f833905c790f022d50b28418315bf2aadf39a8c9cc528b6023af59183a0a81d27301d851817c16e8ca7fe3ecdb67fe67800a908bbf90dfceaa8b2ae34024ab7f35babecc88f0ee5abdd26287b009bc2750e490b7c39a8750a2e3671cdef46b79bce346581b0008567129f710d0a9ba03a03c8ba6d42c7e337af94f6ce0330e743cb87d18c2546c44fad5537d21a60d4c68270bf6e57752198362c2ed84d762208065fa741618430e4a3cc6aee5be6a1b7f945f39b10940b4133f4c3279d52ef8738db3b8bf3e79f58cd2a49c3fa09818fbcadb7af1fabace8070b0cecad9002c7ae5ef14024f5ec7a532fa5035bda2ec63ff767019afada69f501755bfd758d79721433e8292de62b2d79e97689d10100235a5ff5e2d9033659c0cf587ca1fab917b11addd352b6ff91381c7dc98a7c3c946fa40976f4d82d55c7c944fb77b7a7f7ab9cecb2a3de19fc3cbfcb59d517b4015b6180524d66ada522853309531f3891f0708ce36c73f40031d3651fa21530545862e7ef6c8e1a3dabdd04650e6ca582751e3ccbaff81a178bc6765a8ea3c4b25787bded670331198e61fc6a8a9984ebfb9d1faf6bc82a0ed92556d3cdec860b494af75066c2a86694eabb62bf679589dc12f2b288a5308cd1648a457e8ea094d9426ccd6ee22317daf5d4f6d73f15f6de7b75fd733cefad1dbe91d993d440495c45595c39a7a2a67d1d971c651629a34c9feafd0bd820bc21d8648b57174a6d1f65bc6641cc77805beaad004284f6f37e44707482e53a97e47e6413525be6643da6f6fde8f0ec919486e352ca695d76aa81cb455ddb19d02fb1827fb1bda2af3cfe36abfddca703c1e7173577776da7512ba3a4a49d10e77a5367d087aef3d24592e06f6ddbe5431c53fa34aa94994ee1ce03a5f3e849ecf3555e55ac85573207baa58a56631b95d1aa2d7220b4504da2c014172bb5eecb88e3ad66b6d9d2d137531926048a6b8eab5e224c45d22e816f6da7c394e353a9efa1638dbc4c106ed6fa51133d8a81f15bb99348dd466740aae6ce89bb50c0f4f0c808c9c03cea1d18d1d3a2b9bda5fd5162a6d5390324230581fedb23b2e6ea4d4bb8454e79b60ad49968c1b5e4d09ec785838f48ef109f22713aefcad2f1bbacc69e62e488bb4b1bcabedcd2f53579c59dc61dc11986ef20d1e3073953e81514468429ba5500a258bcd1aae64468930ca6b017cc9d2b4ed7b7968f439c7d2b67e1056f0e718b78334b941c6591f50734376aaa80fd04eb3e190b140c7240e429b977701f642e0d43ef509489633b76706bef5f9d4345e25915fd9b946ca52e0f7e540a74d1286eb0b6c36325e4750f9326fed21dc8396ac95bf07c97520da19a6b0e0ce7c0eda9367858e1078b46ca46235ee9364c1608853a2e8003e334a0d8207b821e76c3e39eb37b5a79f6574e9e5a1ed5cad4e09539d6c069103be37f5a4c192c1d04e88f78ac3a9647485ebb7ac4891d58654c0e9c8714aae182363ec9b32538ba5ba42735f59a414255a7e2740cb13aff814141c380c678ff5e61d32476a3c41f6e252fdf74c5c886eddbb2202e38b276f39053f0db0ab7eec7ddbc86d9af5690057dc3d56bb20c2ba0a63858ffc3049c6a3dcd3a03ebc95e03ff2a734967e29a8b9c3a8cb4929de3c34594edd1bec017f00ded0ef687a292d1371b47c88e9d33e97edca74da5f0bee8c7dbd8147ee67e4bd32d79ba06a2ea2ee91e8dc6075169e2e5781d210de05517160cc43025ef7fa09c71be5ee67755d73eeb0cfd2a95af547fd8d38ef09e68a2ef5c459d78763d2a013460f562d026243432d136587b4e0991ce5aa2fae6dbddf6d1f0c540c39977586fefac1dff5e482d601e71222f49d1bb41c3f913241a8eda1ed149e4494f2ab60de55a410d8050eb027cf55759dcfb3660750ecbc8d5f3d912fd5cec99225d9bd1056dad9c56901c9a9c27c65398bb86850fbe1f53e17616a2f1a5ac3a9719dc16bc52a3016ce704ccf8183b074c65674dd6d2179aa3398154b26a2267270f6a59c942d73d83262c743731e4540ae8f88ed0b814b9f0add138474d7c4e500cffb3f122c9cc3ad70acb03cb9aa086170be18218d1a25279292bc526ee4d30340bd62783d49caa72ecf8d0f10fc72edfbe6eeec178d9f852638e3f750f380af2738b82725cdfa07066aca49fa8d78006e30eebb67d32b132729e378926621e13bde0f1bead30b2732cb533977bd549a485ffd370c9bbd4c66548d5bb8d7a6098ec7697940d5f9da8c1af00f2a0ce02f2ac117d15af7fad45d360ff56a0b854dd3a89f4baef08ff4ed8d36d08217ffb178973a6b5548f22c81ea55893b2a5de2e82a19e2dd9f5de29318b00ee9995477a30c0d70ac25b9d37ff2b20d03a8d13c3eb4ab90d746c0bde33df84652e647332b86ebaf1b03f645f074d0f6c13873f4ed7c8cd05b190fa6da3bb50ea9d073c274c6252920d183a44e2f0f052e8e949ba8ef573c3286b3e52ebd0a3d18c5b5749a30697b27c07cef99d4d3d61841cc0907b2fff21e81282f0853170ff438e8f5beb8a2cedb54bd2390654338f6ea5fd56e7a32fdb059cd50d2261ec208bcdf9494efb2ab755f124e5151d101e641a4bd7711f1dc80c34ee376f28ae823308f0381481f51e14f886048b8e4a96a7eff1d75f35253f835d91e1fe2a44656fa20ab566837f09502b30e22372bb7f250b74833d2edd2555532c65f71cb61327276747f9737f793ad49202543b2f66f9384f68b645f94e51d41c4dd967fa45ade9aa2b4f816e1d9e4b4077f9a5a283904acf88a2578bcf6377dfe20c58b1ac33fcb49c70921a5c2905bf9dee88d3bd7622618cb4fd3136c37d4f60eedceca026d18fa14d5e4d8f9bf98f63d0d68c924b371118f2d0d640c21435a2fc9741c6a530e5ce750972b2ab17ac1aed77771c42983c80af1b1a4a1f0d2a270ae46a3cbd540b0af635d9581b7a23541d54ab51e5dd9481cb8be5d975de03757cd9258d2b5b45dcbdd5fdda22c43e3750f286c4d8bac658b02dbedb14da9a0f42e06d8aa028aeddc502f5523dad90c2b15e1df844c1c55b3504180bce28a73daddd4701d093acf74433ecb9e3cc42fd9154a83f89b4cfa0512bf7a8cc87439bc3515574d8c1162e0394aaab34821d15a80325e0227b94c044b8058a9a3ceca67fbd8e10e4253843b036e8ce51acc8e8faed44ca45086693faf045efbc087bdb6147a255eca826932e87e9cce719e6cf3275616c7eab3bcb5a9424563d17b081b3f105e31a59440df12013f31da87211cb8d1912fffed061079a3e5f7bd278f673cd4000960d97a76359f911bd044e8f4b3aed90387c978bdc43cdf33bebd94430b263fdb2f5e7419cb6c9e4b910054800c59818b71d3f8a802ec45c6b1998744ea865084ca57c107f021cb0f1bb29382bf921062660c70a23408aaf51dafbf5ccd6fc3b5112e8717cbe3bba27d48fcb0f01e9e429874cd53b45aa943983649d3f58ba2f87af08f82c53f0c5142b47af2f26616146560f6619be51a7b9e40a5eee9596e472b6f481a24fda7840bde25fabd39aed6e0c6f5a7e9daa8b242c8bf56fcf4c0c6e0ba4ddf6ed31e06497f25c8462e4a2c668162680080652010458859432db01a7b15fcd70d0fe8ff8e5a2d87699e3a4f972a04dc0834ae66af9d29e027e4c2673ca573ba0461c267e47cf7ff4fcfad9bb9a63810f385786d6284c708aed0c4e02fb5922a00d1541a9223116accf0ae8676a05145ea74f9c8a4b69a4c925ff2ca96504b9a6797177fc8469816f803da7513bf28755009eb35a20de833d27c527c3f55a3591ec9a428ef6482cc1ac0e1fcf42dbc2c1ef125e3284edf4734259696becb3f1a5226d89f568b971651e72d58d654ba7b02c0c6828a85e99944a38d237226ead38e501398582e1586c6f63ceecad13f864b28db00ed188ba98493236d0f2379cbcb9d746ddb0c3e7b43d3e8ad90b4216744964c8f79c1883a0da1e0258d204a27d3f728d1122746d60ddf71c1b603628ff6dd4ce0934bb9f7882bcf936f53c4de1e58ed7413c3c4502105826808608430df5388771a170d6c127bcd762942b9662f3a945c41d101e9df0187038f3417e5312e12051c91568a3b30f9b6bf4cf65388346aa71428e851001f3ed0ec2086edb2a62ffc08a5751f8d7bb5bca011f5fe1671df5ea0c6b8a81509d7d2f9b2b2d17f3f5dda111f77100848de2053b3eeada6cfa77f187585b8aceddba3847d647a76a4703bc9fdcb4e1ee894e0a5f51b97a4ecf7467d28b50e594d2194ad9f825dd87802c75f6c04d29b047155229e08fd79645dc17b84b5131d7b3c0de842e5fcd48a3ffac4997c6a18157e084de2367115094c95698d803d2e7e00bc2eeda1048e535ea7d66df857d65323e342de9e832b1d6987a8eae785481fa219f35c30d73d22fcfbd9fe31ce0b5e50b6ba02083c2318c78154462a28548363eaea6769685a7708198feba092c4091bfb8fae0892ba30e2a694be0163591dca4bd000c1237f1274e0109606b9f35429d098670e532ec6ca80640eb61a6db8d586f79cbd21cbdf69408913473f7f2878e4819d4622162432dc944b6ef3e6bf7c4beb92fd8462ed047f204bff672217cbcceb1324d68edc15b122e3054e3744600ab190f4c2e3cbbe8f446d6c3e3e531aadfb4f5cf9a0ec3ab68543e996d5c91fd1e878553b322b1ecf70996279a8f98dd506b5d9255b9eef9d9b4eb89ade274c78a5771b8f033b92ec56b10be9aab0b62ada28d6673ec4d1d58aef56ff5bd5cfb4074a025be1e0e3acc90b6d1db49e0976a66b95f539a24f6f9e53557166c2b0396da2cdb3d3afd2300cd83d426d3917709d06c8df35b394879942cd898904a11bca21a447750ed8c50da725784663f67b4af5e097e11b8db43d7e52e92ec4f3680970e2bea333493aa5b16371c85a9b7c9b12917105d981b2033112da725512f32542909300a546e11fde0928ab8e55e040985ac9779776ba016a555310d639d899e547e70aa487672bcc6f10ac19482b6e2ab135c69d01cf09702dbf983e889630dee12e4d485ea8b4b9d816155978a25958ad3388ae6bb6eb65b7349886afd62aed932087c3fd780225eff088e38d4a25750256d211c55129f061db35ecd2361c5dd046e4baa9543f8ee76232dd6616b1d0b283996596d7e7987489c17736cb2d8406443e134a48a094554760dc96511aa39e7cd606eaf2d65b427f46e071e373461488ee3567d5cfe66ba2f1ac14da808a182a56c9684c3d4964d6cbb3c43ad407e3bc9edb66b92722deda28ec0f26d2cdcaf279f93c2e1f982983c98aa04a355ccecca1818ccf93551d6223fe02136ca2754699847e1b51926b4e15a114eaf8b4f5017fe7dd26d525aca87643e629bdf3f9ce21ace8a31e382293e2ac2bca2ff029c4a7faf89c0371aa564243df05f953c18ecd23512039b50cf723637d2336ba90b23228533c089d3a048a2474818a1e47615fb2222db1eed956f01c9df683c9140afda15ffa5f749fdd8abb9a7c7181a617f5d1a82ecebd5f4be6bfa464279e9c97b633d015bb5f9d71e641e88af3a2530f13aac35f8873b7004eb261e0f7f2039f89e5d5e8447821e5f3ce5a940243ede91f3238f9c40b4d72ab44c47191b7f4e98231a0c797d5749070ed99385118ffba4ee253e82b7578e3e8510f62ee9ac410216cd4e9895825383acc0c8db384cc1830c7896ac5d2c8ac3b167e750a439f7d59867a62153636154d73d809c2e7b371534b112b45dfbb5680c774ea30bbefff5fcd8f62bc3d43df98544663f15745333d166511ea7a1b970da4e2b27442cb34538e20236c7b3ff97c86c69f7d39f84cd8268cae7ab3b326a526baf0347a4e668a9042de3081a4141adaf8e2a6b9a394b34700982dc3f8d4ab1e29be1c2254aed7bb7bd98ed46f74a4f3534dccfe782de49ceeee1406b77978cda6559b004043f72960ebe5985f63e3391d43df05ac02da4abdeb64dba6a90d02d9b043f2cd1204e85884be263e811e205c6bd285ec5c8cce88df0d0eda6f22e0fe30e9c848a477afc23b2e0e0fc60ca9f37601d511a8d28d15e9a60067a84b825e1386d20c1faaf3a2c8338ca190ae468ce394503e2b4795624345c262c581759aa1e807550d28e2d98be37a21813235aa58289f47cc8039032fc1bdc68d62670e45d4d4580376a9727d24c0ff2cc0512609b4f47f27e36b4d6d0db5ebcf2165a70e73ff0078db01e8248a8287ca156f8c35fcbee01a30ff0bd512516a93dd271b12605ba2876d7e7e9d36790e8d5c198dc9ac6f4169dd513eee283cc5bde2038dc8f5b325d6bbd42d5e82f1450b175dca110839c53c4f91b06d1661b60fad73821149d55b933250378f27329d287ad9812b0979cb9b60f70fb5f3d8f28b9b4110ab09b019d64205d1c613b5b829151f28ab5bc8e8fc5225a87ad2e19b40bd79e2176facd120ede0cc8599084afb8be50cec792016bcf549463dcdb2ef5f6355fc3741ff6a305495d49228a24834cfdbbc76a13b1c3b5899b3ef7ea611d7a8638247bd91c08c107b7fff3a6b55c07ffdbd3845387d2a5d3029320ea313e0229a299fad1d4e9502b292a4a478ad94d80ef656b1d72c85d0dd345f0b545d28fcf168992c3e5b141537d5c284577ecff155013d1a88c22bbd548d2106d8213736386eae4cb67ea42c07f5512a03fb337a926275ff7e3258b22a36c432d16188ec4585acabdec8e4b9bf525d3b9104856d69f9521ac46c028a8c85f8d776bb349f01a07f088dda4f1947b0e5c7bb7c5ccaefa57b14cd51ac2f69d2e5db6e209d6ed2622579d8ceabb2267c06b24314ab43585ff412c8fe0d8d1d56e847156b44bbd89d7ca2c6c972be86782f43526ef8d2ba7a7d5b6af4d23530b9ce32c0d3d35b7474d9e7f66fb9160954e80dc7e4d471b3666084e4a3872d718da1200ed6ba31e6d9bf3b6c6c95209ae2db50623c0865432cf562b582112d2bc727476bdf4fcceb28b68639a6b8f7b8db85082434c4bf7a97b898d246e01c0a8ee0456aa1f1d5aed9e6f588f8482de0db866a8ca41c309dc5fa55499f2b88fd5a74637e324a405b8ce342857c4789f3440f118284116bb88fe704cb7cb7752b27b575efbd31ec029c49c5e5f503d79a05aef8d816d274feee23edbbd5f44a193b4a28ef4d16763794dd5e280311062f780ee9eda36f77b4492df128bf05b295ac3116ec3bbc5ca1bd04e76cd2f418d56facd622c7919c33e1a052cf8a8255319bfea73ee1864ba9a85f95e706270115825e0b8e8db4af0e107e8bc591634ebb61a7f474e49d01705cdf7a2d48c6eb09dd954ab281c549474e629aa7208fbcb1e0403b04f847d3ebf766265be0296cba519533b9961602b514c81a43eb6bb5ef1f5abc2d641823a22a4ecb4540ca45422167c3e4928d6ee3cba80ef7d89ec97f07b81cf5f1ef2e87a596be3fe4c9d8d587b7f38564f1dc5b962202d90ce9b2c228ea6228989d3c5a2dd18e14f659143e7be112e67e136dc23c32d10c55f7ccebffabbb60d2bd6e945cafbbcb49d2a38024a1355350a55da8ec3b2380001e759292c4b52275c8e9fb5066ce88d8968b8e36e0f8d8f342f21490371415dd41fbf266c2964f33bcb7b68d6fe4099c5ab279e81f2dee7e393b278b53f21e895d4051202288f110bf37991c7f47c79a5f0114a83578cda915fc389f31dc0a2288d33b6e10c7a7c18c55dabc3b16b087539666f5ce3cf6e55196849a1fa5726f40ee283b309cefb0cba99fad6c2fe3eff65193bf5e05349c641559741b509fc39cad01897fa283c660798072483463eb235169d8dc710c293f275374220746cdb38da16c8e0d35cd60b91befdf721bee1e1a048affd9154e7fa7ffcd2ec343d3e64180396de829cf3f4519b299bbea338531c5d88362765d168c1abb5c93eaff007c94329850a0bb6d1178f853858fbb9632304a8afc4b99a0d554b56e14f518e17d4061b514de2d5d8a7eca13a015dedeb751b6b10d3eb62bdd2928376232486a3bc3a732e80d6d509b8ea6d82f9b5a14748446ca38d9118e2538adc1dbf0acaee66616e5e9d889e9838ab1341e115e687ccd7af37626e2a39d301372ee4a293ac72452fb48e74cc43b7590e2400084a511fda94297d77c680968aa3d36d5e64f8219d5a50929d4fd2e114f496ab2c9531ebe9d79361003dbf235732f2174d4c95ef3450c6883955ef24af3e8b7be2c5c5089aa06e8e10ebb213fcbfe1fd88e2db24e876dda0b87a9311f8bf4e317cb46bdb864b978b1a85f16b454ac5dab53928684af4ce2d3cfde1ea8d86a49811494da565dbdad936f7bb47214b0285078dcd7d34f89bdd1e19ef5b5606c3ee25865d3bd95643e825a71f5366d3712eabe32f29235496b8aace2627309e8a9d7276e7ec43b1ba0e3ecd418d95d98313695cbd9a3de1ea388e344bb02f2bf3488936626d5508267b6e2837fa185cdbab2b83f4570142ab08ababe93ea12195dea11af315f36ac73d9247aed30e7ce0bef63e00316385f6ac7f49e6896dcabf41317b853974b6178f7a18666a3da04e5ce86dacba37a902ee6b172ece5181cbe94ce3eadf0232ff7ff8e0035a58216117c7134e1e2ecca4147cfedb3c6025ce7a350a6e72aa3790e474ed818801c1f9330e20885607ff5a0be0e9f739b506c1de11a0697fdd5d0688138e40134d1723b3922c73fe2332a9d1652c24b45aa5722f42dd6106148f1dabac41694bac23b6e9591e20c5ac345b683db851377a42157383086a9ba91e6b47e5214e3b5fe9b218b47b57c83c67dd86bc54a78faa4c793c325a79ddc4f1b2d557151fcd15b07cd43d9c90d74e8149c1908e41984c899d224ceaebe8f160ff38f9e113bbee1803a54d2168edb6c5e27f03d6fb2b37296e57a046c60c1a122217d7a30aa398bda3d58aad7888a04f490b18bdf954584d54951708514a7c10d41bb3829e5150c0f5b68fc1312be1f02838d3b3ea07a0ff1a945e6289d56b971026942fcbc1f4037d44b4f73ada5592d6ab33d3c6a6b941f12d1a010d2183ba87edb3b332d64daa1409be7a747e341be70bb9661e34b63c2770a9e157c72979d39d94171e22316de18e66467fb8380e7ca58908ca1b73785eb94bd890a71e40c2e660c26594ca46d13bc08cd9504004877336f0ea71050a805c2a8f0922c735bf47f2800a75c3f1fa4a99873b4cf76ae1f3ea71cd1307378ddde747d0c84cb006e82a54e9e2b2ebe48de35a13aa41a2f6ac6feea05c60fefa871ab57197b2ac78d9a8475cbb29c224a45839f47937864338d2a9f3f65115bba0e7292dbabba478f19ad3ab79ae211a107859f2cdadbaa45240d1b3fb7285ac87a4578823a0ba1f03c123f50860996d113a2ccb0e3331a578fd50a2e8c997a07d2eaf27cbe921a7d69d8060f3e73f9ddc577321e8f45d974efc8757c64bb1ad1247c90973647d7b83e6521ce9a5daa1310e0fbf289ab617b7fcb7fb4ee41d3f3e3be5a1a1d7be165fcf977448c44a835248b1d4698a0d0ac8b0f40c9299c91239c67b20874dd5eb49952247a6df5e905ed4af01203afb7c57de49012ac5a3662478d0540981904879c668a45cf70d46c2fc8791e61b25b621862978825cbd5fcabf3140b6de51df4f4a1397593041522d44e4631afe20493bb0aa061404eac15916ffe0e9becbff5fa26a4841bf44f23612e287e94d91b7fa40baa172fb8ac23fac8911825a069e6b1771bfc5e07497a4dcece5e9ca6aab8c1229e34872fcfaac163b925dfd22a77960cc4b8cd1eb7a0fdf45cc5ebd92523f02fe7e3310d9f1f6c4455aca99de7299c003b4662bb9dc39812c58b7ca0f954bf63e72168b42fcff18e778409d3db48c180454af231a7f0f144cb18a35f3c2c8fc6d91569579289a0040a29eec37fa38a030bb19f87eb281d72cd0cf6834ca45c4c87e5665062579f5685c57cb40fc10e35e62be2a9eb866df4d78f1a03683c1e046b9e766ef1d905eee12a35b658a3231aca4de77bf74b5528e3c6c24df9356f1c82c461febbd40d9dd45821c5d4886dde26c9609c609fc33483b747eb4a86389098a29ba7501694c70a2c956c2b76bcdef9a01072ad085de7b09369b9973a7db97e169ab7cc67d6fb86715f80cd27e1bbbd1e3f05ec36fbe31d514d3548d42df78c34b9ab5890d558643cbd12ae914f884d2deb5a719f7a0975864a00ccd419b1d3f0b67036a14ed3883522d7b58150a5d922e1227a76efe2b456bad2215fc12e73e02c45c220de34e1aba5a4be3ef2a84546a933e95840454104d9e6394d108ce40099a20cfcf9891a69dc9f9b97b05e4601633c8476a9a9e07d3d87bc50d700fbf771de4e57b2ce82602d9a8fbd0632c26bd93d525b9ba46b7a48ffb841f29213b1102a1f7d7d7a0b4a17fb395422296571938b96229eadc7d51c48e38ed460a6622c274eb6375dab0e4b140ac600de3b053546b9ab3535e0528f2a01c10d64e35749eb231c0073ec54ea3e6ea34243de23c7482a3e76cedd0766475f7048b600ea23356398f13bb047ad561edf52fe95c888971580a703ba0d036b66a2eef052bb29f644cb0bd13117c9092e58d44bcea79a8cc21043d802859d4108baf633029b025ea6dbede6850b36afdcfaad776dd936318372a7c8f69dac11c0afcdea03baa01e792eb7f7476ef5a73cf0584f207c4e6585295c73f8586ba2fefc98911874a3f781c664aa010cd4906d09557c9ef086ecd111258d5662c07cdac189386eb7103aa4993fe7d48c1e5c17489699c5084ef0f1cbc9015ce84bb2a87ecbc61afb92a6c53761ff54b8fdc8c23c23705ee3f6432572ece8d6d841b618c54e68bf715f31d789771c6ab3cbe7a85378aed74f64c8b69878bb7e0dd219be9285ed466389e4d5e457ed04c1509682f8829efea972303ce3b794608a60fdf8cec2517a7a887964c1013fe39dd5c4fb371a828cb87c3a2d7fff35dcce68dde1223643c21c986c62d7e9fc003e19d1764f9844af48682e64c96fdb48fabaec76ec69eac749ee9057985a8f5a7789fb8afbc496fff9eed7c40ae4e4fd91627614a1271ea93d17bcad291a774ab4156cb8cdbe7f66d8bf60013f7c386b6fe794bb8d9409984fedf8962588fe5c9052f2fd9c7d58ec0511daf02184f4360e3fc2b2bcb6fbb42cfe12c274ba08ea39e215c2a8ba69666283bb58d4afe6cc52628be5c826ad08e0ccb49a2749c7bcda4fe3cfec22a3ff4600b04787ea634380af06cb45b507860cac631602fca1ea508b059a6907d3492a310aac5612fd9513bb0ef69005b7ada0e5a5fa8634fcf7e8262bcac097c3648626988c6965a01b06209f2564b8518c3fd4541865f68c52891c239257de0f0f9fb6fbf6b492c7f7aa23402ffb43bd3fab213e71a9469e7421b7e56dd86e877a867c62d17d18110b030c6f366465adee5f40d7f091c370ff8eeab7b27b2d4dcc259009d193a0764443485e5a6a88c1bbb60fff078a1c58339e800c85cf6ed5e2dab894462c7923ad27010dba41801fbcde12d0a71a4849f30c5f0136742a2f8176dd26eaf46a736d0d2a3bbd75a432323155bbedb5693bb6e8ab7042fc1294aae6e21cece7f8b359905fa276d33b31a45ec391f21ea78aa1162bf75923908e2c36366798a4f998987614a46209f16cf9f0f3eac34a0f014990e288c8bdbd52b4163c277d560ebbbec65aa7870f298f74199815a63e5f539005a083a3c16418d5f13d97ca1007065d147c55a05e110fef7b48bac578e950db00e63a54f0a993b65c94bd723cb2e91f2fcf8142425eb1712c76864036a4489a21f4925e05ef235099c9e577b6341b7718dc6ec49304e53cf15333b1c90ecdc49781cf0ec84d7ce05426bfb642d6bde7d56080820673046fdc61e842ac8d8ed2a38cc228de95d9381e36c35cd04323893c919e5384d9b9dc1f3bd673bf5aabb0c8558d06c5706caea1057c6748f652034bf300e9684d9e38f6427ebfbc1316ee5d1923e9929a3ceef35bc4e8494bbd8e4263d77b1cc20ff49451c08a84946c6c075f6e58877955b9b1d520eaa15058c0ac19b0629d301cf175e6148395cd937ee4bdc1c43a47e2e4a9ee3052c45016b0945b0f34955daf03fc178bd1a50ec37b5535080caf78a02847e2d6a83b5e1b87fd6e90662436a4305a40de635b2cfe442c0aa2562e8256c2315e2d0373962a22b7b635674ebe679c179ad42f62f204e636ee19303bf495da831a497e603d622c79a170cf8e5414134a1e91ecec01cd4e01d403f619085632019d419bd5edcafb564a2ed5336dfddb6c91858687b5263285702252a2ec88cdea6393e5e67b2c7916f37f77f71c239e9f94704af703dbdc187cd00f8863bf3dbeed8fd2d71a341208b155513ec427d224dfec3c9ef3a7c8f9a2b2039e49cf6525bffc9205a6de2e62edcb34ba553f99f939ad515effad3ed9a85055bbbdb2762fe166bdb8b164af26e09ad07a7bab8b4ca3e2102d252ca05de499e00070ec933bc6ccef978412e3b52a13c838325ebd4e8adb065b88126ba52e7bfb0356a88a81d82bd155006ab3fc2f45f6188d515276179144869e461af097eb4cd4deb8f1b66e953d1554a830004415c3086005c11c8d46a53061efa0246586881e363b69de41039f364f87b8f07260759c6a2cfda29dd1570251d1301f22b81865fbea79d6d951d01048f309f0ec4b8f1c44311a53fa72da99559ff4a1756e420f4d0a8995b3581f8614ad75e1db35c4a21dbefe8d7ed1813fa989d5fe71039dc323bc58ba1a3a2f1ba1842bc2f57ac0a4e6e4be552e756f7dd9fe5e9c21986de121ab14de086a4e7c3a3d02997163507e1ddb786f3a32e92d26585e8065cce5dac953898f33e275b7be7fd69192577db0e68497b6b61859ec4e321181bab87cd221aeb08e77c6d8301d3ccc58d0a1e59ad7d5e29eda5741b5d333ef1b0a4fbd04e6e31b9340a52f137ac541a9ce999efa216b09acd596e8e98ed094e1cc66a165690102ea4232cba8e8959d8d291799a8dea49d82778e1254937e10e8e2094337c8b93d14370b2be3a000dad212ff6eb8b2cfff35e0740640e91cc0b72963792abb6c671f8b04b58208ecced968f4dab48ddca5d6f8bb9654988730d69f6477bda0f5d6c92ca6b8e8be16075e455229292303c474bb5e887b4286dcc72a23524409b17b2bc3da30661ad5da591cc8b01636ea39a0e4c53eb8bef1a5a5a39f5a05df11c8f8a5776bf6edb6d8ff9bc2f25be8023976048ac71759151013bbbea69cf285392afbc1b88fdabf432a87fb808a2d9979a7038e67823c9e017782cdd66e2c6269676cbe71e298482202393dc7afa5f58ef0b5de3958e0ca3b39bfac100f12a5387e2b6083d130d3fb1da4f7a725a7f87569233a8218c481e20dd0f02aaf84bb8c85fcdd3e99bf388ddcb95055ffed822c6e609d76b5ca1594d9cad58268158d3a6d07c29c12f978be461db73a6cd0595fb77da39fc89555a48dd06285f98aab2754b1e0df6e5e1044ae2101077277ce002ffa12da9a529b363112f97f8b0ab9d1cc461ec32178e7c19ed0c4ba02f6c2141c1888df8b94ecfa113ec01d17481a79ad78f58a7f646bb1b791a4bd9e5c6009b635a62a6f7ea7f2eb031c25d76c676d8f36d4ff00287bb6cbefdac3a5792a2a3a98509fe28b7979203d6a94ef6f91aa04c9ac9d2671a9bef7ed8fb69801879e87211f2500916d0676040c1c74641b4b3f1a8cc5e86d85129a91cbc7c06f825e95d2a4a45343deb85685a703a643e5503fbe2b708feb011ef627182585e8b96a977d7d1549dde4e53255504a7ec2dc5636c37f366094c2e887ab8d245aeca036df7d600d2957e07acc3fc11f44d4423cc1654a50a3564bc326eac930c52ec3dcfdef24d1acda74a963d64986556b4a04669647aa8b7bb65d424846aaacd19a410681aeb7b4a31fe35be581ff6a2127da40b295d53fd8d6990d795310b4148cafb691a463995f18fccc29444df7b9a9fcb64e2b7b2523d9387f4937a2b1b5122bd87b694af483dc77325469226d7bd743812a2f70d5c95edf440dcf76d8e85aa69743f92c95abdb0fa94b74e6c6e05dd6b06a456fec70ed643d0d729bd74c9efa94dea56f1b4125df5c3775855bde1703123c37550a9f53f43441c1bbf9c78f7325a6ca5be82236a43e7fb999bcd8dd92a1360d25143805d9871b0b84e06fc50f5a1f40966a4be94821c78e48dc6a7322cb4ad2b8628846607faeb9bbf6b6fba8959d440b26210b5fe9e3db67882a055a89a2a0dc7b3569aa78c3d660dfa057ad037510fb9decb69e3c6b469873a4f69a16eea6e48b6353ef92bb62cdbd6b9847570c4f2d98e34151e705f1c056c0f32f244f4de3d46748d5a43cb7f04fd3658bba6d866ac1c84fdeb89801cbcaadea1e828c293c2500ff9d4a662494ad1cc646d8a7c54e626a87a6ec249bac47cfb95069c31938f5b8b78e3fc7cab337ffd2eb3f24e1f1e5512381b7b5461af11c46bb68c5588bf7b79b42a22f64ece4a2976bbcf2f216d26e92af8503dd7e7bed2e7c59e90eabd10823796a8d001f1354ac4dd9d5b9484c2d0a8dd5b48946affd00f624f36221f12e2652aa983ff1019cbc453f9d8837e2bd0f2a82329fd603fabf1c0081fa75a239824e43f0b44276f00b16cad35eaba512892ed5595cc050d0a489933d6c9c71447dc778031ade2af5005270ba27ce6d70ba758712305113b84325d3f1e20598e56d0b93f894296597d7899907df63ec805ba5f29eb4584a0bee310ce6c2a328f90c75c4fbdd69465e2d12ed141bbb28bd753f4f7b3ffa7812af0d5f0e6dec722e8e3ecacc598301c550097abf6a6aeb59e89e61b434cccebe82e90fa313b0a7d091ed6a0ea64db656d79aea2591f51bd8ff5e40a7661a499efd28f6e96ce0b63d9d17c8785b5ba0608b6d896c777dbf1ec44dc73dd6c604849805fb9be25b964bc2391dbf3ed138ccba8469463aa301684678c6c783f33673cc278a79e2e79185c168a5c5ba6195afb94d46ca6cc403e4ebaefd940329b254f6d44174daeea681bfbce48477f0f59b12ceaf4490506a0c49969c2788780d8fd29ccdf7aa40f357e337faae78d917e1eeb8e113eb4e276f2527f4de193a403f3571b14694bbda1cf6341fec577793f4565d26aaa9dc45b5f3fe5ef0b6da49fc45d59dfc1532f4bea415adf29fcfdb9580d560ac45918b1c10e80c0f4174b0ce09db9639775fb818cfb3248d303102aa718cd4c7b950d8dd1294decc3661a446270ce72db0123fb4c71115821f2be16cae74b752bbd0376a452aff61a86844b48c7fb324d2ce777d45963c708c5e572cf59670a2a656869fea379aca0f54ff836143fd94cb8670421abada711cefe07ca9b14bc7c8a6abea1441fb5d8ea58be88dc7f6892caeb464d7dc6009ff4ebbb8e197b69a0d66ccd71c1fb3770af0cc1941b78da4744e94d38773b167cd4a37273b71901b1115ea744efd7dd9fafcef6ab90d29567ccec60799aa5c48192837141f54ebbb9f3e2dfe97ac620630cb3ad5c3a179db84e38f874eb3d66950d1e224ecdc3c6170af1fc67b265f69e2265c2e8b3ee2aca1fe15a033409cd9f26bac7be4616d9305b9631d2ef50b0f9adfb699a3ec2c6d9ffa40ff68df5ff91eaf331e0553168e8240a675eb9ec72bfd82b65664e99be30a9a3654b3bfbdc520169fa05a630666fb6fbc222732b183f08ec444864092c4cdd52f2ad0baf2a5341c8ca75586dbf45c40282dc401042d8c2807820fd0c86c1f0d116e954dc0f08932d560ab1a7927c16f34eaee14db23ed719182b81f5132059d93f76cc70927d2c268f7e68ff0ded853493ec2e69d053e4bdb946f79b4fa12cbdca6e25e22f9f86c74c39d5b78530d6b099f4c099e53ae69baf58113eea7579d6b1828ba729d65525faa2aaf39a022f6e7509d0e5ebdb74259b5d6392e50e45b6872bf0f058169041a6f38f75297650dde3ce8fc66aaaac409fed4f0e596e72c186d052eccf77d78f59dc8b33741749a6769a2564988b82adb5ec867888c9f28dd901e3b4c4cca73ed3652f21f852bfb554a97ed8c6733689b70267ea243932a53c8f6ee990fc992ed6dd5ce50d002547171d8a1b715ec1642bb38320aca6240c3b40a516fee04db8814d1abee4e74da9a734f2adce6dd3615daf64d30c82c58f301cabb400a842687f8b3cabf65ca17ad5a6342358711bf73751b4eaf14da452a6ef81836595383b4a0e117775498d246a0cab7db1c9ec5feaf766a89ece9762c5e739151663654ef9255c3f1c80893a113e89580b391a0ebbb9114a32081f95666b0e883925a8607f24314e1ee8ec144eaefb353d3c903cdbd8afe94f9268b4be17d32718ec9211cc887bf4421c211c6904c20ea46d6719093fe98dbb165cdf758795d3fcd3bd044cba24078d23816aae181f2c883e2648b4f1feb493d888ac550dd8ce25d647da67372c1b0ac7afe7558d0e60d4daf125fab54723d28ab239691d0ea717ba0395e48399d0498a90a1d37e6c29baf261f67575b0170d687d6f4c3d18c01c6bea06cae4693037907e79db785b026adce21c37a09d9159e832c43769bcf64a5c74fff02474b7994521c551e8ce05509aa8a8b59210f2e21e2a94197b8cac25da28980acd2020d4d7673986780791a400906eae5ad78feeb7f7e46057573978cdc4fd827e99c39eb7f71872fd3f4fa58220ccd90ea041081a282aed3f057bcee6b2ddef6465eb0d8564f900b1f4b6a9f4ecdae7543dc6c997cade83ccae3d94708567d470964db308ad57a8d5813a77542aa3add9e844bf8fc854b4bd7acd1e3952d73e38849b64c7e08b8db446efbcd81099b2e9696b1d263c704cb8def38d9a9267a2d70bc4e450653917a51fe969f6948026eb976a54da79174e38f64ee19f1c7a533f9d1d7d5789c5771913a554f22252f943cc18cb71b5ce0e4be1f5b397b380ef0edfa262b605b345f2475c344353c6d3d703b1c3a64b2991cc1d4b22075c38236785e46a2190c00b8392fb9939d55fb49f51f4bdfec97a7f273a2127b806b53167bb94a4397fbfd790d382fddb1b08475be9cc1db74b82bc3cf287ad200e84ca09f566b42e9b919532cd2955832b2892dd7163725f1c9e8ad57afb583b686279f3cd3be2d1294aefb168d659bce7f645ec8d3416dcda056c68385cadc16f0329fec523def3f4de99bfd7bd9f0012f08274d1ab40b8a66316dbf8654ec2ba0dfc7311ad5bb6202a2bbff0f697540d4a3ca4a5d9eb7069689aa677a3a9f730ca7f539531b0a587f5d21d7862fd9795fd4cfa3a82aec71dbe8e1b5c50300a3150a3e2fda818be69d231bd78f7db9dc9b668459e0ba63f10d1b7d9534c9427d378102fbefe1f4f1b5e90818e3e76e7dad3e0514067da362affa2bff7f39523a573a61dd08e1002b9209fcfac2f57abc4a08d113095bc0d68a682c486bf0ef474c62f50f4969e2857b8c338352355c07c568e7d7175b38ea62e0c60d78a5c581c58847414268bba52e59f4b6a44c60046fcc3761ffb1dcd4ab9128dedc0f49e676d311c798ca1df6f211fdd6f1900b4d3c624d9a8ceeb4f80aa829de592c62619d1b990929bdd88f2b31eb1b8041c88ee3cc30edbc0935e574407338f3b95bf1acb65392bd8997ab9288dd1c829f6060b33cb8da35768a4374fd7b67ac9f7f640738bb5a8813f31579b121b2d902383192d8a3db5d2a5bef649f7d3802ea3351d0f915771b6aedd9767f88c7863b0943b4a1cdd770723b3debe69084cc6d773bcfe2a3d78cb78abe95b3e643d58695ac7c0beef72e7f53785a85876ab2d76bcf27502ecc192d284c46e5f39f7d7fa1d34de032be3d0c0c3766a1697dfbb49aed1d703085e8ef749bb48bd552c581838fbe83532e2dd2814838c9747397f3e4cbd067f673271b7a6ef807a7ec95b14ba0f5b793a9146914479f56d522b35f1a34e64af81ec0ad4eee1c9cb37268a03df9d5b12f4bfcb4f6888058cef591e8d78215c1f12db51a8b081c0469ccbd633a13b81cf0e6035e5133877cd0e9320e1eb15397e59c2299578d0ec2b7f73b4b7a7f2dae0695a7d21d68691665733cc6853453238743f9de0d41d193710e46341c182497c6310b4ecde73a54da7774bc65a4737fbf61883370a5caaba25e3d283fdb82a5ada870eb971e3b398b1c6f7511258562554a00d5320ac5fffdc575b87d8a273fe19a01c15d8a0f7395ad31afc28814626a3b9e8e51f7aa767c31825cc2c18ac033bb2ebb73b7f5bd57134c244f1bd4c8bc6b080660bb351d10900dc4c0d2aa66e0129a63fe59dceff8f6a9f3b2e6020f035c1805999a8128633592e67531c4aac8c7009a4229453f349e812f5fb85d4eee1289a9f2713548e67216d4c45b5689d6b825436ae271b4bfa72d4054b65857f90b78e88da69699eaf7de3eb9844503fb6e6d35e0b27d18d86055d16237dc2c33292ecb7af48c97d2e2c81f0088c0ca21f76808329b6de84edcf600a285768d16cea9f222c0686f67d423613824d7f25c586cc6abfa1a6e8e8636250be38bb15af36f5d8316bdff11cdeb4ae7d923ca873dc8aeb826aadb72fab40dfe4ab1da22691b8c9e84de2b4820bc3d60ce4cb8aa0bebd8875ee61178ea4552afdce90ba85e265e23cf98c27caee2d4e926456993a0ebbcb445cd448dd39cfb703bda111d08ef1ca91935d4652d333eb99dc1a22f3269c423d69f2075e9685f8b4fa16a55c860e169c9bcd451dccf532b019ee657cc5043702a47295ff87e243375e4ac58c4d22e24bae7610d377f23d0ef9fac747dc97d3e4220bc03db08fdb65d9e6052f038dcbdc183195bdbddb50674c6910c00c738e6c803b5839e21bd45201615e5a32f196a110dedf5941546cddc614493b579d5162f67c315ee7fa23a72ccb3da3316113922ba1956f6d8b8dd28e8455e2b6b7cf3f64926dd3e46f101ec09a7c37243b1818cd7d2098d7da5717aad5f762d96e232cd0561abd45fcef76a79d66a9d130def1fb8d873a92292373e51814f34cb856aeb83472af5295881ff6efa116ef5a0b638a4ce35546d9e0dc84b82ae6813170bd2b2c51617077c6e89a3c3f1faae6c1470d299cac3b3176b845b9ad09fd08099f1e4df750860f0fdf0e1d5351b2f2dded2bb82048162663b442c11fb222a38d80c5c3261736bf830b46b804ca0b395bb3e9325185a1634a9d2b2b68c472695fd3035deb6ea2e55c835a07e914046fe3236297651b32ba00716a905af23ad680ea66109aa93d0004aef35991555e767c5905c46781479cf4606dfdb0ebf7b0a06a8e86dcaf50436f70672f20c4c831b428cfffa21d62c87a6660d137eb7a59a509bcbc51354e73f59598b0ff65f137f6bfbb7c2600b4bcd870202df178f878bb2b9070e17d40379739e3a31974cb997dc8d274b51b56176236b36a9742699f9185beaf9857ee9e67e7bb41ae351a6249b9c2fb3998634b21f64afcdf0356c4f257d8ea6f03e9602890fe8034a10275d929a415dd22ae21401b6b4b1758cc155ab545d7d555bf2845320dbf16bdb86eb74d8f191521ca42eda493930c410683d55e0aaa9f05d7c31f731a98c2837651a2bcf92c4cc19bb871dfb1f44f4049364ebe95c4166c9671796669653eb97c97e66f3266f33d79b0d68756514d6be3f469e9a5116c5d811c51950a56251a0c76b12d15032a5d7f20acbb94487a644742f3a55b1c774ad9dfe46b24870d6fc1d90550d8cfbcf086597de87aadff58179806f000cf05e5e5ac36ee6bba3fb3c32986ec936f0df5fa15abf9d87a8badfd57a7a6cfea10b3722c89726956b9adb483e8233877f20adefa35181de4d3e6159c3521f00e5a0461ae27b4ab5c39d6efb8bd5d423ef0cee7ec80b58cc836a1353b950d47e93a57a5322d0a421b563b2610bc21794410ac30a0aa432bc647fcf024622400062350293b390b2636726211f5a14010582b730678fc651d8d315d1b25db6f7ccbba36cab13c93a2b8a1d066385503a98de708bb37cbcb6728aecefd3dbb0addd1c2d4168c183a29c66c95b7273734377b417995aa63c17e2cbf48b0eaef1b3e24a8da782d97c874fb959187d81625d80834c2b53547c87823b1ab8e69663fb391b5ab021a0467361c90ced9568a3c91bed0d965a4a50d4bf60b5aafee593100a74e274f82a443e96c571a1663110e2b308521c9c73083391e78d71a65060daf64b4fb10f3f69699ed1a267d3dbed18d39e73ec7c5074e32a441630c764c7e84765bbe6d1ad4df33d13a6ff11da2d24616d7724520ec46cd8d91a69cfa32097d6e051fe534662ffb7c6c1d7c392135b5e4709a8d498d37ba1ae5c004a2d183ca44f06e70278d24e0e285770697fd650a342b3960deb5fbe44e3a4197d13d8a2f17af43c327db5174a69565d18fb0d168c6eb3b348f8ac1062536a01c00045e1c588196a81173236687fd872611bd2f08aac4f620098bde24bca7e116ed6b1a00b1ba299be4a8efb1903d3a655ca561a2ee9a143d87a2d0fda93b3e753a33ddc30f9a8a2d9495179bde1dab057e338a7f07aeb5c4cc47a1a09292ff66a1237a785b6f3ba4c705832bea55b5fe5dad2512b4547663347a5f7c020fe50c9ccb4cd43900900d148019c649e8afd3c245006ba3c79dd39d7c432366e5ea43e032dd7489f639be772d37402ee655787efe229b5aabdc36748492e9c9b8f18252bd54b52c003d2792c8bc04609c7fe5398c04f3a0ede1dfa36734be0cd27dd085147c89a6b64ec6d4df8d822592ee462a7731f8c3f44cd5d235f0232f4deceb77a8123fda023ac7bf0ddbeb45e2e4c3a3bd3370887b549112cf5acc11983592a708e998cd6abb593a682bbed10277273a1c516f91ff06dea3978b87502fed241ca7492e1031c0a205c60bca766c5a1b4da201ea57ad4e4ecabcf29ce833fb459f1c2f1d8692010e986ec240a9fcd72f27a94258b9b57a052760caf5025ec7aa87f6e556bb1e9d06b693f20e97b2b729515ab036f83415a074ed5e3ed31c0ab0a6c41e088d97c9bc1a6a897ac3efbde980431ecc602b3b45c3cf0cb91a0df9143621c4043555b89909b31d9e169f5d92acd8cecf83b3bf7a3b6403b996164672bc33309ad5e00dd6985969cec491eed3ffeb9a850af4c8a00f305f775c4f6725b04ae1bdd590f327174727f2cdd51faae8f793ae85c8cc6b9f581b22aa6a6c387507aabb2c8d9f5c41ca881744b8ae76fa50fb8344d61a0db9e140035e7ca78bc3614ed7fc743868c2ac721aff2e796d9e726eeec732d010337f9291d318c95bfb0d78803c247465f9276e724ae2fc58cbb6e5d0bea1edf84860346c74fd581859ea6d89c52e14c2e2fb33f0c340924d493c215426ace4f5a3a01c169e6748411a1d3e1e1f0da3a904f29ce79fa1b2e340787666293ae9e3af0c30fe936f5558b8e7c6308a966984a546ac5956945e5a08aceaed6e2da740646be4a9058cc60d45de156064121bb6f22b4d6a7468c717a136d0a1643dbe80ffd435dcb5b4b86a4e449d578753f0c96d326fe3dfe3219946c5b6c46d978f9f48586310ef33d1cb68f9ba02c5f3cbbe452be3ebc37e326e6ad6af570f2b272c0d69dbc4ab662cae76f93d5bd0da9293d101a2600aca61dae2a748dc6607b1ea9d758d594f545347cd6928fe2ba479e8177e5311d79309d79a193af0e30402ef7acb615e209a4431b3b883cb4ae32f624a37ee5dc65492c0b7b6148563e2393351da0f74a0083143628b263201935d5b119ef5d105fcd644222fac3d471a8bea3f26540dc9ed423cb2b47ccad84c1562f9226bc08ae52e6158b5ae9950e9d9041c2c050dc46616b92fa893b144c4b64fe801d247c2afab542975e02359b5aa386604ae41bb65502e7247ee5724573ad5ead5bb90fa80ed822d6bf70d2901f0a8e6eed3eb076dc9f3ba207eccc20dd0c832a478e406ba139d748b79f16a41a3e9b77f44049cd6d39db4811d914de8fc79342c7bbda77f642c54e78c9e9a7678055b1bb139fc9f0ae7bebc6822215d374737e5384944a68012078425dc9488e9f728e9824812c2be3206aff7bb5ffc37270f601a7f7825e8d30f3229f5d3558e80934ccd8c12ca52c4f73531de2cf470c36e678393a4ff37b9bf9d4d01abebb4b78ca995808a6e84207c40a94ea30f8eaeb9292325856900947c9fe441bc8a7b2799fd77c1aa92ffb5cffd8f459f37a33173a442939afdda730323b7a9f2bbeb7352af5add8c0daf0c1e99271bd041a509ff29d7b153b65ffa024d31973c16383c0ac1d33ea792a605b968e469bef9cf0978539a49c905aa5a41826b003d860de8d35b3e5af52207fdae2041ed7ffce2e2e45c31a63b816b80d4982ccdc42fe3939a627a3f9ce5d9bb1402af4fe108eb308daa1339be3432fd479a9058f65b4f193107239425ce24fff6a00434e5b81487b55a605a8dde4d5bf0bc9af71e996409b171770f27e5740f67b1b36104bb148748156966d0ce71e3b156135f287a68093fa8a4a361d82a0c42d431591f207a58ff8785a4684674a2c357791556a861e7f7431c309216b96f5319584ef7e1eb5b3eb2f523a49e655b5a51c6e018d84c808226c15b0636bdee514d36909d2379d8bc5359c9fd01cdb27f5b5011722d97da68458653f2fa37855fc13bad9e746523e87b6f2325c1d861c93b0a36a7aee6e7b39d74cee29ab6d2f80ca2bb87b0434b6198c1989f371c65d0dcf0772488348b131c4a4c1194e13ba998e88a75e389674d1dd7d32a9f8898a91465f02c183b2ee20ab94bfb3a7aaadd17fa794305ca3c331709ef138b1cd18815c8b3e4887351b43f0d01dbe22cc0bb7b36770dc3e222c91080b35c287468551aed9a52e185a9760eaf9dda32921f056f3d9f8f6198495f63596e6cd60b8876ea1f822ece3d4570db4b48ec92c26d7db597c89e112b87486f123677b712473215fd9bf40a4d9ce6816bf0740a21eefeaca53620133ead427bd783db33093ead83cd3c427b69ef8a6197c0c9bc15337a8ab806a8831a1c61e900a998bba1a12c911490c4b3bffd96b91bf17efce985771e6e24cb24fd13b1d599c639868498d2f255fe45be97d73bf150af9c11463bea4208937a32b11512eb5a011530bab432f99e8fcf6277b96ec5f4913f206af4ecf9b685f89d9d643a6b5e941014cffdf9a12d3d9a54a982f14d3e9477a1f38f7ecf6e10ec0cc815e12ec8ff1d4a4428839f8519662bfc39ad825eccb74eb3e43f91b7c6756053677d2950fabd98fac5a0b9f545bd9cdb68f4a784740af9ce1518306aa240fa303757c5e555a579fb7578505246297086c2fb432aadee90d0ce0257a3d26e3c83060b06b9b628c5266156fa4bb2884bec38a97a9814a2d821e47945d8266fb6948efc01a5e9df36f730288a007c1628c63ba2655b0d3454c33ea51c3a1895135d1d76e046fa9691e124bd2df86c4fa0624abe499027ff186bb7a3ffc5b2fdac6cd8f82225d7f0436332fa9866b2e9818f6713c0520c6f80ef6f6e46cb1de30a85eea081c0367cb0ba3c673eeafb2a33d504cc5204f2f48e7d0d0cfa2c44627a13bc1791f147da24d2c9f610dfd0673327efcea25567164632ab2cd12088b49469fd1ad3b160354103a274ac652763bbf54956d1552118dec73aa2ea96e72c254844e8d7113601be7fd840325c59863bc90f2cfbc5565896d994b28143bd93f800c645997209ffdeedb34efa45eeb69e183b2c5e913ab3ec4cb1aea31e8ebdbbd1ffb61033e1d63435d70c707b35506244b81ce6b512f117cf4957256658a64a20108c5c282bc79b1ce40ff04c5dabc3b46b60cebf64f46c82c449687b35e278b8cb1180b164a57c6d2faa50b1bffa56515b287d5231b4a36b628f8f64e787210b8e822ed808d651de0dc16f2d92ba925145d297f4c6da12c87e318bb0abb4a61bf6e87377d84de92bfc53afef1aee268180066373c7e8020d5188ffe03f5d6d3c1ecd386e6b9245aabb4ef1c98baa5ee4477f96bd0e5569525b45a7991f66b8385aa98630d06359b4d13f1bcdff223444edece326207d59a176764de8e7fe1aaf9b1ea5546daec2c7a80bc4cd1f7242bccf52e68029cbcf7fddfc2c88f8eb5df9e9cca966f544d0a4d6198facaacb6bec348e404a902df7ab51f4a964b6c49d077c85aa8beb255f3d076a2a13a2188e8404e19745a01af085af81f0e547ecb40432014ecbc1ce985356f4bc35ab71bb7b8781058aeb3c46f728568892ff8d1fa0fd354022bc5f1adcecbefe101dee3fac0f86cd7d1a4a5b0972f7f7beec0604f7978d7323edbc801f3eeec694a6dfa9ef6744d95b9cdf0c2ac5516c7fcd0eb949f00947ecac5cd98cd85377e38cb354b20bdddd24a624f604a54f7ac74b58ce70d06b971bebe48d6654d4cf8ccd0da202d9ecef02839a4a878db406756dd67d4343408d69854d91a26e9c5e54580f44ce7b538be11269e039e052f30667a1b78df1be95466d6cf00012aa28c15301c8ab9630e9160a0ef2efe9acf178467b717a1093fb5eb6411d4c79b9ad0c594fff743178d66632c1ed52d102d4c4c1bbf63a7c92468f55cf07cbd3d78496f40b2ce33f1e78c602e269e55f462843f343fa1d3a8d2a6f8d45e9e48dfc15c9077f283e07814b96484b76e323b0fd4cf3c8d53a6c9ba753aa61725b74750d6d0f461b35bae013fb4ba6e2bde613f5bcff7e6275bece429cad1ac8e12b7381ef6887c33e8e69777c07e5ef8009b788034a103f48c34bed5a172edfa99e3d3d9559605e69e99143c51b670c6941b608c90ff7735128e7f8937ebfb019ef23cd87acbcf2a297c4bc0ed5c74a481e37ef905eea441bb6aec21495c9c85b71323f6551852b9f3672b1f3e670951d24d1e3775ffbb83665ff0138266cf2adfacd15443ea5fc4dd8bd1fbf3f9e989c382a21880cab9ac7d46df1d742c49329ace3fe28803b4b963b1655571fe64aa36b06a5757dc50893e0d8b097d26d8432807fe3190f5756647ffe1a600ffbb808e7c948e8e0290b243c3bf026726c16d6a167fd00102fe3b2c9e6c4fffe8a85077781e77e609d1d45ef001c213a95e0bc07d8a5e079aa1b989ad7e10e740e7de39c8f9fb0bf3ed24b6feeb4aa93057da07598e5bf25561bdff425ad0285128ad247c12513709e2a4b190ecd54d55210281f7b6547758e65ad8336009a7e57c8805c944d566f34a632e4bffbbc99af2bfe477329d7a0a87beceaa2a37ccdd03f0ba1c6a83e3338ebdd9a34052d8dbaf650a901ae6702796f53e52141036d5d04e7ba1f188ab88ad8e7e45975e92f7cb36024dda5c2d97155e1df946932dba80673710d2e65c878294f806934cbf75475d89a88033cb1f03a6bfb470a854bdad2557c6ee1df791e36728067c45c6da589015dee2ef2b4b720cdf6d061c882f9c06a2f8da3b1b0cdd15bf51940401c6de8a1030c5011f25f3ac87f2fa255092e56ce65b81b526bd9d64b31ed1c6f327040472ef8c5ed65a1b0c67bc4aab44d00de913b775478e39275ccfeb6936bb80ecd001d7f105364bd917f05af96051f0ee07417d2e1d849b73fe17413791115f0a96f6d140ab1671831eb532ae538a388ca1148eb04219e9fe9a230858695394d216897ed92ac00e4831dc9f694c16b0b8faef24cced7ecce55c862636414738faad4f8cb57ebe97d123630a9c00d42fc73e9e71a89efcdfd821574b6766f22e75478d3335f56c0e008e17536f88d6cc0a840edf77b885d5500a14e62af83099cffb8edabfa40b0e0293dfd6a11b55078ba16333bf86dbcf16d7f480e244db0956792ff1f1f860f41aba2faf6575c549eea6115ed79da811507493cc0a838673e06b9f229457d1f79e172c317b2e02ac19ec63276d3c15ecba030cc314826ec253ed717fc4521f755dffca4aa0c44d49c881cdf2fd72294bc55ee66015611865b4f57b0e4b57d23a214737ca61f1346521b045d52498ea166b14abb2a3925060d8ec5a5bf50abd3992a98e7871d79905829ff704545191aa019e6584abeef9f8770c3be6f8088af9b641964139519de6496a0995fe9846787ca7b85f7bdd9ae99e374cd90f8b8e539c907d01fcacfbfeab25e71982cf7fbb81f03630f11fe256ff401d865620112ff1a203c789a1c70e9424c91afcbf6b4b6c7cf1ff653814dbf173b1b1c077ae18c3f5b3bc9ccdb8c50e543fcdcdf9b4373a015380624db73bb53c807539ad088c39e501ea78b43788fedb5536fb5fd750f0c5b992c6e7f873f51eb3c53feca617260c8df20cb233069d1f568ce6e12c20dce92f4c8b26e40dd57255c96e273f84bfcf73283520168b139e5a1a2ab780f0cfec7b61e51ba6f3c3172eba262d6620a184618a9c55dd1669ddb277251a1f2209af8b1f0c381b546fb3c7c855722d962279e5adcf061a3e86dc9f2cd8e86b8643a83b69ab92708ceff563b13f57bfe5b564fbc63fd46d8d360e7ce02f112d4e5600e81835c28121e1c2c012e065482cc2118b42ebe088566ee6026e0335c90d75113994dda31b056a9e30470e312e73325d2aba7ac0c9922db2b3147e4b63f7184a782bfcb2486321980e7007de277e8c3da058173c2df5c6764e4be66819a7bc8c3bfbb01e0208de47b44c8d69f733781b734219905fd0bce1c5770d3cabd8b7842ccf466c13eb7eeb53ee8d94c3c25a1c330fed71ee58e4a2d75106477a589bf6ebd7565bbc50584ec658c6becd85b5bff7bae5d7fc3e36b6d7f2c9caccf6c2439809b15358d93d1244baf4e7c7f501160bcd36f5c1fccd34f5123b2bd8b7d00c66c833e142f7fc6b31dfa5887cab13f781d786ed980c1820dd9c7d07ae2b8a751e1b16479f65a41371832a474a9e9b393a8ad2a9569f6023871cdb33d18ce28b243e3738ceefcf9fbb8f146b5d1fe1df934fd037edd1ec64ea9a93bb0564898b1ff1c94aa8f947ddbc6c39ede4003f98aece2b2b5099719e14b037ae1e981d7ad4356738e8f7adfa8ee13adbed74447a51ba1ae7369d4aa31db7ab3844f673bf113290ee6f88046a98674ed7cf5bd683f06f6493e416f6764023e174d4dceb15e1a93e297bd46f90162ea89b5035951f68edbcc2f892184a98b90a389a488e4ab4960560a6d26ea0737fbd63c130e37a3a3d72d3bac76be5099f0beb7ce0efef8e39506a5089be7fece40752709fa6c7a3304c03ef3542b82f6f76b235148048d12c7a8fd36d30574f05b80d8cedd437304f6d320c62336390b5e06155cf2ad333dea9de9103d79157e5dfceb14def8c500703dfe556b0f10c2b4ec4e4ad72c9b518eecdcd0ff52a314116c6d6782927ce2ddc458f744bbd17f2f14d636884e2dbb71db5a7c25546a94d095d1eca61a4827c2096a18835dca2db47726d9f414e03d9373fc318d8d877f05ae84380cbaf30a7a74b97f8490d814bfbf242ea15dfaca561b103fe5ffe810f68ff952a331290ed23422f4251ce986bb4d96224a2b8741eb3c14f5bc267aa7990ed6f64017c72bc51e44e515ecb14544e31a2cd4e9096570cf2c4745b5ace79ae92290b26985d8020931dcc8a857b71fab301e16c6b9cc0ac2b83fcce750ee6a8664b52de9f49de04204414522850f500471b0451058d987fea61d53a8556f2bc028410dddba6dd10225678c2b23b93ff985f5407a9a39cf18e6d955524f2f4949656f477c2287857d9e0e0a1138ec4f0077fe27761876c83d0ec7d550077a7e9f3176485d4fb3691fd78ae60b7d33461245cdef09ca675ea42c181d2ba11e975b8a02546f1de6f30a7d50a0723e9232f97ad2a2a76b83cd469ac4020bb78534c49036a45fc971a2c2770b5fd84d97d5111cf53b9e8c8e9781204de639f1a0a7ad5df86fab48984d55c9e5423684f8522e712f4e269e147276ebc1e5b23e7a9aba74a131b5700420f088f5937a531f160e34619b833fbb7e2578f9a1ef94f35a8971065fe208669200dca0b3d9b08486e49e31b372b9e88a5882906534abd1bf826fa460ce98571e5b3271f4fa1343f73476de1aa249fa8b5b8418bae7dc1a20b27985252fe229b54ee8840372a6b8ace8cf0544bee16be0d92282c417cae7ed9d80eadb15e044b36158ed241e69ab29c5916bb7496f963f0f3d9402d05a47639c9d900d52cc0f7b190cdc4a56e3a27e3d7ddc153c423ff74790f8b354b7234933fb4f39aa1550a8aeaa913b54369957bebbf1a2682dd5af1f5afe44ff9d4b09189238c8488e0e809bb793463b075bf03384070bf224a2c83bfeb07b000e80ea20534550041ecb804139e0ab25ff517e0b531e6303f9c2e6ae08e0698f9312b49dad78d6dbe650e6df2609b112a543e4877da189d3722232c570c17b60ccac4702cd571f0551affdaa5f7bc0de0125a3a99f4b0935bbd338e1d067ce70d8d4da9825a907225ac02b2b3837e9777e323c419f94299c02366263fc8db75a4819094ed17e1420ea32862ff676f7102f4a18d268ec6952d25aefe7336836c235f6b1a65a8b8c9d0b2e4660e7c65f2c3bca73bdda22001631880118cc4319e3ad4afbca4b8196f0acdb2c1ce694f374790983e9890036c87356400e31e8cde42b51a43b814e85df8766aac13ba04db3e132c30117cf486743141ba503de1eaf329536aa846974575616c45c3c395f4c054e3e04056a1b0c80cda078eface8bdddbab6ea0e6a62b022c59c7649497bc63d83375f423b1a1c085d9155e505e99280ae8585312a978a1debc747f096a29a1962c246ebc78f7eb8e202ee0ce154515866a2d3df4679cab4967ad164793682f599f2b79b8a087f9a87be7679bef0cdcbe758fca13b2a296cfa6d61fbd6395dd100a9d72b60ba05f761d0570b18d49d6779fc3bf41249bdbd37f8374e7ce98a4c8bf54e363f68f6a6f5ed5a9aca6ef2bfbd824ba0c632a381fc7d0e883451d676e70715406b4064646a24f15bbca54a7ba2b975694890eca1832dd2bb08e71ab7b751aedc438130a0026ac094e1f02e459bfa2f79ad9eae3036fedfd4a5d2b41e0b7bf46fbdcd559a4c149b58674bc97cda3ecb58f46a289a798eabe6c178d9881d57dfdd0c2f51952f561345d2bd74e43d62106751341c36908770355132e0de65f590167a48fc07c36706b223966d49ecff18c18da2682c09d8f6cbfdbc2dd20a76d4566e3502efae8563f39dbd1dbf09f5135fd5f068ffbdc68ac92d27b02e7742a0262ba01c1146f7117244ad695c873657903218aa27ba4eaf4a55430df8f3ab0eab21039bc3b5367602ea5358b7228878c77ffff68f2d670975692ef6ea7c3b0a2edbdeff6e9500073560e114861c3f7390968bb8712de28f1caa562e4458285904ae72ef153b9d79b88501c7cb63f46e232c44dc6bd96fd9130a075920c81e9614bd34da80a2941b90fefb26f4d856ae467f1d22f6e89a253fe84290bcfe522fad275d920f2a468c20444a8b4b81c24ea4ee4c7b6f7e3e7f9efdf72eff245e0adff3e43c233bfe696b47a4560937517fa652cb5681b4726ffafb74ce6a834dd109d8f9f720f67bf14de60dfdd81dff5743b0a737d3fb5345fcf6cee5e360048f234df4841b6573048afeb667e65f479a763f86d1d00fb6a7baa1fdddacc3a657bfcd1911c14ec5e3bd7745c6a0219c6ba6412394e98028c0416a72a897e8b4678b8dc31c6864d15934ff0a16fee145d826c7c58c07073d0227ae7cf3b5e681cc9d5004021bc481771d0290fd12b4ad9e114a48398643f96248e9e601ab4bb1837405ee116b4300a315f43c8548e579ed0205ab1f053a5c1b10320ce56a8f6673765fa12e5a0d2b8c0a4c9aed589e47d8c85abae6026bcf2dda1044460c4599490b86c3bbad61d3095244e9deea5be43ccd33f397e57d2c396290c5983634758617f498f04886bded2624d549ee9507c176e6b013203e1f725f68ccea1700f39e18ce3eb6d61ba094e956f8c0fefb76abb34b21f7bb499fb10ce91631cc730dc0d4ea4d112b8f60d3d7bce8d23e3dd5ef5bbd779b5317ef082940dd40c0009c2715b4357842d7d3e06ccb3e05b2ce3d1145d803144d8025ec55ae84637a42dbbd2e393eb04193db92baa22bbf4190a25966ed5fc22e0cf75836983496a572489fd7e4ad50a900963582d2c2e71c5d789516f48b8e0aa7c40e26af4c11dc0daa291ba1ce979879e29d3372233866c7363853093de3c73ff6dc51d422fe44b379424ccc77b5539e5a80ae0ff83b4f796f49e2fa9f9e9234d44b3de7c418177b64712c116a46ff1cc95eedf3b5c64fd8bf44e26d243bfa5ec15813aa18d78bfa37d74be8df06f4a52f3b44c8a3a065932700e48deb7d1bf0116cba881a2f17d1808673e18cffd9fc3ccf5dd54cadd7a5a7f33f3ca59a8023aae6bb25ccbd8e1a64e545758879cd7258ac786647e65b3cd886f88c72c300faad86af263b565cd21317e9e067bc9d4e2fb7fed2e569b4fa6c89beb82f7499bcaa8f681f4ef55cc509fde46b789456184b3286a8e82049b35501193e39862fd83063d090652dd81a5f84857a184cdb8c2f8a4cc1857138ed7145e0f46fc12ea7a1013fe4960d6c088c79b0a6965ae5d6dd17313a01cfab706fbbb91b5c41f3ecc23e764ba199f34640b792c32dd390d66a71ea0bef159a33a1265715155fd0dc2f6afbfe28e9eabc764c0177c5ec8409dbd6602646fdf60ed46e8d97a7fdcb9d3386f0d97af8bd213a7b448e0072d5f088a61ab35c1db6da8de000bddbf0d9de2fe7bb0ce3e5e5ae48b2855a0610565c4305a18256e65de81c17d503ecc647676e0bf8b8adb49fee238213cabc7d00790b9aa70c6bdf78bc00b32676e1acc5b76be2c9ac121271577702ef2aa73adcbb1ce1183932876be33fc7c43b346b9edd4df44e5888c60d2ce2c521f040636b507dc6a4b211cfc484575efba39ebbddf6a41a53b3eb523b8a9390b16b99a955deb95f3ca6c898b6408681462ef0ac3fa14600dcbdeea33d8bb756cfdc6bb71ef9ad6ce9174a2945567a1cfe9272ee7de24503118184f23049b0ab772b706d8e08eb1d0a6491143cac6f11254d8647f04be3ec26fc10c67058ff30e94d56f1edb55a9d6927f5fe5cf1a1a41cb6374d4eb6552c01a844a8043cfa3d68599d18f3d34c2763c0f92658f69f0a8dd36bbedbe4e68d50484587496fb06878c6e619452610c5ed5d2bce054ce199a9d90f2e644a48c8a71e56caa5eda7af85a3437c7aa4e51d246a38be7a6b7ffaaf0eb009aceaeee2a5427991cc2ce7d6dfe48e1f3cef576e45c647a51f4a610fe1681a85c356c4161ed37e1bf62b2f625f80324a73549a094d11a8c5a0a6bf174ddbfbf591651840fcb7d026cbb278f6158561e5aefc0722a266689755e6fb66e7f95928b5c400978862d4e4f85475c7ba4eaa016fae51dd09951e7906b176bbbf71c209aab06fb1c19f03bb3053b62a339d9092a31ca917a7067ad9d52f4a8171716f2f0b1559d2051afcca896eb77a2544f1e26fe17ce860da02ac5ee1344f7155009cd258484e0baba0241a204f7c477dd9484abb60ea6a55b5c53310d52a7aca1da0cacf5d4fd00b3785d2d4b9934602d2446c411b98c6b28613c6455170ecf8ada213d085e832b727b4d4c017f24d6af626907449fde1665033fd69a2ab170dc99d21b3bfbdd9f232c503595dac6606e3b3757605c8f8f9a6912777394128b4c7332cd07fc9a67c5efd86eec18acc4c3130b72469e2373e45842926720353167ab1216a7035fc0b95d124ac18f9c9a91e9c4bd8de578be0b95bb0759aae59687c24bb901aa3065da4224da915764e362b5859447db60a415350d8c26f03eace8a9f14abb12762f3b06accb81c7683a3807610d7f7a054af18c9ba216ffa20b106c86758120b04cc93adf9cf1853021bf78ff0de1c149b0df220639db930f7cf6b81cab6946ef354a924de339989db414a9067d99483a45ec375842fd6af4435d282b9494ac21ad9b1343ec7fe1f5a52f23ff818b6fa48db43825fbdcf53792ca1830da9ab0049c304ab77002facbcfe3e87aebd320a031a871c2331dba875af656249ff77cd3b27ac65620982e71651ad84ce1e74ab1dee8dff51a28095d1859807e0e599465f06f77aa44074257ab9348fbbbffaaf3d8860785b97ab6534cbf763a58bf7b1f1fdbb3c396d01d79c9e5e548aea372ad5e109d793262032d0fb70d14db7c7550cfdf9f5a9e1e0d5f105b134872b16b6f627d3f054b20ae8e9b247d88f2ef2ad4b2579719838ec184e63cdc76c717b940a646886bae1e786e5c400a28fa238b996bc9e7ed536bdb6d1ac6a2a06a39685f2ea16de2587df12b47c8b4c5b10912368efd2a09ae958aa0f2968509f110682ab1ccc7ce23ad785aa6ce618564dc14dfbd8a863749f82d468d0aa69059f384c0bc49079ae86db3884a24506aa04f55a27b26afd8212f43bd5cfe7c6a3fcb24d5364ae2739b131b34e3ed0029a3148c4298a707a2ed1111e4b3d3b2efd608101ec2468dfeb2b3b9bf37300aeaedc0c507399f1f384035eddd9c4304d41da8dfab74b090d184e30bae8c2f3f2fa58c00b54bfb0078715b900f1209cb4fb5dc26796e95edb18d79405aa25bdc650331079fb7511b6702d84ca53d6a23a61b9086c1bce7df6224967e628a770608802cde63c0c37db3ffcdae0c8b086a41763000194f95e3a5defefb110ecc5c4a544034a47f2183516622f4748893d282aaf314b09607907334b8df506e71114a049d52c4102a37dc32af9213ae16f1c80261dadb8009084cabd820aaadad10287f442c61687f208aa1c8ae0a5c76f7225cf470b2bece9ad6039a3c7053b921f25f9b01a385005ba3ed9a70fcf5f1a745596a3c5a0d91a2a49004efc5a529663883add81b6ebb02714e8ce50bbe6f8ea94016e3585a7203fe40efa54778f6264bfd4d5e58ca13e7296dd9bf481a56630718a8e8cb25b1bf56ced8a442d51ef6ee810bfbbb9bb9fd05a483766a304d6f829130f9167922882ab585c5d0546d3093acdb6cf7e115264d7f74085c23180bbee46da25c2109b2cbfcfa9aa2bbe9d882c08de0fd204c17cabe6a5add00689ca4d437eacb46560868c44c94badaf07d92036b10a7edc236b1f7c243e7656c28e3902668fe440140456b19eaa5d402009adda39c66b5db2378c45994575500dd89b9d1ffd8a125abb6ad78e0ebc649e477968a106aabb04ff464acd1bf5a49def916417d74129d2e9e7ab617ae4b93b13390ebaf26ac24e10b1e27c592a83a8f4f386af24d8b3ffcd3b5104bb58546e073b69808838253c1bca5a28e0a1e2bf510022768479f5d6c9dfed819ebd119d1076c46d1bddfb1629f0b4e6ec99107a74ee6317802b7712ad5fb0dfdbdcfec7fe8ec49eb6ad9a1e960ce4b68f9d69f2e284a9a2f0353c9bbb56704b6cd10ab70b27e553b2e0336c9a46dc999d93bf284fea9373b6b9f532317b77e7449d0817f8d394cc181479a22e3abe64f16b656ca931885f52068ebf81b92e3ed118c77d21be21d935c0435180154a7a5ab6a6dedee789d134cf8cd4244e031cfb52add63f1abef0a1b3dfdc1604c304c26013d1adeb5ba36c3c0a0ae94731db3221817717ac5933c9bbc29e9076b33ec6935b541873b1a2d285c4d1d92ed33e4b2d7751ba0875c1ef9a45c297b34817e7f5b6cc71447e7a11e374358122ee432069fc8f41ab7636763060a306a1df3706d40939ef3265309ad2c0b8bdc12a9b805e75bb9d324616d6ef9b58c57531f6e6a3df7aa2cb7d34fea19502e695bbe6fc81dd19ea905c109214e5e1f326a5359196086f0e62b6589e1180dcb0e446909a438c15d517327451a312cdee2e4cbaaa2d1d496f80077714146764601391574c9c53d7531bd38ec548d0ebdee1d165be9c930510aa24c15ac70a86ab8c67dadd5a2ed5b16650d6395d91f081a969d03e7d4000c6667b4e334f49f1d48809516e093cb2982d9302b67acb9fb04c62efd49ba0c0a49a1ab3662669d85c549ee759a7c960120a021de8a7e3fa191a027993b02ab7c5890707ae68f04d71797bdc77d8bff79be2695cf28a57d607281ac620243d8152196705d39914430f9b76e7622639f1760d96d1e71e6c69f8cff86dd1e6c552fc47c1702bb622f1813516b86b131a4bc0259096398a13e097848cce271ee205c96cd65c5a9e5a11699604eb484d8295aaca79348b4a20a41768ad52307b3729e795fd263276c2a082815e38c835655472985c7a37c38b4685958ed5d98d6c3dd3bc33322559194b117df378945799eb13af26cc0e6e84fcef9c82255dfaa80a6d852644a63e34020651ecc7f1fe4a4d7c061bfaf85c1aca1ae0496c45d3dc0e5f834305418c31375a99fbe50123896579d9fdf703f2c61d6e6a6b498437a1ac3bf98234fd6ebf79b5836d54976ad89a5fb09e3eb998982b072a9b12a9d27c1dd34dd236ac8921a5a38be88691fbf0b458511b768d581aae7b7ed6bd3dabfa5648cc9dd2400dbcbbe61738870f7de5609e28c75c99373bf6985153d26b00355bdc05f8f912ee6358a1ff53e585fa6f9654ed2babde63a8c33f015914827377b5b5b3585d2e70827cb7a857a9766ee759caff5650279145321ce367c1e916d1c6cbbecb8c140d260365e54bea89aeeddbb6f617d9393feb8de2ff8a98bb9dd6ae2a262c5b8c12e14b3c38fdb3024e605738e54d4478b8b3528a8dbe57cc050f3b4844cdc3cb1d54431c48cc0efa30889a37d0e76df29b23d48e026e12ce105b40c07bc30abd197208562d59d8b8b460d82045678e01eae222211908a7f80b8b2cc776726d802f38caa45ada69e7ee00cc2a0584c4e87b7c82f37bbeee59a5e843b26b7291d21a075da72406d7711dfa01c6459b5205e5ee3e5f920070ce6f8013bea7a4170a33ab5acb2abdb6f77162e8edf8c3011a02997e1acf73d6d3595d153a7c8a878af3a3701e5f63343a0340e7a31611a63b7b835a3621c729bb11e9cacbaf4469625267dd3baf86a9d01b12c8360ec47c51d137ea79e72f8a8ad71580ace881bfc1456dbb7264426f9c026c2c4ea05a77194bac35c632922a6cf2687f8b63a182018e287769f9521d386c5d7899151042b5762b9d3010a965826520d038041a6a9bc1acceabf31613937f379bfb0e7098854c83df1e02f9273a531a723e81010714a711b3b6f2362013e90d24b22ed4461e70097b92790f92583bed843d3b05b9d2b8ee470f8a046113364056c7a4c18618a813657cfb9e842815738cdd0f7ed33d4ae01d5b083f4ee23c683e599f2934da77334e3b7416322f74b6d66481f1149e84e67dbafb8132e7aa8c173f7bec63eeb569009037da044f0c05868649bfac730afb6460e46afe5199b4d9ac1a7fbbe10ce1d23cd7e8dd53b2adf4b71496a0222f4ef8e7ca1cff336acd7f88f51fe7c64ce462a7e668faf69597d632ede873c047812463baf1ebb377a118f33f6b2463f5d3001c3ed376072d0d2fa7b4f6ce3fc2002ece181d380e08cbae361029c1d587cf602bdf3c0568d96cdc2fa321b229c6e4c290edb46d5287e610cfe55316da92907fe09666bdc24d8707b24a16365e2efe17851f9a3badbfa50ee29e6beaa2b83b1c5cd6bbdee1afaa77e1d85428863352767ad26a79e0b224c11c5302eeb1264004236dd3bb79ed09bc8359c2d2cfa82862dce308c04e1e47defb508946a1fa95f9a8f3817770e5f1ce6fc79d6db0a411457dad3861719ec4434e31c09d941f5c9fda8d0d31016882a5785c77bae50aef9b9dad357473dbf574b612a5b08575aa3f56d0cd97debb7b35aae5c476c2b4fa17bfb417a4fdff69a3edf5637366983f617050c2eb34dc9bf00c8a17486a487ee440eb86db169b1f758541a37ee74fff0eb200e7bc16afb02e79fc8e3a9b6a746d980488a11aac8e83b8b95614abbff0704a3ae5f3c4ad3c5adf8b241e3882893e3b8423844ec0802983a1da8e1619934a52e43235b3aa301229b538dacd3b99ba5fdb3e773046f5829adaa959311892f8dc2cb97776757058a3e0442029329256d90f8dceab42e799e285323f11c9eaa68ec8995c9528de2d1a783d208c0902ed7f2bea9931f3d60c2e01615ff1f88d92851a9942db7439ce825645e9eb5124a13405295c7230b0a613fea3761c82b286391b88d3a11d4fb8666b1a2c623e6619e0dd10f0b941630652a16530b0d6a14dd186deb29983c28013fd55506e1f3e68e5cfcd4280f3f9a684e8c95c4f76ec149567c21c201657035d564154247c99590430e378505a4143334379c8df0b4f751fe48e8e0e79dd0fbbdc47ee3cbbe0f54307b4e92e499f11efdf1e191dc2419605dde4ca7544d3966975fce238837ae146294346444e8f8d6679c4beb5456892ecb73ba5dd4f712ec67ccbc28e9750e345d9b4769477f510e210909e53b78ba1b40a128951b7d469b756d4493208bccf3ebf0b85250a4a55621619deeaf1dcd90f245b5104d1086ba0760722353197a8185304a8a6ea623a3a850839bae05efa03af69b75b873772c5a529c11c8fdfaa882baa3fcc88d2399e9714317deeecc453037e142dd1fca40d2af03ce35ab807e6288eab70ad8b1140e9124eaf9040eca79fde33d92b7603e8392d48e0cb880934891bfd2816e16a6011886655a88ad5eef4443d3bdff8f00616b9fed752fa0bb4180db4cea89c9671d070e074fe64cf7842cef16e260e29a101fac06b730a4f280bd452550bd5174c436026d0e2e2fa8f6970c9ffe1988160ab3f14bdb0ff0cd58b2fc16f493ae5a71d745b84078dcc6619984031651a1257596b59fb04a084d82245897c417d58e0d640c1885c6d593bb55a742c8fe87a1977569ac14c70ebde25ec2ec37685e47dc876febe09b960ffdd6a06131ab72f7152656d629f6518157968279f7ea6cbe4d6f93b39d4214b6097f8178d4a23260636167602fa541c877d66f25773d1b0c5657c7fcfe184f3aee72386bb51e98434b6ed471dda0e76383bbdf762104c232b3160eeda6ebac9357ab1a5844d426abd7e4582ef86573a9f76a004f76e582be96a616754a47b7a893304281e0d950da2b6017e7086178b63c90e016392cce026ca5d1189f9750cd486a35c31ec4287f3c0100417c44228dfddc9b546a8c8dc710e1e8cfd4f62d79b75b7ad9b6031eb8d3ece01a4b2e9f677fc5d0eb993a4de3d669fb74b9a47ff3b60b4f4a49d9839e2e10e7203dcdd868c352fa033cdffefee6aaa1a2865fc792806ed032203b168ee5d7b7d9814dceb13fa6ca3758abf0b1e727d7adcc7f3b8c805d3e708ce409374e70cd91b14ca43aa3fe5d6fc884d309d7dbdc6c42b381f606b05fb4475e83c96a7050509907ef2a62578733bf85fa5e741c29416a9c51e3c3184633c1037605682592e75248e85ed01c56244bc994664fbfa65439aff53319cbd23d9a94315b098bf4697a7d54b0b15a00f8e96b28c2630fbae164651ca1a05b428e04ea7573420cc41df31c46ea6a061b3e2f4a43cd6bf47773a07b4f9517c7d671926c3b6b72a12ca4377d6713035a997be2bf9d336494806ea2799d3e84aa3478a3cd477e619c9e752435e0f350f380511092b33ea38e8bc51c29b51dcf9cadc56a2de8407aa7b25afc489c200b1bf4b4d884a051a8ca0b59c3f5dc9d16b5b3b806bf84e6539717e88a85723198078de071b40fc716f2fb139de3b2836790e4849aa83d2bd19cee8f99e00f73757cbbb7fe0620a37aeadca4246298a27e201dd37483b146fb3774fd683b5c87b081df682edb770b535e73c94f3cd2f124344c696fec44aeffe1f47220b2cfb248d3058339301bb04d1fd69949fd57c53680e050084813c0632a7e49d9745ab03409cb1e326f39ff9db517a1041ef60537630f35a76070a29b154bb813fef08be70248808fc35078a8f9f9fc969c6ffc95e22b263119713421a38bb1cdddc1c4f1fc0476b0529328c0716876fe70840b5abe9fa4d70749839b21de3ca15f630a301a1545146ba1a47a9fb30495d8e18004e6878314d1db8fb57ba6b08d229fed35e0902b435dd56f673aa362428306fe70784d95ef1d5dfad8a3c6e3bbde49c65a2fbf3c2b4de9ed3ff2e1580d4a447e34a23e5d462c3c5a20c07735cf3c16abb6535c672baa78bab4fdfcf440d462f3e38ef65669cb8e13c609c71f7d8c409fd355e9a5086fc906df90eacd3a824deca3236ea8bfb0a0dc155af36c9e0f23969269a9fa86caac5635b37b1635c73382787eecbcf514424425f4f20f7d4c303c7202fc2870f9168ce6a7675146095f14e8eaf47ed066e70590466c649c90c9d5bcdfebc0fc0afa0ed791b7cd989e372fa020ac3a2a4ffe7e7aa0925fc9e16739d55017a60189149d5c4f603dc4a5c57fd3500e048cad1ad7434a18a949ccdeef3dbc70ad1dc260970cbe78148279d77a5f9f69c0ac9ed5f633c87b25d5f5f2fc1efc726412ca52989149525d07f504c2e9383a78bbaf91ef675281fbfcdfbef849ec082194db2b1f6299ca1acbb21ca6bce11eafb49735da411b2bfde35ade2d3550797452f7fa336bec151a02244ded8ca7a341cf0663a3253e0d39f8ad7eb8e30116ff834901ca480f269664f1ddfb048d694956c90be2f467b75ebfcc8ff19198363b36c64aa16d0e7fa47c804d3c79fff60980d453a6e519ebcd4e46c676319a4dcafa738dda9cd87a1c63be1c017dd49588b98615793c8b4c0174cf7e40083b8eb4d89535486c65da0d410df6cba41c5d47ae41f840993c53a15cf847ee5ec213383b278e271e565093f8c152bb67e7b37c71144ba27b284e857f00df3bbd59386fbce4842d7a2e66af3ae5afef91f7842e7f1750552169246e65b50086950095fb5fc41cfc94938005c586c4ba26b60d6f5cbc6383f89bd7e8f1f1448136d72c2564870d0d9e6296d700d447c9d2932ff032dea5ec80f4040499bffd1f762cc9ade7687489bcae074034df3744a0e7da6e372fd2b7b9fd612a5ce2d7c600b3ae9d683eb8c316e87c9c10ed93e33a09e53a0fb1959680d1e94b8b63b3ef819507bfe219373b3359d76515f65d37ddae0514240fa845be7d2a04e5601cf21285f8696bad093405330a3522ea212445a13430e8f8d07d47c0c70eb5427ab75363b296db00abc90830e576c7ee088476ab5b0b732f63c823edc7cfec21d358307659b9fa6a64e530ec61d143b4cec72d7dfc09a68e69b92dafdbc89db2fd9ccc92138abdd9d9790707e4836100d4093bd3693f86d67234ad01c32a1eca42f45d407f8406ecde1b3ff3b4c69c7d2829794dc36d4ba9c458db630c97bc9142c4e9f553cd6bcdbe57243b522bab87fe6c5e7dee657a416f634230e477761c8a09c6d1fc7494c4d9e0a3e9ff5e675f5d5e77eeef3d9d7ee32e797017da0d602bebb9c0a31fa76dd4a07c9663e12769cda62443e843fb1b7ebfa500b32b80b4748558a517941157cba85b7b5478de00a634b7a007c939d76705d6bdce5f90719b2a369de8049db24a56371e90168b84fe424ca962ba81acbc6319c93f79429f3ee183ac123b62b0355aa400ac48a42420ad9d22a9734f2a3d5647466fb2d586e3b4a39e1e0b140069e03309fd56723332e8575e0135de9160b0e34919b34485c9b80a42f4fed6206561bdab3df0662ab9924d938be71b22a9bf211412900be64fc4dfa60ba3a997400948f1afea426ed443542239ad0c5f530588ddcf46b6cbef2a6bb7af87f5b312d4ed2665e8758c21e0cec2114592816a48bee7a4d8075988c798b79bf08e637a2491c18bd8a64f1a726e56388ba6b09100ef32e8c791708e56a3a50a00e2905485b8889595b8368093869f4e5112f5e0f17a645f3928175df2275c7074da13771294563baf0809da3be7123aba9fc8ddcbaeb2bc696f55d0aa415ed2fffe1d2e8cf447e63d19fa11d6bd646996b587694a678683b58261dd9c55c15337b604e7ca11cb74b2bbdeb64cf685fc9983288dc10a59596b5a65c473650411693c9700d7592cb62fac6a28cd99d21e8fbac7de0a08781fc8fd905097540db313be6b778d2f8d69cb953b88ba855a2bf41d1de9a9a5b929b7adb8c84fd4e712d1e0ccdcc4eeabbf12c842cbc661bea3b6783709adb0d89ca318801352b40b63c42688bd843afb882fe5501470bfe8a68ebc8ca75c0c112830e0fc9d5d2c703e022291ca696d3de31928ac40d280b748a73d206e39cdaf7ff1c5361828c49f0baba62adb32cb366bef8a2a645b7815d6b8af1c5cdf18c0f6815f06c903e41922e0e51ad2581821cbab39e1c95c57b072a3598a6f53ad41c9a22eef0a2bd0fd4c6ad497ffca6b8bda80b48d805b941c1bfeaf63bc5d24ea32e4fdc087964119586ca259530a5768d541823d174ff691924deaf75e74b0dde5bc9dc9773611dfdf5adb31ecaea12789fb98e28e6a3f309f24ac81a2e552cb9030faa9860a4ff9a687fdecdf8a89fa5d3f6013fdde65f55fbdb604fc7dbd6ac1a4a2716cc56f3af0e5115a997d14e22d0b8ac01e9ea9ef0f505c5592ed221b123ce8cc72bb5d311f9539cfefa6974db7504cb22919e4612d85810fce284cb7e63db0980a5d880262cd2a45f82a5f56bbab238a88774feabe660914d3bd6061cccc17018e7a572e4f8308b6e81dfb22329b606bf3e4a1f2f9ec84d616a7cb7396d7088deebbe1e7da69802d48b938919ae02769512da980f6bb853bd8ef7c27347fad02d221741a010f526ac26c2ce0cff121cfe95ead8d988628c72f4fe255b7f1da09bb554f149c292ceb3eb8bb893f2e6dd9eef5b15c6ca27124fbd971727257fdc5d6fb32b00530487cfb214227180b397c7a3d81a4c8157485fc0a3cf1c6ad5045d8c3958ed51cf6f578941157f235537aa770a68667dfa2418c3de3f2aa92ac3b2405535880f0b9f4626940d6ed2d1050471eaffc8ea3424c2045dcbd44ea62caf671f08d4ed0257b78dec446ca08d2de244a2ecabd859b9c84a76c13f0fd955bae9abd375f6d6cfc841a1549888fcf7a35bc54ad22bbef83bc9bb15ce79d81bb42148714b108b11142d25fd7bfb35f1912b7b9cc48a71bb50af27fe365552caa96170bc028a5b86ebe09df2cea4a97a6744815f42c0d99001f1ac69369be37394b88c2b02fb0163714043e66fb26240dc65a9bdbb88dd7554b1be8803b9acd1a4965fda321f980513f2294b9874913704cb72f3897d361a46aba0b2fc4e2ce3eca2ed7c4c199476a00e0a1a00d5621e5c8fd68228b159bb20533c7a92263e24f2c68e87b2a4bf3f7533313678047645c52bb10ff5ae53495cbe26a917fe7bfd7730199681a64ca2cbc05abbb5e1da671801823f07eac06019f86f314724a9b0a1feda4a7f74a917607530f4344a8a91ac59973daa8a01569a55ca6fccbebe77a617a3ca7c4996aaddd571b60a336a6dcfdbd90cce003efe825c45840929e458df6f479fddc79b66e49bb43f1c529c69b3aae0ea9e25174fe1fa7797dd0be3111eefc762a308e825567bb799c2e70e45dde8dcba51b81e45edabe0558433ca247d8a7143d3e55e920e5d6257aacec0c2ee52d2fe8f642ce88a5a7a454cbbf05c1c2107dd646f7570276bd621ccefce56aeb6bb66bd9d7f2d3a7908bcc913309d2faf6223220bab3b4db07f41c1c32a02bd9e63dad56624824e7baa101c037a3eeaaa273654be6b530ded74faf2e9f1552076f283dd90ab7ec2cf97e02c68aeaca6d2ce3291df717cc63a4d4daf4573d7de244d52c2f5b7fa74a0f7b2013b7b88000a012dff7cfe905cf5b6315c7c92c6f75ccfe4944fae5468524cb2c421bc5fa42d6728b41786c2e0cdc7350cb652fbd52eac7d384079e70fee78a59eb082d2b611ccf6c26624bda2c4b570668816e97acc6accae8360e5be1cc5f7a63e89a39c5d7e881a29e9000dd1996b9ff561da4db6465faea883e2d9f3e15e2e581b7ebaa6bf09292957c5b9cf6d50552625da55d04360a34ae17da161591735f6a738c20fef480fdfc5b8c21e646e215fa2b633ec63884125b40e2bb1dc17a1f70fda83a5b2455b6590747792822f1c58521ef318669df4f9a233686abda103ea923ef7f377b31ff926efc784816dce59c43a46344085cb99b3c578728f4330940c3bf219778f35fe1383b1a552b29964c58a96121f2d7f3c225ed6ad9c3701f2b75e275d326ab4662236bc1d65fe2b417e21f6b3f60b8b74ba97ef1a9b0aafbef16a0dd9faebed3deece7d1e04fb55a44ac1540916a19de5d9be5a4e1277fcbfa18b19a20c86cfa49a40ea79a04a3561183c2d20204b73885b0fa9e855b5ba02065145eb037704d9112f8f855dbab0c007c10345689fd21d4206aaa5862628be7c62f250c09931597b1233f5243a4b9a676d80f88740b9e888bdd207575a1b929f5841008869595a8f6983c8c83388d4d9b384ad38489cb797fe1a13d966c7ea90c70475875334fca405e091dba206742ecb8792a7158a234ab9a6412adffa836ab9cf97d51b0f16c6c297e4fcd3e372650722f34e9fbeecbce343b339271228227e0ab14f400ad4b3bc613d23ffc44b52c063a04f1cd68bd4623dc7a83a53034dbfb2909cd32b0b73bd9e9e2097eb2ed8a2ec61852a36a6f2adb563d156266c88d4a6b850bb2a2f3185c1367926c5b2c143a78b70a0ea201a374de9455824439a35626ac67d2c1d2e0155819b6ccc886991f1458f957dadace83c7913c258a829b15497b709fd3fe3021fd709e1e6421af04d0b96d720b9dedb191e1cd807871163936156330a7365dce1d0c3612b1d845aaa19af8c11a68bbf4032acda89378a6e6e50c4a7321bca8fa35be296d570baf86bdc037a28907d7f4f4ab8fc81b896d081368a0470e173b778e3635a56682d29229ef170973b44c7258ff3c2badd6f72a06c51daa53ac8c6509898c31134faa862a6a953255e94039ef50f146e0303b8c5fddc2a5e1e4d849e2713f31bc3796150c2ea5df7cdb2fe9c0d450af2366887b299eeb7a9ba1b3cf69ae6ff860dbb3db646b986fab1740f98b574ed627a9919c039bc7c33f1e4a11bea18cba6e2d0d3837740448e2d75efe652f1bebad971baffc8286b3f42d220266795f6464b88cbf51ce80c8c24a95e04540b2d26c99028ff779197aa1a4cc024f99b344c64208173d9af75d92e17e12de96cbc8f2b3a13431d797b477dd5479ecb869f2d4d463a416e1041c64167f7a16fecd274b379732ae4e42c880f3a77a2015600b820e930c244cae27797b4204a1b144e52c15220caf1a3bc6b6facc71e5446e5120a834ea0f2c1e92481a5329b1fb9860803d5f52137a75cc8126751cd3f9729c212dd084338df512cbf3be715cfe5fc11d55042271fe29b3b2e55f17557a24b3effe8c52de1b98b52110dd0a811ef912f9623bc8a96d0b4dec4190cf5fc241c30373c277a2b828a0fbdb6aca797d59a39d197023e3f7f6931e066ef3e4c69e4917722daf18e05b02a5a20bef0b205c878a92b7d44b6dee52580fe8fe6bec0d8143879054aab5b7fa52225ac8c3695dbc825874b5735fc6db0cadf04782be052d6fdf58d2dd4ed1d40a5bcb69e55465b4f6557f3de18b924b8613b988f4aff18250d732349a4553044a50e38f42e6fa47d5f5c9d3d8171e4db39bc12b5b0453fa94b79c648521a7692122c83b0100dc6c51fad5f0834709fd68eba95a3d0185eaccef5c430ed5d18af5caae398b8fafe2f4f1a50879674a15b1b3ca18209c28dccd015e5605b1d0f1dd9a078cfd92ee408479954b79a6fee073fb68ee4a97301c2d85f396c76fd555f4237bbfd93a9fbd74202c34bff09fb5a45c461bfa06b57aa00799b4cb49c56b150c30c720234d3d066250ee81d13c13dda7dac46f6781ed4e31affd2b8dedfeb5118ba7c782cd27607cd7d11da2d9c0b858f7d787a9451e83998d99ab6593eb3202e593488cd34d4f6c9b25e745070274fec375893dd6b30b0fe8ba4d22c7367692995c4a46e0e7b08c33257ecac816d88c03f400225988256b40721666da4333d76b9efac5100647412e6847814468d20a8f9737a092462b0a529f4cc0c141cab7950466cd1742779ebdafe0ed74a9c5c57d127c4007cba535cf29ce520b97fb645f0c19731d4c985f5375fec019237b95616a635541d8d88bad4f1606160c5a8bff8b7066e8913c7058dd9b6883bb60d27dbefa1fdeab937d8e7e11acf120f9cc93969ca8c1ed97550486dd6c1c4b3d8cfe97b3df2094b931b181366d6e01fecc08dd339ff8702a313be00a993eb4e1528a3e52006e6a2ac4e0aae27ad6a6af4a194bb26e62f11082c34741468d47afd57dcd28c7ee23915a2cac5552193a070f8acec4393ce365cf721f98b168db8c1066c1689b482be66b17c4ed94c13363245093b8cb8fac0143de7e78f7c2f99a309ffcf512ae845fd56e9c573a642ee89395ab5f5d9562c8ea6dc181d9b42ee5cc8a11f97428c86c77c7b8cd5dcd5008120214e6216e3c575bbf00addbe45c78b337a2905daece4ca1bef3041cae08e8c0d0ed0c96af661a83815bd67353e3bf391b6cda45f908b9044c334651d95f14670ed06f375d5f9797d9a91f6a595f655523490a98166287984eb2259f3eefcd0cdc1cf6536b327de6e96baf00a695611529b9c4cd8764d96f7254ba4dbce7e9ec7879ab7214cd9f7a89124717e18b6163349b6b687d1f19a8ecb49906a80540ba1d8aaf4c649202a4914d1d2c7d115cabe329dd3ab29ee6b30d16036f04f74e5d10673279ed99318ffd25df2904989f671bec88b6ee35199d88f695ec7c2a70c2ecece42903824983b68a26180c70072fb0d02777be86564bd8d08d58bc007738df855327941783ec608b629b31d71f1a923840864b17a494313d61920567d85f94bdbd5af073a1e4a27a8dd5b9518c3ba28d2cd853bb2ced26faadcdf48ce8702eaa2ff550d71d13114b5f460af549542ce6fe75451ba6761892e62462a36f2a116f3cffabbee3c3aa379142c8082530217476bf7cb83f81ad800094240f7e3857b1b8d16e44b1b9ef16ee931785c25542bfa508f303bb5bcdbe044608642dc2b327ef3128b6f15b10342311eec8e20994e1820ec70c767b6237b74a396b22af23c86cdc798f77aa0a4f44575dc6f5d32ad4bb0103347468cdfc8b3b067820146c82b1339508467d1a8913edbf14b4851b10c1f3624697903e47d0107cf9d93973739bbb19967d05ae6c960ebe2380694f662e7f6d0309ef26207b1a1b715eb8b215acf0508dc7672dda37a50935bdd5fd7de901badf7b60b5bb2b8b512da3389b7ed569be8ae09360b65c15b5a99a10cd46863ed809ba1ef8c67473d5d6567a4137ac399cd7d729bbd99d2ec77196f8be1acb99839d9e666e89c449b87631c7863833ac1c6ae6b3ef01552c4f0e5d9a8914e0cf5ac12fb8c75eb80c4b0addec70c0ab9b7d21dd236cb0c2802e549f2fed31d40fad11da0d3e98387c42ece7fa6857e0c2fca03877906818ffd83a269b45e50615e1acae2f978249102fbe73c7c439320e2ae833a87bdfb78785b6a954521cd8ffe3907dbbe2758a2cc797e46ac9cea1c38d3a815192cb290e9be304bb73e487ccb1450872ed8938a48ff07d2db5ad5cd933ed99c9ad4806a148ea66a6140ed9e6b827a8b2b3dcaa444c4180f2d0973c21f9d3132fcb80fad00ac8406ed1d38e31a54c204d563a968134da8e7f3cf9b52e57e263c49608a32eddbd6e8350805e26458b2440ecc507ce43e95f0a5909ecae1841fb9d103309a22b63c245e14409624c37ba86e05395355fa0c9809c87d2d011ca820192dd9e2698e470f9b9fa25122427fbb363087c963e9d62fc5553c7a0218e6e5f8c7d6920f143e170b88a4bf42122fbf9b77b05bf90f7dc08f54c61c713fbdc886e6508e732394a36fa447b7e4afb9b8a1b65b07f6aacbb0f2aa1952bd1b8b89dfbb6e32ab53ea11b42e16bd851e1cca116dec0adb4c0fac574185754c6e981292ead5442b84aa08d7d5184a178e6d75e9d817481e6922c2c0a07640ffd1c208f529dfa8b94b7328f97215ebd080d77afa3b0bbaae9e6a9944e77f089e1dd83faf1cb3bf7dc78cad3d584c9d1c94484aaf45bbfde6c3f2668360c92b640e738a49b57494860b79e9c41afd7be0feb829ab651e8d99ca1f704009b300ec8c86d33303f8ad3e9296c9c5e70b63f221cf255da52063bded9e88e44d4342a1f7e3c3b2f6503d3d5e4af928fe2bd18cc8e4f5ceafe79251d636d395ea344ccbd7da854d9ded8496b21274c34349d22facb8e00aa883ed59c98b162ba7e1a2598b5f7e2f018ef5e54dc1705902970e8bad52f2cc8dbbdac1803792ed3e83dfe37412a364daedc65b2cfa5c2d4d22908cd8e904104774c58c77176c919293dcb2460936cc51fe2057679d1d92db02e5927b021c2a6b313da2ee5520b46396fc2a5c9aedfbd3467e3e17c0d2981df899f243af56368c3874f8a1fc4a6fd5a787b9ab4ea872dcfe4a875d856793b9790e15b3c5d620084384bc105d4a22681f0902d0a3f6407583a57f8fee43d0c339189acd8a8b5f2d0b7fadc88bbfaec791f1658ec3de5711b5d41c2a4afea718cf07152d9a5bbeee80b518305f052048db10a8be20ada7a24038cf1ef767e71a26e4e4b77bfd930b64525dc284d65a46e2e849c32475143aec1a33bf32ed48ebbcff9fa20f2b3f6ec7c815fa2bf978e9f52bc6ccf2f2b588776831283b872dcbdc24f2baadbf4c7eeb72b9d03b8eabf70d424ee956bf2084310b61757a783ef24ccbfbaa52586a60a13c5def072d0a1b2b04c856ab94c2bb51e893d3b63281b91a79486479445658834cb4f87ca270e8feede1b8d00ebbd5010cbe2d4e768efc621385e9be402004bf4282c2b76656da837ccb8a366d1a051924945d3412fd12dc0a4139deaa726f0189cbe79716b2d6351c3495638f0fcb807ec8f06f65a1536ceed4efd7d9b646227536de7fd879c224742cfb67e1cc95e4930ff4f5eac5647894e892aaf4e3148f12b20846d2f50c490eebcb114c30b8d52699693e3030a868208101b1b469f44a38ede7fb4a3b09f508846517835e781d633f1ff4315babf3a5b63886d5bc3cdbb54df3d9d33d0cd50fe3562def984c6312f15bc41afc4fc7a131fa66842cbb7273cedfb8bdaaecc2d565a9861c25dde4feb410b933a5bcea48cada85d645a4099e68c3f4e379162ff2c155a117593a7e182ed61f5d07f4e4fb3ec3bb3f266a5ad00478bc5c003fcba008d778ca472b4a7de4f12f899560626da6070da176f7ec95f97f0da96ecaac5e5ccdf59929e9d011390e8882d056114dcacd30e4175f74c7cded274d7d42ec53021ce4a8fc1cd68bb70db5eb23245183b169f94b236262a26236091b2e1cacab1cc49f99b4799bef50d56ba3accc71f6400f9ce6070f4220a688d1e8543f14b4631751b91416e9ebb4b68873a024ee660e972ec4d9062e7c122c2966dd0f9d9ce5aa3ad9226023e06b8530aeadf48f6ca2affaadcbdab83e77a40278c14a15656d7fb3acf98c0bcbdfb77e0be39f3a8694fd1f166f11a6ff20c48c020ae53b149b07c0fbe82e976dd77fc1a8ed95cfe999846c8fc6259c46cce60ddee3ea4778c7509b96fce7a786d334687421d36ff0c258dd430322436789776993fd214d4a0557f8217962596790cda8929e627dcd0b71d9dc08449ed5504327589f34397112dc833c13198f684771f7f06f639b4f3303b4dc141a2ca47ecf9d6d9ed9dd51e9f8290a466689a6d10aa64a5e8946289c13ddf96b16802cc0b91fa973a6a55f819d3036757f841c7b416ef9c9331baba8adddab1fab393479d1e0b3d3cecfd1c09b5fd0405ad2ad29b40f7da6f9f7f6193bb241593b59d613ac20b4929e024f86e96b02744a772572549edc330163582fc570de7d72d66815bb9239af22950c170be7af5ae12b7d139ec029eece80df6accc6748d26564765b5cc7d87db7aeacd3505c28d772dc407ce3fa91b23778146a7a3a5e883d7122973a280df778e8cf706abdbd3fed3f5641645a9c7297cfd8fe6238d121b88834bd34c0797728c688490fa4a5022ddb62749b7d3841665183e2ce83285fb710f4fc7c16a00bda7f1a9536a800211d44b98356e0c04dd925afe8b8e17bdc061eaa59db083329e68bcfc91ac0a973c13a685179b0d0643499e4e5a0c5ada8b39a94fbd3a430e03da5c2a5d5ce94df1bbfd9ce7d6c0bacccae19b45494b61b6ed4f1d638fcc41a3645c46f272ba897b792dbce9d36bcb15c8e08324d3133f736254a69f04db126ae202fa1030f1142ffc0535445171a2c432da8a748db1c5af5bfc5170aa315ec34407d46c4abd1e2cfe685171bf53bedda93464811ebf3dab7d6feaea1dd68497aba7a1766a9e701fb0b994a505a94bff190608c2962b204fc26269b9fca2173bc5bf976b51877f498a7c119a53258e7b5b6d3ef30475943bb67adfb39b8b759dc4bb51ecb5a55291ea001ff1dd59a7016562fad6cee65aa30075df72bf1b28c3c61a8d3afa17647209df41434f290e95e99b6145ae48da46cc5e87eff5721c7fb32b648ac2dbe8b9c2d2ce5187c906836eebd0d6b6054caf04e2b97adc4f02706cf326fce714bf4c5787743d8b50caaf34f282503a8a6a5746c4c374066513dce1e84f8ce8eaa4949cacccb607a3d8f9fb2add72a86fdb4d1679d5737492f30c6d8433cf1a4e665a82716bc0182fba339304026c3e2e9f402c4b9c9547ad9a2c682ff445d995391a9f9119d3ddbec50d98d33cb79f6201745cb3ca17fb75916c9b9a47a9694dfb92bc247cf6b7fafd673cb5531913531994d60d4f40b3874df2bd17791470d5ef86793e7d7e37b0421d856015abd3480af4e7757c857520e86c23497c8066b57001efecb42d374185b05a4ddf535a0f3b231105043ed3f30d60273860b9020e791be008da1f223b7556bf5ea377433844dd717233f96e7ed72cf2cd44e0d37b84942b69c8ec04acbd47e793791f3edcdf1053a82e94e555a19e4b622ee051ce2854fa9a3ef31d1bc458be0b51b4e9b688e6c8f7f2bb32b503cda1cee63f0a2c0be19117e2dca180017d09385985fba58398747a571e03c041acc37e411990d7dcd51256577b78e878720030a5db155e6f852f6647a15aaafe6f4f2c47aec894557cfefb057aa3e47f60fa9d2e21647b238a5ad9c9eb2a16f1e7577974b105fc4a6bd82fec8fd3488b8f45fb15cf7ca411e3c06d403963c0ca63f0fa732775c4b21f371608b98961490828d2232120fcfd1a60af8ec7e72db43e3f3bf86dc7e91f6ccf42cbbaf996d316c5846edfc52dc2e0b1255309a0346ddfcf852675b81d57036a532e4f98277c110e3d4ab4d204d5a1198791b5be4a1818a6e9546d35ea625eb2acbe16509089ac8a8229fac8b75c58cbe8019bcd42008e8e97acbd84955e4a45104f45b6756fccfd7d9092d1c99fb53ea70687493adc5b6d280971cec1341edde26542e8876a2b5a4028f5d6781f6f565f1b8bcad612079d5245e60a23223a42563e7904ade20689924a6ffb4bdb4d6e25e993eadcaf6eeda85697d65ca79047f274d89b98e3f062ea4036ecdfb3d9db42b28395c22aeaf96face97f52ab58bfff4fa21b60d5a1563935cb9bf30287af49ad2d5b67e42725a67327fe02dc40113640edc0e8ac2c4e70c055620704e6b868afb5a050694f540c7159f7143bf464c3a2862c33be5e19279654a42fa44d9918fc5f88bbc9c2d51a33043ff6a99b2fad4245cd53b09d41610e22aa5f8179a8c0ea22ba511cd4bf60fa696e2be6e69c634c32d05abba2b81be2c499a73218bb09be7172a4dd548d23ffe456165ec1dc88059549b24eb56707c4288f5b9a71c57f22c51272586ad60eac0b77825644d661d656c4baf27db33c4aa6f09927f90543f904ab54c01313fc110544f3006d6d79af6b7e1d8dad7cdc4db9d68386bd1f69484c81abf0603a6bb854bcb3c6e28cb3aeb35218f66509fc24e63e92c26f8b86ef55abef2216796ece720e1adc22dff6cf76fb5160c6add05453ccb416abea8a19ec68abfd7455c3bc0c79226423bcf657a358390ad43e95600ebf9de1469055ad26085579faf0b34f18e225bc4de777bbe59468bc60746a3c55c0216790efc56faf2a3137ecf0c1fc8403d5e88e691a05bcf21b9043aeb0c0395571b0b13ab49f73287e6b6c63e793a1e7590b4cb8d690ff4dabe61d33be4a2d2622883c043722c11d771666d4ba99c26c2cd3a96509a1d55f12e922f822b4a7daf58c509d6444216ea71cd029d2ac741abaddd9caeadd76eb7c06356bf93ef045c4330e8c1753117270b9bbe3908dec80356d55e377554d8d2708551785ea168f8eee163c46cc621e896a8afe6318b8fcb39a2ffa8eb4565b3913c9916c6a8400c599e2434829cd219cef5333ac7e70c9f1dfb9dde11743cc740f6400db4fd190f1ed33016319014c492054216d1303c8a0066119f5a4ca3470a06d875138746deea3e3e5b46af1cdad892219634a2b163c6702344e7d77875255d9ae5bf1283ff9da3f86bf50b2c1d2b339c15aad28f8d6fa39ef061edaf9d5406b3f54d387283d34debe055c296c7c3e48f6464f6f697ee81408f07e02b199c1725a94109f394758aebc0ba493098a85aabc8cfe897361f60ae0e288f04b862659a489f2f574968029c070ed81cc7809f6c0c0f8ef909faa4fdd7dff19e025984eb3767eb1759d904e1b76e6b917a15a7b909027761b218dc93b5ec76575852cbf0fb781887012b95f03150c6424eccf100d36f4ebbeb922b0514745ae08dcb2f50c267e68a49b3dfe1228c24dd1909a7f5fdfb205431c03432e82f0275680d6a46d982e55358185564aef359cdfea9d4c6c2848934035662325e298e13b2d3d68ba946b40c2f92711b37612433efb1ee04a8c931343b7d5ddc8396dc2eecbc8dd0d28464b86dff1c784ed65222a638336cb0a81aa608378b836178f3217a9fa6cd7814b2bf45890c9c3b6c5759d718f0ac5b5fdaf64040fa81baa5a4af190a849ef09a3707f7bf1de9f009f54d727a8ce9df95e817c75ea12e9d4d426df01487a371a6b9742f75a202700903cc09c6408b178c5834c18e70f46247a00b2da39037cfa8723dea7ec37f3cf280effd91033abae873a7fa98e3abd3796c8303fc2d5b08afa095fb976361af360568b561cb16c78bdef39f8a32b6cb75b95f3afd9e4f32f897d0acac46bd69c06d6e9ab3b5fff86d78c616faf79d43c73e678d7715bce79797f86dc451ba4688b2b7a09e48dc552ac40ab21146cc4890f8493a0d93af62309c2331b44d54412837c1086c189ea9c224490923e304b9d361da0fcb3968678354bdcbc17b84d003586e209b96e29c33e4c0cb0c41f12359f7e1cda5851c04cf8e26b6ed42b40da7224d028cb8834a2563a69fb64dc039dd3b0cdece146defb7a9b974feb6e6b1a996c2056c965ef19c12b7213d44c3e750b0e7344ebd3887127505063cdc24ff75d1e0c57419f7e192aa50cfa2f96a4694555b88822e9d78e69b991cc83429dc1daac6eb6d7c620a503eafe9a7df9a6411d45ba4217e7bfc630f541853c52876d53fac0c65f4696a5e2a3bb0ab5aef0a7bb85cba7283d7c108b54b9cb96f6a36b49b1ad1863c83def72857ac55cffbb407748277880ae8e8ffce06e4a7a72d56cfb772691b0d93440854dc97eb0ad78f8c9c2e628d1d631abcc0fcae99860b57dd93f78452b22f301042ca2147e024b7de324f746b2382751c40f74e39414367cd71be9fcaec22eae8289383379adff4c17ebfa7c9c40c4d57654ed68a4f255f88d5e5f84a636b18ceb177a356fc4eca80dd541187038847197a088cab83b823ae752bd7246c68640813f61c640b91d1a02622c93fba0b06f5ee969cb1714eb06f1991d50a6f7ff25987e33d584d143d884e4e57fc2a1e626a9061100e7e138b07f9e8cef517e3a0643acf7715c4afd14bb6808e2f04f86d611fd7fd8265598c46f685b8e58441909f62244623d5b5fdc3741fe230f2e6bdd96bc85af93d732f5281d3db8f6bfbc96df9320fb0b560036c8e464f870b3853a4f91ca0b45cc56dfa5cf4b60378d3b5fb0783f204e26f056cf610617f848c7961d1bc9ffb7ba469afbce4e403e71e48990b3e8832a966a603789be7c4e53ed1e64f79396bb3f4c6b1b993e8d3fbeee60bb13717c84d579ab8d098a2bb9f4a2a0b8d3886655be6bbafe3fd7c0c81392bb9168cd8b9356e3c4552913c526f214faa1581c12b0b9d3c504d1e9a6cab056d0903d6a1991a000db1d093877c78521ea2c03fd7c4d819a39c808cedf55e34b1993adbc314bc7f7065a41eb249471409a9c7448365ca453281976fcd24a324537ef84cf5e4791377b51b5623c615234c9ebd71250bb3c87921331250707e51afb5980c8d6a781b9f9c710b29310c5e51d5bc0f4c10905a80433173e351d34891fe2f9d5138c398bdc0c807a2992c6e9b23d549483e0c898bdbf434a10da0b15e57a6bc4d4140ba8caac9e95fc469e6a5b7f1014558cd2e157a0ace86cbfe633a4cb4d02d7f623cde600cb8c2bb7a4e95b0918ff76bd7017177fe1aadb76349d48e8b704ebe6605f94b285c37d0a9085730ac3b18f09e0502520fb280f9aef65f5e44596c9c3df22a9ddcecf73f4778cc93bbd8dc6723f2084af1aace71ae1bc79f8081c502c4298a21aafe38b95c2666cb6e5b87a22a00c715be919cf979f505d52c5a230cad968a945c7f801ddce229090dab7f45cabe1f445e60a7744e83d6f761415ea77ce6c6c13abff45edcc03f25c60f9bf89355c52b46d818c657248685deb03c9593cbbd79c798b69c08295d231234b58f7f503f4b7e6b35e08353331e7fbc8a264698a439016459cdbe45929fc15e7eada499eaa9388dd7c98e594701cd0108cecbac5ce15bdc9625f26b0a477633b3f80ae3ed8fb70a007028e4d41396ed5df3a8fc4e2d92cc98ba78ace3e1e87da8c6eaccff657bef2d593ee2b0f1258a13abb36ddee9388baa79a891d14cdfd9cf8ab99720817782549b32054cb186762759e5af49bf6a2d4b5028ddd5de0c52911a085d2a67f07cc55643245db04ce977b010e99daa237ebdf0eec886288ce18d2a3133cb25b3103dcf4d1b809eab200dd8d97ad9410060efb7f76ca34c86233dc1484fe7bed2f017e1198c5e26d0af2cfc4b6602a33631bc611004f435e56313d0baaf7e8e514c6664d0b89acae01a1e68ece42f28a7f3fee03bff23db4fca11b875ad02c4c9f202992be4059bc83cf1a34fcf57dfdd0234e38dcaba2f88f877842f2521f42eb47a6be5dcaa78f7cced3c1bb8ba4f015f08373e3f63e20b7cc044a82b6e0c053f98c614da1d36f83918e5a105e9dc513979380bef92997531aca46928d599b6a14d717ad8aada3c0d5ef4e7bbffd20bbeb683d43a5bbb7b6846b90d782ccc0db1172cd2d7676fca4376e3085e242ee8a38635e4e90b0816f3a2cff23861fbc5e0b5f8f246daa20af6521c54078a493ca5ed53181bb8c1a7b048ec0a332af6278d815fc8b33dceff18426a98d2e278c7ef93b7b58647a368a3c35106b07665fbbee491093cac0444e523775b8c98f23f8b1935c01d8bad26eb7580180fc71350dc34ba48274bc264d5ff16b52f9e6a97049f45a91fa72089daa30663ee8c92d169b9d5888b7b008e926eafa88da31f5b94f58f35de5982b6458c7bbce94c851a822b475b3e3581215e1e0fab5f9f11a1ead33e43a9838df71efc1faad5c2d70742d0158dace1620971e93f001f9f19a2d85e8b2cd088a97e0aaff2e01f4432ea968b62fd0953b90bbc613bc237b685c5396202528d17b5db30e1760559da0f5d8bbf6cff3b57f00094cc283d229e129bbdaec6047c658e642c869438b44feca7539dc550bb177943cf515a2fba2a51edb8a73d451abff2a1e5335c743e2120eca06d0418c538414a2566b6e7b77418cc45a3b027833a2172fec59b94d6600ab00318b5d9f7571d3b5b7e972eb7d38d3e3ad580794fb6267f469515435fce2f98cb7ecb79d50ea1b4a81273f57fd9a9bf8f0d16904bf55081834214b2ef80e5127e187fbac345c0590eb8ac6de0cb2a1b0d39fe95b5573e01f064cb586e800fe203a6db14dcac852741dac593beec2a6f407c2c9995c4021797b2788d3a8f53f778e2fa5f8be35748d8442733eaf5cf7003a8e3187bd06c8af5bc61cf531e645cf4657f41e55c44ce16f38242e37fc9342efa8a19d357e27b7c3bf9ee6982c8f2f06ec689940adcc42362ceafec8a65081e8aa4a6006e4c323a0abdcc4ec235df87ff67762e93da861c041da6478565774e56c3526524988a0e2d08dabdaac7818207047d55a568496bb096d0e28c1bcecf38aa4bf056fe9ad2c094e068d862c41c118564fbcc4d8cac469cf490f7ba1c5623f37d1cdf3c47ee2e4c4ea1a28cf087359ed296fd89fcd25a6ff64db09bf7d9a0233de1e91a3cd27eac92995f9172ff93989d09806a29ec31e7f71367995a0feaec23d91d1905d9e3665f19f7c593ad4140ab04e2b46da261989f5868cb4a7078e9800b064b405dea2c990b203228c5ea10c95cbfa5450ac68acbb90ecceb99303295561c8e95dff106f090532be0cf427ee4f47b97254d06be1ad2cc7f79bcb01607155482bc312ba6ab76ab06c4494d5fe5641b08d3ad50be65e0071de1c314754e6093b4118704e2208cfc91343969a321b35d7b97a31a3c4abd4bb800e0852029a1f0281b18c5a04d39d35afdf0ec673bfaa0fdf2b8876fb19abbf5c1fa5ffa52d1b65892decadd8f8512badce9758a256a41c45f81b222deda7bdd36dae44f12b32793ec7e8f0926980242aaba0797b4aae278f2de5e08b9fad4de398ee6eee45b86451642f7648088d5ce79c050aa39abc9da2d0713516b95975629f262a748b4cc0976b06a91be14f6d55e0d74167328908a06ba953d601834b21107b84238cbf0621f955e21d629c48246058a84e102e8efdb1a9fa2666083ef6ab5e2eb806212693ec0002a98024eb50091de5085fed226d54115e84c6a3e1551ffd5572c038266c40cd6b8f10f046c7d3b6fa8d43cebcd0255e16fc6f1a4eed35dbf37ec576a741e639c749d3e5db24d1b81465131727cf52634cfabcf9699ca6dd9485e0119e7bf922c25dd85c5feba1ff5fa1f87c0a7500683b2530763f5effa03bda7ddd7d247617e093a3353ded4636875a4861751f7239762cb8566540e47c14141cc6f1a5facbc23afa57a3242bde3ad71bcd3083013c640b5d5f2a19ad451d72d5aed78f1a55ad7a70bd1972d6ecb287fd6c4f6a1206f3e9623e626aab1ab4ec42fb9ccc635901c69daba10199179333f08fcd3c63305726eec15059ebe714b46cdfa3f7fff2d77c019465768fdae877846599eb4a63371cb2e1a4a228838cd53700e6d8e1f1e2905845841e310c03ceec569045a029c8611e27e917e0c13b70f600ddb0a16257c76c673f59cf77bb839ec7eca867b388ee6fe4272d126ff6fac8b8d88a296e0f1497e3725f905752b6f1a6148769b4192ea18a52982d3a255b1bfc940bd965c2e9bd5d153fc00c3539a35bf5a3045ec87d0233fdea394cbb9c19022fcc2f010094d5a577df61619104d9a22646685fc06d8d204066f3f5406e2d3f60b0733f9bde007d8bc827288cf15dac2bc45b296102efd46de30dc706ec6e90afd65d1d4b6d8899e1f8e1a845ca51b78acf9ee2a5654cb58da95648637eae4bbc6528f1ea56b9e9122c505a56b8fb7660689bc1aaa47954e1809196cf4470a7e6df071ca20438b8f5e2adca6a06ef26bc5137ee5e7145f6e6a998e567d2f5d68589308c16c8071d5ed6d08781266fde2158ea885b75a1856b7f9fb88028c6d55d34ac72f95401bb2058c5863061cc6be54112a2e717d85a5fc34d8d48178a8c693b2659a66c1eea0f1b91b578776cc639709f08dd2d158c888512d2c2ccb852439653f42010326e9620ea8cc14f9f269fe259398de1dd6c47f566c1293464bdc9bd6a521ec8cd91f542c9f52b7e60f44d9f9f07c7808e8a900c224af81e3ebd1b30675afe2d9c2d55573ce3391fe70b20f0b9228550ed5447d36f65ff6572a1a0713e97634abcffa09fd4c3e1d49b51095aeb1f077fcf0b5cfda365a1ad9433e1e859c03e04e1c6cc88f1e4dbbf0753604894cfe12f0a415c04db9b64078290b16f2dd0793ee51f371f5f6a8c1cc1425e83d4ca53cad1a212714449fb7baa46a155802e23727ed25f14a0cc79e63d9ce44302c5ecc722bf74b8ceb09c70f075b64b0ccc0ce7e5a018c07b8ef46ff180df939cbd1674b1d87b7bc18581550b0657b81f5311220ce80d40536fcca641da33cd894ca4668a2073f82d70a96ea3b64008e5f165a53b478e22e1acb164ce74666c8c0499b952b46089cc85af591d8234ce50e3379d002d5d118248b01eb6efb95fe7056f22e93d1bfcbf81189d3bb0daaa04240c9a6509aade983c7cfe599478c11f683908037ccb698626ce0d459d6e9ec41c6fd853188c3d2700eac20001d1162eaf887f7f1f4e9714dbbaef51a2254c17c826d08aaa31556c19e35eba1b753640fe9b055bcb8ce641cc8f42bf4f3fe3709181e3a7166e61008a7406f5e4b084baeaf28a3ec7c37d7c7493a9ccf57391b9fd3e2a1821adbc7d1228b860017cc35274675f27106656dc10f233d00234771f1298a3766a8961679b2c30672e7860e7eb0736a2f18d8411e58c2c8e4c1891809f93401bcf01dd7fb908e5894f6d4adde65f349220b06ebdb0b677e1d95b5312da0576e9aaabf7779e0b7fcc654b9e883112d610fa20bf0d32937cbb19fdf5fc0d837bcc6c9904fb11e3bc98a3cad8a0a4c5b0678a4a4bbcf19c1f507873a93dba2b2e3a17672fc1a8479a779f3130a35338586e33d17c0941b56c3baa1200510114d344860993deaa668ec195ef77ee04b36ba7fa8ffe4a34a0f3dd68d2b98d2c55c719dea253653cb9ed7060703737f5b7bbc9ce5bf9694d372d75b7dbf42ab70b187c1020a791e334b8b74650fcc1eed3a3e62380a9bba9ca003436e9e22285413f35beb4540f7ef1968e7c434612a5d37705b4786fabab459721deaf35a8f0f1d5bd6c78be962abbad0eb4b4d5c0647c674b7ce36bf88bdcb4456e80bc0b2265faa0c217d3c26aab13d35eb38e8ef5ea3a4a8d070f10a79499fc6db18c71bbca68bd690971c584f3891b13f31ffecefc364143e143cc72d4f557c9b974dc4fa6b8a5c667a552538f9e9ca2f7165c485d837de927ded7562919b8d6f745dd8a2914a3bf312633204eba1d07a2248de9c5b499f1f03035bd4712832735548812441a896c08dcf7aa4444b745e32db8e76710ff035005da60584810755fefb0ae592e4512d74e73c606ec228b0d52903ecd12e551aef2b3758f6fde8c8dedcbc0dbb67ba99f4f95bbd95d18db395cf68b37048f14f6265414824fbb1730db4b0f66d98bbb435bb67ee8042614db88815e546b41be2def6d96cd75f74769b62088654141989be62039256328897fa6ca511fdf874de0cc0d23603fd4a345ae359b2bd10b594651e61ced720c577c9e70c39db32a84d4be7177950233b57f1844042fc42d825bde5c9feaa0a9999292b441fe2576bedca3ce3761fd53e7164409b505e464d8baf7a01f4226fb31b1736e341ce75d6004b245e8d6d4493fd0af2adcb0a66b4ccb86b544879458abc94a2b6d11bb9869b4676786fb6a5023e61da3b2a36ec2e713d6cede6eba90e65d2a2a8b4a7e37542a194ec501d6a8bf3de1c8823a803570613f7d15cbc62ed5f469190f908ee74bf8ea77bdbcc0807764b50fc213f4620e818e1325b97e8fc27e57d8419bfa80dd32fac981ab04531367fee763f84afcbe14a3e71febf380f4441a09fb0808c5ce94ec13c170a97dd0b699facf4ae0f0008697cd77a5c6d3630209ec3142459eadc05fbac8dff010e8d81ce22e90419fe43b9c1784f19c4ccbf09f5bdc89e8a4891602644e7e0ba5f503eb29a09a9bfb0ef6f9751f40e691b01006e56f8ccf056962d708a54f75258e8057b982c14b467158a510f46fb541a3169502b3b88caaf287a7999eba06f979c605e32cda2b6db99364d35e558ee89a3eaf969fc9a9f3a2275858f6c71eb3458d5015848c855e2237904a45d1473232d1c7704c462cd077a4c93114defc203f4652ccd0449efba7454dda3ecb6aa97397d21c622b2fe0bb7383c680ec70b1d652407b8f8005258c9d106d579adcea288b03c5ad52b99c0b870c20ff3b02cb8e084151406e1f51dea0dec888afe166390c7f8ff2db74283e5b10060575557334c755c06724206d9898219c4a91d08d2dfbc90e5584d452cdf5ddef0f5e56364641ddf912ffdd8e6c4937863ab092c2c6ede84de7f2b8dcb504d1dc3b97bb0275dd3610600f660e3950ca22e8116b645f915eda8ee503c4ba3167cbc9a08f709a4416441eb8f61e7144fd8638f9b6e642e8bd807ce275df25be392e02a26c1fdd6f11f2404600cc028fc1cf7ddf906284d651649813d0d9a43692c0e5cb08f72329ba97e5d0794fdf582bd687a0809af9143c9d25afcbbe560549570ac53562ca461f998e452534c2bc883316c045a63ee102313b41acd4a5dcc306f3fb58691623c2018357f606f8a24a7d196ab4f01e94ba02a8babc4c3d96ac44959f6d13fcfed83dde128c1b13d06bd2993a8db625ac10cb530678a67d5a040d2a49ab4c7248696b5c79b631a39ef866b9fdd1579ed2991dcaf547d4d4035a466bf6f5feed603916f2e867db0c37d3dcef847034a7162692d9de649bbdb49e8a32f73b3948d4f82c87bf0a327a74938b7a8e8d4f3f9f58806f80e03fbb49d4211938c659af05713356ad02e6054d07744d573db014849be1cf8247c4f6d80dbf3652dda115d54f04ad80eeadd44b4d1a74c1052fa8732373ddb46b0d94031297a99280a738f48d6abb3ea2f381cc890aa4fdc4a344963a8777fd0757e79c6a32ec9d97db9fdc5d4e63f06d67dd836f4b4c4216660f38da7d03ce0ab640c543644a967fb036ae02190e3f91faba101a8f5f52e55d558599866e32a0d562a4e3141df340e7d46a4124c377c14544d62810517be2894840c7f4d6a68f47f8a25491ad99a4ad687295a736a2f91479da8fadae820e32bee4746134380626f0743b7033c9c305fcef6df7c6a67d1fabd2a19ce7fb67fd2ce3154d873cfbe40f7092212f8e236f24cc084470297b790a996e6cc1da913f1a0683bee1d9d493871b813931da40c02cb3a59f5956350f9817fc1f69891125a3f9c1ed7ca440a35cf7869f7b239fe01d353596bd2aad31ea132b20a0cb1b1835c53cfec004007021458a867318c8eb841111d5f4374ea105b52fc5a548b7d7914228d25f6f3212c6534003535985f97c7cdcb0fa425102a1f055534919287e17cf1c4b8f511c786ad3dd9cefe30ee69dffc8c1f60135556ae3bb75d72998c2acae13f935627034b19aa379c2ae834a6416cfd1c9decbea782d85b8563118df131643ebfae029f7d0ee518d3bec892e5d7342ae1fc6b35250ab3b76e27a05075bedccee8b180f0be8186d690dcd9ea0d6d4171c8ef74d294be4b2ca432fff1968a05940d50eb205adbf28de6e505bc50796d4ce9a491a509ab051f3316b05573c85469d5866b8b9369f6fb16b754bb55e35d22b5a556d9cc9b90014a877a0df2ac369e53644f2961fb90957df11423d3b99a6a06711f4621608298b1e14d9bfe6c6be0fa5d88855191bd3b36b4411a1a9e77a681c9c3e972e37ae52cb1c35820dfeeb716be5ecd8cccf871fb40d59a4218763b92de4d0e60db482f9249c8961db655ffee0f237b908b7391130c00d85141e24be25468240bdff143db7dfa18861c71f98726876d3ef829879a213228d6bf19c4d47e07e47fa640ab13089a4bacd5e41826ee45fa9d13fabe77b984c0d70c2bba897c1e054df2af5c61d815638d9afe5778fbade2a9391efb94ba49f091c285090b47338b56fc02475aac144c93e0ae69f558fd106d81d2d5fc0c1794c8a833c7ab67cc4bd64920890de04eed239fba0ee6470de91cb0b14cab6e430c42c589d6a26320bd7463896186206daef9170bfc1ebc6f3966641b72da51282ced4b27562c1378b47ea247ce2e33d781209cf37857d7b3bfcdaf499bb1b793150bb32d5facb67a2c37952ec27b23e0ac484ff7e912b096460eeb84925bfd35579855d0270ebd6f19c12aa5dca11987ade5942a8f69e9eb877f2a54a7c4b0b427dc2c7e7337d6f0f5005492d68557f87fc9e69714870c150425bac986c24149dc8b53f624688c62a2b0fec69905eb01fe7563a5d976602b8c8a8c3c3a6fe7d40e27e61c0161237f8efc40e50cc6ca1bdc39113cbb80f6592053c393605a0abe8c5d342a76b1beed50bebfee15f4ba36598b742f93bf5da75436aae02ea6ff7728006ba2534ed64ac0127b311db342c1bac4a6c8631b8cce0852a60f26b0a4e0ef96c5b034983f868f1a5914a0a9675837f302008ce57488fc0a96572ffaa98b8e2f82faf181ded36fea8eebf05494888fa46f7065fe3d9c7d36e36f5434dbeaa4e0505874a525bc3f0365f13f46b520c65b2c45fd52dc5a9c3305d1aba755d0743ead0d9b478c0b6b8f107671c03023894f3a9c3dc0f1eb4924d504a01b8843e889249b4d2aefb63938a99a8d5fbe960eadab3f90b4bbd2aa6afc5202f7fcd466d7caeb88b05c8dd6f036b019676d1f34bbeb938cca8df1099e79702d538190c2162fb070abd0db30434ca04880d7bd357e7edca2491ac1cb150db65eb311687f35fc58877637c9279e5be645b2110812bf6dbc50a748e097d747c940ca5a5bd788ee748bcb6210c44fcc191867e78b1d7ca8bd403091c6cf639452f6810712af00a336c558111f535c5c18efd293209ef3706a458eb01edb0ab5feec393924e893ffeebfde1e23b34f6c15f4405b6857ddb7b9032af90da48f387c0c33bd1de3eb7a14ad053f83767fe177f85b49364a701501c7d66f9dca155551aafd6c4885bf9aae3b2b0d157a6de7f395c0aff0adf6fa079de32fd87f42cb55cce4fc59f6aee6a732d753c6f7b2048e79c7e1bfcc7a46fe3d7c1302d378435f5d91219febdc52b1d3628e0d728cb65559bea9e8763119b79822d068bd975f03aa26d6c3f4e057fa55832a8e22d8dfa5c7d1d4f19c9a34d65894bbb12109f9a22a55a19bb7165b171390d87bf1b63ecbdaf96e2278f53243c776a31541f1457fe8367a2b0bbd14a87f9252549b949a7cbcf6b91adac88d6010e4d3f4b2cc611cca7c79e9e5e6061bc5c47533acacbab1277fb824b6aa2f0680cadfefe1ffdbb7cb532d33b8caf432bad5525b10ebcc9917be2b7a21c8bd3a2079f5ce766113ab4116b06f5fd06e55f2e415e93f24623453c00d89cf57f8c602c96662b358a03020ed91f81d4f832f53a2968f927e16d3ffdbeb748aab02d187d54b0f0dd44da4ee0b894c970d653dac73fdadbb42f58d80b685c2845638cded63a036797b7c40def28087dee82b2168cbb6882c169279e791241c8b2cfe6dc7419b79ed9ea03febe8f3391161cb7bf6240ddd98da71010c483ffa242da62b1298de0433107f870f23ca624f8bc5d1c3b22bc1ee79dc3085011d32125cc53621b4a5fdbde5dbc86f78fbc09a5a686650027baf46c7e809ee8cca2fef249996dad7a1199c0c1f928222900044cfcfc7993de48497c79cbdeaa7785b0dc0fb9a1dcdb3f6f86731f0984348c21511979136490bf2dbeb3f13d36ae8b84750fdf3b7e05a60963645beaf9206fe7f7931462496ce334564ed0ef0a6ea18ec78b3c4acdbec3d5343ae38fcabb44cc85221312484e82d28338168d5c6f45c01aaeeb2a8785a6318fdf4753355a52f74991055089c066cec7d9916ff626e1cbea875e0808f4df75be58dd8141da5492ed9e7837d8ed8335087666ac102dd217bbbe7ef5011aea1518a0dbe072af256b0ccb5a4607bbe7f323deaa3e6d4830158c7a69ba8ddaf7619b0f4c4c973eea0822967756444055b67beaa1791ec47f78f0a5f24e39dd55a033be357de0eb08804a067498688848a320793d3eb65b9afa5309cdeb7b6a47d611189169113ef10fb0abf28d503fa2b097731c0ddbe8df004928e3b9d0c9cd296641fd852fef8e5c2b312497d11e4fa73c77089d1c275f38cbed033a0022f620e623429096bf75e79222dc6b268dce1e48b3d7fde1774c0a976a06e4096d3e10e2931fb3d9a7c6fd8365ee6d0df73f95289fb3fa3cd3ff23a21af12d3b809818bfe55fd89e8f0c1322c901673d8fbb692b34717996311d630e477e99054e7995c0c60d2c63e6a329cd936d4b7c9f6f0b633f34432dfc3ec3d91714a8cba8fb999a6d770aec80d49d390f2a9dc694d4276e1802b4df6e79375d2bb1f761480f82171c50d89b50306079cb5be4157332f9e9dc912d33ec8176c268849b18e535be7f04e01d1731a3c1b5a78d6051a4dc13edebc5656b624fa3898e9c67e2439fbbf54dfc713e854ffdf6516b242f0bbcaee0e80efd0a19b6c428f590a38004d0fcfd225c1e02f36d425daa9663e26539b060a13d1cbc4016a3ac64d46e07c8bbac35cd94ad861bc122042c86d70aa9fee465747165fd3a91058cfa3d61dee2f8c6c206640209e187c5cba8a6f85335cad696171d9b58e0b33f50aecb429787ec45da69647b3ca4a2bbe35d3679e2464f25acecd555e6d54eae7898bf25617756a7cecf63da6abd942dc9f52edc942a6c1e6d8563729edd04e36041539f069618c94340bc830a2baac70d8ea428b6f8385b1ef58d238c634276c6bd5dab7ed5185225afd39b4f000e08b251c540ba4ff7e014789d2612d6b385e364f8954a70da2dc2c758eeda2069d1bbcdeb6f105c978465bd700f0fa68830573b17e915a3fa7616bffd735cfcef7362dd8cc4e0149050cc2f2f21d382df32488440b69dc0af3f85eab659ff4c93c649c81826361ff57306f139af3952002584205ae4daccad429ffd88f24e2396644f724e0144ad0bcc9b2bf735c52210274aeec75546a7003029027344889a82cef7174a81621b63b76f5b98793f05963993d3fa801c127c0dec12391e27f70ded6018bb0286a59f169b26715b4fa7d0cfcd6313e4dbb54f2006f2636f572a937cb9cdc60291ea582a7f04c10fb665d0d5b71b8f9cde51787a737d0ec70e149c02e063282cafb1384c243b9b45cbd0fb57194f4aa753ea902c6915bd88a83a0b891e4162642fc876033c5db1677b4e05194efaa172ea9765a4d163f589d39641437fbb21f118c5e0bd0ec7617d7858a672aebebc934bba542bd7bb9e2ef40b153d6b39cf71c2b88ccf5ff256af5b5c11f6c5ebb693ccba5223608a537333829063bd7cd9774bc9b0d0312afc8ac39f52ee438826840d6984e5d28b095e87d5f845c6a4269a4bc2fc38b1cadf25b90a6d40ff9a87ecd62aa8b78a0bdda5395fb2b9e5d56adcb9956e608e3b1e663777b9e9a738161bdfa482231339bcd8604194cfd67be01713ce8f0d435d5e73abba56e251168ad6ab62604ef6d95aea8877c6c08d34e9d8c3472bc2b8517812e5c605042787f347f9b34470b84d7d1e5bfa7f5305dcb7b490b79e34007ef74758e98273adb947569541bb200598367a1206fe8073cbe71337a1a8b8a65df4c7f3877c3ef6bd5ffedd514a9d710193464b77360990d0ec1df7319d1beb119acf2aba45d784f0b2f40fdee4b03b955f12790a998a84a133375252b2d5e84740de869a96bc7146a7794207e09e1a05119256d392ded5f74c282b5d00ac0d72a4e6710475f5f3c275285e63ecc5c0cad929306aa13a3f96cd60d9669d2572305c11c62f717a9f5028d15070c743340124d0cea121c8236cf597d778dd3fb3d090d6185b3cf54274361dc66abcbfe2f1e0fa8b059b9276bd8c83913b47438b995054cbbf2b579178db38dedf4dfb7bbaa80bc055dfb9f9b48476cd084fe3794dd719412a2d9252282f755a7293d0c6733b330aa2980a66e27117fbb42b36b904e7dcd0477ee39615395adeff18c5a4543f4d12eec29c251a89f3f10dce4779703b2cf9a4206b21bf199a24963ad7e7590227d453cc550657b8ea388659aae538e293dbc5c7bcfbb57e5d814cc92fc69578b13a57f66ed20cf6b450b68e0e678bdc198d86f4c368efd485ba3518f1bbfc6c6c4d296179b0547ee029f8beced87fc387c3a9eddd118ee74f99978825b60daee3c8e77f2df1d7f7a06c00b37eaed980258532c206769c7443f99290ad23dd223b4db6b42b195b1bc03751e54df0348db5eb16aed1ddfc8894c52b919c502ce72ad99bbc5a90823e1ddbd4f9999c059d971b6b8ee39642ce2525d838f2fb8a17132f13ad0c73b11058769ba2fdac66cc9178f1aa7c3665cffa72b9ad00dbe7f61fa2c3aeec07ad8729466c8c18202937192281d01458e30dc572f411a3c000c8ce0a8cfd9337a578252c8d1ebce44225b0c071837fb5c18b691373d6ffeb84a8b1769791c071b56bae01c017590f71dc4b02ddd226c4b5367af0b2d4b34ef40c00c203a60ee4a3d92ff1074570b874d515ea4e94308a515aa26c4b529a586cc1cdc594387eab58af0f4e9fa38c4d4f6d59b6de0496cf79b7516e72c65813987687704ed349a226578db8f76a5ac3df87d377874a8bf0a4d9fc93497201de066591451d2bfa1435c2d3d262a9702dcdeedae5ecd7cc9ddca99632b82d15c3d4f96410bbef6f9d2fdca4c1fb241a7dcb4227a9769f6731428ed1d95a22e7b363f1d466c6f32308f66d34eca4f0da8cf99c5a66466a31a65f10cb366febe029dae92df60453b5373d05345d3d390c9ff7543e25e05571ceeb33aeb2d7bfe08f7f57c867f07eb2c57a41a9320cec78edcd68e154f2fb0300c05ce44e43843db3c701fc559a02389e6f5879612087c3e9e04830d1373f748480500764e361bcb9407825af391c257b8906498577245094db66447ca284a2705346608ec832562a37b232a6aac9db7b79d0872822217c38104123e9c423656ffb0c0be83af640f751269a83d98ef966fe3afb4f1b52a34c8cb0982be59ba283ad9dba3213a7f8941c3428746457b27b5a1a8973ef7869aba7032e300b121057832f8aa9ee824064db30840e3fbb562e0d85eeb2be350c21db0abe4a6853661156d17c8d5988d631dc8bea4f7a8c0feb1e57a0dc300f404489137053be7ca9ea4fa7b171196d6af1dbe212a7e1369a5abe1b73a521f2c139645634cacd8383f29a527995f4cf2354ddaa6a6599d3a2a5f7b6d2fab87c5d6486810e8c7fd2484c5777cdcdff184ec94ed2c66382b4fb189d3107938149c414ea75f22ef58aad5f7a3dc4af1d9097c612c5ddad99caf85fc41516a1c9a3ba263108a764d529feaa703e25432c748f284afe8e146879b14b355ca4c36a5fa6598bc443ba068e435daa47db518066f5b4cf9a55635f2466e1e285f7b2248eff826e06bdfd633d9712842a4e14ef7d41b2d53157879e49b928385d6a37c2d89ea1cfad0d064f17adee416fb2f10a3ecb2dcf15cf82121546d901badd193107f91fb8cc87b290e074fb09dcfbacd19b03c0abbed136d26eb65d63a4384bee0b9a7a3953f16f168106fdd75c2d963cecbd0157843f3bfb32308b88215ffaa43452b6487a04184b5724065ae1341f7b111a10094213808156ea6c44546c30328819186976621314f93502a8e7e70caeaad45be9ff746b36e1418a32dda288e52c4ebe4fb5d3f11a98a3a877626de83be3ef976511c2c0326248e87114aeb47e810e30415dc2374aec3b856da3e39c832ae2c536da70976dd50a01a609f57fabdf4650e9a90d9baa5f13380375a76dd924291a197c75dfcf2938f43fbc0be8365ac2304503d627ccc599d8658d3df1f965ebf2244d3e2d8e561737405de50b8bd15551d93b83d0e8414796c93b473ce19d4eec82fbeeff4671db564c1efb11b54a04b5c3ae09e51771c32fe229c326a6f8c91762ad62ed6b0e9827401ba028e4175f187c62418cf762363ab9b7957da7dc32c741a46da3ee733f48e7a1e83752a516336c22ca75278d72273b28c67c1eb1505b6ec2752d7cb9139a9e09c75c30aa3ae405011f3799ceb36a0cb893029b14dfce264419b1ad8e53041243c68c686d97d0e7db69c91017cb2cdcfb1f54033e8f7a83eb4ad9c264d885a1d3b4f858a338429af502514514ef8593205291ce96e989c3fdbf0bbdca41cd0606d34c3f3cb6adf9c4149eeb8bf01fa7baf26dc28c4abdaf7ef5a7f0626183c75383073c4040fd6c1ba20cf9127f1f583eaee6febf24148284b6d60fdb1e75eff2d93f5ba5eb47463c8a10d975d7318ae6947c6907c4ac2c64c37ec93d0e20c88b36e89cd140ffb344cdd901095f48eb955c08cbf3ab5b1b4a7cfdafe49d070171cfd401f73e686cfbb6b66003a11544dffb04e161cc3f08a50d510449bd71264456bb8868cbcbb254139a3a954f87828b0e719b9bdd81f32749bc3740e293a8a2a34db4487c7091525f3f79df0fad9dab50bd41296938c560fc20befdb0ce0beb7daec4811a270f5ee5c5633ac8fd6f7710cbae008a707d9eed853ae92ac67c3ea5070193b4ea350f8a1319f96090ed4a009ac6d2990572ea677c62f6c56cdce490223dbd667f642fbc5e9c655408d696e9561e8f0cb160e8c13e379636652079cf27e28520dfcedbf768036e96cf5c0721a42d8ba5d381701d1660c9799aa7a55150d00d067d9ceb284ffcfa67d2053eff2e6c2af12c3d9f844478fe2a4a8eeb2abb41474305618837ec8ffe831a4a5be1efc085ec57ee39a09fc947b3109a7a0c85093e11ced1200ef5be75e9fac3bfb94da94ad5277864e4ce207f40615f591882a241df9031c2b74deff5efaba34128ab769e24d45c94de79bc8258b5f2cd78dd95abde1ad0b2e6cc526e6234e5274460d56ba29fafdbb1bad51b0b56bb64f7fd0a1412137406691d75842d9f6eed80bcbfbb342de50b83e4c1ceaf151273cc2e7d5510fb7451a655c012802717891c61ec3e35e7d423063f0638496512d40d977a531edef19597c690f227618ad27e26b04a597619d8c1d0468dac979e77227edcb34d7bfa1c2278546ac4cb903ed53a668b352e0c66e0ac5256ab2e58a18348628c8efdedd5dc8d78d16e98fad6b20296ff928fe2cc06902c7810609da34ded34e41e443950989ba4cfc6129c5ffe85bb03f073e1da508ac288932dd267bf782b7b537bc885cfe120df7e0f04f2e98af3c41d29b0e7276c7a75b6d9789ddb57de489e4ab1ffa29a40107d37f6b7f85f11ca7227d5d7808f2d959285ef6600fe94f7e078e37b1c771f7e93c6899a351e02ec806d51e29d940c2a9240cb10c51763b4a066839005d10e63c8fa4515c499ac80c7ae2f6f5e0edae0450c5c1597a81444eac9253a058466d0c5f9f12f7a3ec2a70bc7d98ac51a7f1fa802812ddcfe4a985674cfca3e1f543ea271805d43cd948df9e062f3f115f88116f29e53f473f124fd2bfad8adc671432cdaa0dc9c56fe2435eb064d505e47f9c886ce1e5525ad0c6da109c712a3037baeb33980770c69f97bac29fcc10884bbb5662cea8920dac504ea2acc5e86af974174f6323f959dd61710db93348c38ed2e9c1064cffb78ba29e875461cf2572f8b09ad747fb3f23e2d4873933d043db0371a06eeb05daf7c37433e672cfd92568618c0d7ee8f26d43ba7336983f431ab5118b62ecbfb029a022aea746111fdae0ad74d2d77ee5243b6445538cf25d5d1f5d6a2a2fcb59dadcee127d0232163d6f973fa3523960ae6e7f5d0fc3423d6727e3517214af66c4c9e91d0778e3508bc3778b66e5b8bcba086a0afcdf5dccfc78a988519781003f4996f20d6f87ea93fa3baaa6d6cb80d4613a8b3de5680acfa6531207e153946f1819e0d7e9f50a96edba0d2b895a090f0bfc35f1612fd3badf1935f64a8e6c4b60e341a8e145509eda4d26a7e9cadb9208043bd955ca11cf24693c4309e1e260e5f185c328e35b8c4182d5fb6f9973d9b7834bd11aa5485613d3b90f62e81b21577c974c0fc054cfca2dde36bd308260d894710c314e3029e58a24e7ef3372daf00bc2d711c1edc5506496a1ffb5b144c2d04757e4e978bb330adf58c7936be6b13e39a8f89041dcdff23577b79bd18b961732017e36490950ac84d793bffb0793faa9a6f51a6d4f5543a000355ed9bcfdbebdc73238112c3c747077bf75330b8f3596b4c93c5558109b1b8115029799b59da3356cb506944040324b8fab9841b1e8bd8486be4514fc9b06593d7a5800a95cd808a7c3e5043972551e542e37699334a24bae9430baa653f0d3783e500742201402dcce114e7f91d5b102506e0c2a99799507aca71f0e166feeaa1b739e02ccd4418c619efb07ceffc94d9201acdeed2e4a48cdd083f319686d590a30ded01ec9e598684406c78b7d45213116f579bd2c05e6b3284d31110a828e89564d2a43da0d3d5c20d2a5b3d6360aae74b65aca471f1a3f46d300de7283229392bfe12e5eef85b7cd9bae9bf8d0357a55ac7f5548229760bc5063614dbb32df9fb968439755cc80cbee87d0d2dbb752c863e6eb39f8f808bca8622871ba279eff5540679a5f166ae1b811a6f090ae5ddff361d2be124d68bdf021fad57809bfed0440517a2a2f68baf344274741c73b6618953f42eea8766a948de055dd2782da43d57d5331c9d50656c84cfcc14d40b90929f2ac7ea25edaa9ed800b51e3a8fb9a8731fd0a90587bdd72c683c58d1b603fd1027eda96f55bf02bc08e7b9f40d600028dec1ac8f0e30fb55c794bc679c846ad79e6c3b94f1a7402a8856ca1848b0841fdf326215a36f87cb4246b6cb6a0f4edc8508bac798d3e5e9a53218351d39efc86a212842837baeeddc7642c2b08fabe32d140bb6c569cdb59edfac12e960127ce0789525335e4a4d01d9105ef509e67411dae486ceab55374909c4e292f5d468c1008277c7e1993f257b64593363fe6c708e63060bd5bb44cb83a3883e9df6e7877bd36de15753f93993246e1329524d1bab1f40e6cf144b267d9b539fd8bc1468e45fecf063a52f43a50e6529fdac6d48b5c1f8cecf2f5a1ac1aa16936cd652b22afdd45e81721d76ea390900e30b0b8dc1c20c08ced7854ba26d548ef354972640fbde62c1b19841accccd5fa1f268f84d9016f6b355827b3a63627fe4e3eaaa374d8bdecf313bb7e093bbf0c9244034121097fbe33286f9c3629fa599a580ede5d813164def2f909716a5337b4a7ebc44613897b416fc0c366d805a6abb79ba6560e50827af3154a934d82d3999425884d512bdc80002bb37e41c551b316105dc8db01e79b256666fa503f400fa707a0c136f948d5b94e14969a6070571bfa794976d188457f03a3f925a7f607e03a5f698d6ac309292c3dc0b74917d682334c3aff1d589250dfc64c0380cb053c47284f10ceec88dff9f6482c7791f996eb3283c778c9049a2fc12db54e997d3ec7f5a7717d87b5d537d773a462321bc934d897200ef7f28b14a4f8bd40987a54295fef735f3830235e302855145f79bb1a6e9da39764dfbead8069c3835295d4602a3496e3339777ec90f0eebf0067f9d556c6d32b140906ab7d700c2dc8d7fb34f7981bf55fc9be6afa230e93266089df4a4f65330ed03d7f7e6ad02e9c15c157900cf33cab029de29f6d6b74923c6e02f01b9331043d9b6ab5f19e25e46da436181cffcdff7aff0749c5be7bf0bd9de5f9dc34bc088155ef806fc29dce74adce1f6f3fd9bc3de3935827d5e3c7f578f2e11bc35c412bb56b595135cfea26ffc25948c74b9a20740c9a8a8acdfe396aa63bc316df7ec41516d33b2965e3bd295b9b28b23f5caf797ae785861fba3396afae549532c9aad525f339ef23857b151e9543cc492174a2b619501bb71bf628ad679aec4bd2ab66463fc248930ca1bddde736b7a7c72b21ed2b0660b04966d72f4e9af77562389a5d739f11eee555e9925ea37190bd63d04cf8031995a1999eaa803c585554c49445ecae0c3e6cfc74a54575af9d057f433c107d8464ac9df108d7a04a5e288b70920b7a6c52b4be27ebd4dd61c2ce3ab0a66b78486fd0ce39c9efa49947a2688e6051f1ac3e74b7a7dcedf638afe34480045fc537f44ed54c86c6843546dd603a4b0490683b6a2a86ebe780af14fd86587e587d262b3bdd8f528d78433e40ddbe2f45bcf812e9605d556c330cbb3de283df45835a09d4d341705c8e877f89145710c2a7c0ab65a66906c665bf533f663512d644f2a8ce0dc5e38546714afa23139c980eae08ad55ea96aab489839043e0d34ab87080236a685586da68d40bed6f20f15ccb718eb37725a592371b93a3672beb3887781adce87fa885f12dd463169fcb80a3f1ba4c53a64bda383a25b03a160c15fbaf0cc4d984da504425a8f33f7ffe9c102f63594fa6e67900fd23941408f7be7aa3f6f4845666ff21aca755131ea6c404472f80320457a3c3aac2d1ff4fe534b294ef52eee03e0b3d88192e172d00b2d4b440d9f7c15a36e2d32b33629f94d9b35ec97ba62eaf66d096e428c636a679e6a67de2dc19df1478183d5260cfa9eed298fcfe4aa94cbfa2b1d0d0be0baa74e56b7b6418306085c92953021b976f8f7462bd046d2bdfc4cf1edecc207227b5555c232221513b9ed630caf701f3dbde16ec06496a43d2d717a51d73c99e371ba3fa1dd1836d4b5aa927510a4ea1686d3797d451b7a97ae22927ab28afaccf1aec05a4d2874af77e84e55ebe00912599a1d6703f553604a5762808016391b31ad31861fb73ee18b299dedcbc3859db8a14be56feb00d5fc9e477b7dd8400fa3ca079a6d88b8dac0aba997ad5f35fa42498e9fcb9fc3ffa269ae789b468d30f3da28bdc30b90a536f6fecdd7b60d52460ef879512d8f37c5c7f6f4aa071659251c6aa44eefc054cc8f33f849db49796a2ea58c8475586a3d94c0dbdbf5d926c48f7aca6abda30c22cf38f6955267410a1e69f332f7d19f26793a654151599d0390b490b7ea0983dd67a2561cbd148fb1a287631e2e94bc3a16667ab3203916ab6cc703f5431e9bf2fe4043a01022832bbc62adb69ebb8b152fff59dda9f7b6f008c9c653d389682d785a2d9109b8a9f12228bf301aedc69632a81a6c82ebbe1fc0d20c13dbe3058086af7825378c24f61ad4492a6a2086dd8c45ec35f8946b5bd9802691cea63736cac719f41ec4c911aea258496db9387942067261d5b313c031a854f7bea4e60f597ed8c61d1dbeb9400be3b39608b5a17ab953bf4eedf87ff9fff18934b4c93aa92839324cc5dd46840a637f8a5b196985ea856e07b9a0d0cf5541e947c569f3199db5651866da85f01ff857434ac47e82502d5f2c1628553db8e2e0abe7ff8a58f5b878eef3600cd3836d3a54af5ebd262766ab43c181cd64aa03009bd57cda43f634e81e50f4464420d5227ba43f1e6c9091365aee039bd20b5a73f5a791f24c5741f3bb3d23d695c3ca4edb056bf57b00fd68c931dc5787f733e49d3e58d037ef5686925cdf9a4bc1929a62e9b9dfb58cbaea14ba530728ae10f998c8b51ae040a1d757c9ed0ad03d7ec84f457876dd54fc42dda5b35cca39118b565b81343fe401c84c337ef724d7852c3043d0fa7a948edc2bdc649e2da87820ee96ac7482c35c52a939c32f0693adab8ef798826cb0f8ddb7813d6d04a9d97cdbd235499ee70c86964fb8a108faffc75dc0fdf5c865875bcfc33b94c4d85a6a62901bee6e2ffcd94ffe86310cc4762cce3d4bc36c76f6f80ca0e16533cc70262c86ca044814b49c21b251adb97571b8042a5eabdacb29d40fa003f052f7a3006e9bca1f8a36e49fd34f1f22d4710ba746bcc11e341654399dd4ce65cf798e24f806742497a2eaa6147ca98bd28d24461d8a03cfb6d4d04218e28532994ddec35cb7e31bf8e768a5b6f53050eca2e799692cf4c97173eb72fccb3daa6c8c3bbc88721fff102d4e74875a0a0f2088be828f67ebf593a76b007d413eca1535a9b04f2adf5c3cda68f1590623a2dd09e0dc1a7c45943b077d94287cc6454b8a2a96ec4d11e1214f839cc8ad25fbc78af76eca2063db3a2639c3674ad027cb7a2fa0a0b5edb661fae9c7d0c7309e13e7ec81c3bdf9d9ae3cc4fd683dcdd76872a95544a6a0ac444ba8746bbf0b59f25aa06dcd8238797826d17baf19f943defbd2bb02e7743b3f902f89671d241f4813d4bd2c43bb7cbe0c606efae0f966dfb14777b9bc98069e2121554095709218fdae36b74b32be70692e66325d8b68d997a8741896c8d388437ad4afae9b2fb267686275a2824965947b7998f4e4dbbbb488f6ccbf931f4e51fa741bf9a47d258f470a736ac256612f2c090e938c517b089e4a2b57521582d4ccfb1f45792ca0af4cfadf2f3ff5d404222d8cbd994a3a53c0f0993064f1fb0ab64b29214b8bef6e88433fef3e06e021d3e9a6bd76d23b4bcd2699021a908fed0fcd76eda7e85048c7efcdc63965b7c217e8944655a6ccef864ae36c19a3f99cf2f7c5c9889f127124f6e8519977294b99ccbab52df61b7fb3cf33c3f73a8630514d4e08c575923b56ed5422324a31fed81d3fe2034bf33a1ac5bf00cb3ae2d99cd5e198124efc364d7da7d2f84cbd314f0517b3171a6c1d1510a76ec65c23f0ec5cd6e5f6f5b6d3f3bf252bab9166ed1882a256bea6996df98a04fa2cb089f856bce41f247ba07e1b928d0cea29cc8ebba1fcc88d24f874f6af72234aea202b35082aff5dab36c916eafd6b24e566238e56f5ded37d9ad616fcd8faf8b7be32de5f149e24d404c0a7cb1adeb0cc16a2eaab5f26fe06bdc246221ca7931cf131d756a26b2a5e89680993a684f93adc127ddbacfafe58fa3dc0d82917dcc17dec857c744a9a450b4b191b841abaf2b9e489dd31baafb5738cf9cbab9a8eaf38305241e1e241af5c3ae2abd4262b0e2823e2f68bdb42fe5e7fedc18e5260958994f798ffc6807bcb6fddfcd2cd16561e87589e6d8dda9f7e8386981fed96e294759f104f45f3e09c196237c128e23ad56b86be931af0eee8763d258820b4d36f8d5873f52ab44b2a926d2ced0dad810b3206327e1be3ad293fba8b20413e5396fca54374cc1cde23f40b9c6534e894b21db07b7776894e7df856a7c8e5bb8de06f18c0bddf9b9ef956a2dc9b44a6262ef129cad05f433aa9373420786fa439ed9dd9253dbd59ded5065abb76f502982ef22a3633e1ce38ac7e3bf3ab553008cb49e58123337d5c32e04ffd45a934e4bdba5ae55ac3aff7c741668314b5e7207ff3cd2b4224028933c98ae1863af579df30b9584be8cf8f10865c58517ffdfb2ae4a4301ece006079a41e2f3eeabb1c551e54acd715f977618db5023196031b8e9f0edbda03d8cafd9ed04efd9971a9fb5547a40f75b7cfe9096b422f024244d87e5fadff762bdd1bbeccdddafc9bc3d952e81c6f09c9fc92959cb08e6ad0ed5d1d09668d93c20e188e86f138fa0af9f7dc9115bd673f22fa330be164f0324347ac3f5cbeaae261da936f2059a69e0f27bfeebb3017b10ad186339937206b674e7445a97a7afbdf4be690b1c6186a0f0eb1d484e7d897df134d2e14d258f0ff83b95f6fbdda8da6f16034e8586d8a811158ec743d73a9733fb70ecd40c58d014639338af841dfe6f5e043e0e0d3191e946e9c643608abc1ee15dba239a90fc335af0b01928ef6d208412166d9fe544514e49d69b0b8e33fdceb4ebca13fe5d33c584202869a80054a700c9a9fdbacd9c46642603dfba38361d8f1f07f1ea55a1f6497dd1795ad87320d5b9ba39d45fd69b11a8fa7cf01c92fd8d8bebd9faa32fa4f132e292727556b3ce25e6a871acaeb9ff5375ce04bfba8da5adcf6daac1e71a3969243daa53fcd2eb8960e10562391be34815dad670ece1f5e7bbb1e68b9cfb08f0a4b154fefadfa142a5e9d3eb0169f9f0a3236619288d3286d0c548e8b4264aeeb8a11fc9394b7d5e4c2e66fedad68cce759ffb09351edb9cd73bfb95e2e20dbfb84c96c759022428d4387baff2464e13384b415cf32b514c1c2c065df32592c3091d2c7242c9af5471eeb2c2836641c4dffb938ecde95d356a008b9c4f81e163ecaec7a558fc4f9712069bc9d381524fecbbf3e562d251869ba3769781ce276e6c83345fd4efaa377aa718d284d63cae99f30490d1db6e3617db49dfe8677de0f9067b20508a7ea364a96fc63f39d09466afc6a46b3201d8d138acaefdc70718dbbc0d85d6db30303b23f62e4620544f8f870f87b9ff89855146f4739fd6b19cd6c1b695b7c90e6f23658e36256a961f7891eed66b41faa45d2bd75b0deed98be910c571f841a73146829ab99dcbcbd2c3a8a10c2ddc2c9b82491b5f6b53faf49888ebaa86dbf68678ea90f4ec3d18dc17983c5c56fe3a56f60ae5906f842bfafb85575f868be268fe9ce21d1a074cac4e8ba267895f44694db4a6e70fb43d3cde1624655f92dd8a038c3085cd62fc4c29f2456365c0729c68d1e89a5c4c140c39e68cce910aae53a70053a275302f2b312cc2b19d89571c3f68ee6d0237266c13d888f3e1321b992fc92543cefd3bf6f2d0a1a1bcf8483e43f8e0c10d32d16f0cfb50de0c853a6210eea864ebf0e3d1c0e49cf857619f7b9022fc8d511231fcb3163cc407efcbd3dbb5751fdc4635d58ec8910e502f3f33caeea8946810fff2ebf510547562bac2d0c3b5adf4c81f8aa1d8d777349e5bae329b54eb9fdc14d8eb707461739eac333a0f45441e6b314abd9c644222b472f57b511b074e63a145cc3013621b49cdb9fc999e18a2920cad7df030a0c821860a2fbae0f82d52815a309908d17b0175ef3866bcd0ea81541984d9732fd0efa965fd4ff8f28ceadf30ea216495b66202da74bbdeaa48055806b584a495e91a069b09b3296002f2020cfccd8c45875d05af8b24ff422ad044947224cfac66b8e2c0e0d73e2290827d2bca379885e2f30c6937a06ae7a6cc62712e462f21d74895969f65b9dacb4a6d5a6642935f4adec5667f5c9658a5347833d2fbb82947ac545a8f29b7db67ed126b28f06e2c119777f6b1cd2fc1a3d70b870aa490a524afcbc45c3677dd4f34a954bc7fae7218ff60b76643431992da536107deee58c61d15c99c804e18b7f43e481cb95d9b80db7276e751cb8bd15b0f98cfc563bbe0d821a6c6e25b8d556c1d6d4c1d3a2ef74148570ecd1001cb55bac9da3b529ed632b667960db964ee032894185e577447558c06e33bda30d2a91fcc951358c66513f055d2230e07fe73754267b61161725c8c7d0dfc605e4d03e931c14c836c703205bc0865b46766977fe39ac2ac59c6d2e47aa0251253e4d369450dd9d35afb002d306d576d55fdc79b2f1455b531cc96fb82cf7b9a63cb79ef67d813316beec845c2492a2b2ffa4606c2c0a2a2a29cd551b23623dd22baf896453789c0f511a30701ccc4b816fee8d274df09a9c73e421e1812a9c6eb4be55a917869eecc556d5982a905f628fe5323161e4a94569d8389406505c947c950acfc50469442092db145e3c44a2640988a56f3f90342e01e557dc22e89d0a180e648785d3c8fd0390ebf69b1a3636ee5cb05a9a5c54828e5d30c598d730a221fe265dd825d616ce45b7289a5129863847fb835e0012165fa0033967d8ab6c2fcd23ccd7aae38de6147a80e559560f1202e236a1ad0f5ed549084415087cac8f0ea7f2ba5fc04dcb37d992f96ab6058b92496b797a0c3386192f59345b8ccdf09b9acb140645f0687eb0e009542e891da957fce798849f1e5cbd6bd1d8c50677bf1d92114b12c312a6baa88f0159ce5c9047dae8a7a5643b15dde18e42678d46c091dedd6582c5e7590dc265a43b0ac492e09bd3ff5b716fb2fe42b04e131114a5baf797b013d3b14a2d4842fcbdb4e2f48338abe01d09608af75465a4f54fe81e7cdfd335c3c2a981a0c44faa7b6e30a37338f9a1ed3d89ce0b35a2f03a84f6933d1a19529543707ae326c32220f9c8681f34443a5fbeab6e6a3a499ea3c58398e9db01144aaf2c55736149906ef8797a7cbb69e8268e7fe1155435292c810967a2cc96b5c08acec896313988e452b2ce858877a384471c3a621839a9ed8630f0197f6513e5fa5470b372f74fce61f59d6a8052b6fd23b6252bb4ad6e10679871feed1f61a698a31b3358bfb3d94a27f0bc50c991ff3bc5f8f3ee9922bfb54c9381ff6a2cad2d5d541cffadb3474db27bfe7f4e578a405cdeef5b0caf048b7381a8cf92a2f0d6270c933c62d209865fe67f3d7d40300729a41d535481ae642bce824753d0170ea60b297cb74479f2d2d12695f4f0b4b455104d6f20aad5d168b7518413585372230b0d0b00063124503cecb8e2738e6d096c0e0648038f4dcf85fbe34da48eff63c54a7315f938f9510ef07b722ca27167593c700c38211d0854580a8ed86f136aabd391a4393aedff7b7bd8c4cf37271e019e303b3e4ed179d18ba8bcd4a411e8ab9350872ff47254e17331925bf809065d0b34dabc846b823cc5a9b4009b6c42061168173258aef42e39928056a960f5faa73383afed48239dd2e4f89d476ed851c86404f3afa96746ed0cbb493de6c7ad3de4829867da4f9f6de077f50fb59a9a462dd492687578367726de1d54f20e5baf744d03792c6f06510ffedb64a246c3dcbd1c8110ab16ecd67e52d04a9e7e85f45e711b4a1eb06347bf890b6c33b7919a22bec77aab1c1f983f594cab534bca8de6481fbdf22e763f17b7e52e2dd94182ac3119697ef44e28825ecf1b1554acc7e1d3fa3b2e4d3ab56b1bfe7f88123e0847bea7e6e19e73abc305d508873fccc6f6745783bc90b444ef1890c43aa53bfc0a7d265ae7f93005f1e3854ec33b2b6ed3a8884b70fae9bed4de7f8fba7f6dcfcbe9e5441e480c63f805a9ea9cd5a41bbca2493c204d9cefdad22580b3a437675b16d081fdb4a9668c5e524ecdb1b721f1557925ca6bc81251305d191c31d77dd9ea4d6a4ec47027be89a223352119604fb9dd969878bb3925de747439d7189b647ba4dc7e2e8125dae2176f13625c795c0e8db5b83a8d784486cb187f6fa76b6ea72a07833dba4b0896b2df77baac24d7cf76358a0e1adf7e58bf8fb5880f17482416af70be813cd413ee2af45fbd270087dee0fac99dedbae9027150520b7a80f459da8ee416ab9de3d6e0764fb22f2575c585906e6239a8ad5a128d2ce8ec332914a5cd6d62abf6bf4a7601dceee7cf73ab0d3de77bbbc2bf8e4da3f271d51b4bfa344b77dd8a5dd86bf30bfecce13d93e39857edaaaa73283e1a3265ad8cff2007120651f247605b5820f9168bc360bcd0ec13e044cbac8365f9a34eb7ece41295722e476d0f1b6bc2239f8b143642082d75260964e1b08b1b07598d533c1b8f39f79902d36fda9967babb052e37333d7f27f0be1078f59fc8c54d9c2e1a35e29ca766618d3b40e0024a66bd49f4e37178dd8712db499da0c445b71ac558d61c4e787cb0d50d59868dd6781073a457f8a0d87c59046a9bedfec0a7d2cedcb891a4628aad6db2adcd7f16f2adf2dfb7560b708a1ab615ca4bb8165f5e27aa27424b103658cf03fbc900ce4a9ee4e95c3bb42d26f75a44c98d0188402381f6fd79b52c5af6c61c58bb19498dd2013e417f85234d80cdd43d044cd763a1aec31c42b90855543b680a1fa179beddcf17da22500569231e69edcf11814369dd8a56c0d52c7645be1b4c723be479325019d2e73cd7e0f03fe853ae0242ecf7425fdc407a89b76186d7210bd2ca9db25266024aecd0fed2eaae90f2d5612ab83dfcec78f4e3b0995246215ae1190655fa1a4a11ec507d9ee8321bbfeeb487bb4de694e715fc64c65812b1e01b141a52b0947115c2bb97598c02c7e5a0c2dea7d1708038a781924a7c3200bee88627d6cca6b1fbf74bd24d7f38c51473aedf3ce4c6bde2ff1cb54fd0f29e1c06278c0a259337eb7cc2daa7d378e12a6aa847ee328d52215f438d3faf8908fb0d3f1e4835b36bdfa992a15115d23b08f0de02c42ce5d83ab24ac1be7bb6234aa610f8308b69e61fe0fe13cc5737547558562845280593898393d16bcad65e23792b1283d4909d48a8838465468ab861d6f290ce53a0d61f40fab9f1ae1bd79916a394243503e85eb6c0c6691abcad58a5cb72382b927d81f7a2149aa1288eaa51b8f10fc1c3797c28e56ce58df585aa1b8046a7b6b2483a62236b060f6c6808ff1593bbcd4c57f3592079a447232763c8e194bd28e5f8b04c08567283ecd71936f6d93d91940d9cb718d615c8a028cfeb7acbd6a6be229dbb6509bbd5fb24b9003fcadf12667e9ca23763c0cc606c3f0fe2778f29fe5b5e605e4d57033339175bb3a08f567efe88ad8df2d58b0f1abd0681ac816caf3423b2c42a0446227c6eff5a70bcda7c794f5a348282539e362ef961d99be20c6f11109cebd8a01d4abc8241f3d93256514c29fd6dcf06960bf52c54af3c5b83372dff2f4f910a476e421d006086a5b3db12ce8106c69843eba8c6e9c93cbea55648c7d2a805386be04b1b32b02780cc1e0c3050117abb44d009f9a33b15824233d9b6ff0bf5034e4c508cb05a6e5f09e0831e0325b14991bc8cdeb49c8ffef1ec713e96ae586c595e4557fc7892990db703180ab4268a1828de9d13e967151976bb06b8ea4f6c5a49cee682d7a7590d5914552fc4733d35f7e518a776a48ec26b3605657cd0816e5fbd299b37dc46a2c356be019de0f4744ddd63ef1bbb8012e252df9ab2c973ed8b8213f9b387dc596121f62d9fad72e2527c4b7c5bfad1c7ace0eb19b617990ebd041cc0693bf9bd99fa86234cd30d713fa13c500806f14aedf9cb385b14c6683ac7ed3fcad728e99d1e0c2ed274cbe79e5a53df84f81650ac9e7d605e5863c9264145b0779a43a8b6799805129a2692cc915c3f4c09c61dbc1773926318651b9f00f5e801dc7113f97c14e715192bc413bf310c92fec1d89bd0c38a5f12c6312cc5096a4e6d16380ddfa09020ff2972de05b7a3f7746b453ddedbdacc3c594537d70bbca94e3aa46658d820dd3446e1cd64e91e319a2b3c0502fd897d65d613a57d9237b43e6d566079e74c1a7cdde409218cd2832953cd2ffaf2d66ec00914e4840946d1caed9023c67b5304a3edfb1eb794e63698b6e3bafd06428df905dc80455fe8dc002f4e0737b74ec85c6e5dbefe2654213932d456b007c36b8ce0d92d632c29b6a4d515f9341820e44d2f175d6032daad52aba3437ab4c647163ca232fb62bdba5da11aeee8d5bb8bf1c05a26fad56416a93335b7b6c2d3f319f37dc0f8c92b8db53d9cb7f01aa99b16bda91408de31968d6d1d98bb23e0aff62091a5d786694534370a1137ad9b4442d711985716e2326214931ffdb93887e5941a2e35e4ab280482745a7686ad4925c30fb22d7f194b60b40faee7ee17b3272a33479a611bf98107fa91f65f8941ffef4a71f80cfc8def822adb66b26d4dcba2df198bad494cfeac456e05a76ef7a0a1d2f962ba4cef0ff28cc1a6283aabdbe5c53067873a794c5ef37b410ac1ebe2f4ac3b056e2a35c1825e6bf76bbe071020c281a5effbdd148d0ce7abd190e85d739a4373389c157cf93a744daeb9ec8a4092c3edd71b5a28e8335e81a3ef94c7252f42077326854d0d9d0f7f08abd23256d44ff45f8defd6435569a57bda58724e811d4b9e9c9fe97924a84f99c49736ceb73ff95dcf713b00c9edcdb7f6b8256cdf1a173a92ca345f88b492c2cd2b36ef8c5eaf9ad06d180826df6bab5d3be102d79ad9419dc1f1a4bfa27f8bed340f91b33898bf3c3b58177ffc5b5959e55a413a8d8784813104d61731284c87e17b7f24b80ef3f1c87c8a2f648433dfe813d5ef9150f665da21950ffcb479a7e635e29068f51c98d88a14b056ac6ae3489360f2822baaacb0d01d41df3a70c8f1cec0b8145f2701ae7234a316f9c054a4aae7457ba9491da8748e4ba19a0147119441a009cf088286bd51abc092d7aa0dab350a17bdd14d3ab4a62a91c7e1066e77558e562d8270d87a8a2c019caa6d7f30c7ce6a2e466dbc122d0cbfab25a0c3cce4dfadd13a0c6a84055f7c668bc4703b81db410239de9027124e24989dfcd3f61c0f994798c3af69b9c8f6a673b1936900754da8e77ac71eef35b2d15239abc6254931eab9ed0a67569e0ac0cbca47411681c362b79dab95442b49eee5dc88bf9db42aefa9fffaacb7b8fe2389dec2f77189468a28fd3e708d75c79757ab172ff9c062a38c0d759f8c9aabac649e43269e39cc7d5fa2503c5715ed577b25ade2afd69d74358df3c67ab4425b1c56a355d338112b2816490214176bb51969b836f25d9fe8e81a0420e1534ba444689e8ab4454b4beefc39a47259fa6533f2c58402bb005326ba9960e76a93f4146fca1d22532953d5aeb28f017932599ee00dcc4b68ec6744e647d8826ee4775aab279677c47741a09821e68b1b9796408a1457e957133f44cdf219b56b124c855ed27c8efd75532af1a8d3c6078025ce14b1d14b719430711ed92675d1577763eb7844e1a1214580dea3f23e52473b3cb3602fc8b03ca6cea294f91aaceeb2825ad663d123d97f3fc90af722652ef563d7b9d1c8cfe31e3e55bda4245ca3857fff24837d66d08ed9c685c13259bd8547407061a72bb935eaee03565d2007f3e2f319ef6ae5d16451b5d6677160f52a2674900781018ce8d36e5c23c9b5958822a7851ceb0359cae027c8151dfb20b908d5134ed55bc9f00c66af33192bfcd63befac17808722d8c74a1eab70ea93e10756fd355dd69ad0a83e77f9cd7c94e664565fd690a52c21cfe66416bfb29ad83b75d2c2bbb0233c998fdc9bf0477ed4341f415722075270c64c659041a1ab8b07a1c1b65790a83331cdc69d4e2259c4e82030468bb32921459541fec0ddac38ca3c031270c19a7e55f56a636bfb14fbf4ebb5784f621686c0868871c046676ffb1c7bd895c4da1ba25f240a9374ea3235d9dda49f7cc428bc7f61792832ff491e5f0ed20b1e7761dd4360e13870d51cbe669c86a5b211fa72241b68dae55df1980e0074402d5fc17e3158b1a1038bf805bca3ef9df3703a530874a912ff18664cec3f22fc5c1114f2af4435a33df98c71b6f76844eb098b736c22ec86639e71e389d48b927d7da6ef812ccccc01880eac50ce45a35d847ad4ba4e517e058e66bdbe0a5606f5e9c70fca3a7d9a9d63cdbd15d81f1163264af617ad8035bc9aa9c2c9f70bffe2454fc526d87b6e30f86ef95baedc001d68019d444c6ea445857488ec98fe488407046feaabedae666a659df64500b285761348337182da2d220350172972f0d055fccf97ba55c46bf54486a928cf8024342f943271cad5362e7c03db7f85a6c99f14aa8f67e398b7c6d18cb674d942f77df9d6ce26830b6c618e678fb9089ea61d01c4ba4d66dc03d599468e6d28fcb89fb19ad8b27d2fc83beb11c6f5135d0bdc7a4b32b1089825b62b709cd89226ef0a7d48f23f49925bdf0fdc7c5016eb2744ce35da4eb3ab75adaff1d7718421906e9cc21887b801c0acd40e2ef3c59ebfd1f27e46807a83dd6b548673684f73a1a4478c36ed2492b765402b8988648413196e523ac12ad9d62e8f6aad875a3c89b8f5a61cbdf6d1ae131c3b4dbe12382cceae3334ef4ca924f3ba6614aded111bcb0b34db77f8bcb7e051d545f1826b3672f533ca865c1cf2a6d38b8d5372d19fe5268ac0130acd7fc8f68edc28efbd771b3a3cea697f1608ef57f9838aba7769510a58aaec1fec009bd43bbfc7b066dae5af718b16d1ff4e15eb4e65c0ba938606c6343f3e5086cd7b8785319d794abc9e56557257777f4f66be31d36bbf9af55b5261e2999c15a70e19a899f8d7fc5340d0fc2e88c175e2dcf9132e6fdbcc6f785037d0c7e4906105ce3d7384d81f30b65ce2518ac8e25d73cb250e0c912c317c60be64ef5c83fd519f5b18d5f9e47970db4a818a01b687f3b20de577833f13429c7113da0b4d21547e5ebe9b4a1b24b0bd10b44748163c59398b240021cea8cb00cc7fa2bc761f2ed24ffa08dc6ec68595c7d80216ea56814929f3168cd2dc1dd533d651135c3c8912196839166fbe21ffaffbe5717a5f5a3343a5a05dde1ae6e55f8f66a9f8a79e53651a7e4a676f83a2d33d31cb37e285b2fcb7babff7b3b9142d0af69e207e2a9ec6798f00b5c8b94bb56b0aec832df50830a6ca15ea3c36cbef46d76dc30be0f73c6c4893c71d98096cc0f47fdaeed427cf77aced38b01ead96a7c37e994e62edd5aa9eaf14507ddd89310286481a51719734533914916d4b7b987aa7442dc5a1fab86f781de09a98bba78cddda452b2d888dc05e84b0ddfc284f284f2dda3e64402ce6fdfe6f0ecc11845cfeb67f71446f6a80540affbdec2b9abde429229e3a2d783c182b8e3f467d48f1f1af4a9022e9c10f14d00a360c4c0b5d7e2ad374130e19bf2b76acfede3a5f3e515a437eaa81ed50d834bc2fb1b65decbf81a3406b0131189fd7cc24cb11e8e0ea687942f328e8cda591d7dbb137b7e7443209755cc03ed696349733756425673e57bf7abb572f650b42d7f3343f5c52ff37f651334e04c09b2c4b325da184349b791a2934a06f00e39cc3369ea39e5377357430bc775f6691d8a913e2804bb813088d6ba9facc4f88dd56505a632098cef9f4fcb8edfd173a9cd00b71c5a0209aca9e76efd6606f63abcbae1b42f219748a8b4d542baafd8f8a109d24e0d45c6625b1d728f39d73b2bbce89e3f0756a7765a258ad04abfce9d30ab55f7c72ed5b8cde360a12958d8743955f49e4f56dacc0bf573c84c87b9d96effb161f365cf81cfc2ab0807b53d6d4d1a5adea1d1ad845b136807326b21bb85a629bc3439630bab062510f41f20042d745b2708fb2af2df15354504dc25b82ab1d1a28b165b09c6f4c5955d4b8988070c9817a27da317eda15447723f27d9e782226bf48b06b8559c0ba3399394eedee726949f88c1979ec023c172ce5a484493fdfc5ac97f87c8e34f4913924e999f1f6ccc32c9c7a88a0612ebe797bb6964572725f6232a1a4cfbceff3236af7f04b24cba78a0d0df6f413bec193f46f5c28d349edd3d9b3d712127ca2e8e5accac4239bdb4998d9cfd528ef9ccfa5e9df3940b33d848f708b347bac78c206e5c69ba90a1013176726e97119727ed1b1141eee1ce44c045fd06411ea795ffc7d4d393c14d4c464e47f3427f605d79d233a06aac817beb50b1410fc18f34cc094133b8785d49c30cf1df61ecd71edb9738f0b5c666f77e6077182c52ec45a6a674507ed65bea13a82f42f85ec66bde0daf58a0a5414876ebf24e6159dd41cd395c949d0af150d766763cbf6fc78e897720c7e58d6ddaefdf0aa8ae580020a3095d5ff001a27bb68758bf44320514cf79557df4585796b27d05fdebaac54b71190991048feddfc3311b5a29fed5b461dedf0099f45a81490997921e95632e6386c5bd8d999aa12e0ddba64000ebb739cec0570bf128e9caa510a5a125be3b100408eccef3ce2808d606001f05a5c0b5e6f552d0020f115ca22444ea9b80af888444dd2416fd81ffcf6c71daf3bbc2544016007f2d35e83cc1bd8e88e924941e54cc12cc1dcc7d92495470b2ce037767d6617264b88804719e46abcba99b201164e2c7a39a68c47be96548feb09d82cba73155210ac9a0d1f061bba92a405edcf40ae4cf3a310880fe1767b649a515b6c91476298f0e7ee2630d3f2caf4e9c369092b60d4a10d503c196a9078a95b537025d0ffaf523c9acfd455fab47d13954ac614eab9cfce0e787e0160880ad58ee0270bc493647be0cd1a6fa81b80ea30b89f14c454aa0571971e9dfd845b027d8ccb152412dee0038d57668b746966f0ab0371ad4f9cbace7bf11bcd6fa5a3548aec5ababdff576db0589dc40db7f93960de05a760baa58ed274743cbfc4ecab11ab8d34686207944822005c677f5ce504e5e9c11af3b3ff2c2631134e29ddf858e614badda11ac84ade969b65e326a3e3b021c2109add666cb30cc75ee543fc0549d7cef4aff4a716fabdcfd4221c0a0ed0c1f930ab3941cb18e729fac7808869af7533275a29ceee67dedd26d755ce79db278d8ec6265eb8a06fb6b1e53ba891b4a8cffe019fbda44ac9efd502d5f7e28e9a5b6f274b2c9a10fae9fafd6c304b61d2680e55485fc8861366f3c80884481d9eef59fb404de854df7ded6543f0bc368c14dd3e531c7f7bc47f7b67c3066bce0e907b38631dd79029adb0037759a5cefa93f4d52a947c7954747971eed844be0bc2c1f6a1398599c1b5e814a18ffa1b803c7742057575c2f6eed605a26cf1610a5a2a0bc976e15a77951831f772a6d41df1f66e55b968b5593fe8a0e051457d306cd0d018ac3c08a27e0facf22e6da106bcf70442869ca30cf110c0259785fe710b04803cf84ea929fd54a40b715dcceb423b225fd6d2649027408e69dc7cc133e67c061d27db5c7d4ced013164eb84aaf8520ec885e1e3e9672efbf113da969e54a0199de8bc6f7b08945a6dd9dc7708d44494785e4c237e837c08d9f50683bec04214c0ff9ab5578ecb0ff285b3b99bbe1f9362255843a78f397e8dabbbc140aaa740922334c98e88ab1021cd982c8bc1f873571597cec224cb017c939c183fb80bc46610cd18df754cd74791341062d9d10b5ce0e3884fd1e4f948c65846e96fbfdeb44b0cfaf41c41f8441a226b4d159a557558592a55de7659c5ebf374107c3fe694dd6abb8b322f3305c707c30bdf156fa2e1356a32a9e086abc3595d4824bc2d845928d297a3b1939f62e55982a3fb83f791eab97b3692d835f44f2713178c9ba7e8324987b3632ae52fccacb56919cd3f763c2adbd41320826f2970821418eded2ed5a7259993341ee9ee9e729d1f9ae8e3f0a27a653903334e9ec0ad9cb04f872d1f736f162186cc035421836d3a1e7567b30157b2398b0f8a938c39469b9f4a94e7ed6c577e7c308608f07426cf833f19b866a612a22fd2a9c7de1be34e1f0f7bd0387683efd1c96a42ebe903417f234e51343f74c2c2706f2c64c1b70f6c62bbfde928dd56b8b1ad5e6da0b2d364f63bd6eabcf35f5f004d989a57de0bd61a48d4ae7b2268b273868baf4c5d3d712d22e123bff060ba15140f8c272b5df04020c94e3eecdceb1dd6647db220a316e5a4b747e441fbff3abb09c8c5c80e7556608864d25cf32d5cffe7851d48e5f2e33cc5d57cfc1bc5a7450f937052f751c520157c0df625aa0e450c614a4f28f3473a90fd322b9ce37dfd4e2324e8ed689d0f8e8d2d67286241db118e1edfa9eaaca836ba6f779e9e651489c906bc07bc59e34b0b572558435000d85e379b2709e93522aee6d126dfdc864034682283349cf5b1e55d9169005c389365053dbed1c92e92010c06a4fbfc3787ff3ac1ffb79023e765f831872c435d04086443ebcb706020b24623eb168b5b922aff5abe4fbb54ac2adfe3e13fc76faf8e33e2660b1ef42761474c39eab9f22e7f28594e8de8fb5cf36141721146244f9ce5a64d339f7dfec55e5f77b27a2e2baea8578a71cfc470a4cf41f975ddf54707c775512d32257b009a7ced96b27459a993523ad3a646e8f17b97fd5173ae179663ff57c4da531631d7799f6340ef71ca1de2538379eeff813f65f75523faab3d12e6f3faf44ee9db8d5f43b0c801eedf54c284e2d55abc7ca308e6d8101740489177141461e0d88e4ba5ca8ec93246e43b626a2a4d89c35d0704c7d4f39ee9447fd9ad4a4879fb7925d4e58edd06fcf17c94c435c1ad001c5510aa549202aa1089f6fcc152c0e4599b1b947c5c3fc4f5f969de8497fcea87d50a636da533dbfbbd40d30f6e1b6424f62996d6f1ded2d8d4f2840d561d01759c71ef4c3d47818fbe152a9afd70eeee281dbb479084a85eb8646732d906d0ea51c4411b99fc26f9667ecae9848addab9190dbd90b9a6fc2c5d08b1cc407977232f42e30222e5a3d110ec04d57f5ca57a226303580cbd14149b55b2c1b2f0bb7a61745dcc634d862482e88a6be47e7df78aa95d5d657b0da942ce21b0dec9d0d627f67ba5b487007b1960bf3dbbbf1e95922a596494ac24a85ff9a9d77fc58bda1c16a722202aeaa60e05d540524348987de83e1385ac7f7f6578cfd2c0d99e8e5174e955555002f74810efcd22e3de01edf6e23928fc642d7a8b08f5773b0fbf2e6f205f7e5c23f76a180a478bbff81c4fc171c6ce10b7abc86bb370df9ea72cb77628f9896139fc1173388c753b63becc5d99f8f71600e433fb9513eae42261c62eb640121d59012cb3c7a49a2eb9b31403f1cc06307e5eebf481586bb2b8b64c6c96e74e8060f7b002000a7d68e77db2f6a8c6e9d58b734167b0caa1c8f318b308e7d2984789394c6b3e8c512916ef50534811bcb1705a85554b7898ac2d8679a3f181424062b5c710b3720253f770592337b7897037f1623d5b4847fca4c2d1ec75d799ac8899bf8b6d3748fdc401f8fc7a489dd09ed7a05f5dbe5ef6276777678fc74f900ced0e056ebe3e3e20457e8d3c0b37cfebe53c21f51c5c4057fbc94474870ed65bec5aca23264d21fab70e72262ad5b879ababda1d2d9ec75af5a9ab7b8fb76893255372dd9cec2086101eb771d5c2c7c7e080188a0b212d0c70bd84b067e1b33e2bb6dffd3e36fa0b36a4499c6bd2a51a66cf404fb2a8bb0f683863690ea51efc3952e4a559b29c340cb3998b4b200666c550162bc1dc6943b4648e0dfd8b187ea0509b58effc45ad7e70ff46c91b50d586764f65335b77fc6357f45321f721e0e3125ce4a6b7830546b0141b07ec162d6ec461dabdc879b355a42b5ee42bef9525e9c7b0b83b7517f70cfb053af7f7d3ba22706b57c7d117987d72dfc242b1b2b9325656753df912de3043ecf090106e21522aea2f3dda669791db026dbacb4238e7e3eedc573446ab1224e689bb05e132e898a5b7f3944ba69ba67761f25f62a237d6e35d8a67165d21c2cb9099545901b131c4f82d961eafd8cb589a5c838f6e8a3f920c7c855979ecb337684044586fc6a065649a4b0053eba87ea651ba0ca564d307353777117f4508fe07a97e1ae1e7c48036f93da1a3fca9751e6367846c3148ba800c5d9fb2e122cdc273703b51526d72e722cf4815c77bbf86fca65d1ab71f120264984b89ac3b94e2264529396a5b9c41ae16ac4b12f864f28076724ba796589a45606e90220f47911c4745e2130569e5d5c349644cc190581c3ccfc62844b7d78a74890d064cb053c5ca775ebf04046fc297e8a54bc98b97fcd66a935052698c03651936e28e35ae46f04b1c2b9a88456665c8b570bd051d7fe93ac8ef6f5bf48fd45fc347331182a73d5d8f7664be550faf29f118fa2a8b0982bc3e0984120f7d9b242f415160b94e4c77d46439a56fff614400e9c35d9a8095072446107f8c87a4131f3b22e2deb2a09f258fa88a8bedf0871eadee77ef5c77f17b70f4f61154bc5ec28fc97149a37c96a84c9f18cd8e2269a25e2d21bfa4f11ee69eadee2e45c8c767bb1c9629b801b3d18633dcfd63d0841019150d7d61db5819b5863525d4e60c6641478ab1fc515aae6380b15ffd7e01c1a6496de0434247b7234f2d427d8d489524304f8bbd5f2bf2019d36900dcadbab93577ca56cf6b3298916174219ed9d0f852d9ea6c52d9f4ebeef0b4986e75d2e229dc783761ae522495a886d42a5b179707ffb514dc82657fc11b41b101b10ea5f95afb95c1283a8bc0ff498ee76a154a2dfddbe2bd42831b4006036166bafe9a7ec78b4adc183fcafbc92941f943e4b7c7b62993bb7355f74c4f926bc77bdba0eddeb227606d9d822b41c1d85b154cbc572b8840b9ffbf0253704a8aa064ff7d953a64dc7d1df1ddc7208e706e6956d58988aa3d8ae11e71b39be79b834681fe0318b093acf111cae9b831ce70a6e40ecda2efb69c53233f1b8121684ee4f731b83e06e386303a04719d2c3289b47ccbeb11b4205364c134934d98e25592cca94a73d29fef38f3b34d8525604876a7b6dbc334917944f0705d5c37fa80369d34d9bb7c341540eae46d1804967ff27dd7f1703dc73843328a45f25c024739d8a8eedb52ab658865b703beec4fba965642bc1562fae1c00c9adb3da07b6f3be217eab7ec7c469fa7fa293848f3481bfa0fe55411ffd25e24a26406f1bd46d027f0c129bc2fc41f69aae599fcaa16932fc4c8790f9174b8f850d75b8fbf025af1e578225bae25fc0b88ffdf47573a82eeee5e100b8abc66a1e760db02b51bd85b8237798f72000af7359578a3a2a42fbda6f6ee4e5242b2f0ef60098c2e3566c52085f5f63738a0b681b762bbdb4cbfff4fc44f5e75629e38f8cb9db6123ce72e7243d93d686cd4b7d7acdb0674463b0a54ee905904596290f1b32bace482642c73dad0c5bae89365976d6b8b2a2fc1e9d73b58968b9a2518bc6cedaaa4f2c0b90b6c61816dafe453c3303230dc6cbd66085d01946d2a82c73e68131ead9f12212146dbe0d34d6a67ed18d51ba500166bf28ebb19e37ee7a6f9067036e06562977b5f2aa8bf5de1066bc8a1e25cdbca4035eb8cd151b9d359e8d18d4bfdae4dcecbc2fc0f44e9388e130341c29568c9280e43a3a9ef9440bcf4fe6f6e0c49130a66dd67861aa1b2b18adf950cb0e8cf7115093a3c90f408e63c1662979a14761eabb8aac92520acf47d753034a0dfcc4e7da3c4d80f4dcbd76bc565070065b75ad147d8c536abfef50affe1274c880904a79acc950b45e89de00cf2b2e381a01933d19b585671527a698a9df351ad869ff03da13cf0bbe6dd5e5ad9d532d35a81f2379e9e02b63cb9ee091b728ce5e3600d65b1c0f4d49bb85ed3d5847ae39821fc6cb1e0f9368769bbb0dc006eed3b36b6b3ebc1482f1556850b2de8380b8f80096f01b525ce00b2d533edef37c845b5f1d9d8e26a905e6f6deff78f2f0d2a8837263446de5ddeeda01cbc6328a8daebb9ac41ee58ac4f3a4d4c3e9febf5c0d4d5a73d68ff4caeb5ef19a74a474d22c40fd91e924ede1ad19ad565b7e1013149a8667de5a4b90e5b0e7811b83a130c3239d3a3168541ff348f1da4a39ac7f479a52d215fcc58cc9cbd5e9d4ceb34da86f6ed6814bf549a07ec30a710f2cd20f62a2d05858039e92ce9f76636f978b97a1f7b85b5887a9634c257da4af132c054fd5861a913e1cf9d552c38f9894a5cdac74bf5369326a488563a610dd82009f89f8fa720bb7520fa3a3c8d8c887b9c3f8f972b131d3fd936d83b225f4346f5a963e5d635d21d0883f37eee9720f255b14faf15910103dc9efb892361e5079ec5de75b5f960ee1df0d671eebf801c0e47f02e8016af0ed24fda38214341fb914085525ca3314a45c2cce12dfac438b9755f1feab68ac531fc07b1de57628eb2778a9080ec05570f662697c1d48cb44969c890c640ea08e76f63d3650cdbb613c21861e9d10231ae07cc94192780b2c22ad07fb8c41fec12ad7f2932b6e897a2a19106afa1b254c7d0e5aceb859f8b85944c1f58084dd2ca43c87f6a8d185ff091a4eb5c723e8d249f4f92643f9485b366a58fb8982e62fdea00822a4a8a83f278d7ccf00f80346b3051fa93e2964271c8055fc8d534ad5777b6040db592fc30e0cea17348146b16e60eb60aa6be2d84d5197cf1301761596a710bccaf8e45ee97c079a6259d321890df85fab07a8911892ee60a98f6f2c664bcb77477789ec0d79ae91c216d04b6d555c53a5eaf24ce89b9eff3370678f4f57f33994a63ae521b46ab674402c20dc0772f393e5e90fae7f00353b2f2aee7285d0ca6fb7ebeb0520c87bdfacbeb78a6f4c74eb38b22c248fc580160efb0f58d231ff52b807b99a4f60fd65000723aa2d85236913d80db02d3ccf28017c91218bbce86c7301cb5292d161a8e1b86a781ae9811b21272b1edb037fd62744022af1d705c5b55472083fb224900caea79e4f3a7daaabd9f0b5026e9e8fa76c47c76333e39c0bad19884a67bc1a74c8c0c19f680036135a27c6004ea80488f009957db73af822394d7f4bb6126d37be65031ef31eea8a9a8b134186354c9d2e36ac403bcd56eb114b50bb593d1285d65d6f5b87d8d058b3b45e2beeafc318186d30c9b5930eaed52e31ead3999029c4655f182ee0cb1925030ffd2ee004439f09893de328c89dbcad69edd2ac4c2772d4e0d0cfd86456b557e1f6d203e8756b4904935277515078a457d9f0a6fddcebf7a7cec0dc40072741080c17376b25cb8c726762c20e39fb712096f18f497d5cab41a84af9d36d2f4d1346b522e7648ee124ff32b80bd195540ba9175e96fcd4870338ec28b6e63f017eb507d645a3239520f64b813ba7669ba6d487f316745daddab000e952122df23511407935af01c317702373135f2b09d9ec200655f272ca97c15476eefcb89cee030f4c48d4fb372ebef9f74c81c44ede987af25fd11c9fa178b644132a76c641a47f56838aba753920a9a4719ff7903551bd8ce535c740217d184c558f825c20b0e2cb656d6d8c13e59fccd644e645313fb4e7a083c0ca2b6164fc93fd697d7e2fbb7ccad918e28814ec7c71188ea282f2b6bb86060192230ba3b86e234a7a2d2739d3aefe7b6983f9d874cf5a42ea15a7ca7735394f04a05347f6b1c6598068a5e42f43885aa0646f7b9700ed4b35a48372443612c7af437560854603993d90a50c396000da331856ef736503a087675b0671e2bb46fd5956abc23d1bb4d31eda68e7d960aa4421a02e83e543cdd0516ed219a01755e982e3025837a79668e4d7a26f3d0fd11390622c0f91337a14b9b6fd491750923e0cb9c8440ea3bf4e4f517418e5fb8b60fde5f48e30a72bada738dc0e393e388bf309ae5d5df976198442842b42f878764bbeb8383bfe433bda60f1a37cb22e24f82d76f4e7e24f683813fa8bd65132c1d3305de2ede35b9c39b9e58601a9897f62d90c53cfe752d7dac65f891ac3db96e73d021e17ceb8fb5ecb51aef51f55a4fb17ec6ad665e0de6b47a271b4c6c2e9c40b6b809c8e374b4a979c67e1227fec7da8bdfe1437d7127105b64c76d26c06f2538270847eb72ed02d85496380b9fe46ff23f2ca8652c76cfe8f1f36c16092591ff9ef0d510b8027c9cc3cab87c9c4e40551d2f63a7b2bdb94bc20747a009ea60a7e5234dfca2649f495ca3c8a1f6237078c1443bf40d88e04e80efb4a167960e042d50e485d573605068fbfd35b0c990f335a212f5bf38da553c38d043da2aad3c4c5497eb50ec6fc37db7d8aa8688cd856ab059e0c5c444f788d5063dd46e78221dfd9c44b205706df2a68f88ee0d84b0fbbfd3b8cd252b8d50a6453dbdf4053b20ae1b659f21fa4f3af2709ad84f516064d7784da3711248cec9ca5333e10afa61911e9366c48a6044dc75221cf06c05241f75c7cb631bda7dbf516ad8a03f5a9675524a438f0803bfd181737ec6d3eb4378cdf970721979e79712e7d745f7f954b3f672cd38c9078e787c44e8df43103bfcd6405e9a12af340cc5160e61a37bb6c785b1b2d4296c1211d5f0abc428e028e640a06920ddbea5817a575c8fb088805c803566235bd78038367941d109f9ae51dc00867cbba1d88273491cc00c3593faa340df432b0c5d6c6be20d6f4cbb0c283f83cad3f9c902ac07f410b8673391c79b225fef9af56fcb316338f794d4c8d2e40db14ba70ae767da628d2750b8c714f13ebdacfd9ad3d485624bf9762ccb285bf7343991f3f4f5f3e56f172eb5c15f7bde714344c73d32ca14aff7cfaf2589b742692217277581b7f44afbcd1050665a508d7ff5b16c977e9d7fa4a467d8c7e2323d3296ad19f8e208772d6807d4e572bdc80d222c870d9373f7866c4302a567ab88eacd89bc6216f0378758a9207f40e12490e64dc43c66af92ea6d396e9d347f14254d0f0d6bc53c7fb88b6357ee5991e186cb0b91c733579ed5ebce619edbfaf25cb1743eef2a28868f21857dea301a742e0863fb08edb0e94505852a87c1b6b47e817ed76dd102e1e6fecb0d6fa4e279731ab94271005dd4b533115ae192d42805036f0f1ff898f3e8c2c1347d4b3a1317059c3cc4d9d6afae96fd2facc863450f8dc30993d24d3191f1f0ffb913cb8dbe5aeb29411b708b49384ab74f01b99c7966a9ff861143f828e59b685578675a7c6f4d86fd200ae5574e849d6cd2895f04b2fc52b7a44aa66c809a8ed42a955a37c3d13fb420fb4ad09c5cc35ac6a9799277e8b7a4d569f0c365c748b295e119849de7decbef834aaac641b0962bb8d037ada8fee8e5b6e5de3d7011d7419147f42a4bf0b368387558aa859a275dd77b52991d55f285f43b4120064e26c63e2375804bd23bf016aaab705c4614fe865c57b02ed11bc6a4cfa325e8b3493fd2cb143cd812e5f351e0cc1bc73edc5b91e95ef035db0700959a3abaca45aaf133b05a4c29556aa5dae21dc298f163ae59b3008fa4ae45db373779e5096b3ff35b53230e0109de1e9e9322be1ceea5901b92178017478d2253ded9b6ecac916aab1d97d2f727f64d44d4264060bf3e074667990ccf8de79e88bc2bd98c5a27d0f41f7d6747ef623ade71e1f3cbebe8ebf69e74f5c305983f82a390d8c695b9deda02f3a3140924729cbcc7638d8797b79dabfdb2816ee5da90c0306406b6d9209525d5577cb815ef72cee42ee9e44c945f656569efeb17821f9c8c83216d527487f5db479f5553a7034a65c4aa3fc11cacded02dc45b633d1e7cc65f27cf671feb1243f74e7b032b298e58e71cfcd78651e63d96e72fb49938c292c35b497acbaf8c1e797c7fafd9f744bf796b1756fc94ba56709c9e1f497ab93a2b484985ef951cb2862a696c6a9e17ffbff5f143e1398a4f58a2139320c6101215046770ae2a5c20064ffbc33bcda2a8579238b93e79abd64f74ac23338c742eaa7a2c41a175d1f8fe6bba01e0c36114740e986c82311b2576fac759426c633ab3cb34056028d428decdb3835ee029aedd376e79c1b1a1ed57a2667fa0f7a6a6fab7ad55196c7edc86190757526a68f7cf19f507a8550af2b8ee097fe9311cedd44e1703853ba908d04179985c768cb03e803e61808fba55274e14eeceed1039d91190c05ccc0bfdbaa91ba9fe5138ead9d82de32aa51d4de05f36c10d97cea9dedf7a1826f54e8b05cd37894622d4aff14761aea4541480d7efed359bd0d78cf85428630fa05a410cac473735480962420c86f49233d72e6ece95ef5c5380a27853d1850def1e56fc7d8e256d827d2aa2a7a2a632d7ae0bad97ae284b962c907f69e009525320ead487093d2cd817ec206be7f04bf567922418adf4f897d93711bc3201f747ccc9ceb7fd3b61f685b64478c988ab1009fd5e4550a647d0e3cdc98e71b717a462b162686382a5fb120d1d73269221549bfc711a3b1457ba470986298d6e6d73b03b02e206614a460bb3ef103cdedc24a29ddf6598a88e2d8b0e57c43fb04d01edf546fe871a81db527848cb501d62398b83bd545df9063d308db49dc650e400c1a072f58889ae3779a88884bb602ab0ff21ebbe7e0eba28cb4d0c4b065fae3f2bb99f0f67dbff671d3b4569fb392cfda4ee03e341ca647347af17bad1f82041988713bb3eb681d89236effdb0b449b28b6d70c73899bbdb561a06f4034d783fea4fecfa192602724b0b28f1a8ccb8396ef4034748d4d91fbcb9127ea933bee74b01e57245135950ac71b5b3eb98aaac6e2790b478b8ab19bcc1830f4216609930beb37cf1905730df09ce9242365d741c48a22aaaf9e246675b8d2cf36cb761347318cf821d1d2bbf4cd9141b4f46c9a487555a8c5bb096972c061a8e8f3fc8495067790b7f746ff1771124ac58cf76915d3bba1c1db45cef5c696b268756067303eb84ec44d06182037505ddd32318754525fdd77d8eb1869b5ce77846f8f7ac40d6d97fa52dbf2673ca2e697fe9c871d3fd178f4733f04f50384c01da619d28207355188aa78e5462d4d61716e2106f5bcc23e88998f5d2d429e1d0f5e602ec46f9ece41150ef55441a1bd00f1af957e66a553488f98d38e3797880fdf54916f2384fd5dd3ee3559ed8a4849b1efc9bc70b892ff1303339c29807fbcfa0f218673a2709d888a796f261ba1e6196dc2d5dcd47bc6632e19ec0a25d50afb6c4b6a6a6f02d461047e8cb98f289ea805941d7689b9c48d5a6b1ca00230ac1dc1e721ffe494621316094daf8df26604e00905ca13d9d13b7f5975f0a4a3c8f54b9ef6258b6c3dfbbe155214a26d876e63f320fbce3ce4750e2a6dc6a11a3b19e3e284ff6751222185e42512b644eb2fbea89238aa64742d727eda0c5b965ddd435bc0adb51498c462591657d8bf2a248f4781a2e4de9216bc2e90c70f3b46b47ea4c7bc9e737db279aee5cff4a35dbfc3029869c7097d58da76cd1c4b4994e796a2f08d09263e5794b62d107698d3ddcfb8f56b970d5dcb9495fee9569e7755fb6c020f0698ffe69939474d08652ab039787e61d7802e2056bb13e3da2e000eee627452a461e0cc4d23de5f25e25d7ad6832605f6d261c12de6fb8eedd6b9235891af98fcc9a99226ec846834ab89f7820ef3b405bf6a3a0bed8d3c8f5299765e481870cb8e13802f4798c9a173194bb12dd7278de0f7ec6229027fc9d1bc351fc14f1b95822509afc63e6d57b1e841b2c0cf21176926bcb916dfeceac07b5e87ee7110f257d46b15505b4a9876281bcd237adb2969cdab8d654c4ac289da62c67bee6fd5c7abe9e2837218ae67e3ec870c584db538accddacb7bedcd70323e0249beeaea8f2cac3a6006440c33e0e57cef84c914d8d3fc3c36775efadf3aea76bdadd7fd0a9fa3bbef40cb1d4294cbf5810ce922342f271efdb089ec72eda70702c253cd0400af4a4968543a7b69e358c32d7165589c97962da108f215053f0c3423ba412e347d65c5cd9c5077925a6d66487c9f1c8d485f9587883882618aceefd52caabf21b2a06ece1a9656cb1319d958d4b99fcad3034c5552cbce5fafc68bce74f0136c3bb11ceae6e43cca20697fa4b920ca5b3edd76639d52b6b8529059608e644d664bfffd6e70d1616f0c10e1520b65173eadb4a010bb35f1ba2df3962559d65ae01428d275d3d02cf410799d4e454519e74457d05b773c434b4cd75756ec2716e7ac0ceff957300d6216a74e72541b0718da307e857a2b612617b542c735bd3d49bc518f793a0a201954cfd984735b9f819f9835db0f8c0166e792439ccad2c1a9aa32f6542b57426d799b7eeb725c9fa1542a806c7e412f7aeff2402fffd187551acb80420d44e535521d8db188170c039d44cd22f7830fae8fa6d577f49feb99f19a63e52585e038ed0004ac1841df18c13263a6b64bae957044b8f18ff786cae306f9eade4318db2fed54dcd9b834796e9304bcdb1b0e4872a4b84a4361e3ac1969390c1efdbf012342b2dd25fc1545931b7869f4318c4737fff16794366bf5a40670252847481bc9bf1a05d3f3fcba7eb0b28fd956f9faef56199899340010bb535049b20d113a3aa58064738c26c2ae1ef5770228445ca80f3ed2b55640085e804e6727fa8bc0e3d9edfba82ee544bd852578d5326af3fa26b27c623c1722571b728f58a50eeb23fcd7f8391c5e852fc401246e527d5b98ce7d65c36c0c0f65296a1a9bae20d0589d31eca7a3773bdf99c0a41395786dd721657bef2b54cfd326c46ef18b4ae9ecaac22904300c05a5e66c7ab6c6f555e1377c091054ab51979df14e9e18c7b2806b4c098e58afbc2c7fdf3a9966ad0548a3304720b100c49add89cf33f0aa6750ea5ec9b2702041b3daca6fd446d4d17765d20f880bc194374fe1379c171cd649041718cf37b9611d28a52125838ae2939633fa9d1011fd03834cfbf731e9fe48fca7354e4f1f444a47d110eb71906f16a81d06161a34bc38ddc322ed0ca426855e7368c8a1265c69325dd7e9de5791a0311fe3d827088ff9c255a3421cb97c7f88fb93cc073d4f6e1b9c856173348abdfa1624a648629c652064f3091a898e824a8e90040869833872a7bade077b284d44a533e9ba49c036950cccef230c128438adf2e9dc02255b4d76b28a1a4d7b0034428ff39fd7baa624708765cc423de3c30bb4895d7f00a350cff74b27cd5de430dcbc76dd4c3476fc4951773abf456d8216a0c4d6c3a34ad8d10837b6a9e357cd3dbf21654f6f2c484d53700708b35ca65c36ac7dfec2b4c320cf62c175a9a9f1669867d8e4e6d06d09e03ec71837b8a0fa39a7db9cd9685ae50e84a4f0080813e08f2781dca1141fbd0a86461da2d349a2a82a4abc77f3088c7a1b5c01c0111c1104eaf7ca7174f7e7163849a0fb7d65feb7dd40222fa10609ee22459c47e7ddb06c2b929194da5d1a9657df3491ea56a68e77d67ca94fabeb19548e60142c14093badbd07b2926f62885b7b9f910fa6ee3539c8eb3cc7786303708d812ab9818ba786ba501a05968e288f0558778e4f76e5ff75ddea9a9f6f2a9064943f6835ff568475b21887aec1e3d01675d5c0409c677f79f0634c527a134d1e6a481e0355afc503587dda6abb79617323532e8a1f06701e16fbae89db41c30c8c533111e4f80a697f14e3fa9ef430fff47b3592561ce9afe5621342bdfec9f4783423b8202eab57ae7bbd24b642bddbe3a062be3e5215b98178f400e33faccbb879a36e311ba24181318b8136c8eb06942e86d957cfc8fe95b777f7892cc624bc1d777320e53dc03a82a46232ca21201e340da984869d32a8d8a3669d86d0fd99981753ef90f4e9f7a8b0eb1dbd0e3c7d06bd03c975b3f07f162379df07b49dfbc039125b96c7fd4304f4b9c43580825068e32755021b726cd2e90cc2f30c9e48783430efb7a4084555842ce84e4f53734ea26f888d69ab3dc9be016fb508d83663f3ee990c34b904efa4cc9b88544ad77d4016080bf9b0b6b73ab5b48b5ecc234c3c30e7544847c139e8798975a50bc4ddbb7c03a999157ad6c0641accfb85238e4678e7a37e3dcb91d6013e4923ecd5dc997e9a4cb547741857f36d6d06e99367f8f27eced6067303ab4ef3581d0ccac8d78ffcaf5278cfc3797f51585a35ce65118939b6b2e1dc41f05cead3b66263abbc2ab909bf8b5ba13818a08b8b09d9bb42c27070e11700046d801afab7e642dc0aeb1e49600bbb8c47a0605020f3b4e1f0324c0c2e92f71fc98dc51b9ce7cf525eaa1b701f34d9cca7b8a436dc6b2ddfb992f785514750aedeb8a7aeb9360690c4a9bbe06945893b0a9bb2d3ac847df36cd8c946cd4db0b146ea0bc78479aa8cf66f36ea19e3fd2d1309fd5ed699d936e1e784e2e8eb9222d26089dd64d22f4a962b910b865f0ad725d29ba2fe93b6a6f4af07f4c3f462b4782fe8481837364de32ce029a7073c9bb104032fa64a19bd00480d58dd5e94f936e9fd0c000d1bc7477dc3aaaff7c6c86e6d5af4caabcf77a72f8d9ba96012e281e2621383a684ab0f34f957833c92c204fb9b171f33a91ed0ff4150b7fb339a49a3decd0a4abb5c7b35cbb5a2ecc536f2920e446e0fe531416eeb89efd6c43d4ccaefd6ee125103b8fc4f000443125c211d63bd8e40407738ff35807b859e1a392ce676bb906f8d25066dbc62a2e55e440085ab39c0360c777677f7b21e26f53535a6709d84961a96ca9b105451568117a399ef2072fc786f712bd3fb0494faa08989a6c63aee47fc4fec3d441c1d84770604ddb3eff2fd33db04b2783ee54428388431241a20b5ec3d5badd40a60a6d360c9d97e91737a1c828ed8da1e638ddfcc32923f16b8a61a956788e6890219349ad945005c03550f58a5359a2ba9d7eac7c3c96f00dc20ad445b25f8384ad3bc3a7ae422c4ffbb890586a8dddb885e97acf165d991e49500caf4f9d44760ca5b24c1b8bf3c9aac12edd93cb3defd9724dbb4dcad8536f4ae27a4e878688f712eeca27c3ecbb77c0536748e26d1524b7be49f42da08467a3dd7b7312773151b386ca8e0fae6463eb57471846a0c851608fa071bd787ee5425338f4d07669118f0eec2863d2a1314e5577da826c1157665f538a7e3c62a09a09abf7c4975e28ffffe5a6e1e85378a753cba70ebd0a9eab96d4aa296f2ff5a3559d55046219b7e0688a191c5161c35d99f266b7e45d8b815e5c6dfcc1f73dc30dfb3ea736f859e25fd68b8df05cec869c3db36862b26f096d0a5cfbf574da472ca648a907eaff3e3f423531a00e8ddd1ea54216c8317e47285ede89e9507efff451e0647a33a2d8eed3cf1444d135e82d9d9a351d340f1752d47ba89a2c2acea14896efc666a4f88bd15921826849f9c9aed8e5d71fa0685f3399ebfd9ebf6622029232d62a493bd2bf1eefbc137df32c7eb07ddad0c61453dc91b140342a402baee2d3621eddc6ef342cf2e9c1e4477970e824da2f2f20a093c9f524ecbda24209e1090174281c083dd5eacc0a0e004554d58b6ed3faad361d3d74bda9a3a04c79ec4f33db666bc175ff0411b72c164c1beafcb1daded8e7caf8cfde33cc50498088d15389300dd7082bac7edb807fd8f47724c73d0912f2a2708fd4835b45b54842144b0d03c339d57eb4cd2e984dcc0f69d76813e1c2660ca188048cf76a73e90b7bd7404129ec6f3c96ab01d98edb71a810e23900224a3e6ea5465bdd6bd421d4137c64aece489887ef36719ef85dd3cc6822c535ac45ddebba6eb7d9d3a6613fcb6dcc62648f79031f78ffd1974021225bbc3662276148255adb742f1c9c1453093c98ca8e2489ac47716464b34d01a38e861ba92f6d6f25ed35d6b6092eab23df8d05c5beb0e4df26ff9b11bac8e1fd8b0b64589a937c1fc4c0ad323fae4639ddb0bb6693a2353a83edbe4017d9012a2d77d7d797b20b7f487231cfcecdc68701f3f936e92acb85b56c334eed074cd72e152a27a82d1700a73ce54fcea8e381986ee4274348b8587028f4bac67865918629cc21161c71bdc4d1f6819f56b29f8d54f863ae583e5d06dc083b9aeddfb46e312f70a6a27f57f5341960cc14f730d074203654f9acf69096e155def1b193686ff9b57ffd604382d8f76d21d379aaf7c073812931fa79c6c3bee12fda9d2ee52e49646c80f48f08a79d07479a7f018bbe0af97f84e0b04b73be44af5520bd8a7e16354a88f27629ca1e2b74292679ce9d587e869139d8c84f8d5b91f68bca518b20bc9c299fc309822b6055557f56dad97c26f2f590af051feda5d8a59147f943ac6a83cad705da6c8b0fd1530efe511125753202fac0054cf10f8164e684e49129576d8a8a8668f3a4576d0c3a1278a51ffa9e5a3eaaa32ed5532f4f969e86178e36839bc25b7cc86c0d2adb066a788b5443542bd35b3e069945d62c012baec5c47010f19daef0489b4f16a05eddd7dede7b15aa18bf21d60c98ae42fef6eb63f5668fc7af3cfea0a7d575735e6c5f3b055a0807de35ad0a91e13d66bb38891566449f34114b08536ae4e93c18e1327d1a9e47fc6bfa2b3d8ccbe2ac079fbe23f9fb2d63839588da46daea71c00162b9c81574a6602bd62a2fd64050923cde643e321e164bb966d7433698fa169f5b1bff7a965ad3834f5d8380d4f620a0ffdc29db059e2b1ff19af6faca7d49bf1b1bfff67814a37f7ba5bee6dc054e54481bbe1b5261020c94967696030be3b3022778403c2959c712fd10828fc097bd33b0739614ae0d7dfda6b54e074da259667e865cf64e13f4a6fd807f280e11b4f40fbe893199472cef1de40213c374c81d535801521f4417c1e3bd693afb6fe5501fbaa3128b38b87b4da1269bc203acc584f2b77d834a85f0cb94dbe463eb71f7fb449a0efeeaf61a949df3737bbd8c732eb6d883013bc03459cd72b0047e50b5f84122124dac0d70d7fe1f19641350496457591c7d012845c0da1c2506d9c2dcf81109eabe7645340d9090d61a16486a95c0b066d634ebe6ce57145c2c2b0a984404da0281332abb8bd360062eacd813a5e1e39e50b697e323a54482b7d2f12642742ea6f4071027465e3a492420e8ba2652f7909db757fefccd0b355f41fae2de56023ffc4c07c11ff0505543e2133f6c6ba087ebf0a858c23ab16ae4f6f62e49a51ee411d7f656a26ef6413824260703a07fb5d03f6fa0a2328f2a6d0f4c0124ec876cea8009471c8afba08f03d30b58625ca86233ab85a446c9d036746cedd4b6fbcc6ca1192005dacae62ad307212d5f2b03f2f00a71e91d429373ae91636970ac244380340a9449e2f19c75cbfa754e2c12b72d5c138420ceb230d89d9251bd9695720b825e5b6fd1d88e446a84371ee69c7428e285d5cd6e4751e0758063d3ddd7bcbecf84b0ed703515f7d534117584a449d9d4c91ac33d316f668c49516ecb0dae6bdc8dceccbbed1ef923ade53ca26efa8909681f94c8f5bbe76879b47152be92ff63fc72a74dfe4342ed5261605f91b236e8f8d2d5e7ba1e82060d945e32c4758bcdf5285f51478b6663c4f1a24ba2b27d6f825a85e158922268469fa014feb8d2f5cc4331a13738232145d86edf797ffdb8b556d3687812389d6fed91862d468ca7ae462fbd11afc479c8d72bb92483ab62aed9dd84e26f7ded702fb37e3f80ccf3d35e648ffa7de3f95dd6d74733f1e092d3d7f80450a41120510be1692221d3c33cf176854f1a8bf603d9198d9561b6452890ff868bdeee198ceb092331e1a03f4820bffb4adb0983f3c9b8231af41cd3f2833a76fd6123bf2a263fd7474edf8f911ebe7073c58b4208f7f32988f13edcc97a89a13b94928848fa130cf46e24e47505f8820f18414b914e06c8612331129a527301f93a351a464af59b536b581d3d098abb698247af854d33725ed621d2407570287edef5cc6bd668cd51a25684d70e0e46692e5cbc24a1c46d60184c75846a977b1efa71702806b3f44c19d9344fae1778bc5cd52cdde51b487bad840f0c1cfe6a40b3f8e446d36ebcb5b1e3c456ecf425ccab66bf11edcfbca5c93427f1f52ae75fbbe5a0e2d8ee6ffa591f41dc60c785c48ccbcb266b6610ade800650e91a8895b7ea62348120fbf719c7cb5b03d5892c386505dbc1ac8d49a97ea472371eed97b37e7b1e339c7f22f769d4d350dd820e5eff062f71d9448f75c221b6bedf60eb551131f7f3b12e875a617807b1d196e5756bafde0c36d08de0f0997fcce26ec049828d1c8d9f665b0c4f2432d920633c4efc713305c861b88cd879f41e9f08665401cfa6ef77970acd73dc99fcca89801b02f3bc7e6cd8ac15f080bac9a1b8a8136223903770f44127fd35497755cb39d64cd13756bafa760d6936fb489a72e8e96f50dfb8fc5958584b069904b4800331f4e477509ef8687d50fe9f847c6051a2b924510d0c96c03c38b7f531bd49bac7402bfbc035dc2ae13208d7667868ba589f31ffe6b48da25e1ec55f6fb0a5942ed1d5460f178520e4259733ad95069cb0d8ea30397e8bcf0aeb3a92c673a2a8e3d69c2893bafc65fea8af80c855fc9b2ba626befeb08b93d38f313b6943a4c3d4df75882437993f65bdc165f94dbc8dc0638350038dfd4f8942d0af26aba315adf2923cc3862234a7f42c5826a1efcc54403f65e915dba1ceb90b202dd19ad209786bc5229b15bb09bc4e951027c58984af4ebb8f9f05df014b074bd9921fa5ef463b113d2d2661a63f5b1eeb61a049b1e0e8683c4f5b0f4f5fd6e7d912843522de28ba969a4309fd9bfe302acaa083db62a694728cf5c0f3cf5c746907b41c0823b86a4d695d4e008db3ba8e9ed7a006e7091e6eaf6df8897305f655ec1782abc186fd5433ef36449710198f45861fa9fa667ca6e0e8ad81fd547f291ac56c78006dd661a4bc540a7e726aeee9b42641cb8378b517c714b1a1b9e5c7d1b358a5f2137657d50685002c91070ae64e1c9bebaa05a832d15f37e3083f832baae214e2c58e82adedc0fc41ca4c6e3e77c43f8ce7c5765f16f2e5fcf35397d748d1358db211d687dd463be4d0eeb10ee7947d06e25cc6b3d69970cf09a19b2c7428f3719b25b86c4c3757ccf1f5d87fda5328495f84d4ae42ccbc7b11f08b75fa1985d4ea26d11ca362c9ec309a2dbe025fed5bc019de1bf88a865f3ec97b23743adb74222bb1554912297cdc98befd12873db065e4833c8cbdb1e54c6ab23c749bf57f8b71d9a51a284efe42725bfefae50b284eb0caf68e92c938114768c9918a27fc92628817c9ba39bbfd054301391d089327fe79aac5c4384516485bc5e452b9ba4065b89cb698e58651e647b76874f8bfd1b6f5190052a5724fa2063c7643f60b974cfe89fd395d399878a6c3678c15e82866fe73aa0955079c4a5a2390ad70a2b81f43bbdebe1443b3ba317a9dea6126f3c2d5fbaa57cb85ee3057465415d81ff956fdd686b91b496205cd70e4d53cbdc7a78fe77452b45f136ae69218e6e1f39c00de3768bb60cc102114afd7b15634a0fc810e116894b8a76a30f20aa5b6984a54e53b37fdeaf0569d4799bc4a898d1d78b89ecdf5515b22859d97b5699151377ba9b5f556649589ed69b52eb23c6c9c848ba43b8542f1d842883a77aed98f669f34ab41bba83a52946127132f1f6e2647a7eda248b47b8e415274a6ba16969397544e3dadfdfbb644f6b4448bebb8fc74f235904ff67276abda7b1943dc31c99cf881edf4f85b8e878217ee71ea49a8b0a3229dd71a87322ef65308f3a5726d5ce98fd351047a33771df0754c0e08176b28c4c29f5ebfe1ba77b956ba024277a88db3f58f4f7a5c00edfc6359250fb6effd45c5e3c85c13f8d80e4677f7f71431669aab8b29cbd80b6dfa6f92bcb1fab9238e93b0041a30e3043278b90db9879f1fa9ac9a3cdc909aa41d14e8913c74928f827e683588577bb2afa5405db587b265e145de7129a497263683b5f66ac77de741249392336679b4ff6d34924a5c950a0825c0e3118405058ea9ba8fa9938f4845214f415bd52c81661c079ba37f255b5aec44b4d1b801e070d875e790f398092bb0129430ecef82689194ed3b3d206f233a876dd4845d0106c5d0ff1dca08f65275ee7078d5bd95b12763fa101cf8ba5dc9a0983876ffc5843ee8425dc6dfb6c7439f85251594dbd1b0033778ddffce987b5e056084ffc70dcebdfebe53dfecd8370eac5eaccde34f5182a13a3f575e212138c39db217f455200932602521f55cb37729263b2457f7388ed96c4e09d172a0b29a05ac9fe1ce6e35e0cba21227b1a4be8e195282c67a579831ecbccbf144e0052a2e7467e49682da9cfe18f5ea3cc347377271f8be1f3cb993fbc86945cff01a4a96b9270f7917b8c74245f2a249d3c6c45bd6595c300db702f02c741a6b1403c892027205bb68a983aa97246889c5faeef86f10cef7080e5d97b1281d849a2cad845a753c885cc38d87fa8f54c8246056a9446b00598daab1ef7c380692890213e2421b6dc575c23feb60864504ce8bb5da48f4b98afac8e27eb2cd13bdbd1b5d07df11d8c1b800729aebbb0df44f12efa598216ecf44665c9fdfb71a9ed4e9940a452526291e8253d7ea5328a5e73eaecf991053a89026abbcf7ba0153b8ca112af0ac2a62a3755d2b7ef86512b0123b1e4914199a26e1d95bec244b605dc391bf1580aabcccff02dd15e286e929c60cbf068314697647cfbea319a48600106b478c1a9b532d4c709259f21bb4443e285a82f1b1874eaefae1fba880ebfd1e2863a5d1c62180939108109c2f7d4b2c89433513e4438b985fc53c3af7d3896e09b669bc87324c51494ff45384f78504286d9c7a8f247af20532a9dc5daf6428dbb69cf8c75f424b9466387a7d48f9f0ef510ad45e21ebd059603e0487378af1895b36443e44c132ce9ff74ac7764c2d5889d063e2e6e770f6560c643df497da986a46720138e6dfbd8794205dce7175f855e8068ecb70c3c909e22d84fce915a9b256d39732db1fd251507eb02f3110341c084b29007f583cf30ab1b21c1e1152adefb15c66819a7cd847c1c2ae2295abbff0a7ecf07ef4f57ef705c425c81799985255e56a52c2c0fc8e4fec23f10d4302642c9a6f498c68f7b3ead26ec4e816762086450dc13f10014d1a04ccecc59cc7f4d4819fc4fa95ab77f87e5b46169e67e93e3654bd9127fc85d07c15acb833dff9807be9ebe9683d161bc68edb463dba42d6badd1fab07163aceff0cdb893d49e337353ddcb3fb1bdd61afa7bc7fae503c8d7a7843730c109f76f8b531f472d21c387e47d52d2b57cc65bbfe765ed5f03e3a00a654e993f005e066b7fdbe9d7a1d82b5b03eac461378c0846c6dbdd0e3b2a967ed52c6b1ce8af912e778688f419227043cbae89dbf899f58eba99cdd01e90f6481691da3fd4b2a6dde9d60a24d6c1d64f1ade3ea04d88ea23423acdd24205b1905ff8622e1e378560cad141ffc061d194fcefed76a0e6b7f58ce5f0b70ff08a115ed7bcfecf8b875721e1d67ed8e84141642ed2b834cbff800e32b7855ff60d245cb4c2226d0211708a6bd862baf2dd58a84a333ab771b38368953e5c272d7988ff478ed2f208ad78fb9078b8d6906a38443818cd65b374d44f717cd57cf1574528ff89eea82ce1bdf675c049811a12dff5f7428e3574f0967effe8fab2bae085e1bd3d20e89ad88c612b62d3911b329bfee1c4e1f3dd4a7b53f8d5a1abac64f0f4ce762abff210ff5ea22e13971790fe90c50b3c7ab2c427c79c498ae0a1edbdfbaef08a89454d14a0b621d8572fda000a5608e295e72a11b0a8aaeebb4d636db85d2e153b98ff79cb3b7713db394e4e87644d0979f3f2b2cbe5dcd10cbd1d9bfe1a14286e852464b1c12adec87ea7fb339fb094fe269c0afb924838febfd9ab72d961cddeb5194f0326a7e23818d88ccb97b9a1d7727e0475da26126ae053e26ee415fb0c2a04daf94812750524a82f82988592b1fe14df53a5c24c7cce4c5d97dbf390951f617554daac54bc0735ea9e3e88bd1dac066a08c47c70217e5e8772bc4bf8f0322783d86a6872754bacd114b8988af100995214cf369cd618ff6234c0a8b8a7c4b38a1b4022a14937884436b6973e04bda2c13362d88cc28542f89cb3cfdfd9eeb7f739cd3c11421ec4846424d35295ebd0f577380205a544eb31f480e6750b9df7361d04d8bd312eb02550f391db51ff98fb7a848e351d0924c5e8bbc3e484420eff7fd8ecb2417b6503339f0de7d57237437f31ad3d6175c119f5ade5ccf7d4436a17de70881c22cb7b9a4b259d529dca9b5b221c16164b5119e7b0c24d5a8f3a62f5053c43753c9b8ee7c2bb7990ab3c8a5850b94124d62a3694e7e3a2249b207b38c6ca768393f1c8751e915369a7bae6e57c867f90020dc42521aeae48b536965c857c1be8b6c40e3489c6722c79a33e5c57718624559d9c2a2b10bce203c1c21cdf6d793e264ea939f7229d62d6e2bbe2a7dae2d88f3da9665dc3a6388dd4ac8f07c23c44f115ff049219c059753a2610be53727282550512133cff93c20e020562e9506b4575e89d2bd604ffeb5e49bc7a4d68bda7e4d9fa61def525c38d516bced72f124110da56f1d431b6010e6ae47603579f734d402c7fd9a531208da7badcfeadf2f4ab9432c775fa803202daa79f65625026559a372c62c35060619809133a41d637782d1a77ca9a4c5d260b606bf670bcd5040327e41bddc8f6b0f0be825b1ffe5c9fc36b8b698fa1856623518e0104ccb10e9fc2aecd510ef4b1523bf6592cbb36e058cd1406205e9cd9c870f22e376b749eb115ea8f4eea3962724c74414635edfd54c279f133861a7bf2bf223cb4b652c99c53cdde670a39f1bf0058720006017740f5e56763668d28203b4c5f4bf5b0a94d2780068aaff991e63858c786aa9bc3c6e1d6979142e78aaf8e5bd7c3373d4b349167933d6979ba14fdfb3720079c42afeab06df27a9b1617055141032f6a827323bc101720d09b4d124f651b174a1e66720dc2674d60e6112e3c88ce62cf2ef98053a04e4e2883739535edda4e040bd722e04341ab911cb1d25271dc3d2c9bd8ae07c2e953318a2255140deda03bd4553c425fabc54b5a669a3451865d9eda3e1aaf1b5149b9070fa765f2aaeab23ed7a29273a90fe02181d6924940c35a3c70f1053126a353ff9f089a54d2944719d4924430cbb98da93562c93e00e63e2e102fb1ebcea94744ac35cf9c0ae50d86964043a9bb104edccdd237b06c317f98e8e1c88b6c9cbdad384e8e17102e954010782f12cd9423de0aaaaae1a48838432654944edc35d75aaa831bd4f843061bdd49d3a5493243cede2a07c65be3ec572208cfe9ef00eac9715c29acb6a21d57f0f267e610dd66813781c6d923838f9dd3babae78c2d274d83f635bb7eb87f959a909aa1bcdda272653886ec3c09f7d9162fc101602f2a3548627f281a77321aad3ece0bfa07acf0cc7ba652d4141271f9771dfbb586365de23b9a642a2adf181e8bf3a65ee671ef711659d4f988c4d8209a4123460a9cd5ce11ba01b2717f9a9e5c00675a5331c8066ea8a6792bc18497907bd22e76c28b7352df95d0b826ca0f3642e44583461219ec5d666f7f65c1ae93db53c4dd2b43bc88be03c03ee4e54c6f6b1e4a3f30364c4053942a005ac02573b8b17723a3ea937999b9e3c5a78d19d7e34def53208137815c5fe60532cf195fa0e4bffa35e82b74df8c14e6ec187243729bb57c68d9c66b0d48db68bdb53df9029e52918125f6546b101130a8452941398df050f2066582d29f5d01a1800a8be0b458a9408457b01819c3f5602c82dbb8c21f24cd97c0d221f4d44ad514c93dd9ce6893edc757b8768ee90e7ef775d20473749da3ab487e27052fcc90e848549313ab52f961d319f61129509bd403b8ecce56958607f813c0039e8a3c45b1600159ed99655bcdefa3bd9cdbc176483629de6e3ff21019c32d6c18df776ab5ff437e1f94953762f5840c9544ccf44adb2b348087e46dee80d3551eb2f441cfeb6f3313bad310ef83abf7cddc63a9f43175e86aa31b4a03449c5ec58700bbb1dce1b169622dca28961ec26bd5919fda5347086e285c0c45d9a37767c15b28ca5060c18adf4b7ace0d44cafe123d26d666828b32e2af2cdf55547748da5ce208d9963c639f39367e5e6ab64e8afbbff20025e989c54bd186aa9ed663cb59aa625e6d879f38846eb2398c159f334f010048662a2ed94a6c01c796f5428adac1ff45f119c35a372685079f375aebe33f9b69a0490dc74cb67ab7863451f4e1b8e241f64393c8e6b5215960ba0f9c8b85cceff807d6a95075d8b1f834882779e2e24d5f3c9a5d03e30a5aafd9f086702f2097ba4025999c092e546c732e8e1db085246f3dfbab937c62ecb1a32443257d22c1a5ccc7ec86bc6dd1a1a57d97cf45efcf647a7f8af3d7be996db53b168ab49d18c9f3ba8b0b0606058e93d8609200bb856cc5de02775d65bb0fdf53b2a519261b27e52ccd3e499a6cd8d83bafd5e5a7bc729155be6a74d1dbdc278fcb22fcf3cc5816ae7005fd1d0cd96ac3ca9230ba0212f2d421e70c80810d4197c7202b38e1c9b2e53112b813d290f6439a0ffb0d7a6f4997790d07f7923aa0ce472aabfcb17ef20903001e94e0b1ec7dd48b6a7e89454589b41275cb581d042a2365254b5700a91546fef83a8b0372fbb5c2fab84d47d39d9c6accf2fb93bf747d56a986fbbb386c046308d588a9b4d25369ece73511566cff4d000e524bda5e30a6ac86fe9e70afe9aa31d81a5542aea991794ffa7a8a4d3bec67be7caf1808cb3291a2924f54f213d8cb2daa138472d833faca26df6a8e91d0c3f44b3717fa76ffa048ea82f2c92abf1d6b08a7e4f8dd26d6c2b44950897a41a11cde39aa55b59b3995026aaabad2bd55e7bd5f4f9f32deeb2fafe3fbad60ba242a35316cb07b813e4889c2530a781ccea1134bc08596c15e94499c5f59eb1f4a85b662efec4a8b0de97e3bc42ce196b440c70100838ad760866901b687051bb3de68ea580d58b5cb46de6b923229e932eb96e091ed42d15ccc410a76d0790c75ce94486a16cdc1a7a68831f47c82651fac1945dfcb66a08f7376017175fd661da1f0575e614428aea3d2d1db03f6672231960fe7ae7d5c36f97182eb6215c5d797768b96c1010cf7ff0c7c0a3727bad75e51f6e80baacf88b076e25c9abf2a851c553b5755194d870c4cb7ab62a645f7f1e051b5714d115e320c6fc2d84eec7b305efe1e570c380ecbf000745801f90926d4478f29eeba7700958418e1172341307ca13f6c129f9a1ba7a986052ea4a6c2348ff02012557f13b1f1cfce34f61dbea47fcbf01bb3fd3f5fc08cc6db804a27029b251ca23ffa991b2b3b823f2b1614b5dd271f160a5311ded64a7659bcbd808c341562764e61ab4f71fcdecb9a255dc1eea58597656308626cf1736b77742a2911df96a70236dca773fa8794352fc2f8515ccacd3abc1daadc5951c80c8f4a8c7c14758c959ad4b4b4795171019b7133487b602cc2fc3141dc6cab050044a20622219d499500133a5fd59470673ca93a1c13bec400a0375513690ffb6445f0c248303348e3cfebf3080b3752dd1d0d5f3367dfd3d21f9ff67eac93de39d8e93ffb4a809e5ee5d61d75ae99fde3bb72d54ce66232c217d8f1287ecbe239489b0297b05c1ed48bfe5d8fac35c867890eae2da43d7e9861584f028942294435e18c5fe241d69a879b77e0df0281c05511b38efbb78f6e83efc4f72cce6b1f4f962936d1a05769230d47168296eb16090f15d6219633db81a7f907e6b3281a668fdaa8edfa125118d0c8ddd435a7257e6fb618359bdc1d5eaef5f18842adb9df9d6d1cb47cdb3e86345c5c8f7afe24dfa8a450804d92972cf1bf9d4f658b0073bdafc27d8265eba1107c2539b67845c7dba01c9cce70d17331f89587244103bc1c5db7b835ee7b3bb85a7d318a91c6913c3c41884a2908bc3ea86350f73f6a093cc8f87d3abe91354947965305d677e3c888eb115e099f5ca6adf4d31e86ad5c1ac53a8dd70d1b7616de2ea5c4bc3d7cc8cbe6b24585a3283f68e7d25f9e29e47afe3ad04f39d95627b84024bcc71d59cd7b1b3bdb14f796acaf41dcfe9904479a4e4720afa75d002dc561444a65acae986e4212ff92326a9c2e9c057448e86ea1ca0cfd3f2fc4fddfb8e10d5fa3cce91f94619b1cb82c1b0bf3370f8ab88c4dd5b161bba2c9a43cbb868049b686108ed0fdd9511d40e3857abf92ceb34f581607769d5b204c4599215a60ebc8e02c02125321aa7e6e646671572f46f4d503ff7d5698e04e62eddae832af69b9044d68dce05aadce3de46f32d7f00a15b564bae557fd7dfef90bff242e3cf8dbff4af90aba5e2b51c59280c7bb8a756b89f6d767a19127231549ec7db80b6dcfecff74b995a49ac12e0c8f99f5581c5747c165d09d21ed0a81c2f57cdaf6fc7ce507e43fc727b37613a08fce1ae4a2446877bf948a7da327611945455d71e5982f2759042d324c712a3cdaaa90b5881d0f89d94c71be5abb9e9dfc840c7c9d7824417f0fd8ddee55638b77980c3002909ce33be9f52085d34d836c07c568807b1a4e7a5c8f0c318771c562bac2da614ce212071768875c1bca262366dbdc3f6c87f7c172a025840fd419d239e36950bcba386db8d0baa10574938072d44c2159539b49e857210047a4595091438d09b9bdcb84d4fda26d74fc519f77ddcdb4b7fa41f6ccb38a9fa9478edf9364e559eef5e3a39ce4b645118c759d314597b5181cd4366080d0fe149e550aa2db688705f5e78dd3341a619c4d57de3265f7b00ee086e5119cd31c519889571ca937185f14b343dcd1e51e389dab1027acfe95a89d00dc755973248a2d0daf88a1e31f8ce8de4227c5864ad2e4656f0124623a784d19c729c612e162c25cfb59f0c50a898cb38f5715ab2306fa1e0507098cd5460b592d7977515aa9961a52bf851ca116879b24896762275884f2633c32c6cf1a40789dc598a2b1ce05d6ccde6e5690cc445ad462d05aa11020c0afb3408cff32d332b9859f78206fdf5a73130dee7b7c2cdbdecc69dbc8b4ebc3e2f46c3e4246cbbc3de35200874fefc633707e3236dbe853e916ae4a6392bdf7396226121ceb9a7066e2a34a9bf2e02b2b0949fc248077970970ae1e1a5e5f8ce25aef84f6af6cea0497f25586acc03a697f9a98d0dfda8042b6b7d12b290b3bd71febe864eacf4ad45bbb748e4596337b123d5794fc300b61cc229c7659664afa13e37c579af4744bec1ced547ff2142f67a79ca1e404390fcad6d2dc11ecee0441b16a308ddf82813f80304a2ad531d7c420f9f5f547785e55d5e1cdf02eed507809061a72e21787168395e1e84f65450610db67650531281928964c0145e7ce879261b6c8765f89dffc34cf0ec9a9ce3e2c2ba99532d50cd094bb079c2665fa348a414ef1bff3a810615e423b74829e0c2a4e7acacc3c4e2c8bd9b314fa8dece5348a9cc63a0a59904b6b4bb00be0e3c22a51f677ac662f3534738db64329771ac760ccb15f18986f1305cb8aea24703f2bc103485402dfbd079c2373328395a1670d2625bebfa7f5091ff0764b6f9bf999b7587efd8f645475aafe83a7bf829bc0d6ff136461cfc0d7eb1d4ef3da2e5a4e06504a2f3c341f6572ff4418b5a4a209756e92f0ad11d605e9e232f066090e020e8a830a3f950804ef9f3bfb2c57ec663ddd023fe05718adf6804373fa558b0b2b1aa6739e3d01d95b76e408341ce07c14a480c8e1ba450b8e976514a9517289ac5e52882a308977d65b4cfd1eb4e8236579965a962945a5d3336102a2303d0eae5205f838b5dfc57ee9fe1eda7d080cc860b29a337be60b25242d6385ff1869fbd90de08f62e83da85434f2ed3015fa3bc3441f00cb46aeff66a1fe4d11c7f92f8387316fc4825e9b59e720bd07d7b0ac5d5c19785183e3a3171844047a663f0595f67b4e6a11db3e26579fc1e414269e49142bc40cf643c0c659b988147002cc7a00b65b4ae672e5e2df36205c32b507075f9a1455e66c6677f6229b90f5b3ead545a928e88bd68455d419f05af4dbf9275d4968473bfe5ea635803cd1ef0118fec459fa1bdacb1a6885b6e0bc5a4af48b2fa809d549eff48e96b5fc9ed1f2dfbf7cdd3cfc78abe68b7f746ee38f695bbdba7a4cde097c356209b607d5a9a26d0c0675e2ccbd05d578c3ac99820b3171f10a7cb3f9c95a29e28aeb4a704e271ee482fcbaad112a834cf4991a3ae2dfc7f04f94eaa6e8f93bdd15926a6fc98f7eff2b34b1e372c8dd51ed08a80395d05786383fc600ed39f7a76cc2e0e1fba4e964af0c7e48b49b5527cf8c7133e1539f41767078b36a26fef7d6d6773a2f36a67e78ccd2614d780870cd73f439859de21b756f0686cda5605c38c23fda2216c0b3d2379b750097445755c23755bd8285a9c17670b419daa39374b42822528651e17b2844d0fb0a7dd11a4552b8586582ceb80cf45ba6fc939d8d636879b9f0f0ce72d481d1c38b7ee6e88e9e1202d804ab9519f7f44f718cc3b9f1a99b90a0a28d0640ec5e5c8f1e6a5a92cd1e4d368b923345ec98dfbf71bfc75ed40b9023412def3ab8871f032b21c9f0f9ea7b35f19e97bfa1c25a3fa6367f4e45228151da22a76d68378fbdb632cba0b9f8f3b76cb9d89d1b5e8c820c805e410dfd7e87bf7da847390675bd6c2ef883d40683698aa45a0c9172a59ae52531981a540cc4417fc5bfa301f1864e814c0fc3330084efe7f5bdff29f1a9bb0a91896b65bbda76fddbad9acc9990701813a4884c5e7428880dc5ac80c9476864e4f28783de9fc4e12772ae7e8cb4bb94fa1166eeb4ddc7f8e78b629eafcb79d37bd0df12c55ba6aece0f0e83011f7a7110c5e8886b6c3a26747b6d4019f24d3d74eeb6617db185ef8f86552e09d392e86b4f703ec5ddebbbff4b2f02ce4650eb1fc774a2e8b9224f9617f1545c3f883ee4d4c8c2af1439ee3956508921753ef177d6e67fd3e1c81ec2bf39abd58af8e448ab36b47a4aee9794f99155ba46af915a8fd018cdcab06b8383e4a7786086d9ad970ba0ba301a95291133836f7d5a8c88257d3000ecdf0da0faba903ae1560978b96f0bca07f4448eaf82166446ef47942ebf068a5a4ed6e90b7f7f4d5992204b4d5f6eff42c86e07d3c98d61d7eec6d8187c38c4c6ead1b865226b3a824e63a134d7676aa877bdebfec02a8071ba821b0cfcbf9bd619de4c42b31120644db799bc9c152c436980acf697b74d82a4ecdddc044e8cf39fbc9e61511b22261df9544fb941d06b26814bc83cc9b045dffebbc1b760a62ff7363f31a544c66f141c2c4bd49df653915585e24f8c4f9e5f93325a3a3f59785e479cfd8a9a9bda894b112d1ba6c5cb58973cd605705bd9b2d1bd63dc44589d9de49a007144852cd2329baf77481ad30ac221e2038ba31bb06f4b2889a4c707a1b5f6d9279a36fca0c4d415c50b583b652b9f0fbcd56c38ee9165e46bd4726006f12ab041fae50c19f4a823cc8ee898ff76999267ba4524fe45988d30d0f14102a994e1a7a87e6b36749cacc5ee81c809321df9da3a7215fa8da813d4ec976688fa728ae46b0c79c883929a8b16601834423bac6ed2c6d5836e907f62d2e89e3157aa9e3e27c40c9d81b25f0653440376c558b41c49f80934e01678a6ed96e4592248cabf254661a2e1782819660810e0595798967e4f7f93bdf9fd001a81661819aeb7d56912e5720125641a19035f587cfa656b31a18327889c5fe865045e21262f995369f7f29fe64c39f75a6789399940f68cfb29b45d0090940bd7beff7e49c7c740c89ad0a1a72acdc66a8b6d610bdcf2cbfaaf56524b6df228bab5fb6e6788162b254d7a95f04bf170668d5c66b2527993c145ee1ff21593e5d02bc7d8cdfb56be616c945a6eae992c1ba32d8a0ac63fa7c32c1ed16f0ad4fd622dc0644bdbd0180883f1bc7ad4b4fa51fdbb8791d6b0b0bc6bb94381f364ce22c60e7194d934454e316349c5b0abbe365c273d1d530f8961b9e9c2f03a6c528610fdeda61cd53095c5e46848334c9e274f5770db6d0838768e169cd4edea9a4b962794d82d4e5c11a60073af574c68ea6b02e0d98385922e313beb67006b2acf410b115f56558f399ba5465c4aaa5e16e8a2c56521b66dc015b59e9cedb3a83594f7ae1db98455a4178b11a052353c11356503b3aa42893db90cc525c47412f2e81666a3b57430f367aca494f95a4acef0490f262fd7599301f4683a06463532d8bd3e38024678065089edbed9e2c8f26279db12d795f318a3ebd0ee4995b2d4672301f2ef6a425e409b72dd604d53e286af1948c873b6c36bbcd071082bc55e9e8da302ad2cf3e9751cb01c6ac38a2834d1f6d5e48d3c385589135d6caed97167e4eb24d6a74842c34e9f0f1b9016a16943338ecb52b4f707c49019bb9c61829fd2e714e6c49fb5c5be4207ee8eaa14ceb6156f61d74530e28c6b60518b61d4ce9575aece4340cfef1cf8edc4e8e35cde23750cf01860e233e34ab9279227b09e86ec2bc91a71dca76bec5615106477e53fca2bd8674e26dd8ba441c8892c55aa21a4715eecc635ff70c0e7fa26e03c52076f2a354a1457c0c56f8b8c4ae408d949457addb57a8b13c1440f646d1a0086b46479dcc8e2198c2010047e700720e3d871b270b0a5b04481f95f385b163da5c72cb306143e81f3a4b0c9b8f7fe9e6ebb514e0467a4b55659deef3bdfaadcee6852cdf76dd411de318ad04f79dde92b28651f006d69a0eb835ae41316d9d42720aa5e628ed4fc3a204482aa7c4c9732dc7c659551839034251936ca2c6c11a46060a2e589a2a72780b7b3551a3b43992bb914939c6075950903c96f1410ba8f47aabea617d8f62277a6b689e9b8bec6a93c0f2ccace96f0b76b4d8e14bddae0c67430ca2441a3bb8683c31bb8f47fed02550c4d35ade8114186360492cc29a2e190635eed38c8c11bf0dacaed456cbe2aaacdf624f8f2c94dc4474d1587a83dbb95262bbaf15112c6244a30916fc629821beec73b8e6d93b62a5af7e6fbad6a46750fb673ef6d229f31599d8cf23dae2cb520e2cf8b88db62443afa172e59071e428a957c8a483887cc1d092c025e73eeeb54ef213853908d836156b647c3695463696149238362da13b6dca662035708c117f5ea4cb3f98cc3de9cb782dd1c51447c4cad40c1cac22deba8e6c1c84264fe1dc108af5d96a3d568c7a62fcd7f4783072942567654d4597f12affc1c9d9ef0105dc18b4e968f7ea2c9eccf63e6b2a5d9efd7c5c98f42bf15fb441f22a7010f27455c497f276c031a343de05f803efd97b5719d173b8bd8be3e471eef622460c379a0636d1f4e84e22c9debb1a9d2fe9e15f253239fadaace1d417161b41df92d58bb09fe97017270bc6b09138d826b0da2268155e34a10fa990d8e1e883a275d0d4b681a4a5329dac3a2797507b4d1c0b6767f722f3bcd14b9a714586cb25b4dd50ce8f28d6c569f7da41d0405cde8f998fc3672412fb472cb160646f31d7cd71dc44f30d60a39b97367c12e3c15735825c16b458dba45beb902d60d7e3ead942f943d51652cc6d3869753b044d69ab700e83c1f55947314f17f6534266e79601c4fa1c2c71cbb11db00846ac68e1ea48100c3b90e480c117158ed38be5bb6d12b301ad6de3b1906c22f605b56b062c842662a3a9569a48af68599fa61275e74e25372c5ba3d71b430d4b7dac91537d0671305077cf4025d4fb29d709ba05b94e7ab4fc5264116e690db98224c005c406b245a38b01aeb0f1a34fd928c4546256744d7d83d2af0ea33cfeeae8f019da61c3f2624c3af58b84153348bd6590865321581a579735c2c95fbcb34e110a424e6f4d6c3ddc9ff1c7c81bf301848fc5125325987273aa469e1e8ac5f38fe8dabb49dfd898ea444a17d3dbd28b288a1e603ed5e0d61927701d94a806604783abfed2ace4227703c50a571977d76d9421704d55ac2a19ee8ec83ddd068f5e0d233242de02b782c3a37f364972e4369df487147b9e1f472dcdc048ed2fdee2d4612d95e612202e67297b23a99492c12379de396590c82d3f18e4052a5de3e0b418e2b4036cc2204aac3fb4c92f0f47f62c396685c1aea4031b78bcba557a51936ad1e6ea7cc523e74befcba948281549ccc7f8fb305bf530bc5949420b37804ecc20405f7fbda71ec28858eb82e47cc5fb92d5af6809be67a072a3fd67f27590a0836121725e0c475691f5baad77a9d7bf81b7d0dfd61fdab2f8156a75cf1a7c4aeec14f5d6141cd029a24a71e81ede6c02a1a958eacd71013ed5776c50e990692e081ee448d956d60a5685c9f2da5daf05b5a5ecf98145fdf543f9ef4853681f596be16cf79f83c4f36f89721b4548e33d29112169cbbe95a3a9e214b49463d265150d2e66b3fa0519bd57e9187f6642a5c7bb66d52070e5a2a2caaeb176003c9757e21f6cb17f4e63bbe969b2d28d28d776b240b741755818b6595e6171e99bce6526f3a6a5c2742683ab501d7a9c5e171fa15f6d4598a2b1b508ee186446ec4a74702c612c293442af391f613428922a8beddf284f2a9a48bc468b06b5528b970b327bc99a4d2b82b586f4fa0fc698f98052749bb207582b13dcae846d4170e5db6e30fa422f81554953c21361c2a1bcba85c39d59a7f06c5166d81f4809f3a7e550f3716e283cd92cd51e82a9bf92b4ddc1b2ede9fa02b8bc16959276526ff724fe8d734ea5b7b1b41ac79697fca35f865bfa827319ecc418bb03b998777b370c2b40e813e4ac9fb58ebd0874e29b612f7aa6fd8b4ef527c0245029ecf3dede2db91bc8d2ee68396a641980550811bc506397469c1b5b27589edb59bc5177bf18098ce31c796b59b0bab76c6acd27a8edfa83ee806fa11140eb4f4dd0412fe7518606df6137f1c52ace8f67510d89ebf268f4ce81885d1f0ef3963cbe225f6364c6a097658f4c3961f9aa4de196e80b0396b1b3f2b90b2627ddda847eeaefcaba88fd1a974ddcb11a2c51b004b0bec08e3fe5670dec54dab30b858923dda90f2cabef79374b63015448ac69d2e22425e5190258aa298960a41fe45bdabef5a3053a66caa2bc03c2d42b64c22e70de76161d68099c9d5ab97d0ade014d5c9b501a124b9b15505de4c9c148c927a697d903326f92eef7fe9f0bc9a7f93c5f8d215c5d7f0343adfc299c39555b09bd198fb095717053bd404b81a01f6067ed3350c8d3f9c73472775fec04e651820da74fccbcac506d120e4e9f856a895a3285430d71ac16c052f1e33de27407d928df2bf442fa5ac1c8a72e41f336973a7427178bd71307a001ce7264274b436c672d1273fac9ff084c02ea9894333c70fa5284b68210948f3b40325def06e4cd28bef59cb200b442fd2829d7a0b4299dc84636c027cfcf57b85d75721675e1256cf6013219c7e96d92056e9bd6ba31022a8dca189ccd5091044c84a8c422d43ae23e607042027d3d39296cdc4f8ead776ece05e0e8241df844ef7ed8399d4b7ca4db22768d3dbbdb8e3397b5cf9f8bf24052c5b5c34dddee77090f003de592645c2d0f0fe1271588dfbf1bb083f0658f7894b6a31de9daae9558c57d624fd90176a183110a3603843dfa9008e3455bedad0b3a5b9099bd25b0af151beacfc89f087441e1804d133a8f18d583eb54c3c6241c8dacb75f121a267e90fe4ab89f3070dd63d5be443565832a685855f666d5df4bdedd882c86b7359d7fa793acc04a0132fd7a03876877b583f7830c9293fbdecaf3a2c604f0531270f9ba46e73d50fd79931ba6ec0d690d1e7fb1e80800e6a4863e527a64260ca23f3109186358b65c3ca0f60fba22c1926b560956938a65721e4a9aa21696b84e1f3bd6c7777df3aad1ec3ba93c4539d1cf2ee39a9d9dc3cac7dc5b43bf0b0edf2b07bafb5caeb735e54f3cd9aa5727755c449659d6585d52fe4543da2cfc746b9b4bd951b3821bff683ca165b43a8f81792b19188574e38691dd3bd9c5aa9461d008ac22c4f10ebbab2d55109659c0415c4ae2ec62a23e39148764caf4bc73db055d3e0618975c782274871daeaa817115c498cb254ae633196ecd758a5ce7c5240ca8a7d76a02089cbffe5f4f44f2918880857da7638067e26217c23f5862065f57b73f56e7b56c62b4988466bc0c17ce1ce16256a26d3a95c151985a84615143f2c3c372f69f36082a2dd1805a8f665ec5dafab6e4c4c861284f8ab830a4ff800561f4d6f40e9fa9063d05b13ef3ff283e4d30f84a062f4ef6aee26a402c80778300db3929df2a974526f0c7e91d930161feb3ca3cfe4a78ab94bedffba380cbdbb2f02f27ce43b259750b368e44a0419fbe224658b8853e3618a5fef83d23c720c8b8fb19ad2edbb3de634370f5bdf8f322325464b2ef43f5dfa1001ab2716a2cb65c689d3c4ec7ecb2c4ed86447338d43e831eb650d55c1ab6efc4ef5883a3053df2fb61827d98471cf7dd0def86884730dc43c21047d39d6e094cf385c8d14b4d98fca7642fff6d906ea05aa8e16597245f780dc6ea09d7c090762591ec1edf2f5efd5862c014852071bb412116ecad9ba1f614b519683a740f148b8a6ed324ab4c3fe1c4927dc898b68116f426b7d133bee620c90d3eb886a69d3093b1a9d2d7c72e62576b606c3be10f4625bda018d5bcff20cce04c021695777c48c9898952f49e4d3da4036eb3ded9c03fbadf12994953a1d2daeea826b1e6618da26b5e90685725d3245f8f5fa2ee6c2a34670863c6b305fd596e5e0c1d37e767cc154d5e1080022fe7088e366b09ded9a19e09d5bd9bada5ad1e039bb747da7098f06db8fd5851dc4d09dd54efcc3c019dfd6b2d87e5b08987ab2ef14383d1f977ca6227c06d23fc9cb8cd41114104b9a72b7d43f7f15c13adc3110d86dff9e66c4a6b99a54585729a9c9bb5cc4110494ec6bb3e472c3ea44467b5b32456530b19bbb468989708e05ee8a2d6cb12525a07a823d742f88b9a1c0e1ddded073d3b7e220cc5de9e0fe7afd3b597cbb6935d0dfb3b5b91395106f9f7664013d5168ecc93156d4d77f26bddd8f4265e534a6f256d2c2b5191d1e6f7258b9f5eb8621843113f4f735f9430205ae894aa76a285633eec6ad398ef683903843d135d54d5fb45ebbd8f32c581e0779a95c214e16bcbc06916a291b77f59ba0405083e1a29a645f8f225caf753e82cab04c9679f479cfbc418adb13d20b9b5a2079f542fb820688296a4e8ea8607516bd99caf6768d9fba8d8b1eac18293b37486dc71ae213ef69fc64d4e850313dc9d6342a2892764bbda0dbc3a33e46911c2d080e05610124cb6d5dafbb3feba2fd35c40147c8a3f2fc9f1a55ec999f15f39ebd3110aef99e54da1e6d92fd8850a0aae127be4b5b273e6ea281e0908c8aec6005f6bc2bb3f1f3c466e6eebbf0d20cf5ea9bb1cc09dc54ab4d1fc762721832718491571f0e183973daabd19a25248d9a3b824bef2cf1ab48a21547225c23e85db2ce5b6463d09dcf75902f640b127873358c0ffa75ac87b4fa771635dbb2812e330f1c45400d4baadcb709fd0ee3c717e5be9ab641dcd0fca28d7ca5c170e2cb0c21435ec228211535c53ee4149fef6561fe54e0057d30eb75c58de0a8e74a3ad642a42b49cd81b656d28aec9cde9df1cff755e92035a885d9359ed7ce40c172fbe65d743f436bd94ae4c9b207d31722d268aeba534546428a678dfa542c91e806a4baf45f90f1c57fe689514190ceaf993cc43a1f9d9eaec3c590be832dfabe95001abf80577e4304e7677a751f925d9af23150f57655230ae113b61c26adedd2cb1b8c6cce63e22f225d651b9efefc8893344f391304d285a6ef61a254faa96e4ffa929f2f08b8efdf5ebf0ad71f469696b5f65ce39256467e77256ed98dd3ac72df7fd4d6736553a296374f41375be3602451c9100a5eef6811eabfbc3123446ad39ff9c490de8c0580604ea023f924f95c83b16293422eefeed082cd8e3a4a009d24397f021370706742ce50bea2a18b6517e9b0d358927962d4473a3f3b1f03322420c75c2803e4b90233542911d22d967ed5f3966a94f818f9ee00f243260a98be4c83066517bb24923587f91da7dfa9eab1f7753ce08dc9ea20277b5e0abe9f84b06965b282ba9823c4d523a9cf2f0407274ec94d83e0d77846a365cfd1b33058eb6d4dcb2c6fd17027aa4e8f756c016ae6b7748cc6bd1af3cc80f9c3232f2f5b5ae6ae64de05c081eeef6d9a4cebc6dacf6c2757cb2185d95bcccb4d74749773919aa9ad42b7e6ab22833783927176bd13431ae3dd99b6f4ea82e207d0795115d2b7217148fb82b7d2f9c3a2aab2d3cbe71a5da0753eecaa438d3bd565e7c92c573ce35b4c86603f089103ccc99cac613989b8fe2ef487b7b8905e7e13a25154fd21fe5b60f73b61e3a5979f0447701304340cecab1a31a5ce30919e5740f30a603bc912dd2fb2078fbfce357f951b152f30ef4395adeffeac08e5e7af83760bcc4bcccbaa783c310ba6245dd7bccfce9a7c2be60a6d70e1ed09f01250aaa19fa65a561a184dcb0a167c2641f735f19c6736d6a7ca7149023e139daa9a403fe41f663a162aede10ace21db2d2c8db891a14d70600f5a65fb712a5fc142278adb527049d96d7b6953cf460d3e1d40fc21634a46daacb6a71928ec4182f77311286d083c883907052551af1f442d7a2143559df4c3f2fda5415e52bb0b3d5387b39ceb6418cf47c64add0a6fc33dc7c6de9ea2a3d246c113fd4ba3df5c7a5fc01ccd521e59756d7404645f402915466794f78b3cf66cfc46b99256b87ec741a53706d5d0477fe46ef2c97420a78b8a18decd2cad4daec088d5b9010ad9f313bfa207c1b7c06be9773f0fa2b8502594e26c55c77d53c825fb1de7790fbf47099eebd283d67c997ea996452ed3bf7f54cf754eccf2292d68e58e0f66d3af7223416cae3bd90ed5f2b81bc1afc5f972b9736110daf8fdde94f6f8fc67ac4d11c4bdc818446befc1c47db6e1cdb8d6a504c6f6e471276cc31be5fd617b7ad023c292df976a39b2fe082acc238d8779318351ab3d751e26a0f3ecbd12d5323b1eaa76c6f173ce0f8880367307ad88ce33eb1067e692fb9c4a133f13fc53239e5a5a94cd559a249572907ff823a4b65628dba7530db3290a270e54b7360bf1052816cc4a0663f6d4588a7412b3744aa11e4fcd36a8d0bf2c279e390d2798e702fd59b6aaf5e324ead3167f3bb7cd7f07283ff84bf5952505b384a66421f059ada8b743712a891c71378f0256d46ee8314eaeed2c6ef84ecc6f1c02c87d1be07c33a95dc75ca6e820b9258b2f66738e3ae88af357126b8f41cac68f4704d25c9c5a9dc18ff13a0978007e6dc6a6acc9a0a1bccef520b9379527bc098fe2321177f0ff2dfa78e614fc85fe87588007b905f07bf0066c5a804b90bb534781f332e7750411c5ac5a56991bc8dbb303b3f3aef348e771d7abaa549da047a9b7e9096b7d40460955787494a3016d9445bba613633cf5bc774f8139ed33e76ea474dded4dc004f12ae9b3b9e2148aa9bb416dfd9b8e29c622d3494355a3521e50f9146a6bfb5233a2b850d12e47fe2af1e69851dc7b6f8f9871878a8bcc41dea71bdbd7d22a5d64f297cca4d18429760a0432341a554486e0044d84275c3d777135565ca5da4383e17356fa8f5c9bb6c3a01208648084889d184b8c423308fd3438a9eaf8f2ee6c2dcff9e4d969a9c80f3ec450ef1e6d5e812b7ce36cc2d205466da5a0e4f1be931d793d25c59fbf32afd33cfd28e09601e33f6314ca9b33153ca803afa8c80f91b984ba4dd8b0a7a306ae2f674b7348be5cb154ce4f422983203b09384755a57bab376787fe45933409575a958045ede03e7f85312ada71c65e6b600c042345598a9b08d56b87040a0e97e80945b6f59da0565f332d0106536ddb3f4be14847e5e814e687eb1c3b09f1979aba0d953eec34a05b5a1914183b3aaabb855a054baac3aefcfc958f373a9bc9552a31aa50000d7d6b59789acc10bdd6e40fd330a4ed67e2e0bce2e96e7f4059747f39f4928d7bdb29db91af75508f458d8d621893d1926a1a84745ad57e74c4d77d72f31cea37ddf126eb1b875ebdeca4d677633980b56305fab41b867f01a884fb88334c9decc9a01373a1a3dbe88751d4b148b2df6107c5df02e51d43fc1cc2196e9105c5f6d1ffb12d42fb7c3bf419407ad97cd142ef4d8c9c233447a8ffea9b2b3b6d4fd932a57a646ccf3ab8b4c9bc746a8e34edc967443f30cee76b5e58f794d5cbc3a8991cb06059e6400f484834ec30332f8923f388be018dac843ff7f2edf7d01db2724d52fbba43354a7f586bd1d98e1ddc9c002daa92359a075a56b27db28d56f3ced428a677341d8f9d8331bbb7442524813214e7fb956507104b202438501a2bfca2fe1fa66ee8ba17328aa98fb1ed78cfed9f1213546d1c0b451ff1f271c8744971488a831eb5ed8aceee783cb9413a5c25a1df5c508d8c9857d6a665bbe2b99b4b8de82190d0585015e7fecd654149966889b8223bfc3a702c9da707df9979952242f6d6dc7606bf4cf453490254bcb038e361e8bef942bc0a0f325e7c143a380d661f9aca2dbfa108bd2e1ad2578418de481ffbc297db9bbf61d2438a87294e2b3ade7fe638bcb0f1e3a353d39c41a437e6fe228bd93154b56ccfdf24ee3e4d6f08ecc3c8b4f183f58d8c93a115b2226556896f428a7678ad44da6264fcdd131d2cd9d4b6e7f8e7a9b86529d550565ade3de51ba5b7540f6c8e1876e39058da48248d155c8e3e09107ac24ec6e9fc2d40b293ea500f887735b518977796927026e604a9122a5d016f8ce08d72cf4f63dc6366843a946939456b3e2a8b983130373c0e5edd341dd31744175b847c865ef01022a952d9303a9601af9678a0046de5ce4cbc58397cccdf2228c69f6b19023fced69c79e092418e2d11b316727f4ade02a893780874a80e288a0bff351e06cd54de081fa05840f41d301d6d1acc82ef9629c1392a73a68dcf395ce4cf30588923d63e4d86fb4e64a821dcc00d39163d19183c2a4bec0d6d858bf7c4aaf8f523aa6fef313b83d53932b99ffcf36a4605d0176f152624ca0d339413d0d158dd48db119dc309b79631bc4dc160ddb3c3c0755a32bcb85f407784106fff5720ed0ee4dbf5e125120263873ad2ef1290a6776d61f9f2453ac7f0f0b37aed3885be82da0d5b15a2fd08ce4d8c0bc61092f8e270639c4ee561d51a7bbc90b0fb72c61d689b6ceac428b35ab2ff8dd9e1aead391890a4a662761f765b033bf41ba5ae9ddd18bd4e667e1d5f7d171ae86269c84707d2538625ff4aae26ad83ccbc94efcf4cd53d68239c26cbafd9b7ccf9df14fcfb0645842192bd7190cf0979df03413dff28769003507c462f27fffd3c9f02ba88c56ca0aff60b7828f3730bf66b3a92613466b466856f6e2fdc4f0aac7401891eb2dfbc0c2a7298e3138a8b21da208fb1b509c711edf09c00fd0fa5c32a580a5fede435bc777e903e70149e55a31b0020c0e6dae8c62cd6c694c2a4db8087d5b16d70a49c2911c97c52269ee08310209c373df29641795e4fbc0e9cb8680ddcb400724b7fb941929c9750370842082ccdb623b49fccf3e6e8c62c500f618a36d55f53487e17ff5b68fbe940e7e3ae1350d2b69e8488c7064a605a120e3cde1bfa97d3f01e6f75a002f6a9f2e43e0271f1deede02e33495094c5b4ea1cc91292b62329dc05e274615be264b7920d6b539c72db87ae17527dccd1c1b08799b8a2ed5448728b28a338f32a18dc252ebde9f35e8807ceea63ada9201039c2219be7032383c346bda44a048fbb8594933cf314f9c03c2aac147c07c0d608b15de1f558322215a3f81e5c451a05902d45c841dc2a65b1c65ad5d5ed1bab81baa7dd770ac28fad459f4eef125fa9cf52bbb01964c864b5a440ff816ff74b370fff763882cf1a5f457cd83e5889fcea69d0b6d96698c6b04de83a3662f4dbd3e90cbf9f65b2d9f258120b272718b576d43dfa81936d31ab9e7242975188448b8bd68a7ffce62ad5512a4af061f5de13f4f8e34549f31e2692164b8834ddc76f30534f12a2ee3775e781043c49a2b3a4e854183d24ea6917b08d6370350f23d7199db9b1f1b252c099faca3ddfce6322f0923a8cbbc68e01739a235b2faf41092cb1d39d8cf9482ced200e04f4bf8bc1c69436be01b9fc76da948d71cf55bf0a64d3c22c876fbaa27095c972872814bc0e557ce2e90da65e0adb4750cc32ce4063d23a08ffa55c24e41929497fbb633ea612326ff8450eb252a5dd0d2f2a66960abef754e8fa95b98a157bad903aa082914b585f3c8cdceeebebb1493f73f48979dc87802c3a8e8f54b68b49cca4e760639ff5abeed37d15b99ba69323eb65b3619de46b28015706cd99aa795dbc59164e83398966522b651f41c2b6194415471ff829a7d99ecf1f2af503a4b1006f52f34e0fd28cf0e5da1e9017f68dc12ad43cc3de0e57034a8654070d263abdcfed1251e3675d3b8a694953c1cc68ce4569e403a819d61f8f0033d41f2cce48471c41b20fd41903b19fd32927153a929ae3c9db1681e2df865a055fb12ab05ae9e60ff375353b0cc7d18c71f16278ce77686dc532f08bdc846fabc639abf28bd579a00863310735f152041b8151678733103c5021405b69feaa07181184fca0a840c4e80e92f7e01c97e63dd4767c5febb74c074002cda1474e25ca9041499a6ebd42eb57d470038bd979d42ff48307bd501aaa569258fcbcb0ac00867037cf74d623f9734ab5b636ebd6f3a7be36e0ad5551e8b85d81e61b204749137817ec7126d471fcf4ce76b015b70cd0c017ce840c3ff7a731f9fad314ccb4609d6787f89175ed54d52b2c75ce7ad4187275bb60bd5374cd53495498d06b4e494aaec0083818e67917fc5b3245e1ab665400ced75766ac179fd64c6a5c7c45af61e85e02ada6fb8f1827bb9aa285ed790f06ea07b9f41c173f18ca3c18704fe4fe5b88f75dd2bf843d973408fdf29156759defe14fd4c854d506907c741d14f45e4eb510de12111dd9a34231f2d9f6dc440041b90ff3c828eb635674cdd3fda73c0d2bb30708eaf0797167a0e768aaf02cbc1c32626d0ff723f545fd6adf5347ccd33ee91765916c75371da9ae75b56550757576f2a47b92fc49ff50ed53fef4d0a73ccb71f3bcb4f87bbffc56f1dd8aca381d101469692e0cc51e863c90e7cb896b67150eb47ef119eeab8c88e9a318e12b9ff80dbe80cd61b44919ba92c06aef2a70a36bbd05220bce8b93ad5e777ab5a6bf92d52c7a4df8fedd6b59809a9ac1204d7e1e592b99e5bb90acbd9b6925f46401278b38a18e06532667bf3fa7e1d03236ab009dabef87e8c6a1a95818b79f61b2be0449dbfa1e71d18f1b58213d96f47674ee5a7443630a4ae0b1bda929596b077978b526ded296fff243af9bf9d4ceb8a4822eadd8d7de73b0cae6a48f26b122948a85a3241cca8838d629b40d80bfb6ae37f32507c47c875fe502d2b8e542d6d14887439f933434f2688a06cd172eeee3ae34ef6e08bea8a3b093d2e22a9cacdca9d531b35a498b0cc781fba3779bd0e8a6ed12d1cc4bbe6bf0f50ff0ec9c121c1047d5b16d01b329c1d24994f02e053abee185a247634a97cfed36867772827908bee3a82430a030d25c84d0c78c7e1091dff19232297b9c9739d2c4079da2df298f03751f28e8ccf8428b6b05d81d7bf9756f2ef0c88f0b20f74b66e6fc885143ff0095268db58e495b6c479ace6421f1c0602c313572fc131857ecf1be55f96aa060095c29a72715989de5e7e6a7b365f380faa7e5ab04e48f30171f3c3d51093f864e24b94441e5a5905262cfc1ac79fff8f7775fb40a013b91f8d7965880ed3e6c8117aa8fbceea03dea0620303125fb2e43f5ea2c6ac5ce4a9756e9cf6cf2bc0e7db7a3f6855f9494c8582fd0110f32ca026d98619e99559a852bcdc373730674d95b2c10a83f714accede9af92754fcbf987265d7ba924d19313228dd5f3fffd1a219efc2dabc6e558cc65bcc33fa49249dee8e31f5451ce899af05d50bac5829523cd25784c343d7c1e3ccb4703861ac86436ffd76fea34f903b76c1a741ae8a5c04a35739fb9bae8d9505c754e429e9793346df1a62322794fde0a8a4ff93fab526dfa77842e10d045b26faf3deae9936328b821af361181ddcf799d84df49519615fa663c230fc3f65b94bb8e306138eb2fe3ff1817765b964ad19685e54ce739bc043842259c9aace5d56e88902efe5d5a5e16def3dd33b10c8f9d4d55e5397c24124f51d85c98bbfe9709a27664397d40b56eb09013f99348695586c7fec7b1ce65071eb57c2e4c7075a8e247bf2a7d2ae392a457d1bcafffc4a3cdaac8f29c7f22a44f7c079018154fb390498dab7377c35c01bfe11ab58aa7186d1576dda618f925f7d5f14dfacd9e76ca329ff536b38e8deca953a272bbe5b1a954fb1adc23ac5731c035a3184520624836d6c1a7d5306bb9d35a688e66155acf910f9d079624429f52369c0011c92d39cd73a55acbb39a1fcc0a47e96ec6d29bba0df543ad9ae71371cb72e98f1392682791ef3e2305804479d04bd36d307960796c40be82cd1fc683f82d384c6cc15403279d4e5ab2b0a1c80f171b1b4f11fdb6daef56cca9d430e0c4314a6e78f7ee37d9b20544e3808d007ed412888cd212d58901c2acf7962d9ff00703d1a545551ec8aaeeea12b65738883b25ece7dd211480b2a9dc7efa1f2194dee31ccaf8665af5f24a5e3f57355f17f04213e5ab58e898db6b5acf06b4a16f8d94b2289c0dcfb7368c14b6322a78dca3486d9c5e50c10f9734bdf9251901a041ff73f5ad8559076071cc9a93660b7afd88fcc194b3723e7a05a91c38987eb764b6b796defb2f50ccaaf4173d997b32c21a170f142d6355c8764de782f73e217ff0dc52611505f68976ff0295fec2c6ef08a22a66c1c09a8ffe9424bce2f9df2d5693f89e7fd2d5832dc13bd43f66703bc786e557429f47f523ff7967b794176c132ac59ab443eff4a061f25d1896cec9b7256bda9f100c1ded869ebcd339e485e4a8e194dbb69b15a94888e5d2314cb8f7c05fce790b72de55f1f1d5b20e35ac4278440b4462a3060b290b3ba96b31cfaae641ee5fac2150e4450a2cc847e91d4f460df11803ec4cb20ec75660585ad700d805a1d61fa04c0e844efcbe0683db63a715bdf7524e6a5c9a79faf5613a5f4425869b96c1fde3e80a86f84d9e6f6bc068c71f981dfe6866841074847afa7ad2f588a98db765b57dd410c00919c369852d97107be8b74dcd427f4501fd5660feeee02118b5d047f2cc527a57b971ebfe9f8349d8f10b81bb1eb23738d7db8f1566534b468f7dd9bb780e307e7a02a7eb355b7474258de9ea0e7eb510357d90b53052a49561359cc33c86c76517cbf1f837bedcf01c300c9ea6452d55a9d6593eb4b15c005de46cf9cc856885df69f51a3021d1cdf37a1af65016d64e98993b6e2ffd48e7d8f73b1481f78d1e5629a40ecee5b414af582c4fd4f9b2a49bcd2e9f55d304408048360310615360892638d8353f2f413e3dd0d80bfcc2d52463e8910b26c90f72a9e22440776a8c10b5e82a5a62d37ea3e101891adf17b0a16241423af9639a1f89e203f74631fe919154f963eb2100e1d6f1e715da79626a24dc987fd9e9ce8ce58c40063f2e658d08686e9a75feb4a43beaad44b2e401227907fb55ff962ac889166021626158c018b1ba74684c8dddc6cb118b4ef2a0b4600bc5c74726ff5615c25017c14386a3f132a3629dcc8165f6ee8530fcb667cce27d336a4be86a3583735f8956f1cd4c68c61ca2dc5b8858b9006c139cbc38a49c14db3b32de3ad96530d1afd7b54ceff7d1331fcbbe83b8013000611d8c919eb44f02a6f527edfb902c1f7faccffdea82881fe2c28abce51857f663e4c9c8d42d45af4da180ebc5c7cf6553dc0f3b7bb35d10344d5bd1ea846afbe195db937526c7a5b3804a22229ce0cd7c1708a662c49bded8ff64fe7c64f485cebfc47b8e8a262f0829fb5c15b4980b59b58479b94aeff4608c2f5fa2a77bbb7c069b0dcfcc759ad386c12baee5833ec464df252369bc07a2c8eac794dba716b5657668c58ec82d743656bd41ba00ee07af2cddb9fd981545eb8dbc63d0dc48c55d41e213ccff88b77a987dce94d0520bba8e0c3a506554330cedcdbf5518930f63d1cd04980bdbc04455271ce82276437d1cf3fd22d4d2aa8ac338971f41f4f9d38b264d755382df79e75bcc0469495df13dfee714ab1a33aae6a34ec2427d0abf24a25eac4823154de521addcd48fa6f7eaf6d0e3e6dab3d5535731d0bd3d8f0e41d314b6477b41659f41452bfcdb429586930c981753174bb92f930777335070a0cce175e648d13cad963065356349d6576cfc0bf56bd7a53a6da11a5b2bcafd6af43afd4a4dd09bb73eb2b5aa247f75f3d5fdbb58834df637d73f007b91bf32dddd09f6cbee55ba77460c08faaaad166fbca52a32d61bc645e643d2cf781a073e63ffa7f415101c568e093e00de18b737f4acad9cf0e49a7d5af729480749484902fbeb89acd73efca38e85ef72286e89504eb194fc41242c72c77bd6c4150119354511778e6d3d034fdf77bddc24ad9a5b02caffdde18cbd7911b38265036ecffc8d5d43721511b0bfa5362730fef628fa4e72e3c5a62767e6cc660f5ea28cc3a0c565c368f86745b7cd31745d658ecdc15aa9069d18d8f33883fb0385ef1c096fac6cb257cac5b8f82a14fa908f88cd8fd57676c25a9193acbb626913e02101025ad45c9bbe254d62af94d175bde7926bb4adf99dbf666fc3dae08efbc43acb40ce9a8c913022e2c1e0e9c62ecbed3b7b73f8cacde632863872382737dd5e645ac85ad4a08276afd3cb6302195656f378936c02971a053de92c1419664bf819ee1e8ee38df91a2269af6b9247f36357dea377e906144623f669fcfad96650f0b4802c12b791c31046f42354f2f2b8150300cad2443770bb9f680a7917ab31630d33eace0e2fddd93d3c891ebfffcfc810094a8ecfae1049ac0a2810e938fd2ab9159c0cda5930158b7a1c9af32ab79bc4e0af98b2f82a8d15298eb3fb0e25844c44adadf47a046db9dbf93077deb8b9cae85d23110ab8a0f57a84eff29c42daff0ef245a9a8f4c9c05603bb52773ef6a616f8ba9b8f07a0bdd407f896091735914b99d173a183878ace26f63675454b0b0d2c1e7db5fd1576bae4a37a93c60513fe5c116e383a163768936a54b5970051a6c1f8d90dc0f7e0cf58a5dbf9be056f08e85bff4cc01eb59653a0ceb46681c5b40f2a2017817ac16a193d89a2fb971ea1e2f799da732287a0bcd3c29011ebe0bdfc0529c6b86a787cf1e3139ef10c60c2f06bce17873a55da65b33d74d80f0acab7d91e37f135151dc44f59c7157f0409c391b5f420b605c770a386d6f84aa1207ddbfa233d31d2c87de4185a0e8b6d394674d4f8e23bafabf10c2de6ee1ab78d28c9f1fc588b81982cde0ed5cc4b93e318b13d656ace63c72e8d97fbf6dcd6df7f01326cd0a2f51496d4b2f04c8cb57a399a1382354eb4dc2ff842231c9171118408fa4e14acf248b06d06456769c11c3063e4f62730657758e4996b60728b38ab093060da93996459c6a1b7f60e59655a6632ebdf8bbb4e83d8a5fd21eeddef6f080dee979c155544e573289c8499b2ff303179f586a6bfa51857264b8e2ce491f09dca942bf570249ef896fc95f1abbd2a2c54e41469972e71f042b38e3fb5e4f2c2ab8b1f52b6029a10fc5ccff17c4ad891532258c54efc7e2c88bda2528aa3d6cef19a65a91c255011d751b295ce7e74cb5e9e45caeea3fa119d6c107fa08f2e9654ff50286d497659f8cec6b62bd3ff37437595124b402df5e8226778b3cf4a632b05030da2efe8752f1b9eb2b60f0c8b8d6a7a4643e8e561d0712454fa07f110674e9a003775fe4f7e2907babc8cc0ef4b6a1589a69e14860c51f0f45a6c8fc67b38b3c33c2f3f2d8a0c4a905f7568415e97d155ae9e3a4fcfdf14dd5316e0ed03e7442751c18582e86ada7332b96f605669eea0232ee09f29c35835a155c05aa59012aade8f7f9eb5c5148fb473daf4de2acda34d2b942e859ff38f2d2455c6a929520f05ded6510fb9679c6f3f1038ea20e6d4abd04111f81905606077573ab8d22220bc3e3280a9fa2f0e4c985d59c586e6e51d4ed4ae3b081402d5933dc5ecdd26ac193bfd8430e293619e0ca0fcc651147a17b203a242c70b958b9acc89699d08cd810c72d44a442cc9e57988e2c521f15ab7095d8c612a3ba7d24c4abadefc85f2b92b7239d225503ba278f54a96fab86b8f177cb0a60b939633cb6b71ec837ff74a7cbc8d77cb4bbd897550ea06f145cbd9b436eab031861b87d7949beb786f01ecf65d47e34bfe81449f6e26ee76afc6374edd2d165d572947ab2889bef7a07578224154f1e647c6fe7698e1ddb132cbaeadb2c22d18cf3c862d3c70db4982262978f1d0f0c972da032c5080ebd6270a8ffb6016827ec2db65182566f60b7bc9ffc8f9e6dd62804e9a2f890231a29621832323c6d6f56af97edc06fc4ae52800c7eaff67219c5e3fe6e6464fe697a28f7f4c8d650fc6f988ab80ea1db2d1f17e76ea7360b37caf650e1299e59e63b47f3e1b11eb5d1679abf999132c965ef069af6bf0cf7dff81ddaa48b6e2a855d817946670f064a147ea2345aebd77b533e8821ff35a7419495c86275aeefca6b2b331f6ce7cae9b8d51c874cc9f6f1dbcae1d7e06d0f2c81f7c8ab218c3ed57e74a90c3a66b246ff68fed6365ae9ef0c7e03ed1054e203be13c39c7c5a53639f2f69b22634ea9fb81e0251ce10f0287a65f76f6326147e487c3a380ece3ae032620d0c2c5380e2acfdf6b9fc97ecc8734cdae9042804783fd465a4953fb88e691dee370a0800b71cc0c7b67880c23f6734489845f44f7c47517f09337ea7752dcaa51c1c14ad650097e6b782e2a26590e474d281d879c61773c05b27c1a6376811e4b0179367f8b3cf66eb86d63127ff9e42cf31fb617e48b1d69c4def1fbe633d6ab718d1ec12f67f58ffd23ba2eba16e1a46f6245add0d28b4bef6c4906271f3b273c592b9940cdfa2f453cea38b5f9acb0b89f72493e42e45c1edf32d2ffbd320982a55bf0d1c496505395c93aec287f001b38d7ab2c9fbab46549975a9ca2ba80c17bd922cc62b2774d187c6208d31604113d614e998735122f6c1999e76872067b0fcab5cc70152dad6f618f79232598d32d5765b733627ae851c8eea3d461e32417189b8559a01c606b21507313e536185d481085f60f91de8a74f8aae7cf9fe16aaad40545ceb3db20e6a79dfa7bb0db7f0e01b361ffd20e23a6b536ae42b28e72f26f38c5aacf56af45eaed48728c03a7a96f25d8f29bf691b1fa946a82e4fc22860dc8088fdd7e9d7a2389b41685c37ea719ad902aa24c6c9bb44bbdbed2261b51d2517fd87991cb327313b6bb95cf18db963170374efdfcdf56948f2e7594485650b788f67085f228ca3326ae29c674ca35a932ef4fe7209ff57e960ff0fb7fc9c12c0e735f207ee201ef09e307db46663518a2cef1cfe328e58b44ff2ed54e76f435bc4c7b2133dea54c300beba338b246137bd3117869e0d4bc279b8255250086955265796754afe61fb6acf0c1dd3194191f4e9fb82a3571811d2a8cd3651558a83c91863decdfe22c2c787023e27dcbfa139600330aa88ef801aec14696dbc28a296a705e3594d34c00767243ee1ea30e39a39543bb57adcfad530ee308f361a55471c8d9d96e2a8a88bcc438f745d6cfc8d539080999a1664fbdad021f58ddbae06afe20f719cadb098edbf4bfbc3fe1cf153521b62aa780326e9dbe0abb34b61135c00933b5f5ce0635b02dd22f66a718bc44d232a045b43f9e015b3d5be00a5b9fa79591e8c75f58042f463317f3c9ccc6c2b3383a00ed3dcaf16aa16d4d26287f67dc76084dd02c42510a4bd1c1f8c25120636858a53f6db8f86aa68b646477a1ae254fd0eb101da26d9722f22262091e3d8c82791ebd622422b0de990c03a21810a0c4df7ffe0fd83fec9564d48f2b83f8e7688e5670006feebd155917a8bf0d468e76eef5625c45ae0d22f0520d8bc0bc749f304660c754e1a629ffbc9d671b0c5fd930aa9aee7e9c4c3c750d01140195c596d904fb213a727b8ed56713a17203b18a0e1893fac8b36b162669902b27a566649ab217e03339cf5014789651659b897a0353e086ce70e9194b03bbbc23694f86e86083e91bf14749ab66eff05761b6175ea3fc69b845b64783fa11d491b500949f84d0181aa654bc5173f095ef7acb1385cac2268954cddc10d07eef2b6c6202c76dbcd1056e384bf72da3dee8e895fbdf763410fe43ecd1840d1a2f567e6d21e7d8edb26e319990f9427a268ef1048936ee369d8bdba04e2ea4cfa64c57049bb7bf112460dd6a102577d25850d1a5dc1686de87d8c9cdfad7fc30b0a41ab7bc4e309dba281ea9eb0cb9583cf67e74ce8e0c33c1a1a092811e17df436b1ac520e94737ac6a0c65e8fc13821ddf32508f75776ce5e520b4935c4cf9349c16810e2da32c70083700243124ab09dfc605306fbb6fa355597f92b9b8d8fd4370161cd17f9fa3ff4e407da87fbee116f6abd00468a500644e169b05e2fa7477d545f632841e62b2369732142a6ea5457cbfe21f00bcb81edc824f3b473a23df2a9a08e7bb4bd45025f5648a8ea2993aeb637384de6f8b39af7f2ffb1b448860a2c632426046ef642e44681793182a375f87f1736b22a866003263cd355e1c988076d9c03f57b6b7abf9fd55e3b2c5de14165141bb0bcec56cc4985d429b2cfc38d74435c9cfb45c1345f26a9d9de1a7e60200bfc88cd2c7fea873b0699a023eda17599c03aaec3cafdbf04587a5211d05087bbda1dbe69403b6031681dc4b82383848f7fb3d1c28a28882c6e5c572a3af881be455a7eb15a80f586c260821287aca8772c424829ba52296ecc1244c5db07892d809cc181e48b5ebb6d844db568c3eb2945e8c73726fe72ec0a316068a1796f421abd9cf7d6b2ae53909dd581a293b7e645d33e026799a75b10488e9f02c64bd8534971eb21be0c8c2c01f4ccc4cb1494eede7fd580ebb9392be76abb64bb45dabd5ce3ec9027132d09a1e48992eb1ead6e758f28c73dec11d4751edba590ea0bc814f29014b83a6124009d765b56d81bd875d3c15d17f21d136bc5dcd72c9cb650aebd2ab0fc9cb7911e78fc6ca450c001cb29060bc9ce76f2938528e30aed1467ed8deb5491403dbe66ad354c58f704b02b71173ceb01fb48a01d8fe1fe20157ea1c5e9b3f1cc110e122a234892bef43bf1d91d3e789c2b352b77c48416fdcfed3c2ffd017412ab17b3857ede09005b64ba73b9282341bb8d04feecbe3988cb8dc772e67ccb77334ec331f5045758f41528b363acbc13adc3d93e3f5353f83738df2242bcfda52e016f3979c3316fc66826b26edad31ceaa35cacbb84ee13414252501b86ca23c1cbe9e54a08b8d707d6ab635ee6857ca5f17a1ae955a47b3d96e699eeb351ba263499b0c85d7f0933c4d770c22259836380ede466ed0174986697866120e1b9c89d180c203b6bd2fbf4ff5fc8a9d27dc3f895e3840bcf71aa3de4bbffd522a9b960ecb7a34552ce1a4f0825bba14d441c8729d6104d3fad069cb6cbb6cb519cf29b8f709467edc07271440c6bf35a2a6912f552cd324ed56e2c20f9932425b2bf2c4cce4c9e7b19bc703f67ddfb84b0addf175d4d959bad3c8908c5ce56bed6a45d068251637613d570dfc7dcc80bad76ab7f9ab700f5c61396d8ca3e73fa4c17eddb4b33317999665a4399652cbd490d31039426dfaf00ab60c54a503a7d3eee8e198e940133bdfdbfb46e1ac33c0889b3080b372f4237569af7030162b9207cf9828db3df6ca83bc8df5832d26add33eeafecbd2ae377531b6e479b81f9d79b13bbde761198ecaccd0316efdb30d9fe4312e8769f199563d615d9c2bdcd3a4cd871b99d2f43620f285f7b4a97c7e0c244a411eb4e9f26827e75e85dcd6a85e5c64c7b173dcf89eeafbb67c0a9ee8a681d0b4e795012d8b6a180b20550e6d60a46ea6d6adc1bb4847c0ec09f39248cabb2f2d05c6efe52e4cbf0f0b5f7cd882bbbb435b53c70789f674c9dc81a2ca428889f39a5ac528c0455d4b89883488fe2144aa63ea9fe2d8e711278f299a43559f7ef9df674749de0eb04edd80df15d330536a5cd4915c0fe0b5e109b5977b218f112e940a2f6d2dba12fbc4c365ed73f1dac0154ae6dbcc3b4d6633b3f0c650a34ccf0b648ba5d9cb1003730064523fd2693735bf5dc0f179146c1a389cc0ea15d7935e9edfcdec210f87f029e285aace7521e1b933e093338ecde707f7ae87e7ac48bd60b4f1102b90fe11a42c87da6bd5ed55b84a5bb7ff91e14d834e76fa308c2bcec3211123f89dd78dc5e766c00cea3d1b63854b321d000e3ea06bf66257f6a163bbe16d5e28d50fb66b3821af6c87d23eda515610ff32d89d3c62f7803de482e1c2108e7adfbe4e928df8e243017ed1baa8365d6ce96ecfd1838e738cbb6f107243518a8c3421c443c4e63fef03ba09df236ad434ff8716fee3b57a823c0bef2cc7cebf637afccfb29223167b0aea841f52044a7c559b2ad606548866c09d7344935a5121692a55fd2256e0ac0363d2644024c63ae9edeb948c1baa4f02e21cdc41fc51183a45eb1152155722a4b6b0ff38b044a30cdb33b065e064b15ec3f12b285ebce11ab3f958adcb59c120dbf6e3d0059938f48209c5bcdfbeb721965b03bf166cb6e911e81975e87c90af50aba7eaeb596ff87a852632f9e91313c4efd70c89ce83d1bed6ab51d0b8ae5ea1ca7bc8621af24a301b7b127cebd50d0350b4ab9386d8bceb3fd7643721404ed2e73df1cce0959dfdf24b2e005fc37b09277bfbb31377d3f3a389023f25c8261e765064449e40227d5d1ab0eb3b6cfd75af0ca7499ef0848458492b732a06f1066d6861f776bffb3a48b9027045fb250bf4435ae0bcd9f866a9f7e55e077ff1ce993939c2abd6ad9a81a3a237dfdbef4c57f7e859691bee7acd9128aa4fd1ead1fdd9404cf3c94d67b0a1a4c13013d521c79581ce01460104f7eca3fa251378b3fd92dccb4084f2c175f40f7496ceeb3b59c1d8b63a44741c326bf68098e90dc1c9ea8a7a7790aeb8cbbf30fe9ceb3d18c83b976cbadebb32503ec347f49e53abeb51467d953cbdd897b1c15050ca52fdb33aa368b544f8af773d17c6661a8fa6e1771fc2eff284149fed649226edc8899d737b3cd678edfdbd76865e185145fa14bdb07375b47682901b1b37e68f85775aef07a893e2200cab455a24f70c08568a81632c3b28511ea57d635d74570c555d098e7cb2b1f9e47eff07abebcef564066ba458df5a17887bb5c9a0ca7c247dd54d3e0b3027a9236bdd7ade26840de32fbee092dfce912c3655b5aecd080df9c8cbdecd749f2f4cc53bf9b21ee0368d01612a59a00ee9e5d00a0f942307665ed0f62d088cca10a85225af98ae326d310d5af50cb2ddaabae3e13be1e506d43946cb19aab0eaee98d30f123af165e630970c3b147ef1ee052b31e3cdab7b9086f7bffd391783266358770027471ceeb66b1c69ca2da20fba3e87af7d39d29a427dc0426b50ca326a3c39292661dec4dfad6ec2c98f62f9b4d6753f7ebb271dd4bc36c4084ab3a4e9f6f49537a546713bee52add086be14668a01bd9a117931d6c13b7c8afa148bab557630dd6438e1c2b52d94b720fb7d3936be5673575807584c603ec7096c5446db0005e48f90f34db692daf2d8a88f5e3d431b69fa79b9e9a94b78443808eba1a275bf05347ac820b2e79a74fbedd12bd6a61c7600dd504d743bf0c8e6deeb2971f1308e3222cd5fd9090e26877745810b69c60acdb994038cec84566b22736ffe75e9e8752bbb4e01c8d405fa7eada6e8dfd9cd7175a431113f9587a89801f0cc087c87c338d1a137d1cacf2698571cfea836deda7dd8edae5a4aa3be48593336a740a708e2fe8062d25440b4f50c96018e141687de5910548bef88d41c474b82904681dca4fdc2172a6f9f3154fedb796a4545c790b822ac64cbc54113f6190d28710da6ba1c1a98317560d2c98ce924a14c0f71b9e435942aadbf9e404d658726fce56bd3e1e6e221f201ae52169c8aa757970d4185963134567318f42aad09bec6f48c125ada4a5b601a8474ca011029c18a1e2d52edf5b393683f2e08bbff6dff9c4b4d00cec65882ee4c7fa5e69ddc4a2bbe641c665ad3bb76f65ce7a309719e1ec1ffb9e1937839c2d813625d2261a4945069169b49c7b2df4f057ee292d44718656cc7ec71bc99e8347a1a4c55bc80a7730b7daee142f4e060dfc1afc29fa57021286f16772bf0e3504f48c6b63181ce419df2bde6a710f90a744e3f358411f3c8844046808e5f92c21d16409fc27b0ac5355c06e8c0ec8219c2f6a5c23f3a08381126516b90751b820077589948b90fed92de77c9208ca52482e7a7da00125c177097825aba734f3d513ca738779ebb6877d2ae89f47538799ff16388caeb11de31cb5abd0d1e26938977d5063e4b0dfabb9e687c734a554c75e3621bc26c3bea9768e9eae6d6169061f2d265bc7d11cbdb5ce53330b7499f9c6bfa99329c19f1f881f11eab40e0748da690215695fad4a8d29e01401d0157b90f575f959499aadc4c31d683887e129074254458d9f656045f2838d9e821c90c17e5a038b2c02e06d1ba00ec68eedf2db2aa1fd1d8716e22ea02f04c2ee92368e260c19de5f43424d77343561e9cb2fe9fff2642dc82c85fb84da011f51145b58cfc56e5e5769e341d680523f0e5c5ba7df36dac8d41298781c5c2b7fcd5bd31a04b9f693bfdfc4e9398d9fc61ae6c285453fb5c0b3ab8ff3527729bfdb6452571ab12a33b350caa5e129446987916dca5cc01bbde147f1104fc279085899df3a004faeb591275c0fb4c63cc33276d1107d689a9329c9b2a8185720314f46e80bc0c5e48800aedb456fecddf134e75ee19a605de26bc8fe28f0767482d61d5192bc0bea27bd2098f372899325452394a6e9d6114f8330a70ebd96520b6cee49af48cb5662b6d1f693f4730f8716366be0acd894df886df60406d9b06b75a601c4c7c4b64552a0eb433fae3d2bedd8a7b4563496906da4b0d2cf5e0ae104cb4d0735af079d11ef7dfd5adb2c1a631cc8ff17fda6ddabe2313066124f58ffb24ff8d355aad960b65c28573cbdae1de2eb5ae8abf1da99d9dcd9f6cf357bef94598f53845ccd408c170d32b5516a13a52e02877f8c2ce7168327511c86830d8d3869a63a56b44cd696b7d5884319644668acc11af49eb33a91f85f6e58268809714d933e693f14f17b09010bc92dd82694cb505295247c15826b35e827166427ad76a9e87cf2c2584c8721e6890f49bd946f14567cbcf9f38d0decd2c08e853a63e3f522868ff69c7d5c7cdc544ace3043d237f108a0050994d0a92f5a788a065e7744ffc59a5cecd9067a9449e18c6cf903403f5f80ccea20b1e20ce030409e7d9bfcc960e3d413f63c06a51171afcf1da97d709c77590947f3c8732a9b615b5a4074999074c1a462b8d375d6df5cb005d865683b3cc8ced8b6663acc03f16e3684b1fcb7fbdbaba2e32d9f27c74c548ba6e4f09d074ee38b80d4712f6f332214599bbe4a87a7efe06bb69c18d40b3c29d2b18226218f06cc1813d3e03f9af7247f7138ea5c0ae7bfb96049c5874832bc5f5f9d205b9cadac0f57966f55fb07f1e35d3c6be7269dd47afe2326e20b091f9387c01c4b171aadd544c15018c0578f8495a3ae8174af5d869998a8d2795e25ccc9dde539329735a0870934db0a694e6ea4035428f672eac86bff076783628a118b81fff780192272ad27c1858da1f5b684af960d47d4f93658905ae6e50ff0915a986a1fa4c69118be14662e2dca11b8e1491d0d42ba14d09ab46c5beb6c09815d7e60b770e9dfb4f5b8046b6048493f74b654133c0a0578e5f3f9f8c551a00d06ae0c308909419f8b46dc6d437e1b357cb43e789e55d32dd65ef45f38a4809ad0b604b8f87be530ad1ce4e35956e6be9853c5b0e8ae28465b9cb621991f5d84067974468f40c2819060bbfb4d954321ea5fe961591dac7fb95599b8f368316a05c0cc8c72c583c403541d811e742c01b601c9823f4ae43a08f17867881f5f5bf84a21e10fa9b03da7d8f8f4fe107779d78ebc589842bd23ba65d17811ab039a6556e889bcb552a65ca6501d0a55a559516f55fa2b2f5191f44b1ee6e78c88705d2feaf4f68e87e725ce1d99418c6c297149c1487515a659e1d9b8788dc1908c74a01ccb82488102689a90b6f9c0972b2772bb5d5e4a64a1518e62decf28542a57898a50d36d8db643dd9f3323793293d09e2ca0daa5f7844d0262307fab9b2e4533a4d23075144aca6a379a8c4f7eeadfb22395f1211ef2c903383fb780afc92263469a7176c1b54df83a34989812e2376abe1f7c5ea964efcf8e712ebf34276e2184e63136a6f0a83c8adf4b1e0a7d2c319746e30c6ae30c5f119f8a0930f558ab6ad5512a1ce2d5408f8c7b25f34a14529b5797b9816e4e4a0e50f9ca9eab47f0e03d1cd530ffc3db4357e7edaad059888a93d1e9d59b4418088e4687d3f768f31acb5a439616c040844e4d4d2b2980a8ba853ecda9e5f29ec0a446f525ae84daf3f75e0551e0593d0111f259bd80c4c65329f2a939b70f847373b3b3a24642612ec1c13da854ce4ac0beb2ab354e0fc04f88aaef97f5da1cf24ea65d28543dbccd20c3b620526eff460d49a862b95cdd2592c22d7ca45b7b4d14b2be83045ea6dc3761b6dec8744891a2ee27a6357c85a7d62e54ad601f23bc043484cebe956a2f3eebf4c2e9f8b4d3a4ad931cfe541208deb87f478e2fe7f90280fb29a2d1815efbb49cfd266b326cae2d4a9989bf0b821eafe52f4757b848b14757d503df65e4bdcf0100b92d85d5effb7deac92f162b1b4fbc35f6a42867e85acadeded4e5cd75cf7dc9fb1557473320b54618726abf881a36f659733c63d11982c613f43af837f9135493556e2babe20cdfbd9f9ed7527cfeab96207ffc39c23c8aceaca6b0d526016543337483be290a6936182fb5da1a484c27471a04a8e10ae4e97fbbc638f2467657a9a95da522fa229acd47917414f37113b839989cb75899c1683049a1c8b42163ea8e269a7143af13c961db78533a35f7a5a1607453453b2ecf4da5cb5d2c45e0b65bfbb6f25ccf5c01550e29e2d35949c8664910565ebaf7b8624c0b480f1fdb1e49ca4cdcf3596ace0d67bf0ea4ea67004b21b982bc559835f4fccc801c4c8d09804738214e18870316075b6b7de3e93cc7e63b6e3fd9a77939251576842f9866883b23c56b4867df27cf69e2be446d132934b9a920f83715ca7078288a562a8ba87b9d3b89dd50a566c5375a5a347f379d62aa9deacafd981ad4de1f9dba3cb0d384a3a2d00c3e9ec57080a26b0f690c3b2aa9982c2de8601450c8e06bc89560b01406cd7e9dd02d507d4c343d8314365bd832323ae7311934929a9937b9243abf00b41e9046ad3bceae7e8211076a06c9d46dc32f49bd9877dd01c9a0c6fdf55ad2bc93da938b4940fda7d0db7666a4d51f1ec5a3adca7a5729862bd3de1c6439df7b990d8fcd809ca615dcc4a23c4fecd142da468b6c56c918c70440127fa9302be68e98ebcb39c2cb5b96f52ef7e0429e72624fadd362ddf5f8c0bc9eea058f0cad1ae7feef4f6b354dd3254a85ddd39b79e6e9b1785d14313992f825ddc1652e702bce26d76506307a05707dc0dc8867a2d63e5031cfdceb5aea4e97c875035f015cfa53cb6baba4bfa6cd683c3e52c563a602edf28263f33c5a723e77677b47d1a820779332ad20324122b9e32003dcafc3e5bd03d3ffca427d96e0cd60aa1a5d01b17af620baf65f834de507bf0058a443f6437e8ad698575914e2769a8756b5120d605869527b8037bb7fb59933470fda6e451fe89b316156b63064075d5566cae2cd7ce92c4d4b620a4caa9736b75e77e115dfad1173b2cf7950b3534e6eb1ca7c39082dee608afb3d17c2183854f1dc6c4900aee282c769f637efce4fa191fba307674be840794816dc1220bb950206d7f1ed2e9a01fe64899a237d4d8ef098f5d89eaf8e888ed62d0bb2976cd7fcf6f2a0e3c0f6f8165cfb189b2d7ca86bcdce92fd4d46d07313c3e33b1f82156bb22250c12e6c13cebd817532a9ed0fa8257fd56504fae992e66179e042284ed97023cd78d90160c77eda77e205d12db5cb2bccc6908c8f8aa2869810e015aeb66bdfd40b6f44f18e7d72f87275b801dadcfaf6a6e3d2ce9629508e5b96cbb4b0b2599649760bbc8f009710b2d4be46c8b46e2d1e0e182f164f9b5f52ce94388732c2cedf2ef9b46906f08e3f953b2433c57e475a3cab109a058f319c718ec8f41b76bcaf544ec9f5ef1feba9e1484e76353947b8fc418b5b009b6523ae4fc9e34d6c07b04f7d9c0f0823eaf351854eb8a1fd17fe090a83445eee426f87a6553c5532ebe1110c2ddaf0c3b494be88be99b0ebe90f7a78663de39f1ec15c25c4179cfea10979838ee88d56af96b002df626efdf625ab1cadc7aae1236e39e7a89909f7aee699282115e4e97625f23096796eb1d8e10651c6b6889bb9d915bc6b1234a9891debf4f8a6590d7856d7cf36ed4446d63709c5957def799a0e2207db925622e3b7a47f0c7033e42baca680bc2156695434faed30754f2d463c96377bb6685c0fc6087e8abf605af753c602ec5c537b50b5d392dc60675a9ba1e3f0ff9771b0f88849d9d952c2d6b7e6c9ee68f71c76056243be01d39a49761b99269b0d6f2bcd5235c80e0338218013aae447f582633526262b78ac3e1ad1a00835a31f66cc27d1a9dd056d2440a320e93b4ecfa5be1fc219bb16fd07f184f35f8339a69e49441e531f2d0fc21274028d4861e923df8a8f210ffd74db120d95f942900ae9a8c641de6168fc437572c6b15ca05656cc4e98eb360136ae3be5d1ba9463a5f04491132a74d02eb4d35e02c1eda16e013d4f96b82b046cab74f11bb2e937ff3747397080224a65f8742a5ab76edbb6c875fe3485e6346654b9fc6118df54242aa04c93615719db5ca15f37e48be76b3ace6568f124fd74eeca830ba0fc6c2684979e77e63b6a886d32cd7a9a674b2daa3b91afd4ec359d328cda7759241c9e7d044fa62b2b1179184801e68175c58e09f31032de5947b2e34521106dedb4f30f831ee1e15787818e42152a4e43bdb8c445cfcf8ffe15dfcc20888d889062cdbd88c6e17d7fc718f2f630d1007626151a7d4ea345b77be7008e3b01e0c8e771e1c610bc58731368aceadec65453950dedbda20bc9fc7a82e66d45d9f2703112950ca3b1f57140b010d4175a98b2a1df7e7978a63e374090464384d3af1c6cc1aba0769c856e16e6ea2b89d6d0f49a699ff97c4c53e2f55823ba68341c29b0fbb527cc24d5719fcfd81eaad7ddb81223ceab1ad5fe6807ffe3523c6742ba1625af69f3ea576a8f942dab7a21928ada8477b5cabaee1cd3cb2189fef7e2d166617a01b48b31c38d086bd5305c8a8cd79372ad9ca06d998271fc346e358669476c0e7499c86f7f4960339ac90e8b3627a5f5fedae6fd03b320dc17ece096dd2fd8ddb7d855cabeb8b76247f8bb57f6ffd13092f2f49f2ee7449e7061436fd68b07114562fdf34dc9345228be5d45a847ec26469d10e3bd5d10e6bf9c51af31555aef2daa82111581cd38eec0ebc447a106fa601e8d25bb5f9291dfc208e5a2839fea0b1661f4f7f62ccf3834ad36168ec2b0034b809891fa3cbfcfc247f87fdfc67c27c1363348fe16a5a2e5ae20f0320e603bbba747e058ea21d85554741cf874a2fb04231991cde06a85b80e8cb149fa25897bd566b3000c869e6ce1d7ca445bccfd76f3cb28a050a07afe74acc6f5bdace7d0c38dfcac11efe389041fe8dee432cd6a2d0b03c55dcaacaac71cfdec396c0b1597893a7d90cb8e6ed9f5e97253dc104eeaf56fd9366c660652f9c34f1460bed63697b8de9fd286f4c2bf26b693a36e89b008ebfda6a31c180d1ad9a9f119ea76a3b844b1712c0a3f9d174a66b2b492f374c01f9ee083e0eec636266d40363052c93567b49967efec648f588d4221dbd49beb5548cdef6269ca7427b8586b3ac11121c8e4f0da171aa47477ba5942c8363a3c5efae02b5d092f48ffd845ba465ef3e539ef15c72057d68c92de9eadd1da6d19c0985c2a0de5ea4d76328f18ef3576a97eb1468139e7164fa43656adb2779def3eee221a370cf334722f9dcd3659eb97b02dcb8a2b39b91a8675a727d02d53abc4a3bee7e7aa391bac46ee1761eb0dbcf1c5f0a06851e0802f0e45e902742e3bfc82cdfa2ab83460eb42f21c7285cf131082f8feb3d68e2bfe06566bf3e8416fbe3e536e370cde20b31453f106686a5c0af0e8353db381bdb5d04e25cbb2ae9cd5b9296a4d2c140b3d83760f1c765d17f383fc498202b32cfa7b2df516816b9578ca5cf4c3bcfb55363aba3a66ca4c2979793abeda0aa0972cd655bd2462c814c21ccdbb234384210c95fa5373851db49d00a6df3a693635794f10b7a319a361e5ef3ebafbccaa663a4b53e0dd3dd5f4e6dccf8ba2b5d70d6a572ccc64111da79549b40a6704001ca93e24890960ec450e477c94a6cbfc97d825aade9058b8c8e340a41861f2923b79cd8b410f7f5ecf3c495c0a6276ceb515b913b4fa542bd1f59b4f1600ad30dbfcef024bce617a37dfddbdefdf9b7e8dadfe56258dff8a40b3295760aaa3098798dff2258c71a9d7463e85ac2894601f2ae7a4242a1f1fbd1c422c16f21d997071214b2011630b32108726394ff9bcba0b92f4a4dc5004e5d4ebc852ee85f100322ff259c5fb8357e007502c68e5244d7e77e68e652f41f4c871659b787b88320e6927e399830cb14ca6afd7b330b9fe94939d4ab6e0c22b91f44c54f861f5fb112cf9f92e10950d257e369aec6f97de917756b5dc95844324152a2ac3a9e2c5114e461f512e544fda3b15193fe6f54e823d7dc509f865decf565908ffb41bee46567aa9184a0bc7a45cc88b5b943a5ec941d8c0bde7f8426dedf05ddd4e1b1150df15d660666d08fcb9248cd2c93779363af983acd00c944c856230f7f26431a1e47648568c8cd48af27d5167872471104c4e5a622483ebfa9b1f30c25c1f56830b24cbe265de25606270c37e9c602528924960191b76d404ca1359d83e21cff2233060e1a8161edf53d3ef6b4baf227ef899ff491c8b236cad23e3bda12cc074277e75f9bb6a50e22d8272ff1c2d6588170ed11345cd38f1f49682cbaabc90b7ae87f2acde5966b430d6890e838c804dd220a161ade2916218b26fbc5dbf1a32036069978491cac7cd5a4029adda67481cfcdc19cd51a497c134d03aae9eba93477fce5603e10156105391aaa616f3a6a9a97ecd8d0e5e6bea3885ca612e5c69686a9298f695dd4a1ce7992a2ed3f5aaf391d7ba35c83312f8bce90869e45675209b953f64d8c405fb0c69ba1b36efb87558e348b7f008e9d62d1b40e9913e42ffa9abaec0c161ca290cf66587677b3a165d514e266a873aaf39537de92c96d7eb93aef8eee62324febf05d36d76165a97096fe90d907844164d00a70a65391412129b8e3ff3499ae6db65bf31a3a358c0d9ecb24a8953aa88eda014e2a64546d3e6a1bd7fce95cf9e7e06e330074223ead23079be8c836b187085dd9d91c91a07ec702c098534c932e2c8f227ae7da675f86b157b868de6259aec2f299ae68335c1df3792e7d40657fcc0655a9443d2355bc9b1cba04f7e0482b14eba55400a855e24706d3ce106dc40558a1cf8451ad63cd1e9d7b6cf63242688442a834c7fb4633d0c05d8fc87e905be3b6daab58cfaa372ac8a14614a7e672233a392b2c05882919f7472bbe2f2366d5fa45a8544e2a649de297f7f97f36633cf07fbce18a225fa1686c2e6e220fa7eafece66dfd1a3a07ed9f3bc95fc6123c00c70afed08e34a1e7a94fe3d36ae936c9f0a164c984503c5ba8f0aa3735cec75a56ccfee0bfdfeabc9c7c1a43fa303c447b55d9bf2852ed5ce47df08626fadecd9919c18fc9608a11e0782d0655acf394b7bc3370106937dd5d51d23d9155b2611e25aad5a1eb9cf97cc157a8f3747402019862f534055aa3c19ce53a433e4c6891c6ccc72baf43e253c62fe1f87ba35d1196f9a40ff3a8cd92c0c62eb57a90b6200962852522fb71fc1083728a8229d76ac79c3b9b7568192fd807c6188850af70c40633acdc8220371b819d1cae8c8f80730c3b9826050acd5486757bb8ad5e192498a4e58548c5f9010db691c2fcbf310c955ad90347a9e616fdaad8db58c582f87632d74e8e4cff80047c955a65d3502e8c6b1b583899e21937d25c3b528e09ff9771a1574ea757ad63347c4770466be4244fee00f37a7ed0200e5d134cf296c61b0bf2b6de75d1d4888861ef9b01b1695616c9430f4ef3ff805366e5d9f4a1501430980cb942fe8fe9a4fa43a318a163fc27c06de544f62bc52e265a25f924c97744ea665fca84ebf7556ba0b76ff6f8c51fbe7775c1f5be45b05cfc24d57eb93afa255e7e10887ac69725440101c84893dbb10d370d8f5194724d699703ba8d41b78adff4f3b96e50429744a113f16601ede9a40e75a8dcc754056f5d729c9a8e929987ba54bf5724f6218c3f89e92ba17407c5b68ed40be1f670f587a7cfe2d242276350f358dd38f76907d9ba746700038fcda86d0a20e21715db349ea92a30b1c0e3455b0c80c0a14fb622663369e36911873ad9c8cc45d8016dc3d6ef1156f0094809738388688654c41b1fa1ef78645ed4e4e70e041abdf6dbf127458fab7dc20f1cd0e827a79ebe279a2e1d31927987752c39f68622790f014df3cae7d3ad46fd1805155790e69ec404132b3d2aaa47b61196e27efdfdd7b7831dc4bf1bdca16d81a3b59bf9518733054179c3a60f7b92e5f434e09df8a541758e24f26ffb79b27b5602e9b9caedcb052b2813e4428283cb029fdc4510b56acc497b8362106eb8efdfea751055820b6aa6e35e00bf9d0a166ac38fa600d223994959704af7c99e2785a866bea404a057997d211d980596402ceec7e07832e7c8ad109c2dd117b5de307199e3cf5de6719b48d6967d0754bc40bbd74b0a8ba64a07e98c469b8a3abec09758b65c6bd96b70a05ae4ba642f666309e2c52abd63880abeb8e0077b158126883c40ce65c2d6d2471114c75480857635d72b93a985e5eb424fc2590c38a503ced24d80d59c9e0954c23942c92f4b75f89492838f85dae09a66b6c27d65fd0f723e65e13fbd997eda71fa3f35d9ae8a6f5b89908f4173f4746e103c2530406896e4f345e234ec856ffaed6e9c3605fdea4e002022424e2cb7f739fba019a07640ab86484f9cf4b48403e429cc67124d443971d783caa101ea50bad0771b57309f32b98e3835df8ae48d2dee90af2a50c265c752071b8b48180a03d0c2ce95adeb168e88c9dba7c459c1a3b0eff1db00de53dafbe2052263553ad3a6144d6661dc871ac57b5e28622d75fa5d4799d9cb8e3239ad5ebd4c4a81d4e3d948ebce1b4d193360fbd5f0ee80e213724f9baf3b8a0486413328bba89970cea9a944ed9e747e0fb294ccfbf7c6bb52384ae0c9c94a3b41c53a5b7e7024b56eeb16fa06f4ccacd7227e023782413ced1c3c5030760df0b595ca31b77175f404047ddbffbce2c993d58edf054625b1267617ec3fdd1d9aacea41895826489ae85e8140c8eef8c4a0218c2e5808570e59ebe73c9419ffe17e3b35d772493b00ddc336bc3e7ef2dbe957aa783db561cee6726e7472558e5249bd5974f0be622555ac155904aab323be275c2765a6150e0e758ec4203cf1e430ca876ec71cd2a2bc9e2a3653109063b3bbb1a7d6b9e6a2991fe5c6ce7ebcbe205f6f88835cddd2a43e69ac046c8c591927cf6071d38370e8664b82f38c6ee30bc686a0bd0c8dc8f649f264e89fbef5dc541a481049b73ddf57fe8a93e1a04e5f3646260d1edd632a57e9fddcf57f7947c5d784064acb29fbd2863219f3e1513a0e375287cce2acb25c46b9ed0c64b8433d4c6c7e0da931c6ec306f3c0e47ace0faa5d59cf7bc2948a2d256417f2722dc26bc45d6ad5d60724e0dc4a9da828eee537c16b899ad33d724a1321e961bb01b293e23d71d192bb25790befd55817fe3412c3e59b3819895a5e26474a6be3888a75f52e9d5ff34a47a3c274467e579abec85f3cbe706e833bc78f2206a78ebd72271b464c70ef0b9ef0dc5a3895062793f7462f6d3de7968e0f1f256e17faf224ae28491b8de5157199cd1e2007ea9a08482cd97504a9482b273ea5d83f5f31ef94fc4bb264735492ccb8bbd7e1d884285330b2707a7f4a88ab38fbe2fc59b78235440fbc3e114c3f5bb074605f13b67634f02642c0439b66284e551ba879a050e84ef5f8ec66dffb7d5fa6c5889e75dccd9550b88f4012efb3784cfe0cc496a40f3ec87eeb439ff1d7958776c2980cb2d1590db4d6c848492b0bd34482e9014c58b703b7528ce1f787f3c11be063bfe52ba20066589592370e5874efeb0b7f14f9c3512cca9f6fddbeea37acbe2481bede89eb064d57aac4aff3c3156a4a0e02ef787ba114459bc9b90fa7a4178dc463d4073a905487b6b0b73992edba3319cd787a12a486b28885477cb1f3591dca3b1adf796ff93fa2f9b504e5ce352fc5ffa095ecd0e188c2e19132d0d0e72ed70a690e9197379019f2b055b53262b3ae944b31f155bd09cfab4ce4839c1375d01cb74193ad556188a749e7cd2162eb63406946bad32a80748ba90253c9390f7a20a077717ca8e7057819ead25e3c815f48f840aceeed76f229bd6f8b0babc98120215ea8de52d0e0602b19b49a98aa0efa7185261fdafe6875471dbb3e37176c5b1353f12c1a58f187a24028d30ce12403390d5844359fa6e48e93dcbc1e260bbd169932f2f9463fa088eb686d0584d22f73b85a3113c5c6fc667971b03e76dc785483072ea73d867b49e32bb13f5aacd9b2f2e702fbf50b75682aac5164781ee97d2c72da4006358cb0f0ac9fa7eebe93d53231ea3fb138961a98fee44a6ec77def872fb34d9e63b8e0e208615b79fd58666637b0ff60aef12b41d3f9f7825ace07d2c02833c63e9cc588c3bc03b8686a68178f7a634571be2d199982722e5cdbdf1a0f2cd18ef27150a781ea9f227a6b6fcf3fd876a64e5f8bf980cf4825302b5324ac6851e9a9d87c738d827c039167ad939e18c06daa1a31ce4de011d232b1f1da18b2373e5c69d8ef1b3ecd96701dd578f4db1aafcdffab29d20fd8c44a6fe669115c3115a8705520967bba12b4b82d214188d5e43c2564f5ae5e2d8ba3d65e502e8fb7a66b52a61eb3d89c4f6f9bb44549db612505f33e60f4bca17d917ad2bf3ae5bb84b3ac3023155c0abaef0e57cf11f0f95275697a4e64b9ade3f728fba914ef235db70854e0ae674d91d83f53ebe53e03d73ad83a817f5e97e0c44ba9b0762d0ff2b3a9ff32d4d7e6ae0e28ca0c6312a7d65bf67d3268d73b78d0ba3d994e085700bedca2aa3b8779a81bc43c87773b1a207ded63e989da1f083a7e6af2c75487fc3004e576d47cd0a8860be1361638b74d87344be67963eabd29d9813237792292b2e2fc50779406759dd834de7bd56fb98407c68616aaaf8f3fb09a1414f9963ad217a85364cb5a1ca5c3696a8f91f202da30385099d0c693a9e243250ffe13e286a71844340dd4f91e7b4bc3e8b6e5dd9c7d60ba3ca111a4ca04d42b915527e9b8028f8377cf19865d03953e604c614d240ef5346c918e7e77d47e53e192c921d6c8f1c5ac8bb9e5282310f42b0bdf35318a0193452b941291384623edd92438663279808512b4880de1e6c7faa5ba0aaa066ca296c227f37a1a691851d164238c37285e1ef255f4bac78708cb13ebb65f89ad4aa074dd00934cd832ca22b51f824f7481dcab09e77b64496112de05ab49fa82cec8d9672f5206ed243066b64a2f4fe7b17500c660d2428629a3c989ab901a1c3c367f7014442e3d486de69d6b70b0c98eede8b9f99e669061d099342164e111b8ef7fa52791fa3bb1b0c7f7b8da63f287bc4a1b80aa863c8ac5b6628b3d31740fc27f4b6945ad840df17029ae0681898a92577be9ca907dd999e19c86ed4d2f0357d0636138f28e74da2b48973455402929fa5fbf24b5775decd873b46bd9bc792a21b62418831cda2e1a27c711bd194b2070ac73b43b967fe51993881780bf3b6d53753354e59a3fd9e393cc33fd714abba279b8a8b812661de0d9055d3c15662158483b0a554a9c57584d6c57dec6950d1f83e845f28a4b67153cc91e262b1559091af2abdc90d6c4627a98bfb48840e130f917d2614cc7c37f4e95dea8f41ef4fa199cc286f5318b7eb7ac7f5d7ff2cd9b3f722f29b0cac4b162fd42dc1017c640be302374e7605dd20f4a250dd67b9b5d6217b8e5d801d9cd565d55818ecdb4ab22b8d2f719f99f84b01e7ef45566a0d1d37fc2293a008c7372571baae8de730d7c6cd9b7c0fe5a333b203922142276f4cb9db28e350777118cae64acf180fdee6ce63b8fefd1e7341a37c365436e1315000ce2858887a8f1b631b3a232dadad0d23810c5a7592e6596a921461f4b87fd0e4b2da9da1fbcbd5689a03ddc61d9c4e0862261a0605b798bdc42cf0cdfb1a7f9ccc0a7e82aa3a27dc00f01afb62f4b4be6d27d88d5d253677c23892f77d37a9343fcc2a0717ec68e31480625bf6ba0e0c116d5ce72a5bf89f64a9abaf2d743e3c0c3bb820b065581d965862236f16a74b1a007ec8f1e6c92789b612cd235d0aa5ba0574b9fa6c3007a84b23fb501ea548d8d84f6aa96f2ba716dcaab73c9fb4fd51ed4994c91c4bae4cc800fb8862beb99d5a2b4ce17c9abc9623001b586026cfa8eeb901393b7f5452b46a70a293183142bc6541ae2c3dadda704defe91c9a12d6479a60779f2a9c192c22a69bdb860f757fd334380eecda9f41f7175f1e2f256b321eca779654f43241dc1a47eec43944877e8975e50ea081959185b365957c613bf9866fb66af162dec3c5222cc375bd53b013c1fecaba36bffb0698799e2ee0b6fd528cbd0b8b64da3192b1dae3fc4d3a2c04132a5ad4692fb4fe42597c649da2c17c143e1c0a44ba7f724b1f5f8cde9ddc17819bffdecdef896decf3a60b9d146c1f2858914ff53627e7e82e2bba3b24ab16da300a69af2b0da6a686219a6f0fcaf67a943fe9e5567e8977747208ffaede17837dd6f7279505bb4f0fa039e20cab550fff922d48b2c67b0343defea2d49e86458d63c398da52182f1601780f2c02ced095e108efd7ffbe430815792aa3c04b303eccb12c85a13084094dd6b385003777e6a81a4a4ceb03f52f4e1c2241aeb795d11de199e12d264a29790aa765873fad70fd24c1794e950f1b7bc3c3d00e7414c5f38ea5fc4b9e55bdc809f90613b9495b94af0c05bae4f7802fc3a02a56f9369118ba41902ca438c6a16a96c945eddcfb4cde410047ab46018febd3c685da18e49bf7dfa12a96cc9533f30b11087457a71c1e007f62feb4187a2e76c51ef5c43432e9dc936bf54a95f7755842b855343c748a4f0f1c4650460fdfa0f0293ab9c432d6b861f54611349f38781f7b3304e4fb6cd5f3ca95cd35d9022f6945f41827e9740e7be82fc14154c409321a3fb2728800f8b490f123d870341712b2eae792634e311216ef246e7d87c5398ac99fd5db5a1cdf16b82ed777f8c94c7c066ae458080bd13a4b755200bb88f5a9ca8fb5525a5aec7ecf881799ce1472a1baa079219d23dfc576ae231cddd60e5dbf6cdf96f2a6b75ca01869ff4dccc64d4a65489486b7d50c39b5baa0dde4564a3b6650061b26501747b8b138d41ca1facbef28c8cecc5b6a64658a5a01ca51cd8aa71902c1293a71d23e4bc7aafa34d9307d1a66bff8cbcefb13c94ce7b24995e77f6bc465bd0decc2dc3bd4caad46bffd44c4ef0add80241a3df225008a0e6cbe35b74414dad09bfa30c95613173fce9b9cbb49e1b24ea1e22e4d46e262548e39d21e3644ab9dfb1e99dc9e0e77140268e57b0041b6431ba8077a0155c019fbf955af91d4d2633747e06af53309ad76eaa0ab9c5af8a9ebb193ff701dad41e594f447a61e4863db1c48479c0566346bbb5be01fac64f6acc11e767f398ac9c9c90b9146e4d737ad82b1220f300a3d593354b4ba427b00b5286244be4a6815f2224769e20d46b97409a9fc2f6fbdeae18fafece3d685d63f8e52b5798b8730d6e4de621d7cf95513906eed575efc01ab5b2f2b9b4a8c499d5c3449857cbcee7b5068b5b198e5b9cb216c7a1222113def3152fb52f4f3ff0b34ea56e9990823950199c12147bd1f81647ae2402f5a47d59320d322a1206c8879623aa5c4d8311cd739266da074798c57125df92b6b4f08f264b579916f10f3d18d7d7515fb62efd7670d6176bec5990bdf333378595a7f5b7e946667a74f4c4fc3979d307deb8375ba23463f810c173ddd80eaa9f2952d67371fdb461508caa74cd7bec8a12d9ca287b32bf773c83f516b2411f60cee708c2fbc7aff3e87c7072ef42c181efeb01f66a5d1d19e43047f69763c3cd2527dfe2f73b114acba576960c971b81cebf86380ebb76ee280143a13054fd1ed0ab7b134d6f8b5612a79a40c083360ee4e275c44a83a1b4c28d595d280f282d613171afcc795fd75d180dea5308dcb336c92952c90e7268bf38adc0ce9fcb0f9ace6a3f2402275d4b5e2fcd68b8b95df894acfc8cd831018d763d1f3f68d7eecb7a3461724fd6be4e49470f01543ead966c5177481693089577f1854996590ae9b121a237f457567105bbe05735533179d70042aff06d0e913339dc0adbd4122e956d9470e354bc540751044f3e98ff63bae81e5cd34e1f57b2f497600f8f055ff5639c3cb488a2c98cb0cc7b5dc58e23598fe358a4bbbdfa18884e61d89a022bb3b66194c9971b8c1d051c4c4e3b76c7c6486dfb13b9231e240fb8606abc890b40ac8fc3fbeb7e363e4c89418d730cb7979410cc5b2fbc62deb0e57d98c74dc94c6a4847ce2b24b60eb09ac6b6d473e9d84ea56738e26fbb9eb216b2d7cf4cb7328bb7aba6fe816cf81b0dadfd96e41212496e5bbf8ab394a894280e68f28f080fe117de9fce937163b5446b2bff1d838d7482158f7ff08b2688bc15f88307c2f3f013c761ca57e1c623ea61867c052106e888c376d6cb2151ca131b91c2d3e53776df63b43114fe633f33772c737e1db0792dea99d2adda0cb1b0d194961ad3d7539d21ee0d9aa0b3dc50ed7720b19b459a72b1946609d88a112358ba1aefca2295e4e7cca95a2159793a37141bca7b435d31ea850ab70159c8caf1b04f78de702cebda44bb699139aa184c3ab2ee1dcc6ddc7246b56f3dd7b6782432e890ed6adfd2c0478122abf8fd87d774e7f21f6b51bac9118759a0e52c861571e4c9f500f7d4e0f969b9d60483d9f63694bed7a2ce1b31e83350c89e8cec6ad10a2fdbfac15a5abcce82e7c94257518e64d179330de91cfba93c0a270ac23ddf436a4b9af197eff7ee59fec60d407b3e8795828c17b9250a439949a5b612ad9d9e9c030196fb820fabd67d54795c5677c49375c6939507c62d816d943976916ed8ea3fdd7d94954540ebb184c4148b19be83b1dc9263ffeb5b5c95a3bfcefd63e3e6ed6f3fbe2ba1e36838625e988e51d6f0b4cf2b036e359f6faa143400dd290455fdb975105e00b891566042400b733c8ccf67f4e7611afc13ec0ee2c04730a0c25c056cf34441fe51b55bcce73c7ea2bd5a382728fff16ed6800b9ebc60d866575264ce2baf06124c346131ee07f68849bebf3d7e97dad285458d46e52beec564b0c32a9950fb537c5deb580be422729775a3a00020fd5baca01ef563ace7f7c3ef1fadb9322272da314b995c42c34dcd5d9a99f59048977f311716e92b794cd9808a2cdb77472b02e5275f56a0f1ac92aab624cecf5aaf1ab84cfce1457b41e139e8320e397d8bf273130d160137a019baa55ecfa9313c646042651f04fed3aa9c81ea1a24ed27d63f1e6b32de0688ea9425f4b9cf6bf8803d76369e401c61b372246f8494ad9397bd3bda63af1c7bb216992b8c1385278a941a22f93f1eefbe26d7de4ca4550cf1b370243e43459d4b48551c402c26b13a0e873ca9204db704722ec412d36efaef10a791d4b7b2fa999bff41dd280e077ab06d9b1258c74afe1ffbf94952c8182dae06f782034aee2e8f53ace67e1ba9d7557dbf55a43861ab3a2a49ac0e33b743ccfe01f55d0abaaf5a4065b58a2856aa99ac90d865e429337f43136bd65e6b209bf991c7dbd2141a974c31916dde6dffd01254a0852ec5ee022e6b8ff2656ccf6d49e266d773d884d252474bda44ea29906f82221175f11c0c8d5732925a3d8e45cb3f3bfef1078e5573f7dd90543b845d307e40e84dc5de577e67e4236896e02a1d10cfa6a7ab8ab3cb1eb7825e4437e4161fab0b57bf7718f78cdde3ed26dd40e9f6af276beab1a3ed30155eaf34b28aaa9c8a5b16a7bed3eb60d1d013e2377d37017c5d8274082fb82fdcd4b4a451820a6d11954bb80229ae79080146760f901204f221eb75cce69eed4ac29333ae1aed8a43dfc31e3d4d6105e6558e1e81a528cd006511e82771281a8d6426b4a9f30cd632faa41518917446d8987b448d6543d0d128e715426c75281bd5a548266fe1feca80eda0a4f91a55a93f5c75edcd48cc85654ffaa20f7ba9f5af5acf54746ab2660acb903a684cafd003eae3e54b7b1064105cc84a82875df209d6a084fe2ee8eb04135d1a2453a805c7f3b5074d102e085357cb64bca05d67f49527a52916b4d2966b1c05aa4c8b6b52381fe648f00ce022247fccbff45a9affd87882b59044a0120d5c1048d73ed5034e3b33b08a65039f4bfceebd4ef48f39765d0578e91b71780423c249043c52ba970591a55ac32ff7d5b2ffcb05c30b2e6b835ccb4e9137da6e5f9056fff95733b54d9306b27f326b70ceb8500dfbee83c8345bc7d5f96963786807475459508ca4b539886d2a43497c24744b49ae280a828ad80171b3895806f6cd77bb261a50073c85998c47b27f17382aade29e490785120611ae0306bf8c3b6444433dfd95ba0a8e758c6da001d9fd16a184a86b5ae9e3a70af7587f79f727775c9fe0a2f993fec324553702eb1c5a73ff3ece79822f8d29253aaeacc1699516bdb17dc8ec516a9fc67ba6b038b0c707892a9ad862594b1d0ba047f452b8f3750c13f27762f3cea5fd0ca2ff864739526cf3853ac0bf4db1a49cdbd261c45d1cb6ca89bcce88b13b9502bd6e344eb0676f28f07eca04b38266051366468dc483709d71166993c589671d250d381fb7b6e8d82014ea005d0dd9cae24f614e4046c3ba5ee571c5d9c7f04d45fd042f3023429c7ea49a4aedefb61d5a88ebe593ab29bfb6d40840eef2fc4d92e70ff0ed4951afaf5839c353cce825bd3f2687ca4be7047a616c171fdeb49cb5c9206fc3895bbd2015743f4c505bea5427be851b4e4a46d152f777b46e1e981908aa661b24c85b9792b6ba8ef484907799a6946f82a65f1df964875ff4212daf36415a274def9dd51861e676e3486b0b865ecc64a8630871a2700b68ed68831a9df02f9cbb2bdbed2c80351ca915585b47aa73857f3b0ca2ef05772b2ecc46a059ad7c536fd64386456229080b7d963a8a63d4ad0b7c1b0836f70efc75ea1f13075beab1915c0076afe3b4e9ee523dca56b4c6340cc0e1a4c71a2fca87c4c84bc0e31256ebdcf77834a0cde2020d8dd1eb5f91afcdd5139fe3f0e66b957d91a3edaf4230fc3b9aa5da2549f2db2e8c442178c7cf70ce3cb1fd57cb475ea30fc68888f820ce079844d616ae23da1e391bbd569fefc787dd4f247726eda6660f04043481b02983a1428ac1a23cbb0ba53706b6379c69e3f861511da4d20d4fca8337884988c13cb6ee719f8b42282711d9616de18d9dc04bb23cbba2ae5f5d25e3a810dfbf73f32293cd18d3112cacf08d8c8bad8c3ab7e17c3c66c80a094b2d2cc96a24ff6e612c27b53ef4e29930681e05df02ece3956057378db29fd3992349478da5dbb0b6a263a6f92caa097a397760bcbf4ea25047a15033da5e6ba5a6ba4d34f516414bac47ae937e950df9ee8d443b64d5e490117ece6571c6b6ed4e60ca21bb84bf8b416c4f81c25e4eb690d96b2187e327dc1337c63965baffcbe7db6f5976ecba6f7e6f929e5dd361c0c7c35b68c7ec191ba394ca51bec65c985ce85f6e0767bf0af86f5209226deefc28adbfe9720e52fbcfdecd5211237c0d418aed69b74281c90955ccc1ef1916244edff3d80f4c4e3d862dccb92beb2650ce4535427b87f4e288befac1dd74a97ce271e5702712e5a7350c275edd815cc3af38056ea7bae59b8cb9daf774381487b1ee8a0f517eeb36de8bf6c7d2e096dcb9e7305d53263b423de9e13fe5a03a625286d9a0c3c5a13756be7ea6660862932575b5ed9e8a67c352349f6e1282634ed1bc92b44a8cce4b9766f510ed9c8ecec9c1d03e2749f4072ac19f3b0420bf70f67b53955a555dd2c3b22daf7fbebb559632b96eae417e5aee7ea64a4028c998960c981c1cf39abc42f7d07a94e2ea29660990f503bba7289a18182c1fedce6e2bbdcb457dcf6de2a40abdf845ce4f801aeb394d17275671a084f9640ad4cfe69046e9e6326a32237b4d240985f851b26af425d50cf44dbcc8fc9444861cf5af00e4ebd959d9c1ce9caf92124cc2f7c03a99077a19d26dbea4dbc4fad5e7c30f04bf9efcc88c72b414bbc244e3e70aa84d3609d48b2eccc3c8cc7a8431c084420558c6461342f172927050200a322c6e4cffb0936c67238e869be8bb85ba735010672a6d2db30b966f306aef50f9483bdde343336683fff398b43a7f9e73028b8e872a8033f9809d3e31475392e3bf366342a873ed0bc296f186fda48b42d7040eaa92a8a7335b46b6398907344c5924ec7610f8ecb78160549c3bc557e61851f673c2d46d2285825bd7230b9ff2d533b22b69d7fe61feed60d18d427df522caf9bcc3a812e1fc90c3cb785075fc16955f424bd0f3527b0e2e177b3c2a0af13132fc196d6579c1cc8368d5c005f992b1dd3c7f8060dad0b03906d418f06288f93ba9980c24609bb4ada76ed6b90738664c182771f426015288f971e621afe78e95f573bd978388e8d5c088fa4061ac398f344cbf7db985267f307a7216550cd7433822ea13a5e48619aca861700b6a478f8b4dfe05301af62c22f304c9d335ab1b27970f58a2ca14d843e719afba9e8b37d86782ad0210faa6ea9e83fa00d94562228d348940f857bcbfc3b4224ab59828d5a0a3678a6030d828af53adf740a2cba0132fee451458498e30b3b852c6843dcb654c0d49c44d951af8eb1518e9fe41f6cf6b31648a7fcf772b37eefec154f80ec80e42666395910ccc4fd0caf45a17eed47b25f7d4e6d13207bb7d6ea8577af986b2d70ebe116204173c1bc9a0717a21dc76fc5f52abd06b7864115651b3229530bd91139788e6b1aa3959ec4b22326a8c6a210317f34589b33e4fe8496030926971437311adb0ee6fa3531d6901edf1aa691ec91928438d0bd17ddc1ba09dee2adbc42effe93de32189f6409fcb3dbb0e86b5030d5545b60cc92424414e1e83c82d11f58a86bff184e47cbe90416789a65c3d30a16fe41d1a426f4e1b658bb8d81c1f2590ad991ebb19e931fa619d7285f4d461816589dba60341907b472a55863f88042ea8dad3d67d7a5852d0c924086bb9925350c8d538bc2d1f7504a568d63d8c32aaaac5cc9d37a70d7222b4f06e81b598aa727a56b7bfbc4124d33bf3622e17cb3add5159e1e28a7f7924d638c9abdef20ec0db7510d3b7ba5a9e22154fd9247c5e88a9daf275e31193915315a2abc29dbacc3ebdbe260d4fa5c4cc663188587d3bbe98197c57d84ee55ecc6da8bdae4d140b09a6e315a65a2d3ac53fb27ff55374e18eca3db5b7d7ca6682ec9b71c5830c6c7087d0e44a4bb7d12b5fff02d4c6781f46db698c3c11a2b2edfaa2f4027e1fbd612f4b7b8f7f2527c58e8e634eedff3981649148271c83ad01479f9d7dc0ed003eb91c10d93cdb08b004326d6d9704023e1b10fd8fb5088fb91d147a7b581d711fa6a348fb106d992b78d2430ef629711299b5124295ff955ab745ca295aaa4cd02cf9cf046a444290552ee390c7922e9b59503d04550117cbc26d942fc72649da905469478db6368d02a0eb51a5d042b843c63374e26e2de9325a914205100210c5e39d65e71c5d2ff804c26cfa65f2c7a6054937a516ae80196e0c280e1eeeae78374699664e0115765aef10a4949a35c780ff7affdb4c56f1d2298a7cbc8d6a2ad4550b7d4fab40a50dbd4be0391773076c571c0be1541ad72a12d260b90afcbe251e0231437aa556751d8c1c482d434fab37f8e413f91feadbbf25764319e4ca313a201084220ce6be6b1035e5dd129efb971332d7770501e4e87db937ea86584e339232cbc6ab5bfb547ecf36310dc0ce0fea0faf5a632007524a6eacdca79a3892fc898daf5b1ed037a8772d13afeab44b86167e65da5f36524b41f46d915e8185b28157f2b738e6ba64a581fc1415ec0ad1d50f5182703bafd6182769fe0199478e77d999e05355fa68ae26d934fba91ccf0d0e50f1af6f01a589f1dcdf61b89b469f3adf85122621ddb023f546f6789e102031656dc597d8cc9e97fc6427576213834e22bf6cd3cff6d386679e3efe4707a0f24a72a4b90520bd78cf2c2ddb5c9be86fff14165883d299e0ebac62bf7b28bf0001f0b7e4c3fd0c3b361524aeb28a69a812e2a444e237b0999fdae0d80b3b8a5995b86089cea47b5a05229caf289ddcd80223ad2f2181e9dfd60eb271a4ecb03c00d1085e515f17e6089d244436063dd7875d7db5ff5062419b41ae8279c643a68e3387054f6608aeab02f827946f710ac91c66050cf5f1b88162fc23b3e9fcb8fead55ab0c0caaf9811a7b0144acda8015507359106e5bc482978bb55fe88d477eff982089d1a05e6ce0f922ef614aaff9834934d820cecc15cf70aa6b85792cb55b59e9dbeda9c1c74567688e925a5394baa8e4fc53853165b0e7ec0fb5ece0637d30fc5c97608608941eadbe49637216a746a602e2044b05b210baaa05ddf83f3212bf51e671a4040ffb2f6971e4f2785017e5b56ca0e3c14049e1612fe3e9bd0fdf65e9c5b043b280a786213680ed2fa6d13cb7ba435a1c314695dd085802ac40711b2ac7357aab6f1f0b1f4e73e64dca252e51d4b50f9f5ced9de7f80674de0550bee328de9dc86b03f1fdea135d4b8f11d80e258a0ab2754cf7ad646b7cb9724999e7cc23ad076fd78e34c98be584914fa227fea5add876768937ac0918afe608a6e48115b36c0c901ef61b752f8c305f45467276eb3c18ebbbdbccb5e4c505d9e3117527f2c06586bab2e3bc7b9cb86c957e820373c56e3edd4cac38deeed65c44d5a93372e6b34ce4b5d94e3c022d5c61090b69c834a1af8d7f9c72d806df47852f17308bd687564f194aefb00bbb0476e8585cd815819d77092df0db6d75a7493e1689b04c19d8172c093567595774a0f312dc81dbe854b5fd0b2bc53ef433e01f04b1dca644574facc0f13b80c62603ebac68c6c75e0ede9666f2b2c885a9cc76c3df56d44134326d1049872e176b5af7cf797459514a64191f27224597c2b3bedd6c348a16548bf0d178ed28b2be3c8c167942fa245717672361626b9e30491068f9fd97f3d545250fe1bfd791411e43333b4c218cb062c4e7ce664935daa55b046fcccd13099e593ad8e532a348cc6fdf73ae259a05885727580ba3883bfeb177c7277ea29c6403803de6683703e139451e7eda40cf57565bce30f0218de2c7edc37a00426e26b2fcae0776326ec998937ae36ac3913adcf844cc1f74f3a56d8ea401dcefad12012ec11a713d768a92d0c6b3a87fb4d1caca565ee7f9193b043b49784e0fa6b4010075940efd0a317996922e3370d8451207ca27133abf5ad419fa302c5275c90c62a5f15ed8804c79ea4d18d184c848e046ba323b89fe958a8f7da0ce084c619887013285e21ceb692eaf566214a97fd92cc7189c48cb0d8b1e4aa0a0c8fcde3e9784da3de5b423ad13937c6331e1505d55cfd848a340ac195792309407d47e6fcda5f9640f41e83545a3111e2c9c29ad2394933b6531a5942c0b0a5a62ca604cca517e1d716a4d2c80499bc60ddc7b306b262b348021f5dfd7c3eac0b3fc6271fe48227a1f5eb03b5e3163ce44b097fb443f6a8966a16e664711b0c983a66751ef0c0fc0712ed73bf1048e379ace31d81ba505bfff1fa4f1a166984bc63caad148eb957b428df8f5d602e34d06db28e2c0f8e4df063794b25d88f09d692a1b1151106228f0912be2543c12d9db9bc5ca6dbf97764663f210da897e281324c59ad3aeb63c1cd6a81cd64c448196f2e8c7d12342d49edb6714986f0f15c1ff300ab3863341ac3de2fe50d6a506f2e60854d95b813a94fe0f9a0e26a0297d10d93230e2417913aa2613af83ab6b56f50c0ea4134a6acd224c3cd70f40f8f782756d260525aba1ed38f4b4b73303ba7efa172a70746e8778eb16bf601e6a6636cbcdf4244d0dcd62e33b9820fada8baabba278180b596a18a966dbcea90f13850bbeea41f4cf930dcdce3d3ae2f2b6b4744bec4ff2dd73cb2ff670fdfd6af117eccbbb8d4ec6638affeb6430abc3e3600b326081eb4a107c5ac26b117e2308fe9496efcd1a8cd1e32b05f3a1e9286a3272b33b78e8bd533db83ef8db27e84d1e1fca968de208d6295c7ee08d0b5d2aad88421bc72175e5db882d56f192a03132062f699330c3022d889676c52681fffd2ca8cdcf8fdd4e39eee57464b994243de7a26d02113e6c2667ebd0c77cabef71811c897988a7eca6e3ac83b9ebc4b3f4f712d5446f3a3b0842f6176b0e2245df375919289ab61a544d5e2f77e9db398f1b2aa12656fdfcc91e6edb8767e09f2126f67e3a9fe849f2a84f31328ff4919fec3a284a41876bf02f42a68b6b885f4090838e46dac61c1d066d63b6e20f705afd1b879746cafdb0a4ebe0ba534cad76907212314be3ed6382ddf99756e8d4c65e3a5fa5655cd82d1ec454361256b94b4b66ed59e4a884d0e4b1dcf3d2346616633190725baf9f976b52e66978367c1e5a9d144d81428eb826cd59cdd1e4c3ff43dbe5142e25f96dd95dc8dd4390e82164db05c9b943ee82e0b854a0fa0af247340b69fd71807abd792732f8a81ea818a7390a0a476d74c791f06de23271ff4bbc6fec1b13d780ecd7772adda3888b84a349e42533c500c81f9bea9c7353d219aab26ca69f43ab5c6a72bec7438c2133cb4ee59966def4db54c44b24f4c3dfa8e5be55127087264355ad8aea1d48f339b3415adb9fe9f7a4456feead2bbe3937566205709252f614e8ed27e8412cdfbb31f7769308ea8957934f75963734137bd12f95bc972f955d680a4fd03e368988f6bca15a2351205ce4bed37bb23be95f585d994578293b2ccc0f7b0336fee9b87609413984bd16b93ee9495cb1552b11bfb2954f2c79a94585ee633e1e2ef74b2ede9753701b61ac82e2a77adaaa48fe76b67c5e6419b0a1fa6774757df2a77b820b80ea9841ecfe597ab89543bbe192256f64c13e7f90cb1bbeba1590d4ad613f163adeccc174a67e9c8135d14f5d29da297754168569c253a4c3e32236be29cb57bec9bb085d3f9a69ab9d17822a1167e7b83d83cefa0b415ce90b8a680a2f6e99c3654cf10b283e8f8118d1c851e6639fb15cd701012e82b182dfdd22e9138093f3e813abdfbef5c8c4e5e389c0668abcbdae23670eccd58e268b1c9ca08ccc121eb3c21c5fb5c9f14c4a1f46aec1a9511978dc21f6b2d293072c8a792923ec5f30d93486e6ce4d8708c0f316f1417345c6f38b0fddece6d5f2dd9596f04d7d554517156b2072cc9d319e36fbb0bc7d78565069412092142961af9c12389d5480db870e10ad5d123303c4f7624a7dce340cb47b5e4b8f2c8b89eeec3cf998c87461194eda0b4cdbe1afb92bd2681e6a372eff736abb1473c75807ab38a0b01846fc8d31b7fa357b3ba235d3d5b25346b5d591182e068300961b4cb7cddc0f9f5c59388836502cfbd4118bd2b1e8a7f2ab856e287c00df5507ddd4d6d949e75d6ff2abdfe8b7bfccdad3104a793f54791f5474238205fff8621391623b8ccfebee8773dc3eab262932b36a43c7d8a0e30e6637dbf97c65d24dae9632203d45d7c3204803ccf2e1b2c1282382a78fff61222c872fd755124a7d9c039a3a9739bfafaf2c53df07bb85388d196ac51544b420a7cd1b49a9a0633ff9bb45613307ef545c50bb52e02e30aa4599ce9a0ad9b2ed645f4ba49738320981afeb416595061b537376cb7fa55fe794bb229d40633084e039cf14b38dab0d626bec0d3e23f3c3c1a3ff6edc55abdd12ea4a0c3bba05c11f6bce5e47926677908ad8ae80e328c283e297a742344d4d2f39fc353009ec0bb6eb8c0010b6f0b877ec15c0f7319140e67d1f163f0a99bd6e552b9e06ac42dc7f0e80fcad03cf59a4f3a27ae50f2bbb5c9716edab830a29f09e8c104e9a495fe830f622e5a5d658cc183bec9212651b49238464e5f0f133a27ee3ae7f70abf0feb7eeb31918c9e35b0379270943fb9a0c6c3f2dcb61f92c675f4edacce66ba5d25ce6549048dd2659e2faafc2778b8910db1ac06af65dcdcdc6d0939ab00d12e855f21843520607ef32b9e23bc0b31fed430c82440fd1768036d2ea33403d3e4fa45afd584359ee77ad0e0a11f94321c110eb19dec57c706f450fd6fde3fd5cf4b4f32487313c60ecb9ced88b28d4f361ddbc78f069cd49474b771d197a06b914fc6d377baa3bc121106bd9bab68955c9114062345951168822d6f877a783478ef80e8aff525d0681d2697a247562a72fe17d3c4a79c849911e4ab0014cc214742063f9d3c62e2db99509c12a332e82c3d68272ab6ff6db70d8cd81fc5ce8d52632e54eab41b4389a25abab63287f06d72815d927e6ddf5af13451fe0571747e555fd962551da74afdc0b64cfe02226313d0ea283fdedde49adea80388bea3dae383037e90fa6e432068532a75dc17a539bc9014b6715a6b949e17ac45cd8faa50b26eae7780e4ef949c790d5be6801148aa9d403ddcf727686c62322fbf31635decfc009c8107a17e0bb35e8eb88ddba2e432287bcf87db59d603027da72cf484545b950422b5efeb661602cf569ff62e4bdb47fa0ef02c3a8a022bc89383169b79f701db94973768c10fc7867092fb90ce99ed7098fced00dd08865754c17093b2dbd52bb97f7572b6c38ea478f1c20d5d240564c4279f020bdf9a09a102a418cd6c9c67a1fe4b477b75159f01e1d45a0a81a859e1c705ed33f1ef491adc5fbc1b428b2c7c4c8397540c3ab6a6e8a462212de50b1e9caf576fdcc4a0f11004e1979e9e37191c4aa4fc66ab9b389b0de22e965cfe10e6af6a586f15cd55b298b313bfc4eae3a02e476281931d1ca80fccad1990c6d2e0a26e79db88ac057d3c317494e2b3bd43205437798ee2912166071e6444fbe132a7c6602e2d3a633569e39f05ca63b03069e21f88ce884fe7fc3ebaa5fd98ea729e669b568c0ccaf855776bf7a28c4fff6f6a0b2276e3b56e40f7b35d72f85125af8eddbae48a467833c31a425124fd85115179ecc675d1e2f0b6b6d4bb339a1f2024133614433cfb8f612128ee5d950d178ea5628664751435a1eb6e6673bcf7ce567bf49c464a4933ed04b6b1d52fc983075a85ffb02d1843a28f9114204d1e3720ebcdd8a7dfd8796f3ca893b31855d57e0a9706e54ec88b09d02f1d38296818773c7def981517fc7c71c85577dbf8744d6cffff8fe8ad21b7d300ecc550d7a9cf35605a67dd07b6fdf949b79c8cd5d729b19b02d28254e6cd2d4136240b16da9817fef7c0793b1ae4c98dc12ad9975d0b25bbf47871040c5be7e0e49899e4972ef5b15f79dfd30aa587803df32410f84c48de5f1c65a20c37245f8cfd4c4e653d3fd841b6f16d212b86d77764534256e0a5f19b705fdd9513019fa03dc704539b79aa46862433d3d203a03873becb072059dd86aa389f87683f59645be9b54770323a03aa45a4bbe9358dc1638cdd9b622d26459a336db6569e47fcf4bd4564194ada0db79cb62cf9f363d5c6c226e7763335ca5e4d6329ff6c06a463cc25da5e3a7b56d6b8a13f731e234c387ba0460d627e71f0eef080ba3e430d6d34c2adb400c342bacde371874a6f56e34d45da4834f75ab900a139a46af3c77ad248b93b0832049f35942b8b356ae7eb0ce207a964edb2f20d097bbf39d64472936728a559c57759bf49cd70240d74449615da786d804a43f463b571d62083c9085caac1ca9f4035e8df3b33969bfa95e7d3eb1c91b0b1103ca8a9bc74f0f4db460a4701b1397882302d964129645e8562d117a48d16e03463cd13a3aa4d4327b2c3c8dc35ad426d7d2f044a77346b9d77a22eab2941c99499019705847f01c6ded2b7cac939451878439ecefd3a629304c8b472ca723efbdd3745dd4c35138a5a836bbd3ec7ed79c6eeee5e7bfc661413444d1cf8f8c38e212e9760ecad62b4308a9859621aab144133dd8c5fbf372004ba9da35136d73b212ee67667bf9b7ca901bbea9b7308434ceafa2d423fbf43f63ecc3ef385983a28bf1e7612d408c335cd10d96e3957fe4d14e1196d557f1b678358e14539b1462a44f88cc44d4a618aa0a6dd1c72479a299bf37a7bafecabe3254053e1831c83bdb06ae9ae94fdcce8a2e8060ea552babe2bfe64cd3f4fe1b53a1afc2145e185e0e875455afe6380a159b2053259dee1c311b7263fdca3f4e846d65ce1db34fa9373cf8b2ce6c0d1b01723809f4a71bbc6f7a9be9428ac552696c367982328894e43240cb3cdff5f91006dff0e04738b608dfca22d5d059fed556232327f88bbffe26285b110e6b7ec9d0de2e58cde20c71a8e691f4fb51170aab224f0637a7292b57123e90064e163f36c9bb60e4bf283b49b6f72360abe0037d63e1484ed40558ae225251fe5e9539bd79526f3c87184c00719eef13e52611c16bd811d9334e26f1fca92655f05a2ee8864d3e8074dc3d61dde56485959d225814827d98920e00614ad515b2e59f63b86fd263883cce4ff1c3b5826971e90a801a00d02829fffa75820e843c73590a2e6f186ea51d5cc400a41c60ddd7de898a81186ae6227c74e6898a01bf5b0322ed3fc1a7b8478e3d2d32808c7ef2056bcb00ecea3a8d0b69be36e03083109e179f76ebaded41ba935c1608434637b7f7fccdded8dd1366ab6b1390d548775c2d2fefdb13ecb366bd2968f89ebb9f7fc8c45532c647aa612a8cc06956194e76a53caaaaeb88fda569bb5be14c2457c1b909e4d1bb72eea3e68cb9022535ffce9aac8da619d3660443a2b76387971a2a2781e8f0a2899ce67e23efc24702eb2a12ea4ac7c2ed8c7113eae0e8de39ba3dbfdef431ae94655ed857ae3e1e8a8fa6731dc72b32dfe7f70590be1069b806319b73405f084e8f059fb9796e7166abd1abc616fab1680dc0588d223f02f3040fcf767dd035b2a13d39acc838e5338b5a2f7f9cef7984389b9ae5f1058d6d88d51f9d3ed8b4675a1961e89df56bdc6e6132823f8403b4825b6ed95d13c367a8c484d61088fc442db898a5258dfd5240dabc86c2eabeeda4926c827997001cc222840747f3a5214df5e0f0325be728d32d365ed417c602a94dbb30557936d37b5a6add15ecbb7b731fbc5d6a96934701c16b2ffee5f954b86c015e48ef4fda3b52c680acd3f285900716a84c9790742c361a5485a19a9a785cddcace54cd4c9a581a9dd3bb24d6fc3da1c41f5c8d39eeed2702d4d9a21b453efc4f564a570e4c8c605a9ddbf3dddf7642cef4a2871c18e00436819446723db1df9722954eda5282e727145590d36102c28bd5c2f2e61b194770d297649c4eb17ce16460079ec7af556241c572310c56d444b35c82f5556fc60f195fd4cc1b172b022d7445c4b4a4dc1b3e0661876569f59ed99bbbb1dad8e26e0532d47321283c2ec9316e3b82d64ec2be8dfe4897b961de342eda8d4d4156109c0b9e9ef18ab70b42733da505dddc0fb62343fb0e1a675615d87af5cb94d7a7e5b6f2a06d55986037ede9a4773f3a24e72f3c9ce13b0f0785b9f7d19dcaa92a347b291196c1423459cdf17ba65109d2ba631743c8c0cfe54e6e5b51bd848bfa31518dc8fbe94d52fdffbd0368f8cb0f7c537d8faef4747f72a7ee4f05015319a7220fe76773998e6b6f01d4fbc683ecf7eb4a898fb3ff0b45da997b8ee8fadec53798e5dac41c137163b895751bbdafcc6f7126214f351390ac426c41cb281eff2ad5da5419b11cc44ee72746a666e056af9fa896c68c6e19f899e4b72d5496b1ed9a493480a96e19dae1474e472ba2a0bf1fe26fcdccb20b8abf59864290e1586d6abe9ee006b434829d01d14aeac22494c7542e4e008d66da6d3b926e4f3a48170b9da53f1b86ced61eaf1a4288e772f8c2c120b551164cba9bab44b2199836c8f55485882fb1042c3a85ea234b6a6a573b8542c41f66e3ca770ce9b2782edb682683b1bf29f4be1b9d6aeb5f221093b3a1ea3e88966619ca72e393e23c8e9eefdc6e87f71441aeec762a4d150ad80ba0d1a3debfda41ff1bbca0957711c3127549c45b0f2d17529a47e8d05f2c471644bef60f777ca40bd46c458341678101b04aa2cd30c780c337735d995b10317d95e4ade58bee39d7738e8125c6b77a64da1739cc4d27a704aceb0783acbcc7485b5ce892cbfe8b77b46a7d5c48ee9fd8f06c4b591afb676c5c6fdebf8ded935d848877edb6d1e269ddeba4d6cd22786a28864f38f6d3dbd01c6b597a6ad0595067f3c7fb05b946a91f08a911150b0f0b1f8276c045151d0d4c9d81bf778198ed3a1cccefbdc47efe29edb984c545b7a6e54969d30f405a70c16849e1861b272f7103b82c99520d2070f22ffece98f2fe34fd0f8cdfe8ced6314766680d2826c9869e7ed22209790db2ca043b19845566f04ba0f25273e3232605368dd78070dbc573eaa9d3d0d7cd30754c15724d4ab236efcece4d05aaf800b31dfa73cb17f55765e04826a08ed826ddf7dca33e6514755391c3b6da0026b48894fbbb92f3cbab2cd673faa5fe9f57d970ef240f084ba56a4aa229c98a4686ad47cb1e100d7b856ba3d6c041124c9960dd79fef5fe750f5c5a93fac2736363c17c22c8fdc42ea658dfbd0e7ce7a986a5517b6ea3ae082855450a05f6ecdaa99b97e72b27975bad426433a06eea0b2809ab38d8da41016cc2c848c34f87ff973a070eb2849695d20fa43589e177bb1dc082c001421dbd76dde3f4b08f7109ed8adc5926efef89ce53a64648e2dff89401e841c943ee77cb09363fa1840e4805acb34368de1fefc3e53aea129362d36ec547e26a7c576046c0ae9e7915a66058c433ebacb610727ecb0169b8526c8ee3a5e7946c155f0013c45b26667a549bc4587d9732ee599ac140e5b4288604338f72ea2c8d3b9c9ae8ef2f1120fe865648d6f9467a9044c9ad0c1b89555d1fa48a1a0288c07acfdf16d3c8db5a58267f2fc6d4fb550015cdb43d492d27e2e21686aa04b13aa4e4da819463086b91183c5dc00d6ef0527f95420f1bf0d0259892954308597953968697f1b255c640c209c2d37374ac1d0159eee67f0c68eb8c931d7fb8cfae8e33ec69d2719ccfcbf2f84ad970630d09cf6f256626c27d27442a6909bb9d0499d53b9b7e10f50f9d5d0d80dfd1633f927dbfeacf23415e8198b6204856965dc516fb9232b11f954afc817c84bbf1262a55f52e59c4f4697ba9bf7d54b3342bf6fc5f04c4062f61e1f64ca222e0f7c8979b5043c027a65e375e0a6615c88053088090692b5c1e0aa0cc92efe431f97ea17ec9a81e740349aa07f81eeefd86b62da86d9f143adf9742a0b201ae583b53a2b38f4933e9f177581511f81d2aa91e80cce5afac51f9c5b0cf6ca3ed2fce87eb6e8aabc7b1221761bb883a116519920b3c64588a1441fefbb5129ccdf02bbeb5cf1e7548f1b6718e85053fc2c6b7ee0d7d9d50e98ed01ace72049302aaad526c0ad384c259c923ce07bc15c602498f90aebc7d904d381e753191cd470c9b1a99fb95b0697740f36f300cf732253ce0dbb355b4cc65dc2e797c8adaeed1448c604f73e955505a68a3e8317d3bc09dbc3fbf2228de17ee0c7ef222aef53590b7085b2b8150f0087aafc9d98f72472201571818a25cc9d87472ae5db8b3c5a7dc39ba73a0835e817140ca6c92e8d4f9020f2f9750516e5a57952935f650dce349d304b70382ced9f43ad601c19418d977e12a6b4561e14d592517203aaf9537e43a16a9f3c4c5b35c5d3bd7e6b4d26d6b157c71b653b3f1c23808661e519e4e2a1085a28eb5f9ea4c85decd8f10f1203999574877a972a53ba168f9a57d90cbbd61f960e66a986b28a491550027602ccfa56efbd859089fee97af11055c5b8936b8f164c36687b0ee8901d797f5e9c5557a508d105fdec6905e44854f4fe21cce176251bcf67e8acf0c1b8aa33fd62384af66d302442bc6106f6583dd18b497296ff9523e763e4429ec52d7c88ce1dbc795267b640875c9322dc35ca832f18095affc0b2e2e0e65ec55bb306f8a6312e514a976637b70301428582a0c2516284689d033e0b89bd5cfd48a25241eedefa762620c850d37ab90e4dda2474557415a8cb68e082bb86741a1cab05c5a7d0d4b5d38e4fba7371821826fe4bcaad151254729bba583af9d363082d4a9b5460c32d551439af93ead8d36f03be2405ef1bce6b4035e90a52b09456c476058fd92447174e015a28dcf79a6ac8e793b3cae88c966567409db74d1df91352ffe65777ced2d8d1da6f8f768ec2de69389680d1a0ec78fdc284abc0f8c6a7cea5a24bb5bf27d74d93b0c682b9f0d809c72bbf714dd1f7944c481399b0ed26bbeb4b319f0256110dafdc6115685b0f8c5cc45eb67b35cf49cbff0a5df1cebcc851b7dca9698bdd7a623b9dd146dcfc966253e11572a7bbd23c69f7cf279d6433a12db780e3098019da0bc25acb5269a3620ac9a78a5c763859e4aa6d76a4f9e352a0df89221fecfd487ef2b58cbdb984e361ac3929618e9b44689db4ed5b0ce1e166856811ac7af87ae89dfd3f263ee41c188b00a1ca90d894d0402eecfe67c2a2b6ba3be35d8af0314007beb051f0b7798ab546b911e33bf2a845efdf91eb9b789af0a53797d94fdccf64d71e93bf7e40d51d0b907b2ca200ecc01c444d6f656ebfb5dbdd617c2b65ba56950200074db4a38800599a9570201d007ec6d3d8b530a3568122d192b3fc872de79065d01edcff1b3b0dbab967c962f3308c2d5dd97dac537601d1726593fbedd83648829887b087454a6b468203942ebe58996599770a316a6bdbaf37faad7bae3bb0708819994851681928f37fb99d126188b7fdc6f752087c5ecb7344296ac8907d38ec6e241776766c5a3e4678a0b4d51b959fa0787a8691f9365590bd4e57bcc573c8a644094c3a6d8cdc87764cb78316ed7c7391fd33a6734ff4c02f1fad221d5473e0158411459a502f57aceb73e32a9199944ef963a0ffee7c91299e566d115102acb9408cbb83dc10a28d318aedc8f2349df57e5a2c8851b21f815dc5a0d8181929ad00ccc30507e480d46ade40f9d34ae04efa5ab52c4765df74075dfcb714e6e7a97bc5fd82c59679c4537e4ead9418451f09cfd6c17ce1a945e19b067badcad116bbdb7fc36d19194eb732980820192dfbf56126004fdc6951678e58b5ae095d6402018cb73865d0abd47b5cab6ad94347ada7cd45fcf777d57ae03b30287110525ed2bf302c2c5e76ea8cc78861dbd1cedf57a27e712b17554fe4069bb1110e65c0597a778b2db24ffeceb0d4081eb7396eaa9880959a42a6edd27d94b164aaf6dca7c3f22518ab36ab406278f540c4ca5d058755624e49af3d749aa3676939077906e2637aa3bc50e88e47cf801c8b25b41493b804c3770feec7c18d7f63787e722c8e5514f4321c190ff46013528460be14d92976a187c488c9d196656176ef5d9f2ffb2fea76cdeaedede1820aff7147129815f6f2c64168cbac05a9527b40d3f1db450e774236c687b6f94fedf95f071a6c1444f5a058d068b92ed36ef6cd1659db1fd7d2c27a3f5e7635cbaaea09af373dc1c84e72c82112d8445e25cd5e892986a7ed66de6a6e9abd42f2bbd4e76d3e104221f7ec70f2bb1ffff3a93b6550c670e04a9e133b66ab5fb7a20422be368ed50d468c88e29e50422353b312338c102295988415bc01d60b727988d8b78a3b39e1da105971dd34d8666fc34ac1c19eea1136f76cf5996fa6aac999596bb8802dd784c3f4f13f7ecc2475735e83443c6b698a38982186a79a3c7a52b8ebc8420148c23b54b55b0a9431b41218f673de1934a6c3ae175a7fdd6e12d46807dbb72f83f5777448a708261b5e8df7c5547cdb3656f584026ad5a632dce344bc98fa0342de2d3290af75ca1437f08aff9b22e19f02df550cf5e93e0b7e958f4be26731583a9626a749748fc06d51f6992da3a5532569634aff41656b154d1581c02989d684a9d78f7ce9998b5bac6287333001e2c263a7ba8ca699e631a2939d1ceb80cfb40dc2d41fa0ec6c9f6f6c427a2889050ec5abf5350a19397120aa840ca55525ba771cba6881743ae2ef59fafafa56ac1dba5951360f8dad555adbbe2b70ae89539ccf07b83623b70285c36e6f29a46e0aee9b48ef4813c347c3cea2bc7b8c3324b3e3ec553eb7441b54926949afdbb43328c9ee6f802603c3f97939afd4ebc1e3080192fc66f49500e292ba95534f5278f4f86c658ea4eb48f3034f83c4add833b1223e909e4726c469eb4f8a6a5649380576fc532ad32a3713369b6287c4988aaf6615967799da1685bada26793febbad3a50d7b1cfe6298db97c7e42bd74b66c548283c7261afbc6af7c044f01e27bed9f6d2b1a8b01204a7d7c7eb8ceb02715edba4a48c2ec4cac85869a5f6b9f22a5f2f277b40a9270abc04f6dd3da775e0163e66fbe5538da7bc9384138c7760770ed9331bcf796c10d12506f9b8bd8b53cfc9d0609a1d8a63903768d91bdc0788ad75990cd38b0b25210acc07d49f8b0eceecb61f39d8ff78ce57e64ca0e35414d5584a89a3f3bc676d5970bd570f4892ba5f762f30181e02c96eafdbe33a5fbd9b87504cab413f2e553b5a0e353510badbb15c5e4afb8b6fee512c03a5f45a8ef8d39bf852b6689b7baa4a2b7046e8e8a99d9ff6a096567f2dfaed4d68c0d28da08d1dca8a68a00c3217ebb017cf7e9d49bd5df4d3fd13222019b1bfa565b49c9c94adf0f5ae61161afb724b8995db3bc886af17e199d7123c3f12558eb8b1b97b4a006fc241cc252b3d60190141557d8206ec777e58fd50a34fd99cb0cb2cb2e3c8643be30bc8fcb372078dbccc2f9389b4fb58b8c0d86c1b118104be7b25d48a5958a6754063bd1a45b3da33932724dd9c0f8406d67e1edc6eae9b26a990f8361f62c0c9ade2ca5eb162afc297ada3b1ec402eb3583505a0da88f24598edb3f4419ab91f30322b3e0e927d613afa94c19eff528f87189c00369791b6d3c7303c87398f23e0bf1490bdfc422b760cf192f831958c7195346753bef7ffd4f7b810d65cc1926bef6610135345731ff30550bdd95c6c8824c86f691cf368ab8c93811f929f73d7c550d1942d1e05f6e9292512bad11e6b859a24c7d920bc96c39c85027c209cac37d377051b39d59b7e1f073cc303cf24295f210c03c55881d593d945ef63029a5bbcec93c911d3269a1264313542973a7a356d9c6a3f4e83916ff02ef95b38b6c5d9e2e39cbb231652d920a68662e4c852218a71f9ebb35178aca74a4a9c7feca42ce9ec35a64a13e40b772430eec8c8ff50b0cebb25d218f8aa8f3fabe48473ce7915dc16fe7a1472bdafcf1f6465da6bc8012d671a87d04da61b3c53e2d8419916bf6d5b6ce80ea43d31baf57d6400b8adbb4429c7587f438252968f49765515ec956ec9077969b90d910a01f1e26472c5593bb3eb182c133ea285e418958cb126f4f73405cd2c97e2175e68c691f2b94e1430b90cfaa0de2dd40f47af6d1551473f7aa7c1aa84be385b5496eb19f19bd1654f50e068d261dc81d4fd7dc0917eca1b9ea52298ccfafd8512e00999c39de5d6770f6350c6415e5bbf40992b20a75b6183efbada79243a1582ae01968355b01c42b520f23576938a7993e401320920674d78ec10773286451ec6ea046c74b28cebcd6dc23374f1fc425dca55a53b16e0e3a1e7645baaf5fb61e4d492d11f5fd687bef39a029034fc0631d9613b51a28c4de2b690584ecb7a421cd029cf36c4c0cec9e9e38aeed55a9384a13034eca64fb09b8b52181525e0961de7d82ff1f1f61d43542f98b51926935ab870d4a73bdb6d4b7b89516dfd7b575eb46e1c21794d3d20f91fadc744b03c12d07f5a8a906e833a9dc134979272a1c1307b23280ab47381a6a83e6d76aec6adf2adbcdfc8effaba408a961f33b378cc427d8545400aeb14aaf836947ccec2dfb48c23414bf01eff68c05b0ab291765bb69f91eca430180b6ac1ad952a3745c4eaecf3fa88c25d9ef2447b4837c45538d2599328c887c2111995a3e1f54919edd5db8b305bcdfb5428facb489a1e2edf196bd1b96684158f927cdeb721cb62dc6c3ddb976bcfffc56f35830ab43352c000f5549ef73bee2575322316f516669554dee851c6eaa03f4788e70c39da1b0bfbff9d09ec7d5e450b8161651e6c730b55f301592400a0d9a72642f33c4d066ca7b99e60cd245892e942d228774454aa2ec4c5a1d28f0ff8a1c15ed242940d16f24c718b9dba37bf09d089477207e2b37d6ade003aa9611ba51abb7089eb5896c21cc592ea0183a5f75f7d994989be96e0890df403a921788b8fdaf7afa44bcdc8f0b44ba67e3e7ab8311ca769f9f15cf796f9c3c4b0f291706f54a51039026ec559c434dbadb99989351c65369baa7fb821897dfc8cedd94d73ec90d765edf66effc75499f8681e147a0cd61b9062927f5330038e5203f9990470e998ac353aed692097a18dd3c4b64e64a7f87f241f2438da9e0cac9453301c63da16953d9112f26a07570e3507db6397246fc61723be48190bf3deb6a845aadf1551fa89d09cdaa61883dc2fb16a0f194aac5d8ea113a1fff30c12a577c4fa26f373e96a4eeff28c0dc2b25b04abb690f7d5d99c5b1c53d933f2a08e74b42aa62a2fc533e791a282d5f1dd80fb892dc5708548ac3653f77f8db23ab2ac9372673cc95511707a4cf1e763f7cae89b5b19b80b77b41e86bfba42f2a64ae64f6806c07d7b6f4b0de09421eb45062b5a1df2d805eafa7bc9043aa5d805180c337b75ac80b7586c9df767e25f6e1281b478473bc251ff44732e558ceb7a4d0c0aac1fcd0204521b391adb3775c38e9ec1933d09f152b230d8d4ad3994eec4a004936456000dee08b13971b9bef29abff564d8433fcc0034e685a838c6a42dfc85edf1d7d5e636892b409b8241b0d278477cbda517f279882526d36f8adc0c77a332b9b4202a81298f516bc94510f1c4eea1a15b6f39bdae71915da543c036aa4d5513487fae08681058429ca593b931229c747c83b981f55c57415ffd858e57dc8d72886eaefc6a1ccda2354a9267230fb1a9559332e29309801d60a7bb1112663fc74494666c58c71654feac122086c87106efdd373587c7b77cd307558f40cba3ebf61f90b074119ef81fe87b89076bc6cc99a53a180b1e5418e95384784ce0f1adde5d829c78abb56ce43889f7b83c90e9ff57c30ce49b8af9890b48e76b3cb11b646faa0681979741a9becfd7ac76e0d8e16e4220e5ca4bf697df0d0d62a6fa26fdbb80abd723a8c590374518c7fbee329f8ba5506e4ed139515fa8f4ae03b1d1a6729faf267f7ff6362f6d254c15b302ca330fdfbd18c4ebb111b31246b81aaf4dd412f718bc257d07a6bdd9f2e93e5d21d3d8066bf87bff34f4c3b3edced42ff950190bc46ea0e5c7a66e9eebb385de21329d39fcc6bc98f9cba7e2788f186d9f6d277388a6e1c9e781704a054e6b4bc04377c9da7861567e3a0a82eee8b9e98e37817e29ade088c666ca52145791f74d66ddfa30cc31f4fdcd578fc0eb17d25b01811b106a9e175d1837b739b3da946cb442754cc98d8f0ad4165818313820ad2f1b6cfa57dd427f534c1dd86cbb8429cab3e3abfb7120cba820e5116014c37657c1b3775a644afc0599589244c2f0145dce0c04acf53e449b4c081cb701b6dab1ce0b8d7aecdafda0a6f6ecd305c83389c1e2fb126fa68b33ca7affb660ac56522d1f15d6624f76f0e9ec74a67ed59c883c83c43542e949d6387091f94bcd1077cdaad2c7321d1709389a02a2d11b111c810895f86db424be8d33467b411ef427cf75dde57bb6192422c346dd53fbd80c1722ee6cd891cc333cb04a809b38a355b828e3837a1d79ee7e4d498a425b33766b3f6a1e1b663fab66e39dc4d9d1bdeb1faa0f72d525b83d71b513c469a5819db28b945565e461e58e248cab02ce8f4f1d36dfe58b8f4dedaf1d6745756a8cdfdacaa4949578665be6defd31bbc25bbe0dc13cdfc2397057e608bc0d5142ea0a12017174c9429d3a2a690e6fad668cef452d80a23bb9a7ec6b57af1e3a5e0385c46c85e10228757fee4d911cec5d3225e7449549ebeede1531d8aa867608e5dd37f1aacc387371039bf3eb043c5181a6dbc7ce64a9839f7ce38b03acde79276ec6ee54c1f6cd4d8bff177b3662d0d5dcfba0942ae8efcff49ef276e5302a5a1342a7fee3e2429a163e22b7816cf05efd345ff2c779b5c6b3840e103376f7093b7cf61443ba17f24bbd5f692f7efcc3b2299e9888c821b6fd0e25177127c201433a00edf9aa7d91e9f3b4029702d00c286d8a60a5943407bf6410c8f19740e95cbdb449c24a93059b970e3b9da59542c45f8cc3fbe2d1612d460076cbeebe7c71bc1d1d67c1ebe01a478e646ab354d3f60b24163ba6a70f8f136c54e177d87a6b65dc07fa8e655c8c1db4586c04c43567f69cdeac396650e36d5857b74cb9d9e79dc1ec0b014854272937e2e36291ba4f82c22f2265c0f6c040c4c8c4a37546089eddf19f3cc388b3849d07b50867e537fd4c0297f82ac479ac837300dfb7cd6a67ee1a7286ac5589d2b4b457018209eac8bc1c21c17ce839164226d71e64628f5d272b9d1e095ea914442fb6b9d86a08316e9de0abd3eab6797975ca1b75deb46ac443f03c745aad59ab4d7da692670a7024b94d35098680e03b67385d76d22da2ae74df38ed38e5219c739583b228ae892a05514e33d81e5b9c0808577b98d5069b46612f6b07d2cc7cd30b83659b57ed83c11d5727da2034bd465025172c8cbfa3cdf5ca27d7315d3f2407181d497232fd2fd56a5b53a6c91c13529d41d3b534995958efea6dbe481ea334b3386fbd8f2e81ca3f979cc559a9ebf26206279c68df65163b19db661be5353aa4694209c6605ddcfa0e85481fff3a8a449c9685923b6d40cd403f7ebb312b19d6afd14f3291f575ff123d4b6bdae60a4d7885f9da864c60b5c1e1406342f45333e5bf0ac4e0239d1d1928111592f927f8ac9b795a9df144a10c2868af1b092a0986fcb54408e9f694607cce855815b12bbd30797de65080da377fd7206fca121c4a5dab185894035e694a56cd119a6fbbfcfa6381ca3260dbde9e969c66aa6daef9e2d0c1f2b58c4c72d88fcd1ec44bd206625dbe4350cd7bcda09c467a186abf86257ddbf4d139682012ce5acaa165f3c601ab5e52b1669c92b2e90c48bd4b77c477824f05648da114ececf4f760185ef75c2a4f8b15113d2ab4d5f2851a9c6e58244f4d5c4fe5dbefb0314a6b9850b30f979ebb481ec2beffe72bbe53696079546d716e57570a159849b90c84c318a1e901c5df8e3f3d904f5e5ccfa3d84314b3dc5b603bc13584cb16b23c602fb52219f4498e366cc0018b94eaa8622ef5fbf199af2ece8db6cb2924d04c1739539766e26624dfa35bebcea1b5a564494e256fb62ab3371985e3f20e381770b52b023e8179e081011bfbff53b0abcebb5c071b6fa0b01297e4a29b41071be647d7c4d27adbbb57d7581fbec386f34e08f372172f3f33a5e4566f6bcb7a4af15a7c4cc19bcc7125134256c18b17b78903b9e4c22ea77d4fe8a6cc06564bdb7ffccf4d15ae41837ad55d08c15ccfa080508c2af4a3b0388a2fc181468ec6384f13f164121b2ea7a22f9462ed4e9c8d4056b61d302ca5c66487f75fa5812a7135870b8741b89945d1acfeb5ea3cb685c5b6772d1cc5c2bdd203e0e9d3b6cd8d6b49e9b5e8a336602492446e47f08f809aa9df63e2bbad49f7333a7dabefc13c5f6e3edbdb2215c2ce1ee2a3bf62cf9a6b37e34c76d608f887fc6a17352871b97c7181c51bce243034c0c14a0a75d85d817037f9f4c103eb75ced5681e5bbf704237b46c7e1c524935328584c90cdc8588be1ee1de625cb8817f58459c6aa7d270adf3975ced4aaa501739f76cd962a05bc161db846a7defadb75755fde103b968828c68213c898fcc331ef92ef6478fdde8e53afd7a3fd418d6b834cde0a6ca5bfcb43f8cfc8d9ece42e4c700996712b282b0b98a0c7b81806140496e89cb94cf0c31c976dfbc3044699b3b38c80f54ffda069b37f24f4c5abaf2b107fda87510b98d524a53e59d292533932e4fb209d34e6f8e130b1a1d223a56dfcf18a39fc2ceab9830c895631380c3ba355b419135884637ee0bb68991c68c2639d749bd28589ca7b7291ee69597b107347efa32c2cd3ada62b8c2db85a112aeef1c2c73d3bc71ade58786fddf703a409db9233486ab01b42f03447df651590ee161942deba85cdf648a3fe203046621bf3c8ae6ca2ba304c4a28574b188d54b7ceb6dee8bfa36ca3ced17e10160658b4ba969fb46438d5f58e509feaccd4285026e9244b8fdce5e455903c45fafd799662076218115d03131995abcf1dd69e7f08b933cf319e31b66d1a1aa1e488808e9cc701d709c76e4fce171e72981e2c645f016a8400d706d44b589b14d8aaf6649976f8bed3956bc64a83d71b53eabe3bc5abf3281a6ad8928f8aa149cf3d430a78a0ffc02f3c05b416def6270b9a6b33dd513f3900429681151e5c944667c242285d3fd8dfd3cc976cd8806d78a13d90b4f4fa1a622a4bc5451ec67de50e66be8c4f86a5dea5f1b814e8bc9c31909a190a1fa46d7d5bd6747925e9d8bc1cb975038c7b5e13093c9bd48963f52bc9c2bb4b5c2b3a9675935e6ef7b69d70ae21891883fe4ebb174ee1636c734efb9ea1b665b68ea703b54e27035aa05dce85239625e71e29bb8c11a5bd5ddcdf1124ac303f597db8e6ea8acebbd3e2add59c74dd8969ac3f980b5cde2584fe31877f76de903107b561393300e8e28375ecf7dd14b6cf9d8dc12b84108dcfb05d1a6ba8d7ec771c8fc21d66efb8ab1c159e269a3358d9ba8bb6337e76d8e4b88b3da7715a11478a203e53e95ef2a096e31c909a0b4edb5d4ab2b422d9ac5296f4bf466437fe6b1daae7618ca47e8516773a6dfe65b8b97a8e6e52d783911100e3dcbead357bd09979f18cf50c16967ff2a57d9f148be339b96673e9427d28d88fe27a0c6c3e83bfba7cc9fe7a26e64a56e65b7b462bfdb93d108419d6155f81f1beba42e2862c903ddcea527b3493ae96ad365453840413711d7c1d5735bc7a07fc2ddc5391c86977058eb7ae5d2f3f9e8bedc6bab0317115af7110fc40be679505dd0466e4421125880ab2b8701de35844df9bde74b9b8265ddd5b90da42b11ae148eb3a7a10acc4f38020530e08d0908b7b14b216bd2ac286df06aeb6bf70e0601a3f9bdc348ecd075e2e20752052c2534d78321aa4d46859542c6c6f69ff340ce950617aa733872fd1a3ed67094c8bce7294527ac71c2478931f701c063c45196f7ea54e6b07f83214d159b5a7aba163b993cb6e87fd1d673da06ffe87f2e364ecc3d361f278f92e00e4024d24cda5c89198b42cbcd22682fb4212859762b425c00942b49f6fce54484142815d8b4b64cf5076c0f8f254834ca774c9e4f4fdb2f2cbafaa9934d22b7d2434fcda66838ab4acc529451cea3730d25985d2b7d14dbded00e057a1a398a25494c06febfde9f849629a7273234facd6a3cad804325734c4b45e5cb161da484d384ed26cabee199e8818867372265d1bf7af9a063679a6a309038d3017a73b2bcc892752f95e708290851d5a3f1321758aab67d4051bba8ae5d0e006adb070000528c9e5ab40784f594ef89c8e5f4f48a10e93379fe36e57e2225b45bc87fe259b466bbc74319c3151ea7f4a0c3c8215addecbaa524d0e784c73b8a5645c4af86735bea49c74481965287fb82e70c687e4ff063e6da400b05555776118147b96bb14447aba2ce52f23c42858c4502d0cd6bacfd63a449d1b8c5adcbc9c542758afa79bafa55da9dfd5ab1106d8c8eb0f3ffc86d61a10bff86a7b025ab417619100e5f5e451077b295a0ecaca36519663c23a6426c09ef664a9c6127d002a77d9efb05054a9bd67312c7db48c9684d5249a523676f4830764c44c2baec4357b69a049a6dcc6afdb9a470546963ea85c0c99e274d4dca382a93e6d9c85bf29070d9899a93cdacd626a0c2de7471f680d5d1ea9594ee831b9601e2d6c14b58340e3e2b9c3430263debd0e7a26d3db7e151485efb48d49601967351b70cf1302e4fe64e0132618b32d979155c7166a72f115afaed2edca94ec2506eb0f5f0e8219cac6cd0d992a1d41cb41940b1f08358293ef86ec9ef1474da33b02ecd7f091a319bcbd5927767873674653baa17b28308ade9be9dc166411c54ed7eeb36c2abf8818dd33f110eb8c65a37ab294d2b93a66aae5f5c06c5629948a7850abe2b0a313f8eaf8666bcbb962f3d7da811c5694af512b1eb6775b1c2529f4c2dd7bfbdb1cb71c6216793a6df36894b93c63fae54be8837416367f6a59580bea9b8c212022102058506dfa6313151f3fd819d08347fb92a15652bcd536a8fe7312e495fb40b70b884ffaf2223d0442dc740ee153519a49c2f95e7cf9f221836972073444af7ea3a79c98620c7c07a90721a24030a14339fc403563737e885eb7b6381669906488413ba08dedb75093046db1de173a72263f640b77b3274bbef2e208f973216002e5d95107ee9dd41f376c1836dd93d0a39d46720103ea89b832f1aa8af2d72707eef7e8b1df69dbab6119f01a7c3cc284dd5cff67c1d0863de5c62b74f54ddc2e82ff44e37ad8fb4f82c0403a73bc5fbe3737e6147e839d4c1392f78e4a0e2c38767aecb50ffaa3cf4070fc4b25ba9920c23f4a41f840f880f4e17e182ca748d31bd14b84660a0288ec0aa579f6250f757af1b432c50de09f2c658eeb8dbba58ac525a75621ef45398084100c1324b5768bce7b9dd99d54383dd708533414b770d4bf44d3fab08b7791f6bb819e4b64381433696910d2f31768b2a62694940f49034e31b02bc7bb826681db99fd2a0717117ee34904e75b7c4f7f7a4a4dd6d012b59188702063b6895db428d837b6c65af01c228bf09d145a3f36d0bc5200e32ac5afb6fce8106ab462f6ca6a8d210a5dd044fbd0b37b11895354fbbbaa1b5aea52c26a41a0be498f51b531d4ef42518028673acfc647be65285f6ff6f93c5e787fea7cc7def7ea31be4d1f2f3a1be7b957a6b193b31936e72ddc1293082d97eb4c99cd88a09f867e478021f1492e1aecadfa1fe9c1d21db186b14100b47df755bc171a096306e089546b6d08f05ee307f4e1ed872da34136a346f961e208eb99951515c45302c80f2217f5c96c7533512423f8d54ae1864950e4a69428a271103b1afc0088646b915eb8e5389d203bbce25ea1206c05b2974d6bdc8a622de28c65667d4eb0e99c4e845c5b509264cf8cc9a61bee5f38bb071a0e242a73718369bcf46e289918b85fa74aa83adf71a847da56408648f66aca1aee994e109e234f70d4660a28f8c36d233f7a8ee4aed00343e9360b5a39d5f2c020c1c1b86a829def47509acbc7bf16c82b1ea9f537833313df93854b160cf1ca22a652cc053318c962ddfdefd3344d77dcf7e07793ecaba979add217e798426d07cc017d9b8f434cdc451b8c9c0a0cdd7bb99b6b7b048e0e0606edebd4b93fd0029afbc37ffc9487478142f01a3bdf9520a9b4c9b43396d0c56fa5c061bb1a5b9faaf3532da0d3fd3a5d529296f93ce986955f39b95c10c637a92c7c64f6d86b6c46104492f90b4e7af776395cc4f394b20365041cdad05bb953b4a2f4fe8a8af000d2a238070df7be46b8d7d38b94d9a1789c04c1ebdf1e23e9ed51f67f43565b7c4814a3ddbdc0adb4e40176fd0ad7b6bc013c9694c0b13a349cc78c27b68897ad54db2917a2c153748ba9255373d94c136af5e525ec3ec22d74b986d14d4cc64b240373ddf18c0da7fe0e04e8b0d904fcf9c9da626745a08759da9b0c42cc2e3f6a4e61a943fe94a17ce7d4649de442f77042db304de53129905b80f2183060d5bb9180dd2fa0e7ca8ca92e1f1d9f52cb12eddda7b73df64d0df5a800391921bd8132612ae3e9972319fd52f01892b1d0b05338dbfa53d889f519aaf7e80028161bfe3125c688205f21cbc1863a63e0109d6356c35d25ca3502b3563c71dabab74cef68053431e24f4fd9e82b5d9775a1fb8feee3a301db5d007c7bb5a68a81f4870c3f02730f302320f5ed49c45592a6ec7e775f12c4b8f6ee23a01c23afc724f190fac0e46e25f6e71dd347c990267075361510daabae7824cfb870f5d83346db459c925f8510ed91f07dc78ce5740586a57d8f4547ddb0359c8999e1e11806081f3e08da14094bffef7d6189d3203c0479e11cee9d32f5ec5c1e9254dd453e9fd0482b928eee64010b6415263e981b8c82da84203cd0ebb4b04efb02cc8a8118235234db4e9972e0884874e608deeab52b745340f90b02e01d2e8c44bf95075645b57b9417d962970e27932fd38ebe6c697bf87ae5a45a204746093735055594a471cc6f92234af098f1776e2a1be522de6bee3ffc40a345a2376475387afec1dad44e2dcbd0a47940f537bc0c429c354aa19cac88dd686f008bdbdb47109d32080fd8a80a28b9e4dab6948cc6141be65f16aa184d3491c916c85bab721f989c9b48c7829f7cdb7d4b5f19520913fa5244e6cb7837e171b4ff2ea807d054704e111b8c00d69bbde994b53b95bffc23dfc9a9060b04e8c56a52358db97034353764c9567fae75afbc48d778408bcfcd2235ae4a7299978a8eb8ff6cb2d7a2130e7feaa2417a6261b809eaf037fb446fc09170957b329c7f8e6c28222a8633b72877d6ecc8939e50e139f5544448480d592a7a5c934137b11df20716f514156bec9a835234e5dc52f1a1c1155ea9254ec2a513cea8e57ca87ddc582eee6c6211362681aa0bae468571f066a5fdf1baa6e0388ab683e3b5475d76e438118eea99304186e501046bfa2279c7f19c4267aee3c9873c947051b22705d517845bffe8214c764f0fd7f6f005eca58cd6811c6c5abe51a235ad50df1a7b0133c709e7a79b41ec3690df24ac2b29993d9d138eb25e294966bb6a7332a49ec2001629c6ed3055ba02d81b3c601084648b7c6866c3311d9ab1931ef4595c71887c2d3dd0472bd824321f1c4338a736ca0def78e3f4751e4eab695dbfcc82411cbc2520c3e788eec06226ad64da1afa304219ea23b845f8f884f745eab8b09f64db9bcd2302c0bbefc6a63d4aeaba7d6bc46819b921dc5d87ee8e59f69b5836e58acdcef527754104126ac844ad860f5ff9dd3533021c84aa46f7b2828ce6d66ed37e229c6cfad5c8a575399e39bc7a4d165d08dfab25ac40cd6b92ab61e1e83fa3d62ce0afbb7c1f0f608dda906db8fad245b1b096b30c9737a28596a380ee6345bd0a9602985d64e284221b2d3c0d5fc169e89ce24e6a5643b66da737e4ad5e44fea27aabe0480d1262618a3a0ceac43959bfc83c29831be2fe682f7df8f756608ac2a2d22c508c717431f30f5a487e8078150d63e675bd9e09f71f4f8fe37aa2e2942040ea18990c835c41ced36e964a54eb8b8bb0148b14278ae93904cdd9852a6a05029ea26745af82b364286f75693fe0309ace5fa45d2933433682d1b3a1033bad566e82fcf76fdc6186305352a07bef9802bd9a9525c5cc53406cc320b7fd0080b8f7e889e691b77aa04400086fc87b06e236d9eb63cb1417d0b755582913b1ef7569a5666f7cfecc7531dd94aca9c5f3fd38bc57afa4173a6499768609168d8cec60e878da5cf69fd685edad937feaaa29276d6c79d00c1f185b6758e7d69b477039ebc91bd7253d25ba21b0bdab7dc7fa505f26278b5efbc4ab0f668e1194a01b578427d8edaafb8dc62be9b8b0d69589b48e34bad66649a47500289c745854e6222689704c8b7595029d6005f7895b3a3f1edfb8154e87d1fd116345c6f58363317c3398044cb2889b482692611d869731a90120cbe6833161d4bfd56570b880b97902b9bb2605161fdb23cb673af253209a4c7c465f4651ca2feec459330aa66766c587a5fe2e3f15795a248707634de7d0ee64d39896ba2691f7a496ae1feeefda4766c188bdacc36d0ce589a99d343920e3680b0fb26c653b7c92a74b7e1a7edbb7604c47a4d2608a8163693fb0691511effa762086092ad0effe6744e6c11607028b7113369d9110af14187cc4f36d0d83a2a1b87b567cf2284b6229dd2366daebc9a257f53e67b0ae3e1cc68c08af64ed7cc107c3b962cc74b0bc9a6d6ec31d7589fde298842360dde4cb3a489da290087cc08d8160205218be349a79f3d120c5e52657e5df6365a2d512a32ceef8d9148bc96f01d0c92f3aed1933d6c7667a2c16ee2bd00603dff0a79af2dc60c7bbb6f68f49455841d60d234319f9fc02534976acd360b45926cdc4718354013ef02da9dbda61be1eae185479eb72bc5d5c3707e6fa550772eb52a9e8590d567077db9c5b6504fad11943b02a8b53d264eace7f7fb46e8261871fa4cf196241502c5d9258736ba2b2c8c3849bdb042b2123d6e9d9625e46ef71f2a088619a5a429e17323d77cd26835b3fd5487d5764cf0daf39c838d10ff8e578e0a016856e3164740096da9df360ed70178f1172caaafabb8c0bd720f31464277009791bb2a5d0c9de04535ab72374e88780a420034056072db8eaf935677e012b0a8cd507a2d46c7e0ea8c9a2225f27492c2e55430a11f13eed199b2f344d23ab9c8794762e41a70c4724fb251812964bbb81255ed86994c2e4d24074273778dc250a0fc73de19d6ff25078393589a9c535d46492369c8f427921da8571b8070530e0597c5608c1f10d45a85a446596be389683eedbe6488ea5f24ad1795bb202f0eae17c1e295711121cf6da68f163d8015c693d80f4f2dce4e5fc4a7efa4d28bc30150c1ee3d4f653e54bd810b753e9d4e01bad2754a4c895afe47392ba3b6938f22164334769a2931aaf7c31506772e01ad5ccda5ab9ffc4cf2103f420188d59454c078244d32a0f21c9a163e3591381962359286f920a9fc4b454d00bfb400a7759046537cac14d8dd5b40205659a64d2ddd4b53dfef4354b8397f55bf19e6cdb8a1670f3fb361b14a3e28743adfb3d08936eebf59b1771c17170c384d7481c82bad7367045c7889e26b29226e756bea39dae3bd928082deb47f611ae654793ba2a05db69fbc76cb8657716232dbc25290fda5347df1e121584dc5ee105199bf3733563b50a12988e3bb273cae8a7c6f00a0559c73df35cae2ae932c406759d5c96b338493b823db0501209626baa68417fabda2193bfde3d8cd41ea495f86d9c50703c804260a408d969231fb131db79696ad3a315c1b5435757831c5b2f8cbb52fc58cb09126bd987747bd3bfcddab40e1e76b0bd5664a398b97512b7b4e0c50ae1dc23300aba4c9512bbee789524705c3399005ab2df51a10da708867ac3ae89054bb49f86fe4889314faa7b267880b03227fe3d584c1d1f35ac71e6ad2dc0a08323b7456d8a87f57558490ba9133e06a43ff860e20473c0db58a0aa78137e7fabbd4b1fff10a83db2842a770a2b78c1d07d437d64a4bc9dd1324e3d29b41b6601580a1f0e6b00a1ddb455cc81708f31f16f449bda2fc9aa3c31d86c669eb024c493da0f50dfe79b27aa97dec9bc58d5c530e90a21c6b41744b5decded67c9ff9723d17de28f1bfc806508f664c906646d4f863eb355145dc279f37ba9fc11c3a1a4e61c6dc6b576cd4c0585f21cb6d9390f171faff472f17193d09763cf9ccd7972c50b2280ba3606b39bddba8b13f36e36d638eb8e1c6e47a0ba2bcc5252c8c9be07dfa9945e0d7c57317c67b74a27df1faa3dea86fdf9a2209671d430cb086e90942d68b558dd09e1da72748e29ec8f3bbb73aad62658c78b45017a0f16e7c898d4348efa21d487003b1a70f765c430e19aaaa8553b494f7ccf1f00030c3ac841d011905c276388ba8ec0778639d81a8ed549d9b64bf8cb6f2be9047d3d8b7db99a4f0063003e3cb2de1c1901af7586f5dda9b4f583df42c09d628faf32dde15b99e32abc7e3462bb8b7b47b01f642a408c923f4f8642b0544597a4fc257d935dec545db16a93c5ff4965a9b22608ed6dac1bf0b81f70f4a5b61de645c796a1dda6c4d15b32ff0dd795e6087e75de9e74f93aea9e36b3417ee532580c4bc995c467a56d0ca8baa0c500a3738f2620c57f0582a827fa4ee1b4e56d2dd73cfdc19aed6c8df75d07e8440ff3a4cd6c4ee25c55755a86f878bcd7b3b893be29161745bc56239a286295630537a578007753337e95f5d8a988d9de16454b57b34c0601b8353c441be5a2d002e428eb40e8ea1638f47306a2b3872ec05621ebe90f6d39e726b52321ad587f60457517dab121e2180d6c2a0cee297f1bc156bd32eda54fc7a4fc919351bceef5d50caa1cf8428471850a6dea79e1922ebe70a507e20cec91c3585d3f0634a10c59c2330a8c45ae07ce6d233e90bdea6dc2e2a0a0a60f15a3c0bb2508718c2696efc80eaa3c96a5e039c0243bd593deb5a294dffe263f9aba18c7b4b99609650b1877232df3a967219e58abca756be563eea4a8574162181b119d040cd8985d4953c51548ff82cd20d6ac8d19f2ec27a7c2c0feb858e781d35e1e594e7d60631a0bca22fbd84f9dbfa8dce828c88d24a18ae0640d8492899c28c56043c595ec0cefd59206e4f91e7351268de431b08d1cfe5b913c76af784cebd77991c7d964ccd6889e815e56b20ee908ea2020dc1fcdcc7a58309cbc215749be9a3b2706486521a783a10f9afe4b2325eff027b02b42df658bf7fbb8b1d41778dae9990319689739467f5c5ed22d4ce87b74deb76d70b2fbadbf848b1a34928af0d7400116ce77e2458a30ff3bdb32897752b2472b9f256af956d40d79dea6ca38723bb937c4299989e994d7c8f014ed6e3f634cb17240e5a89161ea06d867c483398dee42174e0f1079591bac3dddc6d7cbbda64c729327a3843b19d6d1816de88034a5ec68b65cacfbb99a4da7b4178fdc27b1302fac1457c455aa2ce285b000843d186d5d574d664d8179a4d358f10a8b11f1b38b8d1d8710c38dabc9286c29024a995d8f517de7f58f704983df70ab0a22bcfc759d2bcdb2857ef793f01630a25da0bd388f9de5fe1f1bf2732117f3c3ae292c8701f3d0664a1fffabbb9365b3a7c4690a7159bea81806c9468d5331e7725522076ad22ba41cbfc3c9b7d24409101c74e7e4c293e74adbc0a8159da585d8ed3b4c7ef538ff768f27a5a020e0d633dd05c3efb2db40fb7101a8187dd3443e068f1480e4eeecf1015ab1cd417556e9f72c34b967e0c250a70fc886980f9029cf68b942236bf2976dda3cec52b659cc4305163f52c6f15c281736b33be1a23ef27a01343a4b7c7989f09d3dbc94b19e2467eda34dd8e967744c5bcdda7e555311a261248926b06739413e9d4b8332a9c8995b37c6bda9159dcd4418aa093b49fc7ba45d0e05b7b27a79e9202248499be67895f7489f40ee4d69d04e6752e38d2556ecfdf8481c850467c3fe9b38c13809203526a00f8719470589937b46f04df6b055a55f272d4d69bc8a1f397b8985eb27051b4802fc38f38fa9779fc3c0d0772ba8d08f1bf7c4990e4dcbefdb531137ea4196b57a96e6622ecec242152464724069ccb3cda5bc786406504f0ffbeb854ca6ab9cfe0d1be502dc8f68db4cb25b3f1d3cf834034b1bb3c2875c5168e601acc3467cc38830a1255b5ba24b0878f1b591392e078980c3b4124b2d96744ca8a5bea3cfcc3c2f6705d1a99b5691d8d43b7e3bdb32ddfd1e47aebba1e59c74b35d8d35aab9e086f26fe317a8029c7af957ded1b5997032742293ff065679396c8efaaf8de8da23daef26fdd3f4e1ce21e484776a06d2ef42e210b74b2ce63c9c16a814216e5e8f3bbb19f0d110ad74021c51c03f2f5943c4545e25a6d1b1788fc042db4186f472eddddc4f5000a3ddad4746eb38f776974c4f948412eb5590f13be6970c4fbc18d390916954446b9f8b9c561df1c1c767d2a028aa539f7e2d9dc162fbd63c0e6793cfc3f4f9f1ff971ee24b15b2696596eb568554a8639ccb85d68290fb5865cae7b0393f4759abf96b3222130be058e3b332d7c2f5b8e41710a73ae43d755e66ed6aaeae40ecfaff9310f9b18bcb964e5250e1a4cf789f31ff43922866cd60d521e8ed8d8f9edb2aefd2639f73893d0aaf053ee4f5de26d0feafb1fed204c8c202bb1289ff5cb621b9bc20fbc83d4b33747993996bc417495a6d7cba85b061b632defce24f8419fa2ee91063d9a1b25ca079c8e15f8cddae244ce9aeceac15e391449ba30df5f1c98f5228478b3429367e82bb7cb399160d1ba85ecdf14cf85a49641db383884c7552036eae33f8ee8575cb2b276e52961d4fc99e549ea2380eba1512db71042fe86d97409da178fbeffc22359a128d4c4ba80234bf5d65e74b06a5a5e0609d25b01a13cbb4bd4c4bf385ee4f5c7e4fd1373aff4f29c4f36fd29fc469e4e4f89fbacc1972b2021f28d1059e3d01dd6b7591356c0dd837dd2271390022e49cfce0361b17532eb0c35ffa5fe2cf6a9721c807d373c062a0c92c438d44ec68f580a041c4876b2a5bb09d38191eb2a4f8f0bc199c47253ceb1b24312d0727a5e04b3fff85ff01abc821f7b86342a145382608e4c996c7d47cfff5404e284f826dfb59c2ce06645eb6ff0f3e2f8f80962b602be4ce88da6342a7493b9106479f319a042859eacc27a3b6a988e3469887dd0c480f6f2c7f21017402ed1027d42f4c563ee022d9a2e9d6b884880ace562d78165d8c9fedbeaafdac08d864800903ca198a89664b4d9486690b5ac85a8acb17b82f91f616e3d45d0d1236f45f2f97715292adc8895b3e6aa82e7add0b3d1ed9960f851d69dbd5e71ee050b5a5f451861985f903fcd73d7b6df1ae88b010e86d7f017b66d4f156ad69bbf606292d1332ffaf2456435968f60ee85a877e735de69c81a16d82f257f30fd804c6b7caa7d7809a2e7c6984763de12eb6341b6922d4c67e9212c1d91c39da2848a5e49a87887f865876d8bf4ed4049ce38153fb205f52489bf253ff264812c9772d4af307cc59d54824334b813c6525202ab1882077e0e833525700b3f776ce21e2eff47ab5eb570c77d46308f4528fed2f3f84423f7d559030f3cc733db1ea89c72127b2c5fe43050c2b924656274780dc55ac4199f45393a5849153ab73608c3e53bd70d17fb708de3873cd90dfa55580436f25d1bec66063856a72199750a1fce7b11fb918293bfcbb5608fafc85212a99a6aac10b2f0900670bd98929cfad2c68b73c6e3fb0102f9257ec43faf8a226bec7f5f9a0b0b71ca7189bc9a2fe3efc9fcf843e251a3bc59c7ae590117871289b1990875c08d52d27d7545265db3d0125102917c82ae7fd86e3cbee1980fc22e7c0e8538c93cecdd782103683ddbde86d4df9d79f163c1b922609ef1d6485058c850406a76512907190bd74e7b3cab26327fe603ed493281059ac2da935009678c7e855288fdbaae9afbff0547d3ec9c7b1ca76b40ccbd5724f3d2c4a3bc135e0651bd41b5cc2a6a8ce2792fdb5bbe126dcc9bab206a6a09a339f19b8bb2c716dafd80119474ca6e58718d48a3936fdebfd56a0156debfc40aea216a02f8a7c5afe5091636121d3b0bf8dd508d838163e37ef9ac36b1b6e0c063eec30cd4d7fe862cdee4db3ebc57186353278c644f9a1135185accb7bd7f8a5a678435679c75eccd88a5e77b805eea1ab0e57866853d86baf7f527966720643b81b8bccda62200622c570744c74caa36f8a28f9f099ff3bf087eaf8d7ba9a4611a82b39b7f3b9a4a2459d2c99a96baaa364f2035da94e7796127cb6b736f0dcf853da4d0fa85686743175909ec88452ec6c70c4b6ff802379c4ca5921651a93baecb0dd1891ceec681c6cd7e5e83fb3c6580e811313bca4e0a02052266ce25fcb1f772223fe399865f3e7a03cd7a8646467625adf3d7d846f96c5d4ed99c630e6464ff3cba493205f9d357c72a11e90b37df26dbd58f3113fc16464f8127b5d43bae096346ae28c21df8e469410a5e01d04031dd8a8fe5a94cb38c24d68cc34cadac3b2ce3e2be4e9323fca835d35bf6c001b1ff4f3b666382feada3552a54152fa882572e5b1b1824df396934059091d9e33751eaf1e376141b3a78074674e1a5c38937388f85f685399789d5f04f3fc6ce630d3b4c8f6135a72277b02d4e00150bd9332fa306ba33df53a53994a9d46c6539db23647e7ece03f7c51f9c6f7e98e6e4a2d89cea77c71ff129098e198252085ff1fde2a055c3780bb189771ce7a22af81db7fac814ba811336a1f251a2162debcf9771a9a54e9384267b2b6e3e7a1943be3bf2d6a4fe15ca9f125ffd3a1da92e583105828ef641f5b808d2be4f5b4c86779750992c4b068b1cf8913ac913a523013a5708040401b694b542a5e8a885e529730795e139aed43a00599dc8c5369719af561062b440e1841e495e14c128e7ee6d023f17fa22aa509de97195496a17c47ef65326bbb09be3069869777e941d2927667c46885868774f3eff39aa8a7c0120396d0e9859e80e45f746ccf3e2ac8632b53ff744033a939e14adbd819e90ae6f4f2a3f7e15f13faba5658937a8396040f1b454f3a4859847bf7d01cb1c75917f241a32ccbb7ed79ee7865e10697920ca404a6c8fd75a7fa3f0444a0453c3559564af051989129a6d837028516b0659e5b1effbb31e9167d804f45dad300b618ad3c01dec71b2e3c0f550687871298b4a0a4c8ce08ddec3dc774f697cf54d396a8355faf26e800073dc58b365aab05aaa1821e90ee88a4f42c773555500e67113d7380ddce2e5245c6d6dc158f68ed3ef666323092a108b104a792cba46ce37676f1a75bfdc5f4b309e7c9847f8c1fdf0ac695090d7efef65198794e5e814d748da22a88330ea7c292ea752120b5a9fd45bdf3a864b23618598f118c43fa861b36eca3fa01ad373f5d2ab8f3fdadf1266038ca151abd007a5db7a804a3fccbd181a49751c2df8db27fdf3eeaa90778f9b2471e0997cc056d5be48946e316655e56185433594d42201cf46a8bc5dbe8cd04d1b8d41be218052ae9dc1b93a943fb3fc3b1f8adcc2bf4984ec74ac4b97ef6f378fd37937e5fbf3febb1b5512e3cdc60680b0308084632546ed8ceae05b49e810c6ff8a79ee72b7a5be067f5b09d64bb7002e21bceeaf396815c475c1ec4bb0063852cdb3271534af424fefdc59df467b0e37a1bf2518551af980e98d1896d07623f66ff1ebe55f6e68e610ce7127e1ad38694dc240269774305e7d8bd576a3fe6ec487ae748bd7563c414ad5485227735083f81b510bd0fe396cbca26c6bb363d315e2d1f9ccde97ce1ab689b709dbaf331d294fda1c2ab567ce698fe4a90464ae0aef44199925124b719508b666beebf31b61e47880bcb162c02bd9b62c93775392f9a32750e38b5cb59dd4180d3537cd9abe002b554967719dc5d814188f65a314932cc06728e40961c7a817c77719830d5d8d6d1e5bf639f00ce2af5d1583d7730df91f35d0265dae59532773b92d40948bbd5d1eb36a30a86fbf470d7d022a4553a9050c39439633397ab21a7299a6cec095f52d49bfabbbd4fb50d06035d2c1e91910f7d754b3696b127e2056cfba779faefe84786f1b8257f101f9745350eb7df786fb16498bd41fbe2826b36c8113c2f964f32a6dceae7fc8cb593d5c0513db866dc0839a009f4b05d00ccfa37bf3ef5295fe8ede117c8f48b8abe95e1fc48297104bdf290da807ca408109a6981cfd891944a4a5d108689ba7f608be0b4f2c24ea3762f01b1dd4db21a78e3b20dede6d206502a2d4cb3a1155d0679153445040a57b39af2a8130f79e1e82d863663c7b4fc2813a0108f332aaa8b4e491acbb3211c7324e3748ef57cff933117b817b8b5d948aa51c8c396a8b7c28bd8e6bceea23d2b3392246cdb4e243bdcc94dabb4e3efb701df0283fe078264baf08b2a8544bb780a8fd65e3c7a724c66ee8624f259f33e28eb845b1ed517891dc7edf727ef4bc87328bbbcafe09200f1f32be05b61e69996ddb7cd3c3c06808905f4ed5609fc06ba05493794f98ca81d9d86dd3d624c742e7ac9d53873effe1d710e9fe3c3ea3ceacd98bc87d42a838565690e62554817f94622dd00ba2055acfd8d2e501a94a97dc6a6d20b3a8e52adf08b3f6b840da45f24a38e04e47502b69e6bd48c334f857fcd7192d4e24302b8de306f49a1fb1ed31022403dba64be0289bea9ffd414b3e250b8a58d914c3b5d59a05d5237a60f615b8e2215059164eb33609144aece08f8025967b8ec5f798476fc6cebbe86cc15ba7fff19dbbef1e8a8cf86ed4b1d54a66d01479929913ea2632cc9ea329767ae659a735da70a52f1572d6553911804747e4ee3b7943f9f3adc1eaf57e83d2b34ead8ec76635d33468da86042faa70c13c49ad116312912b6047116fd48285b9e24446100fd000d9dd7606d7f92abe0d04c515db4d3280d2a8916b5877101bbccaa7e59c8a7766649bcc716131a211ab0a84149f7d43eb28a212a8a3bd934fcd1681e4d4476c23a17c3aeb336d31aa1b39234dfd7ecbf554bb1e7f8bcbc7797cc90b19d1d8f6af69ca01fc766d9e1d34811d38ac39bc4fb3ea45b95eb9c0d88feb8a9494b3be2c68c62f72bae33d5617211306f0748dd89aeb89df53b741057952aab9bf6ce23114967c23084b8a2127779b089778ba957af72f6d89eeaf3b948b70e1d75cbb6b89cfa1c72f7ab298b88b3bcbc1369dc8008124c96840c379bfdc7fde35166ae9131e5ae50380661c541ed84d7b21e09f89cec7212e5a812c164fd9ff40005cf5e405c5bac4f59a2c0ad7e12e53a497eccfd32f2c219ce7993b06eb3de5b1e26dd686364b0e0ed2d63056b21cde12d97baa1affb541fb30c881e6a7ff6db3e2560c8fd3fa7817a523381e1bc1d4842532ff93d56c1128832616bebe27fdf76b555872ce1d2051a9909ae9f2a1a7bd2182728fe40231900d1ca94587e167e4551748132c9161f59438d8311ece10d67c4cc94850ee3a2041277b7a476e89807fd9c6023c8fe1da3588efdc110e10b78a01032b428c02b5517a681f3197b4c32bffa767bf99bc5c7934acb90c1ddbd03c3648e47420f3448add32ffe5f713dca8e9951ee05cb304c821065f5e1b1ce1b43538c756ce200af084b8dc24486c651afa26e3a038ad7d06c44ac3af96cbbd28368150d7e1ddc6bfae33a077cb102ca031f02e387a646d3f04c4b1c881aa70e2fb853f603e27787a36f63033124ea10bbc309461a1ab85ca60c16f3a0abc2202ba4d7761bb41c219c9cf72cb32bc0737487a5a9490b3db86722b4a59d4e73c430196b14643eeeae3a8e4c1bdbdde18af6ef5643f3a9c7c6595f640a8bc6f12ea9ff4417a9d26737224b8771a1b1300bc96ae1e46dfe241cac07a8a8ad6390ae80ad8695fe5f3e0d66277cd656832294ac3089dc31469ec70014e040c57460b3a22f9db922a8505927bfdd56d377bf9c25e0bee251615e57a8230d67b3a0ba0ea94de9da82a4bda411a27f92b88d2fd7cc6b55e049b962b355b1390cb93be792d16b6842a494b63522cc8dab4f7a87772266d4bfe119b2d76a0eccb140e2a180bd0848cc56369ea75766621c8ffa8a43a63c0c7210fab4da237c47bfa35aaa5d154ee3e384b241f401421f7fde05993c42693d06d6b0c30d7c66742e29a29b3575ec0c1d0cdafc83b5756e935d83a5391f9beb237253d503fdd4c35e67fad9e85860b4d3c0adacaf5f3b6c2cdc7f99eaeb9559998a1c89162707bc1d6e8cc45bb1faf83043b45f02b3dc22e1312d8d7509dce0ddfe315e8073065a39ddca867d0518e29bd9ed0f422234bbc3b91ae0929101b6aa8ce8aa298664537bbdbd4c9388a9b3176ba91d6228857b21386a816a43b1ced06c7cd191a1e7a45dc583bdcbb3f81cedf765728f8d85be285a7384629fa1999d40d655ade663ff9394d37f0cc2ad8b962a989b3b76e6c21ec6f45ca64c67bf55f980e1a1b1f7b37b21a8c5777ac99c1dab5ad3262c00f047a4697ebb3744e11bf9c5023d780553a38507efcac2411057865dfe505ce865a2ad8245cb9befa5138853a5d7546641a8b75cf55964633af1c23b68c4361d41cedfd5b2a19ef8aa851672a63cbd485b842b1f50351f26f5a7d3e5ba130a2efa7c3a707a92316145f9e0c1acfba9c810894986f500ccb686c0d6b45b2cb308cf01da279abf0517410fd734ff8d6c98e75a95ce26cb07098319ceed343c273d4e69c4eda84a833c9d799cbf8b30747f0fe8b98c4e5f72cc173ca377ea0e8841d7f62587c0183ee170d5517af060d87bdbc8b61db4b414b291ddcc03c80c37f64ff8ef982f5adb884cb1de10222c1f057a8024865db46ecef30e4afa97faf1daec862aa23ea48c6f84a241893fda76d45ac9becb55c5db6ace32535c893a4e61e4bb96b3ef52f24b2060dd35e48905a8c7b9308d8cca766273bda88e7b7e967d8c3c9a66c36ae11a3f5504a37fbf96f137bd37ac7433aa0e0a065a00192483349b222c5e5a106f30f15d9bed6bfe2534d545f510f99120b7e13c3625516207e844c8f32ed0c0713c4521798cd478ce2209cbab907c8a77a7e299cbd5ca581fa9c24e3c9a49feba74fb6a5af8bbf908833b667e62576aebe1d066267a58b6cc11e870da508f8ed7745b54211b8942d755618dc42944398284632bd2f2e6a38d80466b7328032d6a3ff929f8f44cb99d59d7a587098aedbcd6d6d6beebdff5187a68a4833f5bb2dca739ea4a7fa93a8e9986949389bc2634a29808f562a64581ae5df181286d135127307819fff76c51e7bfb36aac466157215f0a2e8f8ba6189151a5c638ade671afc962cbfb12cb8c95aa43495baf4714c6275f7aefc4e4e3d278aab34f49f10c5498fddd2ecafa08c1cb787f9765652cc82c31bb8d06abda126365bc8d9e6e1567c5276882512511f15198540e063a4e7a033f46c691ab8986c05000c3bbac362d9bea30b375c80f25cf6ac5b2d691502b4b363d6e368cd230e7bdcf27ef5522b7662f96ae15bf49b9293f0f1ac47215f479089447f2981ba45e0e31dfbcd0174161fb9850c018bedbf92e0372c9077980a77651ba9dd8baf184d8ca90d0786726001e43d68c8ec4298bbe0ae520a61ca71c89791e6ec287f6b38badb0105c735278117bfbc6082b9d7df9beb1e375eebfdbcff9a0d6240789a7d88f409f5a5ba011e73ce4c8c3f9853c69b5f544386822f4a9a0e24a4860da8c8af1c4295907a58855c891531d92123b23dae8eb78f4973bfddbf68fc4e45bbd6fd7e9419fb9a3cf2e08d86572cb830af425f3e2b6261796225a67dd322647a75c3a33fe4c5bdec6df8fc7fa7a6143f9d0ee77de63018f8902ff067d63684ee18fd17cc92da6407edc64c712a1eed0bac83a4f242981ed591080f58828685901bb39995d50aaf48140e87489bf2e48624413deee70d7f390d088f1a16537b57c50b1c762e9c03bbfbc290670d8c31591cc3aaddb436929d527c26dab2a422849f60f975abc9e0fbdae26f50ed4171ecdee91da2946d8f470922eb79db9a7f76fb8d400a2a5d9e0246d8c23b46d8448572088a2164b2ffd60f5f7371cb5b2c1cf0bbe125892b61173a82a0463c5592220a5ae2ba5de575150de99c00058f96e62d019cff476497f861a2100fdaadf0cd97301f8d92041ae1ad5b00fd0fcef9403a5686f1128d3dc21dbad11a688b372acb49d632673d5969a032d6bb76e2b6c5ecfb3c4a80ad38a915ffa05ff6c0afe235f2b3fe1516b9bd9af9cc77d184d4afd13d44cd21a610d55ab077118836b61cd7d45b646275f0127fac026c07fb63c3165333d550a95f386f60b1b93ede7853d63a2fabbf3542e6e3b748d1473fb8999c52c56ce814c398f764006edd4be1b29105b059faa868a586a9ec3a785d8917a512598d362af1ba6b4d664c2afd6662684f7668354736e20b97868098f4003425bedec9ea92c2637b3d49bc84c9853c50ee7ea4da4b3c576c97cbdceba7b39b443911674d61e9041774cc899e6fbb8a82bd9ef8b314b3958c759756fd77c9786e75afc38789f9a336cafca1e502a74f9b2f5da1a41c50a10e3ff3fc651af2576695c3d909e9cee1a24e743c5b3d5b616896c346fd7a921ceb34623ae106bcaef4a1aa10a0e204b2925ff82441a36ad0b6184eef4b1f1d4860b44f263754a50b8b25f379e0a3bf24e607b000f6bdb931cc66a04bb4dd4003c31c885639654d2a6667ebb60d030f7df3ffd88d75bf6379c03b5d7e05adc170d757a34845b7ecc16d8ef8b66d27c2a3f92d1c9a2068f21ee160a8463a0588b289d03d9eeef05a8b49918aa69f0cf39ad4af2354325bd685f50ba6668ee3adf6bc9405cc5134c100c00496539efa2c6e25519a4b48eae944892f9492b6cf33c1e9647f5af0d73814cff0f80ef411a9595b5d57027abe2e0a7c88c9c5ae60711e2740586a0fd20dc3379c9154179494e5fd506fc69b4fc834f3454f7d2f62369abf0116214a809fe71837bcc63dfc0077a1595c32730af97aad9d259515e65a98426436318901ad4b6440ddb89eb8ec26e3c7946a9c095e227c2b1b55dda79445b87c9486af9c1cb6bc63cfdf3cd72e9a3e4ff729bd72954f7e8416ee93b3159aa81eb8c401a182116f0f44b30c376d2886fa622ca9e082d26eba93a547f047af842680d5d3cd2cc6d8b5706c2549b4c4734600361cdf05322125376809ef673d76543c9fa742ecbfaa954756208a7aa4e2fa0947af05de81dc367ae85810cecb70b19a22735d70fdeb95fc29fbf25ea213477adf6648d88c22756dfe12c00bb3dba712b89b925573a468154485c056f025fdf4d302cc9b87a4fb6885b659bbadadb6e43fc64237131a98904842c007fb026d087c862239559474e2f31a1d54bb1e3480514646048d3b3e51e747520bbff08a9cb1f88d1749777d4fb0c9ffcb0f9e607a7ff457e38cd271f24699c2dfba0cfa9ce39928537fdb69bcea9f19634b69a6f0114a76dd7cda269f0fd5e1fe3f42adda553210bb4302cbc7f82929293c171d25e2da53f5ed4aec22f9028937fcd20fbe0d4afbc1cd7e723b451f655e494d225c03bc64c1f7c4bfb24d75e5e56e4466608d7713edb25bae725bf27e34e329b182c3eb5e73382191bdf2c7e2c9f507e24b54c20e8fed3c90a6903194d51ce4b28b0ce46b95c775ffdbb7a8af33bf895e313de10e29ca17213bf3031a99bb6b3aa36c3380f006891c7363d36fada5383617e14951ef67d4c4c7b52906638139bf635b97ff0cd81a43ecfcf2ab7e433dcecf6b534c245b5bea6f3237ea7ce325d3f9fc6bc3a6a8f7cff1a280dd7a2b3bb2f7096d5fa677b516c1159fd0343907e9cb2d1adbe18bd98491a7520a76658a225e4e6714e2a86b062f41639b1d5368675a1fbfd2dbeefc67f7ddd76b8453e4e1fcad80e4f2ca4badac41e7e980a3610a4a7f7356b791c8c42ce75e52a4b3b111590f81476003fa511a573bc36233d787d59d9eddde65ca5199b3bcd176d7524a87e7d25238eb49b25862a653323210b1d9319ca70677dd626c0977b14ed83c08e8ece4142408263e654ae1bdc41efdccdbe93b7e6005dd743bc5d2593a0d3181ae016a69c79241630fe0b0572252bedc4a95924be4ccd44f187b789c70cd6dd877e066e350485b4599502f4acc5d29fde6acb1fbedc5c3ac8a194bc1cc59e149803f430df5cbbeffc0e30b4452dea1aa5c68488a68d368dd33ba039ccf9a4836f46cc61eba7a2e42af68185cd13d138cad759a503bc8a8b6da32060da9f1f49c23e86710dcc4b4650e264df9e5c1da40d826529d1778c620032af407aef88351184665d79d5dcff77ec6f99b60a5c12459b5d535bb8de48d0c8d5b40eddb18d50235609dceec80d328c164db8f5fc350ae130ba84d1b248b9f605c2615acb09e10ab18fd8044e81a1c5144cef44f4863df42d019f743ce3f501add15961d8ad7be1bceb5289d18170d3582a773a49675b5fbb28d9832c585891256ba48b92141393e7b7cf428cafb4de8c2808283553fe7defcfae485e60b3dbf2519e6e45aa87db0a8e2c232e3fbca294eea97571a0eb34e596be0431cb1be2cb479d7c6f8e3a07d185e427391aa4f83bca03b96d70210f2aacdf5d1002121cde92218d54b8b5f725e8b878a9e8b59d63ecc087ad7be63c55245dc73e8b20257b680add6f15fbd568fc21cb31f33ca11e18d8ecc30d73baa68b68aa6e134c21aa6ecac98a717adbcc0a31124e9978ff44769f14bdc7cebc7af0b76497904411ac29375fb752e175ec1baa470f1b0a8ee44d0253bd29c9116d5d41f3caa497795272cf8768ccc6e3ca13313883520297f0c7891c873eec0a5d904f1c49f2544f3f07d51f9e2ec0aaf868ca4fa0a48ffbc7da6b7be65a643c3b722e6797561febe4998035115900a747515cbeca1ca0ba2e0a4e052bde077a51e9c1351ee1ad942f01b5134fdb6ff72c9f1f95b69aa190762c2db3a8a13bd2b8f6e9e0431f383b8d67f2a21aafd8e7a6f03a22b7c8e5c10ec2ef818a62002edec1f31e0b6d9c0f879e7e2c446583ffb34142f7003bd75e9acbac737d64db2b34e8e11adfb888377c04009bffefcc104cd6d33c07de02c2c2ab36a61d6109541045068926fef5631d51b31cf2c76b0ec5e0ea0d03bb1cbe08cbbdfa2af977230c3d191a7ab958cb2b04d04a9d80901af792625c80666ccd3e108c8ca77645420ba36576cfe10fb68787477de1057937980a99ce5057561f0e61d3599ab22b5e0992b35f9312bae5ddeb00f45450b6c2248ecdc4cbf9fdd50f81e01a6dfa791ec347046b6c5e9dcb762238ad5a060e820a03da2d0e4f2bc16692886616f971bdb00e86781ccb72cd377e903048b98c2ff955197d6060ebbb80bc30b4c2463835c1a0cbb028306ea0390a4040ef87a21d2d3270a371580e2a693920a3f4acf6b5a78e9772579ffd76ce1e6d42f1165ac2a1d02ab67cdadb87ffd572b5caa0f3de95b9bd4404f8ead3bccf508860505aa2a062920b6276538bdf2e1a2f70b3e130e91681773445ab30968d963e98711cb643ab4ea69901d0891e2911af35df1bb33eca48fc278fc5c41f58ea6f9d24ae98f4b85dede03ab68a7200a672e423a0e14382af70632604b3fe88cae6881142f89ecb876b7f6f15af2bfb9b2fcab145df4a7827d6a13e7d95cb27b1ab1d91721da133436a02b8979b3fa1edfc50104b07f3a43231c1dc23bdca2f81b8d3a0fcdf479ce4af984a8965ca0de800f63dd82300d5dfaaf11c6f7dd03efbe2f28ec8c24456e6c35535fffa91de6100fa881e9efe93508beb21ff7d4480b646501e100887a19308498b1b949d84d8e8da644df0bc75e415a510ea041e186e5ace75bd2127dea4d86c7d5dbfe270d4e4394104d6d2f94ae5a9846aa936c2bb81d5cbd845b9d52a73ab715891f72eec8ab5d0762a2fcf2dec62a63403dcab1591201423cd18abca2327e290fd4977d2c78f7573f0fcd167acc358e3f526e1130269965b11f3c44e0769a335996fecd73d75b9e22aa13c46b0f4f916f2eb5132056e7334c78cdfe2e659089efdf7ab683514bf61be5f484e135c5b14b04099b2e315894abdd80fbff6cf2be0b49379d45de1bbab5bb7516f243692cf510b3c51805f258836a07ef9a9218387e42b20843921dc794581223860dd43d081bf98410ae4d4f73c2af8d816cc5cdca3c501ff00771f0716c583f356937b4919f574569255444b528c8e99d304b0f6dbc757d0e2065cd1159772aa61293a0fbc561190ae89bec7984f3b181fede3d5d05df565883e5a1d3959e0a512d7e7cd20780ba4eaeff4e79b4b91edd3ed87526685710419033769ef9aa63d27988a1f22c215912ae2b4cbc2c039976677cda083f5538f3e97ac0d0b11c3f3ccc14438e69809e79f771985bc40a36886d7a2e27d980aa11a9fa9d85031caec4a4abb85a55f41780aacf88c520bce035b41126d408457dd3cae07c415b9e42d24975e4ac9f52c0c1f85f4604c51de51af858eb612996677becef3dbca74569094c8f0bd6716b8008aa15a74a7cf03648e5fbb0e0abe583531a882ade50ee45b049171ca20ce3ed8f66580c4d74e76624a260cc810502c99eb40bb59edade5eeb71d377863c60b48876cbfa75ee51dc6f33031ad7a7da98e415f7e98ce1e79b457150bdc7dbcf6ac35f8599f8edc009031bcf3fed59c1782fe70e81c3d3e4499228f70c368af6f2209b84aa559134c815123a7684264858e6e5ddd70b39fd9fc6d5687b27f2f2d1ba5f79a1ede130cf1c6a8237dd4edaca7dc2f263ff5ea05fd864e6f78c18f0a686a5e0dc373e1830c2b4c77f8f6aed2b915c41ac507f45fefad23863cf7bbe0a439364f0069aa86e0e787afdd8dd65dc35617274d7c816f0fc3b54dc8f581204d7b79e0d556f68b0c9072822abc26ca5b057d9438b891c30b4b2349ada93933155d136cbef226c45020967b977da5ffcf08901ed03d6bf0a466363dbc6d304ca693fa36c6ed0d89836ebd879f155d923176532f128abd7269ed41f9322b59de160d4d18da934021be197fcbf4bd3adeb27d164d4c5dd88ac6a1a801fe3f6ec0d1377abd5b6e1728e186636a2d10ed677be6a73b1ebfa9351c89ae970b0ff50d11ccd74271319e7f336da23ef1296dd49bbc10f48be131ffab3bdfcb1a546fa43e7e823916d81e6dd4dd0bab611e5a4b600011b7f46b559d907650c85b1805b64347f8ba673b290a209ae5f58bddfc3f4d2e191b4cefad6f358bdfc338d01b58bdb13312815e75333251cf22b6e898dcfc9449c56efb3d5a0d8c4feb9077ba4432191c4c85b4d8a4ea733a0e34427845dd2dd8d35daed056a26ade941f49110e7903a3f065de378e9417ac264d132ae3d39131c52277d523b0268d7be167ce6cf9eac8a9895a6fd085e62bbfc8da581642b2d54b799b32fa0adac62afc8d73c0635f44e9a5e5bfefdf61e0a624f05b8dd5a30ec7be55a82ecc5a75fa403e247c505f107faa69303553c9eb7b0cd957b307546d7eca1f86ba05112e715c6e04e428bf67e345471ef7c31f123151d3b74f0ff1655bf1226dc53c50658a5b4e5113f7ae61fdc64d68a1dcc5425c7fd0cea4e94726df60037750b3c763fb4cd3fd72c8c4d0dc094879c0a3c3065d77b26bc57d203167823a601ae22cdb435dc6430da737ba1a37ad74d20a5acfcbab668c464ad047fa18e9a83617bf8bbff41bc5cc25987196565e9fcfa1ab65ea773988665d9971404b887d56421a3eba8e7506d1a189bc453aa480f24932880992a9fe5bc6be08440fabcb0be7d3f05e791e64112c71358c2b691bbd04c1ba47fc7ae84e11c3b587e9fa04a002ce23194572c6a0fe2e717835f695a75791794a0f5dbe416f6cf5ccc6fbd20d8fb1bfa3b6f27e28a40b4ded82af14022b70d6c81d0527e3f0466c1679fac81a9d0cb7ae55e2570bf4bdd499458e61ed93dc9522af81434c250c97dbb0f78c1b0873dbbdde0056934c70a395125147f31f135f633cbfb4be543a526b6bd93bf0280351215c1b2c2bb70d574b98819eb8455a135749c9951a246ec4be9b30e5e7b1ee1df0ba738c4fb8571303503bbb004d73a94d27e576d674149aa196fc0fe3b6b7d09b6fce9f6ffde41deeb14a3aa19cf8fca2da61dfb9d252511b016150dc1654b52fb0c4ae4b59043c5fea67543c5bf1faa26021ba999034eb2d42ffaab006f3c978398817eeeb6d03703ce75c504a6eaec49208dd2a7cf58eb65cd0023e87d7118abf6f24819dad7a65c30a066f81aec0a781ab908bc7829cf9229f9aa18023a4b417a6f7b106d5b07a91e0e5ae4410065da678bb82c506ded5e3d7bff293f1198efe541ccb35358513e4add598e59f2cf1d7172b71a7201688cf292aba9be6cd8ae076e83e37a305456e471687c308697d70df73f37e48e48e2014bdb9c3a6f338f631cce5eeb67e39337193277a2f49ab1ec1d829cf7d514c21d644fd5cd3fe7b973eea8267af277422d5a10a53988eaa35e75f6b4f682f7ac66e088a42d4ef235724932b926618bf2f69d8a54291f8c1c2d43ff1196ef9517c93066a8238b10787ea096312a7ecc5cec1a1e6a52ab791ace1657bd3e15b1f0d421c4127500d7e4683931b4b7108a3cc2c3d61ada8dffb6b861cea5f906937c2da387aac2be8daf1ce0b3ede4210dca6741b7b7c669384d5c7bf4d0ce885437cb6c0e839dcf08ec60ada09f321982814aa81bf6acf4efdcf9d637c1b56e6a73b1135638b08d1bfba84a4aaa08553d88b461bc92e1ec9a94efeba5dc37eb1e138b1c85be98cf3c8441e83c9a18aac4979c6809b7a7e76155da149aa95bf1a109a7d55de6a624b933a214b4267f6b0e4336be98f2178c104b57a295a397c9a07c02883c5b54a2569c9d4e062ebbd5e5089515b0897795984dd0e0b64021f251797566705bce646950c409b0f5c900b2c5560795ac33afebaa8efc3be32fa1461268f64abf2f51dae904c86cd6a955ad304b3c37066e8eb58238fb5f1a7804cc87d353f32f7d57d7d629c4f41fc2b5332c371edc982d127883f3cdc602e89b19d13a466936753d4c714fc4fa9e80d857fe4b7873a78aa89ff4f4b3189a9fa36ab972078249b05598aabe8334498172bec811a46421c0f6af418cd7efc0ce589c9673b0780df010e90ca552188ca7971b8ca14584acdb85d467971e988420f3e644bef419cfb9496f59d907bf28a8a5ca5f312bff242aa9dd71cdd4044710962adb0a355d8b7e6fa4306017a7b58398f9cfc33890c1f2f64591bcb0226abe0d7056dd8ae7b62b428e6c3b8b774dd564461dfec52a85e779919d1b63b2463fe20355b3e48d8089406753bd9a71e08c84f31cf1f5c2ef47522d4950d78f80408c0bd5630827290b1d029fd4a495c97788d67e98c8127862074b37ec1ddd17a61c380a497518460b61c625c5b9bd7231d29892781681bbb8df8d5b68751f7b31352aa9ce31883e0c17aec73b4f3d13e0ded0178d21e3fc64377db4656c400e0fd3356a5cec11daeb6f3c06d4c654cd3c605eaf4116a625ba73db8853a700481bbf27406b45140ce15b8b9bc0f895e27ac68408b7d71d1c7b6fb0395124389c1a0938fb21f730e3bd37702a635509bb7050d82cb41e3ca29acc9534ef9997b60fe1b3d94dc62f464fff820bbf57753c57994274df82396f21bbea7fa2d745c452a669cdf1b49dc1527b4f0ab109239d6656f793c7100e97a6cea5e8962b4032eaf061b982994d292476b4fa168c8e66f3dbd296bb5952bdbfdaacda9a1f9367430b70b532eeb2b2f233af5150fe9e7d83c48939de7a1ae88ac7e806351d292c7529be47ca69dd3093511d7d82a710be2c41b545a1411b75044566e59e530a3109174dab08d24d74b71d55b9ec923a1e2b7291822f5b0c01a320f5b8753d0f97001d299e904707d91e3d6da93f1115191e45668fed2d71b63a1c90655a00d8b20bec9de4df4a80cba7ea0daefc162c3a17d98b8815984564588453a0677a0dde6dca58cac869603d8b6012e7d32589f973ab0d89fbc9dc23002f882744212215058aaf1f00f6129c03cf1721be5929fc31b6d81e24097faa16042841e4587fafb1178880e1f8ae324e353f61067e3fc463c355ee33848efd0df8fec2eea1c718aaf8d87d1aa450b00e6f538bb213d6e3b730d151103df8cb36ffb8c4474d7b5eec676d27fc7749ad146ccff6992351476ba76b467b3367884cc4d387c11aa5a05a7f7a3ba902da86b930e61d57d27c6b1050b8a6e338b97c3a69eb40188d6dafc3361ea59ff8a9efa4e7edc70588cbc470b7c3cb7d41d314e075b827d4da817fbda9946eb81f37df849d0cac24df2d5f675d36758001e354021949f7466e5a5ccd24ac177c8cc62ec70caf68625d27adb5f19bdc0f0849c5361b276a7e289f845432056ae3f264c3ac8863f18e3fa2976c99e614da19cee41d2613cf10acad7368a9a0047cab71c783c41882782a87bb51abe4f747741abe8d856855b38c3ead61c76372812ac77217d5cf9447682262066651d5df87d09d62da6b9cb30e0c017ab6b105beb05be2c5bc5f9e79fc2fd68e6235bb7eca7f9c7bdc772cf36bd2b9e5b77abb22195bd17b6d52c15949315ba5c9ec20ec9d43645f03d1d830bedbcc48b9b13e1443cbb936a422b9f7bb41b997f607f6a3fefdccd6347eab24d4c1d128c2cb39a9220ab0a5ae537d87f0807004e132de607a22b8230af4c64503d8c10bbde67f4dc6a8e56b13a3634a37b2b8f4f106915c8c4bcf8fc56be13635a4638f0b40490925d261cd07e0d1e12de2ccdec24771a5d3779422da693a84e2a049be2fcc2539bc9c38d78cb946fa9cb7c9e195ccc76260bac4d54f9cc79dfc250394b7c77b9b33aa90823d4c8118f258a6fcf6b7468ac42f49e5b85f1b39ff7fdce7fb461682a9fe8e3542cad2015b93c4f4496f2b19089e4c120b29a645389a34ece8bb47c754f0312259758a7efaa7d1371c9edceab404b0020fbafdfe4616392220b8e22a662dd79dc0c306c9430ce3d7efed6fc27164e9c961da42df4051a3b30c8ff36017af2f4363167c88893306f77972be62967bcbbf9193c3e156f59a3c565b4c662da5d7819f9f441bd879ff3f8b4b48cc82dc5334e014eacbcb590844175e67219321020addae19c420cbc66ce3c01a2acb16c73df14f252159e3922bad00c40137eb83cf026e89e85b7f24e3bf369eaf266d91f34c640274049328579f1c075b8c7caa5dd36917268056984e97c8a2ad64b4e960aae4248e9f47e83835978df7aacbd9387cd36e6f40c9cc4b24a280e04fa982d1c2f79da64375d1f6c40207f81eff8bc1a419fb02fc9985b381fd3e5c6806f9adbbd97a956f24c564ad3a13f06d924443e245dadc33a5d88fac13f7a418409c70b9789853aed8626525d101b5a25fbe3983e0c6a8badff72debc9e017873a38d9fcd89777a7c6078f022c4a4c478f7fca14f1b1a7af855de163837f864f78f54cca79187275fe8add1d77b82cd75e50efacf12aacff562ca9d1141e2ec3085a85c70f3e9093146e095b4e88b5a015dff36817bb55b530dac94f84f094881efdfcb7796d62256065fbecb755ec7775fce783a4fd5e6f9d38b5a9a31d64d832b1db17dad90bb723c6638c7fb6a741088a5ef3a433b0238f3fe6f9e72e700deb5fe471e480f318ca6f9b80d9a3ecb96f9d53288ef32b21717baa5d9382341ecdaf66f7481884586f0b4df470ee7d4b3da9f496915f94ed4837f65dd349f2545d6482789aca2f9f7a4904ca49a8e06b2cf747009d1a5fd1c24f2d5bd65a76ac7d9aae4437ed5bfbb56a4f4463b736ef66704852dc2fef77c423033db2e4f7c6e5d42e6df73cd776365ffefeccb1b72662a8cc2a2191072731e0653a0ab15a54f3ed737b60c4ecb37e3d9320c428776ddc459cac2826dde3306203cdc0d583f795855b46ad31f0960ebc0a4b1e649906eb641badb9bf50faa39304af208bd769af2aed62091c44deaead4a6ad50223c197a3605a1b596a7f7aa8b0c529a4a2e388e0f61af1495494c1dd98a0091f5b4462ae1a0e258281437bfbcac68d099e95419a6c47a006e1c711f5c62e55be3fe3c7ccb98842ab14358e7cd36c262cc9c4e38a972c84561c1f19a0307836b9f668cae9809ab5cdc6039f329949b1a6a00aa353f6a04d023582132c57c7a2d1530b209e693bbdcd14c661f03a6810b8f5bc78aa8090e78364771a9a3f74336f5fc727028f7278a002442603011987f5079d472283346c00c6c4dca00b2c19ebff5bd8f0109277be58a4bd45d828f16b0854124a74af77a3af3bc4d5998f4715054949a1f426dc1ce1362b8849f26cb226cb144dbbab2a2181e2473850601dca485126fca32ec21184e5a87b7dd5ee982b58d1810a0a14e90eb143b35a4271f3ed51a924c4e06ef272a20b5b4e82468d0aa2fc2af17874a2a33640bc4b0ac88e59d77c7ca30bad707a8d8167cbde3b5aaa97fca7864be75193e272051a716f71e5bfcde807a5b8b9e2e0558f7efae2a2ebf971719a26c1e146baaf325c3339e64848036da7c462558476822e248e8df94232950870a1cf41fb9ee0f5c027584d808720248bf7f062d8fbc0ece128b30b198e41194c544d20b72fd5935970056df0494e53d44ecf18c080f9b49c79a31087155d1fe39860c6ad72517ac5861436ee96b13ab2380198f04c8bf7e20d23dff2f2a6110adfed16842699b5e20c9ab38b7181fbb4bd271320c4026192a70492c1b38aed8f35dbe3f195892bd32968af0e08cb791a00f73d79533102c1b7e6656bd9982231789f7c5c1ef5ed469501a6e400b7bbd11d48b22eb33cc58f0142b2f1a0e3903ccc37201cfb9861168b1621ee6d0c53e9e7ae630296d6b2a513b9c1f6b8be1d462d9c12647913555fc27a74c10dea7cbf80bd7b66d587a2724ba1a2f927c061b9eeff29aa75611f9c040a57123b63e0274920de525b22a3daf9d1f62e93d43065e5e28bc81055500018cc230474686abde4bffa1f95c0e356700040d10c131a874e4b366cfa52629709c9275e0c885f2ee1a642414c3b4562eb0cab679cae42083fb4408f06a2ce4ba03244caec23d1fe118f242c2d5a2c6fe425b25b2e1bdec5c61a6ddf69c65aa0737408174f72e39bba2c4cb59dc49355aa1ccff34df3028a23e2473a1ff39c82be999308d98d602761fcac7c2fa560a304a1ec5f25ee03a2cf044d5ac3cfe19e5c7a7c60edf85d4b47deb3d765c584233384b4dac6453a556c28177f002063c923876dcf403379244d195b07315479b204b1605151a47547d3726131bbd78d4220fbb758d29e4dc9963e0ac52a634534bd90d0ca92143c9daf5134d67449b1418b5fcc9ac77c9213c58776b0a3c184d74f28e7066e2321833349dde25c4e0152023dd219962a5b3afa9aed44ace0a62dee5bcb7f5eccec81a40ab0a16688e8fba82c4a4262e7e7a932d710fa811f44b7ce420fce32001f86b487061133b2a07e5ca5a82f1e76c0d406f70eb235d73439a248f21fc95bc79c8eec531959d445f604518b6827d89f4bf552c3a8c5d515e004511bedb1c463c0df111b66abefa56c18c9cda470bb7a780dc82f83331ed7d8dd3e3b9a2c079cb3e1cd1e26d66daebce0aa0df3258a94300c9f23d09c0482b1ec0cb76297795ac7aef5044e39b19b5487fc5ae65270679d23901ea5ef08fa79b4b97a8c552b70c32ffe012c5c84c620d7fb306db27d8a0c4ca611e68fd4662bdf16c23a5d393aae86b5f6ec5d6de0b1182787bab9a528c54ce6767b1c030fc2a02b58d52aacb82f0b3db589a2e3924e031f357b887694771510045232d2174c03bb64aa87ab5189e5848995cf378f12de0abca76e11a210a36ca0815d331fd8e53f676623bc0316e554004abd127381a7b3c5b430994b7a6036925573816e6d20b7f12b2ceb9d26c871f47b9ab26783b24d8c591fd565ac87803b91ab8b4c24229ed3a223d4a172b7efe7e7b6a993c7457e58bde352a1a0394a708fa1f617f4472bbfb0081d0386b5dff2fe19b5d0986b4403673e08dc2a3f160b2103ef790943fb2aa863a2e8aa9dc55eb982ef79a85e21844eb0055c6f31a5a84f58e594ab6adc30e5ea3d6ac34cab2ef562bbd403b9cc5816120dc4699f110198f0c1efc875e9dafb9d5820d95c7b423d21d156666884d9181b8706a3b5006578a8fc353c806241424879b8e3e655d0adbc059def4448553607d1c0d80dc32cb82cd49dc722f4083d4f59fc154b95543a3735f74c73b4647539ccebf5886b9c4a0ea021048eff2a209c567365cca7865925f3b1e6a1551bf0a1a26780b43e5753865639b3a71a2abf0f67238d8f6fff18e2c71adcc14a2dcd578f3ff433cd364794fd092f5531d757bccac7a6f1537a81238a9565c220842b55018afb8eba3b8acbe0412f852de810c22190e925d774b02bbbf55458eb0a7ca26c02e68df192d96d01e1a46c3d88bb709faa4696e64e5b849ce451323c6dd74874d77005cafed9858dc5bb8fd6c2c94203fc7e9f43e91639233e02be3120927528a9e767665665700d9d450be9ee7a257e1b980dda2711b9c0a5b05c052c1e4f2c9f32cbfa0533d1ffb32266d26d5608a6818da48496b2684ef22b53e31b1618afe725bd4b29e7b4e7f5317c585daafbad50d28a039209760e1a977c2716b4199d5f37f84c9e2887c54d21f1f0c76ee26904f93a001d23511ef79efe4ac839e1377c1a5f79ed04266d14d8da310b722c8230a5c3c79949a197e1ca49c6012d6401c6bf0a680d092cf789a52fc376b7aacf73f86864f91d3b08fad4e49397e93689c1868170b6e3573835f37f4ab2315d4908c44bfb1f329df8b312449032f565ec51f6143cd9bf501113a286acbcd29402e30641adb6ce28d238e6a4b25deec3c1909207a44f432bc4c41c2055d041962774a666a3199a9b5be4cfe777a908c1b16c2878d402b29fb6ebc3fe209105f30b19f7725487217ca95598780a05624554308e2d170a9f04f8953a165de1ad59dcf5c5ffde1a70a6279a05eb9e4d07744aafd56fbb541f1bcba1e27a4fe6145424f4faa94554188041e9c44177e84ce9fd61ea07df3b1d7afba38c97483e82e0a27d07526c4938d114783dccc4f42b661f7cf9a8d3740f8356782650f35188ac4b702586e1da876fbe0391da3b37ff2b8ec6fb620fc25f83ec35e68e98831906a97bfd59c0abc945989d93a8ecde024de91f819b003d29197e109c65cec7e53d52e8128f088a4a11297e760f7befba445efc47dff84108b218bc3c702d5d76bb8efb2a215142016dafd7e4525bc26eafce2bcf5567711079f5785cd24e33d1083b8fa8468fd74df4065bef26955cee462424d34690922d1bbf9c013f0bf21020cb29f25518eb4b039bf9c5d5c03ea8efaa6f9c8089f5d6cdefcfcac4555e270eae7812430b1ea71849908128ba8b5736d709ae3f52fb038534b8ed74bd2eb43a4d54c5538cf3d1bb7ced654453cd3856410cf7d702ab348f584a141f410f9c11db9eb25531f01358e8b8063f9d5995649c7f4967733165059631cd071db414ff4fffe353d1728e4cdee5396ea95341ab0b6d7865f68d4b651634fe844cd1b47fdc3e68fd610f925f2ed4e37284d32fa18df539c11fe14efe60d284685d88b11309cf67b52d9577dd17e0f7c7e97e4d341f4bd8e6ed016ed8a4133b0eb05cb237e4297a0e3178d2f282e1b601d1a7514a13433fbd3070d402c29700f7204ce029564d8a35ff263a1a781fe127407ab996a0c84bc96a4ebf1eb6d0c20915a6cb29736b4d8cae63884fd1dc953e482ece968bef29c916afa1938a33cb2996d1577840bfcf54e9a839a7cc0725975716a9af79ff262f66ae4c5738636139d0e24e354b592a598d946c87f1027b86dc0e5755e24e8a7502ced5d63b772f99d3896e39a05ee298ff37450f1046342d8e39557ac64d61410a6680e8fe8be14db050680314a36ff13c6502925a1235dbc149365c613e19344dea5b1043ee1a74666752e5f15fdeaeaaac82c78c8eff11c5f32a8d506488181e1489776a0eeed14ff28bdc5e8a8268fb468788fd37013e38efcf90ec479866d2f4362e2ce84affc96abde92cd53fe54a9dedc0387105204ce2eae02a7a0842a44c8af2b0b4e2ac1f7c712aea23c7a0115f52840cb8163327bbd591f906cfea0639e6e426f1dd2579ba2f6197ad84ecca5e9f03a9c284dc0b32c062ba3e3bbaf2db9008b1de3b6b6b6d7aef9b921c9ef4b958e501b50c82f62b5cd1426f4c681b6e30a04a531ccc0ebd7b8b4f7e769e7298c3e2ad15728ec363dcd23136b0c25d9608469a6ca7ee73f25f90d2e702a1c80ec07143f7dc3e5abe6dcb8c365cfe6f701216678f86363849cb962d24e799c8d8c636e22b04e6accdaf6dcf39b0c5820559522a74c7a3926c5a8051c3b3027f109ffb9ba99c385f683e4a2c085ed5c2c5a724c78d8546d7570176b41abf36725171892956530686b9cff6f6da7a630db1727831a8fec1b8d716c0c1a5a114fbf0d140459647c5fb92374316b3ff890bc41c0080727ce858425de6330d14edd9e159944844359b3f337ab483ff0ac8a17868e0bd0e3ce8ccf6de4e78eadb1a37a5249212c8f2e3ec48dd3ed1ccbc093d7ebc2ca2b2e7cb3a77745d7f12720578f50d3017bedffae499b9d3039617b8bb2b2ed9a75f7109c11376a50b1b5e1e033cf3839cae2e279cbf6b3e361cd740cb79c46c7bcda2654e47dd362039fba375d28f31a5059cc671218be13c52aeb9a1f80d089293689a96a030b55d689e89b587d475a7fd8ff45a1f08ec9cf9fa66111bd1842ea4010bd4a2a5aff0e30432ae0674bfb8090105e42add38e83f4ed000eab1e7b756dbeed8f96dc102c0dd77f0d9affe3faf6512f278f21255ee0273c211eeb90cf786c4cf53e21831501ed51865f71a92f81c72bcc98eb9ef0a92a45875637f273205e39c60c9ac158d63ab099cfcf6e000794baa1cd9f3bd9f4af8f20bf1255216b36aed8b10bc5a538dc5cab2c07f8a9a73dc7616ae480eed0d25ab52249a365c8a94f85c32922d4c8befd16e082074f67ec84af58545901cbc23645c5aa73d863641a7fc5451fe2c8ca0b7c1d1286950e23bbd3ff1d87930a958c4cf8760bae2c1719f276c7f4b15708d2e883141e66f3aa7239b1d3dbbed6515b308f2c17ae662ac94907218c4972eb2498952ba7ab39f13daa66a2423fce9406851149850b2afd01971a06ec824a0728470ace58f12bb3fa5b70d53cd807b058b3a65364a59d678b3a53215551da5b709983eac9fafc38c7ad8eb25a2713d579d765383d0d85012da4a08b7a809d5fa443acd207f4bfb690ccb855c3c2d456e18f913481246f84b97a1d0d0501251459ff2309ffbcdb370c3fc0af99958844cba366233c241c0640516d41b9ee0d89d51a37e1d881bc63edd7274e6fc348e0850718ed0746caa9f19d01107917c59f1cf64dcf1fc5c67074f1c29f8680dfaafa1bef29fd9193f51b34e965c5f76e36cf15aaa5d81a3eb02241fdca37aa8b8f71f51784a16b0b62d844aed11d73bb54e8600a8543d56d0c221409b94a537d18b84184010640208ece15dc2e5ca1922a5f91f31e01817b0831c79d4149b14dcd7858f094337a519b9cfb5e17622124c636d5438e9d3436fddb6c62a4866aadcfc027f8c36abcfeb2649f8d81ea572addca6d7961ce414223be6bd7872c90658a09885e96a46e478f3685a86aca63ed63c279a97d7321f198d4a3f8212221f934b873cc6d46c2bb5df96a67dccdc5be5634f15ae6ff7773591f52d7ac640b37d9df2f0c66baad2b06972eac8a1bc1722978fe9f19b394c58c77ec29199ce87dab7dbdbeabd1bc29590d2cc5c6113858be0adf6d14a238f33ad37f06ae91813cac5c13f11638ab274f01a13bacafc19e01bc8987e6347c72ccb513e3a883a94f6b386b7bcc2fe654890d2c6f615273bc0ce6196bf58534f2056e77f54b2f09535379ccb9f73ec096a05a8744b10349bd9f7a1eaa1195d65b498d4537f77acf5cc200548c30537f06534c034c708d6273a32a5e006c60c2629d66b83eeba7c8eb58ed8635f9762847906c6eb62c5b8a8787d721f09642f281de34cc21841cede956e2008afc650520d9881f2f2464600fd2eb8ba2ab81f8d84d57c137d97b746bbdbfbca5fc556565a37f88d2601a226dcb1602a3126ebe1ad14e821c2a2e67920dd7e2defba51eeb3e906188b95beeb99139e38bee29acef659942cd56f5e43bdda8ae44c622a114dfb719e45fe3c1f3386156c15459d722777308c4540a41b61897d081d51a47f7481f0193d55dcc0ca7981b7e20d3ee8512389a6974c97bbc9800ace717d57945aaa4c6e506a490c98be2070064310ff554de1f1c9adec12f4a6a6ba8e0590fdfc133d12a7f970d13dcd7e86bb5967944a5e53e2c98de4fde2c598d643b5f2798976b28f23ee91bbe1b30d3c38cdeed4f6e27b69e50457c12bbb25dbcb2c4b38084dfd415d02a1264c6571befa6a4049aff6facddfc1b244e4aecd2dfd0edae4188dafa0c72d7ac30fd26e319c07e976a9eb6d6bdadf63794405694165011eada2b955e78526d624b01c8e5aa7bb1ef122a288d0270ade912adb89385ee9dd6851438f7ade3033747331794c31612eb812642157f8313dae0f4d88bb530463d01a763af10cbd47230bd0fa3b615f54aa42dbeb9618055b6fabcbe3718381d436e6e87f3fec7f159460c533ef61192c5def918142c72d4f3b3526e060b78cc6b5d2c296c809ce4d68de7e4402cbbff71e307f426277f3e7d654cbd65a42824344559eb3620b860fe82fa838ad5d98cf8bd457d80939527c41075f68e764e78dba497e80e8f8b9b4ee21e3eaa51def4dab23103bed6e69a7481d8817009555e63923f5d52ad3b7c1f5a98acf2a3cb190e85a577e005152435c115e03dc8f5eb03a975bca3c38d937535c99de97dde669e01012f9e8791f89cd5b50029250efdcc44dfbc334298a302e69d9b24f79f438446c72b1c63c1f6b54440fb72595dfabd0d8da03f88a9164a85ff2cab8c9059c0cda63360279ed69b0362f0ec34a076c075a8cfa6fb36ef5c0fab5517ce6b207ad6417524443341f5b8adecab2070114af01304fb2a1e2961b8c86bcb539d6384967a3bb38f2a614b2078c2a673bc345f556a4aad5339f924e29fe6c8d02f63f37a1a88407e9f6131f6226ea32284c41f26b66db10223b2a247c58515f58c8468b446988f527b4ad668a41391b9fbbcc990f9553b84e0af2eb0f263b2cdecf2b7a74462b82ebdfd06095e6084ff7f344e0172ea512b5a20950f9e00b1d9b153a8f4dce35933865864fb2c342a7db1db8f71c1883377718d8dbc32ba8c38afb228dbcf4cace2c5992b4d5620e9ed20ee36ccd1b62a6313300b828ecf03e6db144a1a79b927d3301db9863d32f51f7c73ce4da032ac9860ed477ad842cfec55f55b74996ef02d3eaf0e7b0122ff648362a7342ef6bc7da04eca4249ac2840e974f790a7f8ab1ec57e43853c49e92fb492ef24c45eb10a7543a28bb0e62e7a843cfea73153328e9f1070173cd09a37b171c5f4e0ff421e95f5de73466ba6b821542fb36be869d971a6754eafd475b569c2012446b081f438216428ce0ff335001ef6d7416cf47fadb599598628f48eab6e5d946609ac41bc0b051f07ab613087623a0931d9fe29e50212359dd4aa5cbca4ad835cc37530bbfc1014b91e8d00093af933ef15c2c20076463cb79f7fd264acc6c94bceaeb2ab6dcb5bf2112162c3bf82ce9b7492ab7c7ae61db12a2d13c21b502d36ba670f86d9dddc5e2fdd38b50ebe2f80b599ad3c36d86bf1fda7e0122b5027702f63a46582fc60c36c530fe4ec4ca814aab1af079761bc0e8306c15c6eaede8db37882b9a9b00f51ae9c87635ec000b808ba307103787f06403647e7249728bf367eaf55191dd7f9a65c0e347cfa501168f64ed3da31caefa578c61034477a7b55854c331a16fcb48f6a6869367027f78e243be44680a95fe507dcbb11a8e2a47460492a895b74d221532f09b8a35f901e5c58ce3c3ef1b83bafa5ffccf92b57e0c69868df29762067525451187a1a1689ab1b3758999646277fe4f555cda4554d13b48707aa8e2547625c56e63328dc8289c431069963024fe9e185ba0fceec47f9d4ff1670c9d31b9fc491b2f08178be90c803eb36d6da6c817a808696e6e92d7f354f104e5016a78a4fca223d31286020bfdfb2a66e2e8867f7afa7c8b67291ae89f4f2efc424d6e57711edb62a6595a3c381e2ee8f784b4909c36afa862ae934456980c26a9f7405186ae0b354d71642ffe615298c0cddd945391bfce92aaa663fb9d87b0c272514efc6da64c32cfe63142d3105213fe81b7d779a518906d7d9cb7500f0f0cd659f515ed4e8db0ba52208ee029cadc051f5f428edaab56fb95caa552588eaeced9127c7e54b0a169c80c5778339adf73fba45453a053bee070c91bd0a20ff57f9088f5d2a37fb95791ab3db70dc01b40265baa6aca6ff2457142b61112cc563b85f5ca458ce5a63e4bfeec27ef4df282acc8fb8f1d1ea3fb918e6d504145f64b1ecc9275d2383fa6025977fb5327dbf1fc1e6d950603a68545683c1875a87d491776d599cacbaa0da1ecd44d45937c55396c01deedf19e6f6a5b104274ef37c4e27ed672376f8f967482b1e5dedb707b6d3e57da1595f60305f3d9f5ef5e344775215c46e2335ee039650fa92db44bba05360c42bff63eaff3a3a9b4f939a2ee2f07cc53f5e9d9aed2360ad20c6bd12c48858c4229d09aadc2c8ddde7adfff36a0004a9199005e8f8c937c704126aecba0c86f3a7a4d7c629b6600dda0943ea33d36d98bf57ac0980e3d9cb578d4dc36f9a2476f50c19960230ea40713ef779ada9bfe33c1f26018e9a7e1b6c91e8d0faf93df5fe0bb8ba4f49a904239c864085476c2eca3543e5cce834548eda5f598ccb3f1d6f3da36a2132202eb8c73d72369f0c439b2f201b44cc9069670348981e351a2a4e962c145d98b9f8a317a21083f57f5be46b73ad5a17cbe3fc7d728c16c4914bd3eec5f108b944b9ee67df2e4787e5f1fb0224e933a2167549a8184210df9d65e7ef5569600b5934b238981795308f875e4621ff026ed20a89fc90efc8192a2efcc89be9bc6e1980999cce8794ac94160ebed2c13f657124500780ca3006f85edf01c4ccd1c3b36038929128538534e3383694bb478fd22f79b46552fd20d44a8c9dbacfef8a4b9d156f8522a6ed56d79e4b0aeaa332f854c9c038c47cbc56189b9af13f9495cb6f70e758ae4ed41e49d55329c40e28d5bc6a4d19cfebd04c9534bf0a72e891880466c4bf97b4cd74881f0e5533bddb6effecf3a392176fedfa9d6eee4ec2e9936f79665f331e9971b5fdd142a0e669bc0422db61446a239a4fb0474e76ce7092ac5b9533399a83d9d5722b23709b04da57949cc64b6555c7bb352523376843904b1a83cea4eaf4cbb071629d61c176264140d4c0091a145a3581d778085f87cc0bd930a3267260ca41c7b9e847ceab76b70a821f86029b539381ee5e44eb23ac383345b901e7c8580dd69feba1559be010cb4e9fd096b1cc56b2e4a0c3858b37187577a0c9d6e8d82a1b5bcc1d27e1e2cb28696a439ec10cba3cb8d24c18fa6adf7dbe00bf70e41949e7f242394cbb7b3fd8f80795d92e6c0a5b4e0ae74f0cef5561a33a39e6ed29f025157190471307a3fe6a7f9f6df891a43aa07c35e7e8110eb31c8a887af8c0a89c8677208e9bf58a05d3c07d2aa1349463a7ca05be6c8c3a6ddc8e1d60b3f8e0ef1fefad5168c79b7b9ff8ba15cb3b14f319da3a8a65483242de9cfe2deeec3c414e5aa35ebc124d69367c912cd9fdce19c3f1f18314bfebef021b05a51cbe1ceeb2aafec2ef012434d74752abb4852db16914e6aad7bf7b7771ec77abf8c20739b77052c9a1699b7b60d7f69f6b63696d0307cf9173db5267bf6314b5c76b25d995472c69fc1fc2d6498cbc65d712211e0f02706ff34af9a44cdb445cd708e5c532f38c5f020410cb610d94a18eec616da3aac0e3284b19714765694e582d5457c6cfbfd0207ea42f4e046510e053fec7be358d5791ed9cf3f78f917e2cfd519c49579706f7bfc4dbb17865122daacc3c778d8707dc5bf3f45860ebd7c53529d57480f7951067e31bf12cbd2abcc71fafa4cf7d4f32b8ebb8664dfc026984273c5b9dd72f134a7ed4e8d57b43bae166dc32f059c74d353626df88635bf3dc4028ae296f5f4d0748e6c57df133ea1c4e944373efab3c6c24b1b38effc18ea97f309ee9fe6ffd774181dc4a49a1c040aa395e57f3c1087d745c42b9dbfe6c34a8f6dfe0cf98ce8a03330675d2eb821fa6fc1c9be18c661545a9dc065c4e26dbae24ebcf25cb6285dbf8032b0ccc4e15b1fb2d399818a422b885089d2cb7a364e3f181a3fa7ff064728fd9e689cccce17541a3d800fe55ad4c710ee136e28d6566fa56a933ef137ad88db5793ab65e9419e821c41cae3c7894e2055b72bb97a58bfc323f73de8fc4d363cef61c8f07309f2b6fd625952250a4667eafae6267574a6e3188cf408f0e85ae312ac1fa225513732cb114427d31b61a8d5e0a8762c8d3079880f0785b72a8b3e8903c837e7f6519f71895d1d6d3d4ad656daaacafcd1629347a8c685867d7d6efed395eea2b9fa69a9ef50d7ef92f7ac3f66c56282e37fb55915b1f4fe8a88a6b3a8916dbd4778397a798344cc435f8aebb8130db654aaeb6038f8ec94aeb8553753b005841f5f88eccb4a107685852b5dbe3ef7abbef877c3e86c7e12902daadf66fd504225f97943c1d2d6ff72d80d4a0f4b2d332b23c61bf37c88b754e37cd8cdfa0d11eb170b9e7d3d33f40b35c24743317f038f78c54c7bf8de524eb955b52016025d8e13bd3780e8e00133d6e62ce62e9be9bc46554e1684042c6d7c1ab9c28d85e250e5b38b26dff16d9fcabcdafe06eac95343c549dc56b0dfb17305e89141f25adc9b19d7a192e67fee7a972a38d4ea89ce4e99d9aff9e02d9cf1e5eb3bc4fe07ad10706b707f962a6c772ddbcedd72b58f2698d54e7b585988d490b0ffba77475840c798faf6460b3f419b528ed9da0c4e03edbf30e8fe3eac0c8b7881c2abce86871f82db100f4739e643055ea905d4c32cee86e49012e45b4f0f5e9d8469c20a14c33cad697fe62b33c11c41ef96508a26f8734353c418b46bd4f2a634ef49f1b3a73012f361ed6bb0d4cc9f86337f61bea5a4e2609f8bbbcd8e63ed594d8c87e98b2c3a250786346796a070ea0bbc783b8716cd203e8720f3dd29f01f4d0575c2c4e62961a8040b4e2b3cac1191e1c13e2287031445dca707845c8abb24b047d7a78ad374060e085a8fac6965162d7a599ae177bdd13df73822e287155c44594eec4e2dd9a7125f6a2162381baf4830ba45817f8b7ef2401dcfe3dfcd4729b577ec26b337cedd50118bbbaecfcbb8a43c8234dbfdb662055a5fcdfbc3c2ffe8a1682802ec3086dcd22a8bab4c23d5e70e96dcc6ae9a7a22ea8e60be3e2efbd919acf1c0b9ddddf4123f56926039fb453c82c92ee6c95853399406bb886e64e901ebc261f6273d94a3a1fddf65e56597b214a454faaf8025020021ee06daf8b27422db50516290facd8d0b769d6e1c556266a5efc27b605740d778b99f6785108bedbbcbed6654b0b09a000d456b70c3a1fcb9510366dc77025e550d5af577cbce85d9136b566e0effec46c13d042e98836d72451ea728144eac2a00a55d66bf7a0a093b1051a0f0ea5cf7caf1c4012f485f589abcb0b42c59892deef9499555787dd912ee63e6908ebfa10c7be15a1181fcb4bc36f216c731d788ad0618a7775a8e1e6c96c673bc00179334f70dbbc4afcaa768f4081b1ca706c9df10a9fc94da5ee7461cc1d3e5c3246a42f38bfae254592f4cdaca5d43007ce5f984284e05cfb365846c5ee3d9fb07db7c8169caa4881a99fb5a900fcb8370deb531101e4d39f4a3ae67dfb9f7d76d84c1f1df2c9ef376efe2f37f503b4d568e8fd8a06e114730defe30057d2be427384f72bd4b05693b9d22335b5ff92d94ca9182bbc5894f5096b282dfafec49ca5500bcad6f62dfb754ef576fc068e893f553301a911719418c72946fa526833a03841167f74108ddb8e4005a2fca1f5912061e4a6fd2a85e5df515ebdc40aa262f5a6914c56c2613b13a2805806efad816b1052965f14efc73677593906ab0782e08ba565033f97fcb161ec16664f0d1fdee58d7aa118c183edd68c354854f4793d4b8dc83c7530a6384bdf8e988e2610efbd66e0d9fe719e129a0677c9271e5043d5b4e103fa9c8fcb1abbca827112b2e82e89a5fa9f965058990b643260b9acf8acf65bc4321fb142a299caec3795a15c128ff23789b69f690ac80a006dd1da36b71f9fd0b149f4cd2cb091e3cd57040d6375e69a237ad65474bd712a4120b52a98f77483e379c761da2ecfb395be3b2c5d36d4469b451bc024c7b384059c1be0548c6cd25dc01a3df7df641e886d132b57b07283f87d62e3188dc8e8658736a2cc4b29ddca0b3bf62029956c80a6d78d4c50aaab025a346063e19e15eb49dec35b21ce06bdaf89c340728fbaed296248f6c7c03ff276b2544efa1435a02bf628ff5cfcb6d89b13be5e68d81a21d10c11b33f528bd36e1e11f25a9035327a32dd59ed94f39364f6f5372369370827891f3bc0c0796dfb193a2127a81458ce687970b529d140fbcb6efecd922bbb68f9d07ec1f042556320aca8518d99598532b5d115e61bddb259241a3f63e7b2e3bf83dfd0b4b6e6dcc0882d123bcbcc25700c4dd48c6d8b38a51bc7f9a20afec17dc61fe16ec9d3d7ae6997eb49b6619dd3863a8c90adc3721e86164597e9ae2457b29ad0eb8ee1d22791e3fdeaf67f796ea35f811ae9625454c8e17a2c2159a5f4ee5fe5d4ccb3a95f1b5e19689f2625ab6ec3b45206fd464a3d0809202ec0f5c36fef699062851efd893923bd24da6f856ad4955a375befb0be1d61cf16848c60392a2558fe0ecff17ceff153081998ca3cb4140c877805fe39770349c643a470d0883ad2a9ac8da37effadb08e17555af29708775b6b8c25fcf855a2e5bd66c2174d63c6069cc7701623724edbb5198d197043b8499ead432fb077691cab12e0fe9b900aec132e583f6b167c450fd7fca6831ee4470322cc97feb731e41c1969be3642502ef0e11099a9fdabe135a0b12a80ea210d437537a666f7b47d607cb4295451e46c998bbf3928f67900bafaf8d893c019a732a3cda1fba74875e2053fff196c3fecb9fcdf573b7c9e6a42366c95a48f8115c7db4b6693de783ea5b8b2b172da13f49b3505f619a81208241d544a1285eb44b9fc29206c3765be4ca5b0992201cfb53729943ec1dffdf21cddacc83db87d9c9a041a6353dc0cd03a6d2010592659af8920131075d86a888588449536a7d9ed962f4549814003c23b31fb2bc1f5fceb2c0d1b490567ef5a79fe2aced7417ca471f995443eaafb9014bf18e40a933e463c105586d307b563c611bbe29143a119786927b67450150c7a3529101e821035c381ea5c11e1949b8cb266dfae55e2281918d41715d65776479ddd0a6b06e6de905b0f697251e93df85cf02d18dec32b9d8f9afbb7bdd00ab22aae105bc23346407439c4d7fef9ba5e4b378d08d71fd6e24e972918e21b1657847ef70db45b1891f1546f1a5e105e4dacef26732a4ad2cf87c244b0d3e1f54cab2c28696e3166974048b575cf1f9294d1f4de0be48d1be0cbf9547987bbfbbc6172007caf565521abaed2b66fe91a674bddebe0a8a81530a9c08e39c71dac83b90903bf0c00a7b3b27ce9bda8869732c87016ad0b2e7943c0b7d10e80bd8142fd1f26d0276ae9ef096f51b1a4c8010da77ef55eb492f838b033e83e39456faaf2c806b03791ad1ced4e6a19a68eb18112f001058226a4af7fa7a5353cca58b676c98c7d566bf5ed1dbbe2980ef6b5f02cb54704de57fb089adb4106c2902957675dbfd827aa454851869b6af166d3266ac72ec17c6fd8926ed8e753faa561913ecdebac91e41d7559cdb7586dbc9a084822b6693f584880dcd0a838ee94dfedd1ef492250448891c51c4c4195182d76eef6bd9656e831bee8541b56f0ada525f2b5e12166ba4fc9bcc1cb7b66ee00d82841a30a80ac9dfc80df937521316fb6e22d9493421cca1589cd95ce03193825d280bc0d786ea00f12e196ed957c0ddcafd9cadb26986a9426163ef47f069be49aeab76d5b4ff7a6cecb71b10a980208123a56d96953d8d6a0fc8e400a73318e0d5b214cd4037e03d40cdca8fb7083cca332c5d4bc212ffefaf8961bb7eebcc6bad67898d8a40f3eccae147cecbcda21363fd5735cd4a1d17d8f16fb68fa22ec48c37a61f763b87b7537ce882343e126732184fc0806c04abb0f1e327defddb093115f6330a581a4328e4c053d301d8ad3956a3330af7f62f7069aec59ae9e081dcfdc37380bb0f1344839f785e50c298c638db60784cd19a348800116bc4cacc5470940a312d97b63d3e81dc285d9aaa262e5a87f12d0ed913090abe119c0ec96e3c9c06a21e50a47a6af8315298327b692424b4825ded5a83abe3f2223fad1cb1e72b287428425c41f07131a2cf746bf22103ce39cfba901de460382e2222b9e1b22d338602cf3162eb01e4368ba4ee30955bf840698179b782415eaf10a0f37bf79f779eaf674ce89841753fc189f31fab8370eb4d8fb8d6868b959d26c915afdb50433d9df31e8c6835d07144351b660a8cad93bc8c77b2735727fd2635a75c518ddb5e4449dc9070254fd655f58253459a754be93ea1361f6143773bf862e7fd3c7a9194b41118701250c70daa12662bbafe763ed134ecf73c99890f06530d370ac210e0afd86f10ff64afe3cee315f226648a7947ccb34c217ad552e09b0d282d1745cbf9f85aae5223d4eef973bb673b8b54efd24cb4cf804013b1e5c72546ca7742d3dfa4e4d7c858ce1e44ab27ce9a9091c3ee443f9e60bd37bb7e8f627a79575fa38d621dcbcaee65d65d1cfbc9c38261d9e33347ea7f9784b64142d53b99930bbeb8fdb70f84bef5dbda09fb050f8b21139818c48e7262f70d6ad24e745343903780398ffd19c3b2c39df012e834bdd9ed2928b4d68ff4d91ee9214aedf19582303002acae7e5dbaa881417c8934d49707a3cce44e314ca1491a0e365c4dc335681a5b49dc32db882b417ba3665e7ae0c2a55f0fe1041679fd9d87aa6151ebcf66e1a152329b9cfff9e3bf6efbc5a9fb5f26bc83b40296223e01fca2f89b7ae0a0a49be36f2d5a88ec48f6559bef3a7bbf114a4a339d3dfb4c70ea9c84fbb8420f2fb2e8610a166d03a7199fbc4afbb0f5e11a38dd65db759fff4a6da3e22106b64f03abbf5412a385e3c88c60da7f7bc5f4f8662646dccf2e2363902285179c4235af62296b81698ef141c9ab9e96b3504ea01a48b0fcbb40578f861a59ba90e111f6eb0db8f7fdfa7d7dc66f85b99598e48e37fb37425eb90c9a78947c9d93c88236ad1c1ff87043b0e2159b7eb7fe47d4d26230e2056dc31746e90662ff3a1494ef9843ccf3361dfbccc38db7ae822b1ed82a14e45ae12443323056bf55415e5aa55debf54f6fed753b3f20643308b925746d217f80f3a9b9a3252327f5016873b5d1083fbd9d5e5b96786030c501eb234e11a751a8bf7bbe93f05398b19611958762bcd27f555c7ea9f0feeddc79fe44db83d144ea0dd820eebf54f04c790094603ac7d26e83ea1dba766b5f3e8039e3308016d0fcb87d7b73bb7420d918d804e5760179f1969dfeca4cfb1bd515ff6e085ffbac2acd808a11631fb5dbc76a04626cb04f46db5188ed73b22d04397089c9e5ea3e439aede9abccf54b6b27c06b75f424caef52fdc5ac3f9bd4932597201558a882a581d481ac4963ae7092480733d8cdd743330d7a8a4d1c0689890b4ab2d0430b309beb30cd23ca1c2a4b09f11d489e2f3075604006a5998346e7e69e8b33580108965bcabd09b756edc54708517dae768886665a9945d32b7d159f64fb280c85c3a1e44ef52bdf79e3aef208efc83556ddf21311a356bd8fbfa719fbee7616359d07c9f9a1909cae6b76aead3398ba85bb068322e26c45a04d1ee8a9c6013604cda9afb2c4bd3d4fe48ffc15fe566d387530ce94508cce5e65072bb98250ea520a3364d7528fa9781b326a145c254c4e468b5b7ceb30584bd044740dc1dde2eba3dafbcbf3a41979dd8cd3fa158c2c5155561a6faeda1d954090e1e7ebda0cfe11a394db2f3a82f11e0f6a1fb4a409387524144c3f77d719a16e919f5e6ba24319c7d090863d01f6e602acb1a25ec0a61b5399f308774319986572672ffd68e7c5d9beab4e6b439e49dceac81964d001b7d9d77751f61f751a6ddccef97670d05c7bac62d46bc31a8b9403ba6517195db92b73d24b96778ed1d5721fb6ce1ca71e14abc7031ca0ebfc91ca9a6e707e7119e33554b5bc5dd0739eea4288fdcfc2c0d46dda00d6218dbc7d4cfe308227f517dc352d44db8cbd6eb46d59e8f79712f4c229bd7a7bb8447fa78623f64482e411ee98065edfd931c7deb70d3b74a0f7c2f8092d5e82b3aa8d227576160a78881a0251a45a0a266536e375a42e28eddf7ba3db07f122e187293c9679a5800e2b2c2d6347012c103fa784b57aa4b7712ca96e8f1f16d22eb3863aaab76c4eaead0146bcabc22277ff17e5f7d7440221d345d30d4fc64e2b9d24feb8f7223f196431fdbc8a363c3d7d22034cf93a6f7d2f998ba59d0328982d912b7087c3bac6425cde716fd36a39bacc76b57ecc14c7144e0a1378cd323a492c892575ba909c5c3b9d8267356f8f3b709f261170c510fc1d222aa6bf446d880ca14ce7e3fd4ffbecc3dab974037f224ab095b37dd772276fded458e38292b2ea233325c3b9923867a52d346d942e351c60f3fc4e172c36a4ca027269da3036ea19161e880e0ff9728ab9e4edc7919726c1a17bed8d14d68dd8a69e67b8130e14ad2232304dd398d35b36c67450b6ba89d564acf802a3a809d49cb4bfde1838dcdf21a9994078ce17eb79455c72213e196d10e62660bbcddd86a70452830ec27ebebbe19f068540bdddc0d11bbb0b2e476a03efe0cc12aa99aecbb21a2f80dde5fb60c39d34a724e59b7f16138bb7b2b1fe990b8f4085a607fd82d604d32d593ba80e967f141ecc7696e26a86c44d79247cddd305945597ee48a8bbc5cdfd65b404c8a2c5ad5bf2ee7e3a22b59bcfa2cc10fb4f8e829b3af4ebeb702bd81fb72e4aaad93603d53d9d6dd97bfb9231bbcf745cc0f6323c38b351dc553b3751e5e3a6777f046f0c6b8b357db6f256386e5de35d73d5fc0fc175e04871acef866e32d2215a7a5f0d2dd63147c9d8e364cf829da865eca426ff066766d2ee724a87c1dd869cc20c4fabe53c445ce9cd045e7b5040cb6d3eba167821a923a145ce40ccf751cabed3c73f6f594ace28ea84efd5808c27e355a17586106cc4ea8edbf8d049cffc860042df965b23416d14c3a564dd7c681d19a6d6dc82edc375aeeb41c7fd6ff47558b754cb18058183e15f51c8f5c9ec6c121e72e8602d2267eb5789ef751db4bd8db766dc997be3b36577256607c229d4a15f2faee4db1d568892dddfc5828906ade789ca92a2dcb6ddc6e3b7b55b4833506966948d9d22612ef635b7a4be0189a007d30ae2d81c012af53658da7cf2017c7b51a4d9e7109eea088a27e390bbf26961a996f31a28b7acb3f05c7f579e98d575a2aad01870510ea9de0a5be8a8aa50e699f56706583308d46912ef305a7f7b75c5fe1639c675a13ccd7029d4348992a3d842fe3f5e8f22c08455ca822cccf7fc50d51ee426050524dd9275d92e102dfe4edc74216ad2f22645dbe04d4e6f23a052389a753b1cf06b69c1c6eae7006e66e15ed3edeb53eb5a752577fd7857c6a8a9608e37e220b650a43e020e7e7994685363966a301e7ee34c54dd6b06f51589e7f060b089cfbd6d50d84e4e5a5e930dc24e30c89cdc02c32decc0a7be57a8e6f7b981a56efdd45c955c5b61464d5ffd141b426ed3786af37480fc46d954d7f5bf45d8bc5b32022666c721c2a713ec965873ccc25b9804a0850d2afadb1b3901d634ceb92120e10234a4dfb18e43489759ef03d1ad3e9958cca5c213b418f8069b7ebb1d28f862815a113dfa7cdaeabb9c3cba3674895932abe1c768c8cd4e5e835b67acfd47beaf1f604bb68de6dbe97423a55ed88734570de92a659abc2d466206b6fe465731d239c078afcf79b56b64320f4a36537152231f98b065754de9d427506cc8d9a1fd46d3295480185b99326a69ac374f465159662d166e63742ddd5407392ed9ecdf97e18c5b5b006f2a164b95ff947f78f36916e2209c74411078bb40b018676d05f29406894133752d41c1f15df34db931b705f57bf8d0af26b2d790bbfcbb0d894a9366d917c13c74b6c292cb7c86a2441e5d9b26c860e05fa08769fab72605cd9252e73a946a41f2d52d2ad27128b887e9ee04f0bc5632a316547d8f2da8745ac19c951007079b297fdcb53be9bc4a8adeba7b341dfab9f1d53f355a557d71ff9b5a749d3481de7ee628ac0b9bf6e0adff1c4610e64d73ae15f604730cc613d5ae38f3ce66f144d11995abaaf009856496b8f1ab60c022f9f4e75c1039c930812c9c9e69cd193a7ced39da38a444d29729dab7bf699d80838345d19544f9b91f0e492b88871f5985a7a184385035434fa5b479ae98e2bfbc04a71ea9090552dcc11ca0e34ec6dc1ed47f6106960b493791a8802495f4da6d547ea8fc579dd168f341c6f3d133c46a8de35eeef1f58ffde6ce7ccc148549346223dd465d37dfd9c30d155d1603ab52eb1623a361c0adbffe839a39921040183f26807d0eeae2d25012092c666a99e0c2c500c116eba658807847ec801f015e5bea4a643fba12bb6197fb493ce255d606fd9c08708397921b6b08d95c4c6521af9c4958148920b70f2234718e73442a45c930d5137b4f1f5a05eabdc0dddc1a219079defb2d51a4b35ec53416fd984fc5a439baf221333295b6db0fe579c9d0260e919a1f40ffbe88c68c258ca9a330428d50b22a60dc30f2391c9bcbc9f02a2cb8f74f00fe3e7cf0fc6870fcf17ee37a19abaa771d2e7e7906e52ff55d2b20bf57762ec5784584d83087e41e5a356b4f873bf70919b0a254529ef46e348eae951fba12a1aa87a910891d0eb8cde30f07b9bad73502b9a0206aa5d49dc5d59f142c9c99d84749cc1b31d08af2cad272cbc30ac157bd4dedd806df6b5cf40dc62d6b6c011b63a80b889b5092cf3c6a7458af7839c3b8dd35330f6fee11145fb95156f9a999623b63317aa43e19a5661aac56a3061275dc341e474664a5297ddb94c9ae96e905d5e82a40fd906b3bdabaa58b95e162aaaa4658c66d9a670e4fec1618a3ade036dcbcf70f8c06040740a99f0d39ebf5c5660c7fc7cb0428b112d4ddb0351e8eca9b7dcb0e380ba4016a840c458fd7a7f8f5e1db71fa18cd559d22a769df0983b7d97792202afd0c3fb832b0f73e0d52a7f2ccef29d0f3579214b64061866fcfb6cbae41e0e240f09122bcc64447702653528e41a6ede129237f417966e2548f88833ca51027128335a0aaa8209cc9c8497bf7b94e257debccea9a8ea39338c9304e3fc49f608ee8a3c17ac33d6a066d690d0e7bb57f837803d7b1869a257f0415829a6e4c7c94cef535f43508cc2ebbe0fc5224939c8d8f9af81a008d8906d19ffe2bb2c571b878301d8f266f65cd640b0600eee87f500380036f6b22879fe90ebdeca3e502e382168450d57cc02a837fe8cc570ff8c6d5f4ff96704152bb1a899e037eaa6d52df10d2b354a5f5c5435f5ccc9cbc77c4680fd45a97d38f750e13b74f9944f0695ad21a86942fc1eda29bdd8a511f035ca16fb63f07cc67ce57304e514a245cc1506c84729895a31b905bb05cdf9d4416fca8c9bb8047e38d97c8c3ecac2110db88d3c1ea7341233e44f3b7cd764849d3c53ddd507338b6b38d036a46190be237f0893bfc63ef682d25cf9ef679bba55eba7ab57da2cfabece2416554240ab80028a54e56fbe498c5ab5eff07c9a50d6aa55879f581cd11b34201aefe281f096d0679d0fd6390c2274ca78b5a7c9f9d6e22dd856c19971838c1a67e4df097bc4871fd54bbe035a65cd348dd3ecd45e5d3fedb19b84f6601ed56fb6ea716d4db3b3906eb2cf536bfa6268db98293a8639a8fadfb91211630ef3f25d73e724d95a6ce619d7ee4b21840371287d9409510c4f03ec34b1ad4058c5fb511f1a9364ecd573e4e4515620cdfda6d4e26bcd9deab07f82d45ec95ef06692e635216fa8d47fd4ef22d119f2a27c6f1772e715784247ec60a171314f23b0e9cc5094acc230fb2a47f57dce7d59edad3a374cecd71dc66a4f772c08ff55cfdefb69972bc33e9e0333cedad95a63189495d4349a3d70023b66dcb406884b635eb978c85658cd9904911e32d865ba8b22e4f161a7813ba957362703c956ceb5d82e8ff24ea3f442542746c6be646a95f0849a2dc5d3265bda9746cd1b9d2b6e1da55c0a6da6922ddb3bff59bdc5223eefd47bbf34fe130cdfd2ea4e60f8fb056041fa6f9019d15d5487c16030c7487a47bae23b4754debad016b540a88e38d9287ea8efd445033c11cdace09a3878126823de69c1dfe0ce83b7b75bbf2b063bc6b2626f503e56912c5f63f9a5fbc4650ba7a639bda01a675aebc077be8ce543ea8f9863d267aee563d37410929d842608f1f168314272235760e841cac8823e96832209231dd9f4542f4535a5d5e6c972d6a7644f395bf88a844ef11617b6c1b63f136b3339b52991006ea57a8f04c0070cd9ceef9296f9f248032a0c1ab2f4a6fda93066185124918dfab65cde3d33d24bd8e5313256a885a652d1837931af5e9cea66d34b3f2a37db777f7b083f4e1f24d32cbefaa55d378622f2665869efe0377be28f61dd4fabe8245709b553f7b83f3222aa1b71d7d8c635d043dd070c6983df0bc9d5e539283359e651fbc40e7e4644f6147ea624a38f8678da94fbdc597d8ba2832232cf1a799b2a0b453827039038578bf19b02446f3df2d17e35ec66ada708b6831c1ccf3e5dc1985d77d204db808ff1a6e0df896f9e9821da169d948e7e0b687f1fea93b4d75211bc75d646a72980cd084a932f86bdaf3ddce108579abf7d384dc75501c84e32a235baf83a1c21deb2df68453aaee82d2e4c52c9104115ef3edd9f5c5362af3d47e847848c6986fd7dac68252fdc525107372ae8ec33691bcc71d59a021a4d7687239953342d421b775488de8c5b64cbbaa03e082d31cf8c4a4cffc96257112ce5347b10f8f584cb68dc7d27acf7ab8ad8f54e7ba92832a899ca5833b87c5e70c03e5e39b91cf15e390f0463cff228898c5670d6520b1331aac007d836f6fba2c3ea96cc7bf45ec68f90866ff1e3976c3b8c1a9f4b2528ca5dfb0e98d7c0a2eef5dcbe5e29b80a739081f5cfbf3b3fe249148270dde46588db249643bc02bb750a6b9b1816f5ad550df6ac75cd2a3d302c051d1c390b067f9d26c017b3ad68ac6e4ff506fe08e844fb73da28b4578bd91c0cc399070e72f1e6092c5be1cff3a8aa384f5b666187bba8d0bd8f5e5d644e2d9e36963e3cd1bfdd347f37a97877e244ddc6697fa8415819f34c7e82541066dfcdc98138ae30ab95a431c1b8b42dacf7443536d92e9b4d2ed49f345159234119fc4904c8544d6870d195bf30154fabe97bc56a83e71b276311d9c57c1d26525ab935cbbd6ef63c3ac4e8a4f83301cd6675f10abc37277f3789ec4adaccc0b65961ef2e84c31d7b26c78a7531944a9d46be94671635fa01ba74e6cc0bf70cb11f9b12f3f2e9818d4acc74fcb33bf2ffb015a54cfdd73f0264df7ab1636efc0ddae5f8c181a07e9534f65d383432f433b100f88e1cdc326d9a3c777f316a7c42f50785994033c21c7206fa59c392278939a03029489e80e7631d027cdb46dbbc38a9d06dacb0a40878a13e1c162a113d567e99c2c015e0f95cd0318403e85b6e60d645c466d3fddbf8f9af20877318695c94a37e787bb760e73145752a99c9cc6493c0be5f4c0913cb69ed2a1f1a5fe61ff3ad7d9fdb31c9f8cd3d96ade56c84aab229da580914e0237d94af849ee2682b448ca47f18dd1304b12d2b3ecb8d8a17d5706d77f71a6ba03d4a93b32d526b77651f43f1374db9ee4f156441159d9ca7b9350eee15e8c7afeed1e2875f59ed06b07ca391ee49863378f8dc9892d11fd6bacee5a05b6dbe8587bff211138fc0a255dcfe6ae41bdf5f1398e85066c837cb56c0de7517aadd1394e4e792936bdd1af7b1e13566f561dea72166e142f4e23dbb6e1619f83f79d0ac543ae49f483ea74da1ad6fb0cf68558211e1852e0698f903ea88b1a548198da0ff20cc34a1727f2439853bed329d5a9035843d0e66be12a66759812c901b7a908f6bfd57a326a483c08f208b5d766d288d765b53b414332ad1b42dd19e9fa64f35e7e115a442733018d56adcd052217c13c5776260cd048bcf943f01edd29e013c94930a819505ae8ac8b6de243188fa332046a52137cf0dc7bb3cb319c0b3f579728d7a7825cc57dce3cf68234b18b31617f84ca0c8ac5c066c17b7eb19dc4e0aab8e06b5c77637e6a51925d9dff9603810edc8c65ae1a0522ac3d8cf6f30b1741c846c8eb88a35ad396acc5ebb5c806e35da0e43d5eb1b95922b6a0451f5f80f267128d6b87d08997c99d40261c206eb338fa1209dd5c72574472a36b3927d7f5394ffa00907a0a7bd87012783a32d2f7a065d837590e234a2ed150e1e6e469693ade145e8771ab8d886fe1aadba030e09fdc9585e0eb773e0ced23d3d6331cc73e8f988d39f0cee4e34319413a64a02abedf72e8b8bd4fbe7a250e7af02bec0ad031c9c845d521eff69d4d72a2b6c3bc30a8f0ff28c54bc880c386e657f5e9d810f72649bd43b26b22f30b791c568f19d51dd9690b8902a55cc3df139af96f9c9d84eff70334689b1eb12234634e7f2f3968f41f41f5889dadf5a4840c92ef2ac2f1d796e0e6b8afef8addb5ec5ae7ad52e6ed7ed64602df38e2a5375b7443fab18986a92de844dcad9efe59f8a7ab48ee39f9fef3c8933740653c2aa45a9ddfb9468da7da3d6427418765584eb7e30c967f779ed0843bebc7264e6c88324a697ae6df8be1a94614b01813cb32d900a75acc2209be09896ee54576006d6c4da5a0388fc07ad14a3de42bc77c20e90f930d2126b1a239c3b4286be05b979549650c90f7723f4484c6e1ab358bb0e89fd25b3f1ee82cd92c2de3dc7f46bb23eebdbdf09907b09900403781109bb28ea30e44ec3a4884f0d4b7e414bb75f6c8913776bcf7ee18e9a4156db11cc3453f2a8be55eeecbdb6db9f3b65e5eda4af7c82d6413f36e8c1a9442edd839197a5c7959436acf0a366904e9e990f8ea6510e4d5adbc5bf6cb56f1216dff060dcb302fbd2cc3e4f2b8b6bb7a4efd59a5c8c41e19ec0d972c50d67ab7e83aaaeaf2e604e5998b0562cb9aa2284d400bfa8022ce169bb0ef561db87481b8e9967f5eeceab60c594e0752c24be5b9dd6a48f483463d077d10c601b5f30b1670d4d77e998fe0b741688147b4e590f3b1df6c30abb0a67abf0aa8b6a4b99c8d650fa1e4964e099bbc2ad77f33ed9294277eb62f84622a833503562806e02190adf68f8ad0b95276f309d79c77cb210b320b76386dcad7b57b9e84ff2f676d04db8299fa1c2d5e191640b1cbb6916bb9596d86725fc0d6339d60f545cbf675f3bea0615d4062e13fc7217134b18c737e703f2d6305ab78b0a675ee5fec9410f274fb5549ba0e35505caa4b424b7a294fcbc7100c391afe046f0d18c57210bd7958932828218e21d98fe460a9c55f0603e89f5b3a5553c09291713e9a862875a408cc51dc280d7d0228be57cf451ce104ab4d2174a72de0032df023bd5e5db64e5b3881958eaf5fb31ffc3003d498efc395a9e213d785bf189be5b34807946bbd4b2888968eb6dc07d2dd216f2a54a8e1b0d7584759d4a50a28bd01f1d0a4691d03559e05698113c0ee0aeb0deee20fb878e52bc9b673fb16cd1496c5221de3f3dce33798bc5be118e8bd55d20b43d45fa5f59b9378ce7279aa28160c372f1efc0d3683358192d92c6c4b8ff7041b20c98d33ed5a6e4956b12d8cbe76a4c886250730d154fa2f0950516da53f5d311270ca4f828af4db810c13a2b731c90579dff6c958790accae1a422a2fc6dc5e4898f0819e95e398d6273d56799c8ce75ca4fb0f1dbe8b4079390a973e8e1ac0da39aa1ee6bcde035980ff66c5e464077831d987937b8dad7f344b40d300de2ab350947086402eb384c8fd1cbb81a5a34a245c3200e4b0b59b50535c19e341792b9642cc5678d0804cd62edb08618ac35af00cf32843e228652733edf1453a87c1b489362a99c72971e41008665a9938ce68ca3fcf1966f844a89a00795654d1d4a5252148e84f2b3624d880d1289d1378985b8cf67ead8c5f341c998c08ac6c6beab648fa874c16936be2d9b547e88527876ad3c8213218bdab9663d17177b90cf9f01cc95c0daca3685a309fb0d98e8094ad898b5e4d749429f329f9b1c784a37c93c437e2e8904fb8302499088f7414704e3c34005e72ce7ad0eefc7c413f084b486b2be076e7cda116f775b6910fa1d68e053ca1f64244d3cc3e25ae3f91e66a71409fbc03964dd6ad2439e44e65c693a44a2812a4529c50b46faa2758169755e38c27fc79b6920372b14a4c3cd1aea506f96718d70cf9132e63c13b4fc9124341c5911f656f8b66700c215536f80b13acc6ba95d9de090dc426c1782b4ebb56250fb8a459c18856c25eb2bd20dc8ce96e5560ebe109191699d478f04864e84783b9ca52b8586f859823983c02a72fd35c80adb2da8116eaeb0cda0dd3abe605933d235fc0a403bd440c107180b96c0810a95991cab68b32fafa3fda10b7ac1c412140a8f6e76be9be3648450181b58b960e32ff39f3869111fcb5598d1c58b4df61d4f9a664bf392d10ae2c3d98b34a84c12a0f1f6699aaf9cf3ee1dbcff2669eeab80bcd2f0b86bb8271cee8441474ec33eab08cc32710e8a7d3bacbb20ea38f3bbb8969040a96fda6794a74bf9112ef996d6b8216391359cc500b77f7ed299b55ab0eedd6a19bb64ac0b43722df91b3c60a30df172f948084513bf93b17ae55920c7e6591bb75952a911e818ad01b70c9e1e7a50d449d63abe901623635d73071ed0d57f6284a88d2f2dc6acede2eb65d955e6e21e22c4cbf0fc7a7913eb2599c11601f1939a31f27904f809c0b5378634922cecf316c7b1d109d088b21e43db8dbed8c4c01fc419aeae4ec8f7a4df8a2443d29e10d4b89c7243dba5c13712ed0a5d25280049b482de1faf8a2eda9bc21923b565fa7a75084bca18fa2d2d337c7fe059fffea39c1b823a970fbd33d1c111a48f3d92a3a460f52fa49337d3d87c9059b41d4d6955eb31415ed2bd9432a9396e05707ce3cfce7525724b58512372ab46e4ceee88a743b6a2b0a235f2ddec5cbfcab55ee7ccb46624eff07f13118ef274cbd860de4e741ee6a6e77a0868377062209e9d51aa5881c5907b706063b21080919c6988c4c5df6ef1a24fcfbfe371aa82dd70f534cce382d0ee94204b98bf92c2e3deb29dd46f9f3f76c947de1284e069831895dcb8bc3bb0d7ac58629d6f5816bf6d4c25f7a7bfb21788632bb30058e29122ab8b514d879557ccb001adfee8d0f93c17f081114609087b94e7c44adc2d43da10d6f86696943d5559b91f805e73cd714f8eded93c606ee167d469d62f2481cb78b20f4caf26d105d3c0dcbb92246b969ec3ada23204cc35b1117718a40ab4656d5a8508a0511c56a0c7a9c0535c9ef57d1dfc5b5022c27264bcc3253f059f9272955ae920dbabf74c155b8609a32a9fc7f67b395fd7263cb3d878336f5131217e4f3a95558940ba90da83d06863af191ea909a41fb4eab3cd0564113ce2e33e039560592aea729c310f13467d8e00574927560a1ff6a9d5f677733d1162732c3c2c50db464fd3da8255e14460b4dc8dc666c2d1da88bba8bdc0a03a76151b9516a24530f2615df08acfe4d8ef44c6ae46c67483374012554b0ad16df1ffa0bdfa0c6f36b1e01160132f4a6d5ac06ab289acbb097636be527d452dae02bf431ccefcfffa4b7d6d1e9da497f961c2a275140b2d821450fffbe002d0c32922a9c0d36c61559b4adf2d3dfdfd1f8211bc007488b2c545ca26ff7ed1a6dd362fd7f6e3d6ba9aafd786ffc816d9099cc8fa4b4f1984dd1ac998a425b5fcbe09b27d3a0fbe8c0092324362a5fe9f83078eb4ef927956443cae3cf0523cd13951d2257713fa9b48bbe91dca59c6b6769645b6dc9ca35ec11f8f506d45b04e93077646d9ad3325e5fd80dde0ba4cd8877e47446ea5a235aa73062a4e10f9a4e42612a62fb69d78ba12b03703022919b0a79bf69071201b41f50c28372d14567378db3b71928fe2b686072310185868f7f19745ada397ac3953b3e66eb0c290721419fa1b5bc73635d5fef2513181e8705ec5e0ba61dd4e926f272ff226cfbb823ecbc5ea76db7d7de20688c01da0f5652a57f01c139ed9f341481071b9b928267dac15d9b9758f0dfb8a37d16f94726af9db147e97f6a21294b913e4b160bbf195846961b759a80b53852a1787644814ee1c0e70b2e39eb0fa027164f4e20368a0b848008818e645db172b0f0a61942f697be0ea3ea7c009739b153cb4f4180cff2ffe0592cf8ff62058411ccfdc0d6a4c1ee5867b316b37caf3efeb4dcceb9d0ba9b14a0e831268698882c4252d8fc2066bc534616615b40dc50d870aeddac69de141001b335879e05cf809d994d8ff8d351bb9c60239025bb10250ed6a3909181637c04d2c4ef17d50e0e80525bd7ca48e7a2dfc30bbfd810156e3deacd2134d58b326518ada5ea290235172f7970b1e7aaa5631010da5283b8af95a18ee58cd761a212c23436ed0a25e6f7495f5df2d0af25115706f1b2892cfeb03024a61d246d034e21da4302fb11aeeb28035f3e4962f9ad1eeab109574bf384f7f7038ade299a215f4b7dd1168b012db3ddd8fcba3498502f474de3d96507f0325fb2c249a5dfbf25724de064335893154ab47f5b8f0d0ab28a99ef22b139d58dc4f7f9226c0b633dfe973d9fa99d9487264cf866ab1e06c11fe60a0b6986f63ec3275bd2e03e7a5e02d85681bfcdaddba29695ea0883b937bddd2705cd5012f58667586eae5b4459d2cf032a58ccb4cea4667517e3b4cd3481b970af32027f63bf4adbc86939cf03a33b79e3ef9e11ccd6e3371d4fa6e1da31321cd4ce55f9c2cf4e8f6735bdddb581f5b384204decf5d25d88d87a8d58edaafd656a27c249ca4ef17aee298931111971bda15322e7a63a54e8eddfd5fbbc783b19f0fb6cf7f2d6d0db1a8934f210c3b865515d403c16352c430aef7c31c26bda84e67c07e32a8a17c04d7cb830206f7b2f82a8f1841095a3b0f3b7c4fa757d86bc95290b39ae9ff155d1e06c38d4fd28a6545c0a16fc22959e20b929702b7cef4385814ae63ec5755c51fc293c7dfcb54196022c8050cf4f83de4386caf917cfaf64a96fb2c314e7ce31eaecf8fad9d90a4dfd36246e291e11276c7a901f5f31f36cc902126b0654bc223ba7a48bb4e4ef196ba27ea10e700d49368771fdd2de871dc182bd5a2142204827515129f45cde14c63f75b774b34b4784cdf6d7e3c548533cac156fbe6c778f765b17f0637c678274e52632c7c321ff38e767b2bdf2ea0e3579acbf26135d5428bd0e9360cf4764507a5772dd43230f14e5149388199af1550f2834e92c66425c5a6c7fe14e43f63953203f2575f8313f4b5190a0e94a7e8069e49f66a9dcc20f1ca64dde7cce38c5d14c70ecfba29339b34eb3dac28b018585f986354bf816c253ca92038a41410ab36a753eb0eaa6cf6a42263908f1ad9ab5ac74da4907d14449d3b63b57d08266a0c0c510cc21ab3ed6c39ca0d7a2f7e820d4ca0582c5724aadb8857c5994eecbfd0f3757c06846bb46b9b901341ead3b72dc2cebfe493aa19e9603c65be6a5637e5626386312d40e70ccac338ed9955b3380cdad28fbf8381e1df45dd7cc3c7d1d515fb4c8f6b344a8e6e2cc58ecc276b1c0e25792cc09a14a6cab17f7e18e26a3740c8939398947f207018045960f147d11cd3d31023f903e498cb92455416b63c1e852e0d9bf2be6432d353ba69977148eecbcec49bb23eeeb1df3cf0d0093993028d5900a3d8581f417f84780b8444fe9d9aa259144a855e5bdb9dd411c3ee2426d4727340ef44ec4ac6f238ea39e8b49d2c984dbb264f638e24a6f77148e81f293e53ee41343ddbe85232153e0bd08d4e8b7d9affaf2587f97498e5f3ff996c09518c1dc1353b3a1f579300aa7e8c8bd552c2620c09e5a1317d89350cff90973c3500dbf5ab27ebd4e965e1b928a74b6919c58d19a2282138ed95b730c2f7fa3c90162fdf9f3a648b481445b0cc5129791dca55339e0732c66599dfa812c8664a0a8413d5551541b9f1e06a4d98562b04d35b2c5cd50f0751bcfeec81d18198a6eb01d6574f5018e8b105e27b2bf6f25ae0c1fba64a97b7ddacaee020ae9c6b6d5e70098a06e159d5d3405faca4dda438fa59416f375e328e6f8795a198bb63e76b56d9edbf8c04b55b5a5435c210f8dd9d9326a3b053863694a6a12e880a3bb64b1e6a18907a7c668a797ba234ad5325fe50cb08deec7f4b8dab750660a23d6adde5e5fcbd06f964b991a8179cf4665e144e5a99c92e801b8160aee1d9a81f5659b4fbb434e649d8a0d7b8510c56229f8672486b80ed52037e33844c7c72d59a62e5249ad19b56a4de43a0a5191808adae08e37a05326e8ee214c55c37eb662a250722b343abac52fc676aaefd626d556783225a4185fe563e176d00c0abd39f560503ee4b8b0f8a48bd4d46fcf1efed13a6743ba955c7da19a8362c829cf58fa5358a652e03d74ad8bd13e25a18765e1b0159d63977e96fad523520e5c58abf08f9d57f89e50c46283b01d4f8ee57ff91cf186c09d1981e78a4b57d3d8365a589a97eee8f7917b9f3742abfd00cbaac343abcf32f7ce044c0e4c89537c20e2f850f46f5a13009a5d97a91ff88ffb4d597d848b6e5981b490bbca282a906047b1c5843648c73e390186486f5b404aaa3e5e524e31d384a4e2ded3257cc190de7c8d3f17df5b773dd4510eb3c798deb3462097895b02a438254ed759f587f25b6a0f560abc086b7e29b5037b83e9d0f5b8d703d702505ea99aa2100da8803351b41801a63efdbace4e4bb7874a5361fdc09052f51b8b6d5f46a03be3943560ff619ff546b67a4719b231a7cf8719cb58e1dd8af563c9cb7e37b2492e16ac01efe1e3f31fac3c8aaefe1e53519e1ecabac27a4a112bfd26ee3a77dce8f96a3f7349b7522075064b5a8eb3e3ad5337843028ebfbd035b639fd4dac77e4de8e115c2371d48bbb384dd75144b57c37bb665d32dc3639fda0c01ee26dba318450987a39287af1b605e5f3a8b2bef6145b5949b29dceb0330b4f4d1d5d07febec14dd15c788077757628f4384b5160d8e1b14e3655f23fd5340f956fad61a36dbf58c6dd62fcee3122dfa3948e37460194dc5054d4a13c887627e69920cb69a8aabc7662ad19da6b571de99c77403871a9cc7ab85de73718790e028c5d2683db13c39ab92cdac838207eb5a26ec638fe0c837eecdac7f3dde135e043aa2aaf3db5913776e1777de8449926f60737196ce7ac39a7ee7e7b45417656c923b30943ca2805fbc7bd34641701cbd1a34406fb014ee95eeaf62f179309fb6517bb57681ca61a81360b8f8ae641ed1c2308c5b8ded01ddc85c08ce018c9710058d983441eba2604be0c887b90ccf2dec0fe0d4296b7b03a112233f1928153693da3534f6ee3e2a5cbcf964a664769cdb68fa32fdc957fc75dcfde9501612533e3add6c4761ba9fbb6655bbcd1816403fb271e575ca88e66efe8702c017943b06592ba2ba4806adf632be27c183eaabe11d008ff91fa389cb2cde5482f73e843050103b7caff96d19f10986bdd38a64b944af818bef9efc5e1249137ead5bf6efd4365abfba9b44df9bea4e1e45d00d6e257799eba79964274eca7d1aef858614774f71395690b94e23b6982a2c421e57c7a28b4c24696a0303aa3ee8fd1fd22aff03a796cc98177b4872cc7dc336551cc7c835870c3f8d3ccaea3cf48274874214423fc8995cebbf9823df2e5037f54f3fd640ab0eba571980ba7239f10c531353485ab08a0bd4a589e123c5f9e13980a3f77f7a29061dec96a82e411f06b622b3598ee8231a5af8efb41577e7b49c3f76181ee9a777c0c5f9181817be53c61258f8d91a9ce8350e9e1f7cce93f49d50c0267c1e4cb88402fcc8b15b69a6348b43b6a6aff4a45d0e1fc62fd6397e6a964a052366b6e44a7c86e76153c0e9077ca0349fbc21a64b870ddd8db5f67ede96d416813f3261ffd77e75cb2ffcc23ae88010bb469066eb4f5ce8579b31ba64d0a269aa90c6b1383cb61384484d4b6523d3915e3147c793a9e769aa87036170449bdc727da83d6c62bd87df7b340d1108490e4281bea952e4dbac12139d44d10165d63091f9edf8c52ca2c3d93daa1806e100c5ae0116f54e1878fa0e3a5d55253175d4e9152256751a32074df20aa0dfb1f2c6f9c0a8d92c0f3dae0556c7c2afaf6da38a37541be4eee743299a9a07d69d6942b2e2f691c32ab04a0e9f55421def289d866bd5c2bf45f85cad9a758da8d824f61b7ae34476efa75d113cf58dae6eb7fbc25879e4c5d44942d639afdb22226444a54e56295e94d15982868d606f29031c61d37d1ebc160f745502d0ba31a97a7502ce05057b8a39b3b1e099808dac2cdf69bf4feca08c918ffec0b6136cdde821a6e9f8dc4c4f22ab91930250a687c39ba865b495aaa53da3bddfb3fe2720881cebdeee5749d50d95a337d61cba64d10d57cb6ba164fe4507425d7ce92f208accf2b0d56deeb1b46ca646f0544ee3a593dbf83bdeea303b953b57c754281eef2a8bc92a9288327dccf85205b2034558f45d2de4df612f3bee9a1315a38eee38792c1e5f09a3a151e71959cf3ccb1b0e33029884b97fabd4862ef42e732c1988490df79789f6b201cc14ac94cb52831c162dd8d8c36c5e05d4a03f3b2e5aac595ad3d2d033c87dfcba8ea3704c6593c9980301e72cc1f0cdf2d1b8d2f59da603d99454259bb1003b00eead827b2e980a84beb790a1ff74e01a6e7133f3475c51162ae904498675d3f89a5e1ad15c7913762e222900413247f2b8801e829b4c1c3d80474ac3b6a7e537cc149bd4e22c13a932d6ed18f19adc778f97ea86c1b4e7a977df5b95a1a09c3d5756293329f6bdf0712a05a7e857bb1518859edd024e2c6965db7eac584bdd80a6952686e789b6ba7b53fc38c5e6b071d9794e2d3b9805c20db46e0cdd58f3efd559e020d0a018c49de6caf576f1ad62a3ebf2b44ce20072f317845b934b97e7ae56907ef5190809b158b1684c547760478e33a786fe14575528b19ff850135a76283dfab6baf620bae6c3a26da48ee80ce5e733b6cb18404b626e8bda3d4fb4634cbaf7e428a05ce5e41253c43cf96831ea0b99d61cc96376056f9e05fa3092331445fc01a90b0c2d4d76f90fcfa48721cd837179caa56602b2729c5ab0afc12285c38e52ddd1548347e4b3fd63d5dff23538c4cfc9316a3775b527c03c65315429cc1a40039a9c18e9c152298c99255229da1206b9e6d89611127e17791878aea769fac452daf23142ad6f11321a8929dd11446423936db2fd6ea3223e0d11d3abf8ade6de3a798b5e17dec07d56d4129fcdef2d9c2ec84a9e7753fecf5dc7f965a327aae59f7dd3cfa33947b60c076ddc1574aa81ea78fa5d4c4e66131b990dfbfc8f9200b27f34419b5e55c5301cf9079fd3caae5c3d3ef47ed63fb72d1a338dc238dc7d2026ee8c743b4b8775b40cc6ca27a0df985abe759a79759c5356c667609ffd01e3814165560890f37b4fe2cc592efce0ce2e4b22dbf25cffa443e2c346d2b2563f9cda8121c3a27b2fe6c5bd61f3a9cd85b8a8ebbc7e1e43777a70b79e742babdffdc5902811a2ee9a9f28f13f78d9928dbea54e7708fb53415205e63020dfb7645817d5737fe3e5f97c9ce71b4c36a985bcd3e0ef683ecfc6b7f81cb429af45cc4dea40827cefc755096854a14097973a5502016f290bdf9b228e135edbb3c2f410f0e4502f058fda42824903145f111ae9703c6ff3393231a706888a052af8318991fa8d8d60ac09cc90260fcbb7e88b49519e50834e0d61a376f48c8b34b2c73256f4803ab1a66222c64a9e62ea564b3e8d80f048b1b109f41ca0ca410a945940a15bbba859200959b5b65b0c31c70f01d611e2df096c03e691b420f21b7be35a404e6ef0f351a140f9432c55e75f5c90bb7755a2c47b0bb78f9ae900dbf4be1117ef8a587d179941085f593a58e472ee9cd88cae4f67c73705cf0f9c30734ac9769bc071a7f82bb33e43ad7b6acb98df6920260391ff6a0813ac2ff664b4d5784f26568036874a0373b314fe0cc470d63747c2739e1e5bc12066ab7a512a12050ffb02aed9df90d2e852c74a625842916bc624290f9bd40947bcad37a634ddeff80971fcba21f34b791f15e2cce13981f28444f5c827ecaaccbae9d069fbb51ca3c3bb241eb5ed5ac219b46c71a0ece89756b2a1cb30a72bba2532a4ef851d4e3571ac256b244ba0d81f727ec060d22520f4d7a4696deff33f9af1196aca1ad7484a0057d48b77f71fcb222bf5c8fbb772ffda68702c48056537e48c849a85a0d0d991e733a0c5225969c02450413d52653b677630d0746d57fbd53163e7b66995bde6329fa0982b4c023cf29b6f462fd2c33fcc1a01d29cf5f5a3e2568b8fad0de60b097dc557fefd7338b30b13b77df28b0041f9a38432c7f98866f253e0e79d7f7d58e6b0857fb4018600457dd223d49422cc247a815c5af904fbe31b8aa0fed6d22335e582b9439f94ec2d3c09a086b5f3392682eac5819e346fc0136e2c185c582175a58a4384bffc282e91b120738a7a6a73ebe402b3907bedb58f2f116827aa58dc36ee6712717430921be1db875d77b8e9e7c655784153aed0811fa123456e003a6b55141f7c2ec064ec2476d9e2f225f374021e574c286f86ea940929600aaa2032cf976f203277d98984cb690eb3290d56540b9fa024a97cf73354fe0782626761221aa777228fe13ac1d56307b12983892e76b3afd04e47311f12d34c038d280433ba2be7ef0967ebc434b4bcfc6b6eccf63a1a19864947c11dd95768cb68c9181ba865f2acd07fdcc1f8de7af8ad7bd2354ca35a4cfe81fce105783d6d7ef4c9f4a3bb599c3895384665478b7359ef7df021c894cbf6c441d3e2c3ef9cdc1903c1fe6194141fd9a467727e9299bc53c53791bcb5aaaab98a422f408b46bc2db759c10bf118b7e7683e154386dfb01c01387b729dfb0153d5c54a1e0536375d1064df5095c432fa5bc41c4a1bfdd58f51bc2ecc2931bd25e19334afb53eb4acc0da2b1672ef763d2c6d55f8ace5ae6908171ff55c4566017b92f981455d8ac106424920048c80d2bf7558b4339f60bd26625f0cb4417f5664cdf29523f686c1fda4bf8c08d0670257d7aa55d1d9dc5b5b032a2a7777e2b5802ff07844ad2ed1b29a2a7b99c1b16b30706fc8f2f8c028c44eda598bea0eaa61d0171194c27a269d3dd8169b8768facf60c6244d4b4253539026a2ccce78258847b0610891471fec8cd192b2f8ba35ed7d891252b56a9f7b5daf593e5e03473d6cac2f585e7c769f449c64d46b52cce421a1426bcb3b55de31562c78890f59092c279c89f8b402b495e6c79e5ff650d7bde28b9f1d6ab2e98a495d8247888eec7bc1af04a8a44adcd5717f1bcd6602c23fcbbd8a2382885428e685c17ae666ed9f910cf11425ccb76e99313a52a2dae19d02c4a4e21dc11b6e07ee5d2490a775bbdb23cfa5cd25481a74f1ec811fbb99b8219799b77721f0188cac4a0ff00ad5ec7cf3921bee8bec7e932deb3eeea8a89838f2e0186851a708f6b5f60da46d21194cee599d633f651677c30245afa503fa95ecaf0891a1c8ae92cc1a05bf26fc1ba9cfd2f6585e7321c3cbe07930a389c1dbde21d5a6d4ee9cdebabeaae40f80bd5afab4166606459c21a492eb63f0907f12ba50005deec108555470930b7400ca1b1fee1b08c77cbe50b0aca66e8f905431f1eadb164fef3352b89f1620d78f503a713188e83a8142d5290f8f1bfed5b0c097f282e4abf00e65e20441a8293979689d5c44a945ee2da337b563a8380a650f5e9eb28692d7746c51e09c21eb3d4ca2d502838b2825a2d690c61eb4619fea122a75f73319de8d25b769a596723241bdf0fd097a5db835f55240ae5227cfe79231b0e70359251195bc1d7bf7bb166bc46bd720394e66f8dc4dacdf487d2af0f137212ea35c75e54dee76dac7fdc2d1335f6b516d1cff3749f62819581da313807853d90f7fdab3c84e7d4d4a6581706d44297212d088f2b4e6dcdd1b15c7544285ae6fccbba2c581d61491edc8f908fc811dccd027d61dff8b44549318cdd95a434b4f34db378c30950571eb7cdf60c7f58d85b6585fa3f2321bf10cc09f2b88c459726a1950c81a27fe35cd08f40b9c3958f10e14e10376d8c26c9e565dfff90e6f5a1b87e23ac2e6aa6b59827f7cb28ef433cde3076308032ccf86f8c6668a82b8460eaf6a4aac05a00990dfe267fe63efc0ce6f6e321303abc668dafae3b060bc9663c599925359da31d1f3141c9855b289f48fec78fa78ae5f700301cc076d070541b15b0b65ea07292b271a9b53444372b004584f35a0c904efe28f421d7622865a70000b1b6103b7f85d3eca25c205d1f9e3a3cdf744f4a8c08fa5602c9d43b1133ee0779e02f4ab9e0b24e7abd4cf8bacb185d3f8a36dce5dac200e21ab6bef69b0f8561c6076142af11e5670cc7f840f5548e8ecece5708a4fe3abd8834718d0fede6a9787cfae19796be45434a37fae2530f689940c9d6a9cf8914c2932031c4c48f7056265e55e7b64d28bee2f202b04cf4c6222482a711ba74c6066e56226ab73b1eb7eff50090d27d9112db8fafb3a84246250636039d705b727e922a267ce036577bb17071b173090335e77a620856dfb6a6c6b2980bce779ae686adb5138899f8a37e43ef80215c5a11c3aeaa720193c846e64debf1442a07d029e34913fdfe663eaba81c493c0a3ba6ef20fd74b23155a10301c7d24e98f4a0a2dd8176d7872ac941c66fb86653c08d4f5e7d97477b48d357f0852ba7c1411e0c15bf822ed4f66a545283b1fdc58635a883134b480ceae6b092acc9b1c221e7d788a8125ba27cb25abe76d74c909c5984983e4ce4924da1233135ef485c76ea88f963d5b930177b2f112f4fa4342e25683a74bb31a041bda8d7274017add2160bf7325a7d48f6978e34eb8a64a53e8f5092511d0fa71609fdb62ee4a510d44a49721dc7c64d163c02840e2d46f41e80fca6488a5b14ab31a05a22bd16286210f5b2892803be2985354f636bfc288e2701e4d6af69c6314203a44df4574d112939800b27f5da45174d1c95a7f0275aade42abb21c92fc7f12e59b92726e88a606f692cbb0fb3a8113b08f9f419cb8c2f899b68fd87ae5141588478b945f9518c54a5e03e9f0bf65794aaada6ca61178885462e3058ce4051b999f89749675547b0f98dfbfe4521f9574683f76e9e61eefd95749733301d353e7f59a4fbd752d8f36e513b0a8009b396926405f11dd63e53785c53f88cd81d448b5cbcfeede278f0c5fd67512110909cce446f2606603f4dc94bce921fb1b69d1e9fd6f17578bae2af38bf758590977e1d2c7fcfa20d2637a20bf56f1afdc18e6c8c03cb09bc4b4ebbbb08bd0a03bc50b29eec474674f9566d0f4fd7bbd1a7da4ab497a12f05103b297832bc4eed8bff30b133eba5eeff9025210618cc0d0bf6360128426e06950afd76f6c785b7e9450a4a31620ecb50cda03217018fd64a68bf29cc71cd0c749cae31d9b2ec6297592a4fde17cf7cf50b7c3737c27bcf1642c40fc0ed0973de0d70fa8370fc5cb48dbfde0b3ca207ded2b0cad1309ea90b8c170ada245a8aa11914e4256ebe7fa1e9f9972891555732a2dd4d0a3c1de7bb22b66c8653fb70c8fdb40f80b4ce0c6b22b11acbd8d9097db493bb4cefd30af186d4bf4009713b672018407ed1f5e9e53f7fe1582f27b53b90c2596bd93ee0627dad44af245130260b366b8a3a5d61526a12f1dea22f7bb68b5a7a8866c3aa5368e63ae30f8a53943e0c908281637d46f8391aa53a90825befdd28bf6745bb3f2f491801757c9d01dcb4424e5a625a99137cae20532fb42e6918cd68be42518105a6bab8fffaf4523ea99044faf62761dc5d8a8e0d6b891a0dc874897378fca5698e32c0fc5dbdeb5925a4f1dd3d852523b65e99c238fe9c1ffe7a0f198df06f9064b8dab5f5567dc17dd4fcd6b774b5bf7d116b19905dddb85dbd263b906b2f7104c5a840263023c97b434e14b7305121cd4a37a5708a395a98f2f3998141c74ec8ee602a0a956d701073b57e1c432812c3b078ff64b0008b04a119e48f437ce4850037820d2637328ce9ff762879349bdea76f9443f2031f1d8de097585a86bc6c73be0676515b6d7ee15a2793f4b90c217c3ac6591729358ec3b1edfa30ac7f0a92dcf1f17ad8924aea5c18bda82375b01750e6d66e10167738a10a57f4b2147b1717ca0e2b19b5976344ed8b5767512e17a70b833385cd3717ee8cf8c117a83b9dd33ac78303e83dd605b876472e75159c860603202acee947ca199caaf36e5ac94680ad3d17736303a1fd25df40fc1a16ce896012f0d690ab597725b660f12699e8e0453a19c8b9b4765f26c183d06f5e5fa8168ac33e9d45d91815ee904e192d4491e3b6f89c764d33ed8ae1a8f291b9b0b7ca1bd60c0d1a8b8eb2210e596e7ec1d223093e9d16eac8719fb8a6a92b1dfc8aca440da31c6f02b55a7d4833627d7c64b31f88f496f777ee6c5a9f68e0da9c329cc37388ccc6a8df4c31b0c1cc43955bbe3364695ea1e2ba30f770b667ee414e7e8aecd8afae612ea116a40528d75bfb2946a17ba146159cf875cd8ca54789d8fd293c4f959b6747d973b943bca40a1ffc61bb60beb40e81bb1bed7f5ec13c0e046b449bf0ce9896505c692f58d7b665ef947c69c030e36e3b2ed02faef703ca19d4add89d6aa34e93796595b45ec91ad4dd6d8e4dc59b1327c5aaf8e9ad9d98127cd948c4b6c88d5f5d24cf61ae584a244c219c7e8d20aee29ba89e5f15ff09b065d3e91c8c8076d14c0fa65ecf9044bf6cbe4aa0fd9ad10c84f3f50412f6749d1e6316a689515a3c01b95750e339eed3e0a04853fa145f3b93c3c93ca84aa772f0af4b0de3dbe183a2111db95278e4fbe1789c2a1e7684d6fad766aa40dff5b567a53efc11ce6c2abfbdefacd754b544fae0208a29235c7bc0cf5149cac2aff4094f2c01b85060587845c5aa359a798cb2a69197c7faca0067d78b6a187c78b69e12e70caea99147b8a50b76d68d43c2dba0f2715e1f10ad1be6dd92cfd8cb3b5c233ef52895d537119d8a9d6ce2589432051fcccb6b1ee3f3b751d3a779119c128519f5087d682a6ea95461b0378b3ee89bdf793b3a28d8cf3e0babb1bf6b50e9d6d0d51258f037389573e9990c9012b897cdf4414a53ab4bf3f2b7cdce89170e4a52e9245403b398a2967219d9bafef39592b94fe8c9d49c293374a1fe1a7ef7d7f58242c43f2f4fa411ee5bd7a6cfad8880076f7735f54cf44e99403b57c0d92b1a0a0d0b1e7f604618b3381753a5616a947b3c7cacfc4e86b4410274d5a01f985c2f837c99d3ba5901982f3c40cafba83b5f32d31cc6ee4888ce5c87b391dee4e353d77e1358d254d3efe30bab99f7ad599569847999640982f8815cd126aae6712ca36799a2af99a5bd43dac83c5faa5c9e1b6170fd5bb8ed9f8f5b5a4e46495dbf8ffe0657656ba92dc254c22e4ad693072045212cbd3142d64925e851c733438d542b701a3f406498bfd96d1c672181df81ad2cd7b0da8eecfae40a6e066ddb777e38e976944da2ae6d8009749b151f7e1c413aad4f324cc174411a64e08038a75afd89dbab5d16e03e656b6e94cba231f0cbe5be1f035279afc3e7a112d7b684a9b2919dd0199c0f936c3c388115423fbe4cd942739c20bc88083e5b4c4c99ac4623aa8115e6eb17b80d6187e26688a8892387dd7645d7b7acf8b36e2ace85bdc177ae6a6742e2be09f425155ac8937bdf8ca81cc8688c6c48542de54f6fd2adc14ee333fb049024d649685e6f7048e6d57ca95f034bc9fee0a381a60490eb8ce214af5f6e3d0439ba37df0d5dfb305e7b238e586c11fa1e4af4647b991abfcf8f538dbd41c1acf2656f47ce1bd37d93a86571903c376719bbd228eb789442a48d2f797f7f5be83226b47bfe8e307fb10ded0996c6065c74d7736ab93982f013ad7ca902f707f071531adbadb1116ec45fd52b1b4d755a5707ef8de62ba4afa79cf49599fd503d33dc7ca874dfed8ca0a6c627dba32e2f75bd1a49e9a58bc3de91d7249cda6d575cef620cd526ed2547ba208d4767af8a8f37214d221fb057e44bf901337f4c30eb555c0de0acff2b60c6ebc7a315338358efbd7a510b120c6af43f525acb54e052eb1d7543e8f7959a3dbedf5362ab3aeb567a7253524360dcc11f1fdf7ece95b40641f22df4a4ee9ba05d82557374e31d2cc250a187d3b1a37388c5d228d02cf95fa87276f7bd86998fd8f582906036599899af0d280ff54f3235258fa8222a8eb7e8b2396f01900cf54001e6231bd7f849ec048bb5863ab9224625e41fc811813020de6f3f39c30e33dce7074865b66bf6be379f18ab17f66deb3c59db78df8fd1523a4f95f9302a2bca614b75859f5c365e823251415a40f13a9a362201b681769427a360edaca6ffcb6ba5ace6ef3fc4afb5f121bfe8248e10a384193eb52c7ef21c31dac446a4c1ed6896e8e9cff21cb766c9205aef316703f8cae2127bbcae235f681a04f1787b9430c543ac6de571eca38cb436e6dc2552bd1ce0f89496219677e8a76fc291f326026662793430f327287662faf8486f0230a956c885a5af423af874b89ab5db45e910c1f40bea7d5471b2e453327c58f0ade71a69a95687a07e2902f9648639886cc14b4c2489b656c850e4a8197dc26403705cae8374bda0754a0ba9897fc98c3657134887489b41be8c634011ebf317450d2402438ba721e04b5e74f8f2fe1c37b4d6d2fc34bf02ac975f95e164544675f62738a2f61ec03bb4e11429778eae6e327ed28868cefe748d112148ed10d19c5bc463fe1fd55002c04494a585ce96c71b236d7a09c287ace4bfa0b650132bf7995b3e2bf9d1854867ca5aa8e3e173c14afc1364b05881fa7a4130a3464d1826db409817e8e3ea7a643cdeb1110af304883d22624a8729b480afeda0136b8f0ff70ee06816b356f3985c1d186b9722e68679f6a532415c60bcf50a4e78b9853baacc3c46281f46edc3b07a22428192d5051a8a6e7cac86218a11b3148ba0a44d7968dba907c1715c3f960a0aa6eb97331e5895a1591a2c3433333a165b57654a252fb812bc445f5a71a1015c8708f6a325d8d8e2133fb7e325581cfa93332467bad7cf6e2e6a93225e8ba676efff11262cfb8268ffba2dfea8bfec955f4dec7c9f4c0f407eaa0d63d05131263edc397f5e5154b3be1ecf855caef711caa6ac2dc784b92407c7a4f385c173244a38cfcdc200ef5ce3a2abb202de1d9ad1d2a0992be29c8f7db4d8452bd11892c5e665e711b265dbdcc250bef3240ef546b137526bc932e0228786f859926e3289727a1160a99c5baae0450dbc6491871e84859b0c27b860f307c6f638c0a9d82e8e44d1a9e2f7695d49d2887095e059df0be7834213be8485c4f7c6fa745d46b4837bceab1d2afeb35fb2ba533487ac37209d96d5ba77940a2715f5a38d3de41b70f9e439216945acce7080904460c132ca3b0b52d540ea85f3b2b60496bdf202b672e8f415d8d91fbd0d7e40099758f58206d46c0d1aba6d4eaf06a2c0cb84d21cc0b89631b9d0d17ec501281d8aa1bcf10ace40d8c08e0111c5a9752d73eef422e60ba66bc93a5ae9040b04a178714ba2fb501213b2e45fac97cca75b36d40f94c8ce424f66b32f0741ce7dc45326badbbce91ea2dc51d56390ce524b9b5cdef5f511a2931a2b180ceabe0860040f1602094315592d19904657d8e6d3430072d6451ea99c8ccd06ddcd7e1ec4c65db872e23c0b905b70894181bd3ee87e8afaf93beaeb6e2773c1cd13cd7839999a8ada43c7e202438c703c10dbfe8b3904651e0f7f0ae929610f082ab8de394f6d22e70fc0283882305ad9a644b6854f59efa3f4ef5f141278d974b6955910e727bcf5241b054c3cf8480bd29dfbbaaf70e9ee8a506bf5da34af56bf68aed1deb03a8a4df3c5dc5aa6ccded3dc19c24c5a1089198e789e52fe1dd4ee913f4e4ec433caf6c1a1a193f68c141cd989469ce2450cb4655579ba250282b47d4bbabe2840b23473384bf1f4a01128698217a3f56b062e9c9bc85bae2236d257eaa2be32f23b03b75256b18d38ad9ff0c7a87c1b5a892a20cccfbffd25795c52904e0973c39d0a4d41a81cc2bc1ef2f5d3c65ecf5915c97dcbc901eff7460818d8050df62710f679ff9b4a7938661e2bbd8deb16b30531e78af36a4b224bac3d5c59b19cff23d469c61f8868dcb6b4e5ff112eadb2bb023063b108ea4331ee8073680cf2da28cd1341aa64dd1b2c8e48cee6361a2a60ebf43541fa67072ca716bc0f3bbe715f9ab850102b5da606e03d370171dac27c61308de7fcefc3dd7caea750ba9b2d98f11e515dc2a2b53735f8a941d9d26eef849a17e73e7d8383be6db6e3b6246055d8c84679f29422feb527605a491a6fa84c7b9560161e20627a389558097142da9bdd701d9e0de525daf15b8311e0a85357f060e5345b07cf187012a28471b004146a0d18ddd8112bd738df336f9fe138d2f40f33d00932c7a431897c83b801cb9d3208102cba069db7ebe300308046efd175189bfff883d59232ae6f3ce55bd58ca53b339c7cacaa08b59695c6fcfc6bba92f0031ccfcff8aaefea4392b7313420e21fdab28b56271bdb2e34725318fc9b38d221b6e91f55e0243c5602ddbac3d8231297fee548ff9f11317f05f5afc6cc6385e44a90766cb2806ad16e3fd6a9a96d8ebc9463f05190c9e7bce72b96b0242f0674fc78b71b1883d8614017be14dbbbd71d2f35e960fa36f08fb600273d67d14e2f3df55427aa64e3e710fea3e4e6fb7ce9c44407aa39d5f83fa9f149892f586112f70a150a7347eaea21f70d9eb9fa965fed37071047bfe1567124e1f9c27186a6fe1a2ae29e2a2ee75ae142720b787825bcd25e83683de908033a96d791df7f72dfc34ec99c005271214d930ad570f5b310281b019ed0faf0352b3146c553da7be9a076a45a8746f1f7658b5f257f4c78a1bd86f12aa735423927547c3132e1ebdbb96633cfd345132627a3ee621817201906626b5e193954831332428928f5957824ea0525bae8e0e5384c9773234c44bec6be58bbb2925036ef85cbec6522e56c8e6c617009aacdf19b04bacaf31e2f90984a729a24415ff486b2d88c256e3d43553d4d2718656a1f2932041d4b0932a6b31726a7c45df46ed8818b4ee8382e7721df743413e0228c6d74480c361b6a1ccf9c2a579a9b9c6fbc4afc2795f030af2bc304d1cbac2100c58fd6e5cce0bed98d2f53aa2ff45ed16699973245b776bfa11418dc6bd4acadfb4b15f3eeb2096e74f17a9b3ba95fd25a20b239d4a90dfff55d5fcc2586b9026c47c775a922c4664d445fdbfb858e8722dfba2675ff98941e91283785631e3c904c5eda9a80e3bb50c1eaa61b22fb4295869d0660f25cf31c345a65082729fe0e6dbd9ae744e61bce41f486869e6892e21c3a5c452ae871ffacd5e8d5261d807ddc000e878d9596de8cca33f013ad1a9744a070e9461b8fd4c6aa961571e2e298f0916a4b005157fc038f14951032175e769d850d21021b1cf55cb3c3d526cfbd95f3385899a3eee97f0148212aaa8ee5312c59f40d61e019eb1ecb21d48f54d8e325427872c5f5f1fa9eaebcd3080058c75287368eb573684521b06cb73df4a450dacfd563a285553c7dce91f95dd06a134a0f8a5ec8102d2f0a8dd393787ffe681d2f12c62104b27aedb440a8ccca06ac28732dae51c0e50dc1e099acfa14291cb3312d64f015a3f1cf579cabf94140ad028414890a86e030ee0b5ca6eebe09ac7ea277dd0b5070ac3090ca90d29e3dba9b771b2cf1328077be632e932cba734f4d78539c217a81ca4c0f27d5e24ba5d21d637ae2a18b3457866bffd033694f5cb864eed5676331039d57fdf7fbcfffc8bfc190f0f851755ea009b341a7edcb22484c4cc9c9bcbaf3a89896b443fdfae199c4432df41a56ba8e23ed66efb0b8e7c4883902f00a5c390a115fcf83d320b2f3b80175b1f6474d6e7db5764bf59110e843613eb55cf0e98b3f9b5e90401d5f53a9e6e31630431ce06ee6b767405d12d4ad0325c79222c3c619503443fd4af27cc1caeab70e7526f64d3f991c5717b93411716cb69cbb30f001fa91ee8c570753d407f46703f969d6f111158112aecbce8f53c802cfb3c81fa27646dbaf958577c4f755c560cc7a4367dd658a8d4a4b58ac206d1c59d38dde3e2ccd461f5af24ca8fb8573c0d25f985c5fe3d45e96071c3ef3b24f7c5c58dc1e4445ce76fb19a63ce445625c55508dd2a59e4346fc76c75747ee4735aadec7f1a928c3ce68d144aad01a33378c82eaecba4c7f1b3f85eb1489716223428dcfce70e7cfc8192c1be7bf0e58aef6f587869335cf6486371f119c3a6a3c0cd0aa72dd4072da856ded586fe01209df61ebd30663ff0da38107b6be585d7cc225331b07b03c127d2a4e77655eb9cccacfc11de8a352e8b8f3e62eb6e5dd55b3eb8cef69378e198ad91221e795cd55baa90f11e3888b38838664ff6be1f1f8cd7ad689db4b8590af65a76959f2890cf58bd6a981ce9c997cd2788c172ea07675150296e8a1ac3de16480cf5d835566182db667f80d2ca084ef1527a5b6c9177757c65dc0bfa3cd9721708e43208c5bc2d7b85cb471b791975e6eab532eb0fdbfeb72fb12a4175af115202ae6e04b7d526b316f354ec309c8af7eb4157a010faba9cee59ebd8a2ad56f9c6c1099a203348bd90c70f94d6996b04aa700fadb38688c073c81fa128cafb39b39c700934ad2bcbedcbb3812f2cf5c33d3f5eaa446cc55de267136c6b2c208db3ed5cc7c1a5ad1dc813ae66032c0bc48ec1507cc471f06582c27ec725be1c7bc4d7674bf267de57d627ca1fc8ae25c8f83a6876a516c5ed3a95357ba019e298fcce358e74e846a2f732e338b031237b992df86cdb26ee227ffc825266887e795efc007f92f17295c672f2a9e647af323f9ae3f2509a9a3c72192f8179824f693d6ee11e57add3ae60a7ea7994920561d636ca26f7d36944f56393c816f0cd1c33814fa5f22df92c37b9b8c90db1ae400167fda308cdcd74e3f03bd343f16cdcfb668fc20c95e95f914cfe29fb923e99efef97da1602fc991af97ce56e8fabd90753958abe449fc4d7c1d34229fc4b0ebb0846bfeae62235a02ce3ab64311eac576dbe1bc13d774d9771548402b0d34bc893158786693ffe8dce4a99e4740a93888f1e53afa8111997e03a33305783d7645cad9bfa32fc5e2ea6be5c33efa8d691c444d4291f60a4f7e81f9a92fc9192ea5a96ab05ee1a4269d92db896071c6b0300659818624accae749ea3cd16067c9851ef4fe4d7d1cfb15d3f46fc118983ff20d0670a00063effd34339935d9f510466266392ea8af8800bc0564e80378d83897ef2d602362a08668e9c9231f3b0310d7f75475fe69efcca79e69e33a471d0ea9d21c5409f3feec4fb6ca7586a64c41632679f79a48c9d51e675cb1f6765d873c4259489c47c2c64fcb6d6b825fba2e1da23bdf949985ef1b0f39885ad3c3090423b117df7c45e3ede4a0887778e082c45ba4c1c0955633dd6d4436c27430df638870af71ff5a39ea81619518cedba0690d45f3998402f441b611fab06a68fc9c0efe6fe8660a64ece3b39d753e6554d3af617a8874516bdf6808ce56677c560572cae5b10cde14107f62faac89f63b40b0b8f5f69bb77fb42cfa9bb5ea67e60d7fc3095aaddd85d3e8f8f3d89f23bd00df697922151a3e43ec792c080698b167e5c9911bed8a422c04499bc9a69a536df9767fe174a63f390a5c393ba416af9e43f16b15c54516f5f55797501b1d909dbb418e8983159e5bd4903c637db1c4c8b5c5edc2bcc9d7a87281abe923790b65933b6c3648b8fad06e9f3e9c0460dd0649569b3c3bc832a3604cb41678466fabff0b5eed0b1ff11523a04c30538897ab261374dd09574e177079a8d04c34e587489a952c6999c6e4947524037bce83dc08dd5473850a9166393c24a37b95246981bea9c84521d7568dca7955841f2fd7afdd0170cbbe334ff98445edb2ab620d79ea70eb090df8517f6f4bdb8a57199a2588476bba8b43b1922400cb498e6ecff4818a60191de74905d3129f916085a42685a32da4afd0539ac971fbae4725004430c90e42e4ca43a1466c7d69d2ca732e41eb274dbb19dad90b90e105c90b70b6b683e68594d198ad556bf7f99c5c1e2a84197ac09e773275e57637b318f2c70ff9bd2afc119c84d1def5d30df08876190d27686faf4636328943b175bd4ea00c001b28f4ee35edc7aa25b7e9102b5a40c9937622f91b2ead8ba2557ff26bdf93f077348b2b93b9e0551ab7a4e77bc65c4414384540b4aa9ba6471705461f9421e27f92dc7ea3a1e96d58751dd08736824ed5d771eccf7b2c119d29a80dd5e5cd8eabf60003685f7bc03dbcca930d6f59bd296c5af32101471c68c1321ecfe4a284d1ce473df0f1397af92685711231b1e1462cfe7393fa95b057eaece5ba1a43bc19707fb7519bd1041cf46b591adae5bb7ecec7ecaac889e009664237fa8f82dc8ecc77b0d14eb84ebcc95177dc6d7c9e039db81ad93b377e9b070c97b7ed6b1f80b3d00c06da5912fe488ff67ee4b30bd6209855e0642a1793a5c908271c904b7cfb3158bcbd8cabcd4015157485d8a47a137323a0e49b14643c5f4100c89e803d650d310e595293aedd6a8516bd764e187e9b9c46a137da1695bb20233e36c9d74780d06bb243759911d721c3dfee5567d12c183327da9ce6ddce5210542e203367b163ff4a7a0cfa2fe619f6e6c32cd2e3e48867e075d2243e45d9ec84b9d1304617bf56d371563671c4e1307a8a49aa326eec8f191ccb6d51df82d57beefc61c4d13aad061ba937e39305cf7f7d8e43802f7f801ddc13240231a161e5c49860cefd8d54e6f579f0690323b372445af784b42c7c7d825992c2642cacf1f00e5bfea333cf94e1da208149ed747de6c545590cfe59f6b0caf6031c742111fac0e47c898a9a81ef790cad9f468c9cd507a1f1bf4e4296537e79ee58ec09c06786e0d3a934729ef14ac97b45be287ce31be06206ac67377f83876195c55054f655d2212b9b1ec6ce2ee7c98583761ac8bd75c3adb37e52ddd7059b50f8a890102561de22161a5bdc6c133c93af7ae7740dbcf7e015ea6767646eb074b5c81c9666944fc6a0c106a35f34f51efaf281fb0163a0514d2c28ce93712db5f1a4c9fa5072994f819037d64abd7a68e18cbd790b0f9d11e4e63fbf363bcc01f10b7bd2c77813f089d3fbbd639e22ab326e569a8f97e0bdca243c8eabc086e229b9892a262c74945e23e34e4eb3c0895d215a000230b0a527027a988f3261f24db0d10e0e9c3755f726db3f99fc8c2318fbf792378cd54845083e990d326120b9d8547a4c945c2d1436f5d3125aadbc59a0c821769fc58ea13aa4c50ee64407b2e99baa1f8e887bd49ba2daf7cc70de8cac3570864e20d8ab1922492faabeefc35de83d31b67a49b964227b8d912ca79dcb87b771a619cc9bbc4b897054d58e5628467fb7c8ae3d589ebde36101a3d99a0b10b8670f79ea4b0562b31a5e0c28116a0eba12b1a03ae2640a4af4f76ad336a3b33ecc3127cb7cafc6313075e8b0281b30cf99690cc47eef5a5cc746befcdce4ed13185205d608396959ba91e0fd23b4770fda1f824329e3c4e0cfc7f7217d7a4213fa4572109484cf5c29a9ee7d54f46a8936ae5fe1cfd02148dd9264544cc7b16878626c84895d11f124bfd6b5aefae1d4a8932a0acd86ed12cd3c8f4b5f60349d98d3f79b957f2b16c01ec898dc2928c57cfd15a9668ce68b55269622b7b2d71754f303c77cace7453b75ee072a1d7eb52f238fff5f4c26f6fbcbe268f4bde42dff7321e9087d01cc99f73eaa7b14730bcc421f78be1858c7e58cc9f44e0e0433883c13552655020f198934cd4869a5b8c2b129dc03b6e73d055c8c9942cc49f398e6d2cb4a78b911a4496f5c32604bc72290074aba2a92711a8e87444551355b01d4f83788ce3f43df489656fa385e5f429a9588114b52a3fed1120fbfe36b3fb62efd9cf72b2bd974803dd8b20d7ecadd491fc31725a99456de1421a9e2058869f12c419e768c815d6935f22823cfa9a0e9d5e6a096257e5d65c057791da6f778810c9141673360c3a85b261e95ed2de6d0314008ad1c6f0d6b9ac594ec80a8e8c718b326e3cf85480b2af42e800af7755b834594b427bc51d38287adac76d29f6644865a8ba4a5f36b27771fb071d26d378c002e8dffc80335c9b8ed664ebe60980d51b2010efeec2b268e1b745b4490164b0085d156dc02835caee38e34871bb874395e6855274654a6f21e49343d1c83d04fcd72038ff1a87bd5a409187a39bc44f6634eccf9ca1142e852e0b3c0028b4953e2dbe1d60d5eebe26f42f39f58889c4e153e38bc2bbcc31ce0ce1f73c2a7d4cf854e59b068c2844f75c3317ddf9370893aaa3fc981a1fbe6f248de733c6b3c3c3c0e559dd8487a3abdf16789e434a15ab9e8038b16af0d57e3aaf81947fc9848e8fc98c8ddd734116bb021088db8d3f2b6928be5950898666673ba201fc9246d4d1645986279db59f12c5000ffc4646531f50559ec6d34bfd4927ad43d807e57a47d6b57cc725b18d4dc9d0300d5a6106125d29b6a935f31e4c5d803785f7c233346628cd3d2a0f2d6ee89ff299c172b22f4b67ca55bc84670313e7e58f2504af4f2f4cae701acc3a0ee3ceb6e33c3dd8b048904329a4379666a4698540c9b1ff5dd68b76cac75bf6ce54efb33ab7f34108e14c5c078bb45bc8489380522aaf4c3bee4e909f6990de1af2cf3305ef451a3291683bf5389ed5a7a9cc2a21b41ebbad78367e2f6e944454200601ef3c04870f74058c93617c48ffa689632aab2781b618cd255bc3171f6a3149f1d69ad8346a3a1cf4ba0d94a483bccfd138577777b029eea407111b7785ae05db371735fa6c661b972ba4a4b36e3d148d27017293ffabc6b95730f275a4417b3778a26d14115a36732649ce7bc151fc8cdee4edb1153d073264af031eedad118855255a3df8a9aea9ef5cef552ab67b710cf0ed6dad7e0add8d13c86183024a54f7b04ed198da401c6602478857ce115303021b617a4d3602fb7253a941f4f5680a0c23e66327238a0b6198b3d9d45e35aa5fecfeb163139a4fbf8574052bb4d5a5258e2fc1a43122933630be1372585ea9b9c307a2809fad29b13cbb20a96f926af4e71cc70d0699237b0527743865bb46955a9676e1464fa3cb17eb5a98ec9480c5c1c0c778e4fc13939cea485914ee73745e4ec359ba13827957913c61a8fbb6aedcea6aeedbe880a882639617a5e2c30298c489554fdadb6b4562ee0f210d4be0e09c0edbde5a555cfff276e54206777a75ccb83c60e8b34ea09ddf1774f8d4cc3b0e09fd007f411d8f31b03adf76504091790bd3ed69a685d1d2d5ca65dab20db4aeda686e4d982d14ffcef1144bc320d736593da268b839a770d7f0f2d9a0bff62233efca6d8eeec36f704f85a5c5fa02c8903c1c9dc9a4e7e555761bd42e44eebd3a057fbd56e70f0ccdd6f7f3f835ef20a07c530aa4b460aa0346651a1ab36162f54c0bcfc5264b246486ce31e3fc5816a2f3c85fcaf1a6fd5ee544ac255c964a6ac03c3707f17ac910a4052174f8b47bff5624dfbed8e36739c823062ff8f3a2435922265066df5a237b572ed4fc4e9b2cc17532fb1c44840fe1d379f218b31294e80ae749822b6e26d6c29e04be535087ef6c85cca309283652a445fa88271b1aae561a116cca34d44a66ee3ca4f7b7f25019e93811a139d75876f9fcbfba4116f2a14a8f5f52fe49537e806714422a158f71cd124d3bdbe471aae9cd1bf9a5c0d2e120ad34dc9287d84ec7958d8bdaddd8b762809a9084a079d4df6b68da3380c397e76e2dc0cb79e09412ac3036e72b9123ad7afe06a222cd03decf2a4a844b73332d61128bcb6396524502e7b1d1fd03ec8e1adbe1d1d88cdade6d18de1b7136e9e217c1b1333118988fa54ebc8dbf0b63c7f1872c15cc201dec46677478e830d480a2851c0a686191304560eb6b499a94726820c33d1866c28107f448fbaaed3fc824563af6ffd4d6a5909771d32fa60e892a2ee0081793825ddce62f8c51e83ff50d4d9d96181a7d1feb47dae9319c3f0d5d4c5471bd8d34f686012ab81db99f8ebd6ecca514903bf5e16015fd52ebc3e7577d9668528e36f8301db74a60f580f06950b3078436f20716d139422e006b31ab46fe256b37d7f732783ae12db5ae1a045ee1e48f500c596928e1ebaaa30dfae54626b3e14ea1df19e99cfb03a56a5919195960099ee77d9e11da617ab7d017e33245ebe6adc2ae0000d97e40b3817b56af118f966923ff0fd9f9554e54a840cef684c6aa0b2f929095f61b3d4f1953542427a7da417fbfe17a36ed060bafb2725c587cac67c67835b67a731a162f27c1d5189d2c772851973e3ccc6d23c2cb85303939607f871b2de7be97bb628f1c62e4f6c6251801d21c3f82651d0976ce221bce5bc99a3a4cf8b9af81a4d3d472955b5feaabc2cff3fb1409d5155c31b10341ddb02f0779cdf7d442e69da8f9608fd5c6fda6e1128525dbb858a103ab998c1484e4e23b77bfbec5019d2434241b13db016e4b5618a4fbd8b05984adb235111adccdfd2bbb0213afeb6618c8a3a7ad6b920ffdee77f008cf09175da326bafef08d4656d26e2f3bedad375c20e26fef90862884bba3f3cac84a5e89e8662847fe9af025595a40a9f0ffe007730ae032db27b9629e1077631a382f3971186e247fa9a29a039a2cf7bfdc0a9a2263eb9d976affadb2f5dc8480df9fff8bf28c67ee745c60d1840a2a0c9f70722127d60051cf8f388d8e98514efb08405c640c97bb3eedde3fb01f874ec121b604ce59212051400cee28862eec68da6d559da772405aa75c2497bb7f34e443eb767830800d52f3cfed9ecc6a288ed2552df9dea4ce01e9e98a860683cba11e224d84607d4a317c994486ec8514e3b22d95f8b139fe7ae394d7e3fd37d7444487c35e2283c006ad32b749fedf920f2d293e1f1b738f59b6bd1b5602547d18c061d538f4e82f495900d025b6b0d3882736598796a551259bd96fb878f1c1c21f093746da2b48eda9c6175de1bf14124d902116d6b0a929d7fcfa8f79cc51291644dd5d2d54b7a9c3f57f00e312ec9774d4aca023ecbad15c7310a5215dc188191af7368407b3a0d569d17b24c4f58614ad9b7c600ab06559279e37d3380c5d237f407c3a23046aec8ab0fc9a4c418f861e55c3e9dbfe54655245d3a835d4d737881596bc2f24923aaba51b82361689cb30853eb8010635073adfd54e0270c154b133f942543d74ad1e04c5a9c855ddd3d1dc421c8b141da9fe22da034758098ee73796b8d23e4c7b85c895b24feef856f9b73724bbbfba9404b49894365da7fba09e554e8efabdd5ba2979ec42a7aa3d7f72902b9ec6fbe26a82613bd261b824ad8fd1bb1c8aefab9001295cb36de1256bb63ad6f46ee9a92bd07ea379258648abfb23e7cbea70f9ce56b782ad2f94ad014996fa4503bdd93db5d8bfe00856523d3407cd1ff01179fd80e1ffaef2c12d734e24da8d0c151febfe8f3f9ca5c0e8408f2ecd7cf13af42ff499954131ed011302a4b0e8d8e3ca0f5778e7f97cbdc714ff367f7d58b622b6dbf1547cb74ce6aca7e79e7dc918ddc94ad035f0ad10ab76b0ed269cd9489103e50d074e4f283e17af0959d7b21257a84255be130a27461fb6e87bf348a146fc0035042489b37e221fb49680c06785d2a8cd6cc52a9cd1897bb3491cc8107073d5d2a2a18769690b6d45f109dee7d89d205d938eec1cf5733acdc2b55c95ba83d24271682c1edfc6527cd657fe6267d0e11e94da65f6bbf9ca5db0cf8e32aeca5ee4f6d3d45059811e7d6d4ad9c197fea0537e0e25b60267457fe721bf5597417b10758a15d82e77c848697cd5a9305dfbd620b75f7d5ce5724de7f5499d7983a7a806e7ed0a24c1c42177e5e0a11a3496cf99fa6e2896df35d919cd0e71e855df38f23cda0e4e4ea4d76d988178f071eda968f7c763548749ae76ad54a722bc6e038518d0c01f67e69f2cefa517cd729428f33087660e37333e22ad920d7ffeef134d237602d048dc5567c275f1544cb6c2da417066ada9aea8b2eee25cde06a423c213efcfe7c3365f74644ddd41abae12dc1c020cfc8d27e2233b219b977a0f67bf1ba12333d05f674ef31ea78cda09373eaa58572ef7734a61f0915f19bf19365df0deee030a93b7c9c4f1a6a027e2b78fe70283d0ffcf3d64e50d44f9f67fbfd5de39dbdfcca609d9b850978b2dcfa26ae66c270e4c9c61990538202a7590e92a77e12f71da3cd7a1ed854e94ebcf3f2bd78672a70965bca1ddd087d3752b6dfc17c403eca68e9f98303a532ccd073d710f99ee12c8838c81b3ef7d85313e77d1d2e24b087b0e3c1f1ff06dba5d2d7794fdfcd85ea83fb662e99058691253ee8b1d43d43d74fd6d2775660162dc267d8cc0dd40638c5ae32a8493263fec2f16f7824b349191291b9610ef66ade6764ef308b1e63d05cc0f417dad4214bed4b0540dd11496802ccf1efe42ef9b066f13d70e331afde3b8a258be942d3005a1e41508a43ce5dc02033b889e005c204717a618bb86cb5007812b56490241ee12fc0247200db11ae2576415e51a524bc6fd75272dc7e75a80247f496055795425a020d11d43a7cea92db89b600a6b0bfa33fbcc8fe1fe9c13348cc6da1ded524e56a0f7063ec61b890e173f7af362e6b477b1fef56fd38b153df3b6531abe149b445571ab73b5ed44a90fc145b859feab1f78bc4e6d94ce9b482f398571101dbaf12c74668df880464bc6fc3003a7db76090cad575a0b5e0cdb54289f24fcfd74091e5a4f53f0e0d04f045ba121ad0ab11b7c4e97cb0ab3b501fd25b75af2ff5dc0447607f93ed289d96fc2f167a39b2880a35680e8a0a8bf178c5748b7a55ec6031bbfa4a60b082d21ca72344790bd2b5dec91ac5fa95d8eacab747bb684f22417fb9b49c19ad9e6e2ade9be8f4c6ca1cf2abf2fc99dab98aba1f410d8f9e2e85e218a4a9d2ba562b04023ff30906694f9bb7623ecd2e46401041051329c4c2d00e8357b5e5992d6a2b94ec118e4768100695754296ef40641a104ffd14a45195af6b9887537bcf8adf6f067f43b58ad839d16a447d4313aa2c1e29601fb4ed37b36c84c479aa709c9d0e3f27d328074aa338b32b536c4ca4b28ac4d9adf33de6867e02d9b54bd0e7e724519d7e1b5c95b494019b14631a6cfafd61bbd246b112937ac560c404120a06be44f5cd0dd027edb44b2367c8fa8b631e2c91df9f01be832cf81cda8f02e48e86d64dc4419c46e699ae09e578be925e242011034e45d091cdbe30e63b120fe0acb3e28049afb1fc5f4c583bff4d54e16198bc3d7b55cb41e80c0acd34ea78de72bcba33bbc42b7bf9f35b1dcb60df273facc93d122092c9b66e3ad331e1cbbb96d0ad46eb619ac7da8a9e610e74f31c556fed275cfad0298e8baddd5350f36196278103d304b6d59ea3ea473278531ede583c8bf0cb9ca37f81ce68f28b51abaf495b17871d35ddd713a7291d41398bf6cff81729660c7a3020e99f8aa99b808d3cbd3daa7e626c8d52ab93d4adc797896bf9f40a4cd8fbe93bf8c4edc1377a15ff4772fe2f1a62e16d33e430c65852eab24d6af7aa2bfb4250944622d9301857b5965fa68aec5eb6d8c8fa8d16af76b3bfb2236392547ac200d0f0fdf0e366dcfad8531fa443f672c0e904c2f9df2a5d5e48fefb1b0a0f645cde67de3c7931d2126f1e1b30b5981067a81c33f3d8e3c27c3d10a80a1ea21d92850795e5fd03cb34d561ae806c463a89fb520b6df2fc3fda0f523b7d3907f4925751fd499d6c529eb4be556ddb05bb8b334af30a9170dd9e0b6ae85e17099d7da2adfa74429c86fecae7916ddf31481c92a6065fe75860ffe736cded9b222f954477ff05032d3a73fb082e17744c28fb7dd956d1d74e4aceb2ddeda8cb5bd090ca102d3895c1df345400a814feaaae48df75377abfdf433b67d9726d193148c441932d0917abffc89c46d38dcd54e8b068e67011e305c9872555529bca335e50df3fc49ac87d92e356c3f293cd4655a37b56609023d32900ee93fa75ecc5af588d5317d184974c3fedeb560001b59f15f65a67c1bd1afa6c187766fb374ea93a2e8734b4173e98447810789dfa9d4f90aa01c5902d67376f3d439da97414550397b188429405037072a6818755ac86cce5f899dd09cbeaf8f43484bc0fbdbd636614c105b7fc9a570d41f44f3ba39ff08f14309298ceb95c34dc9a80cd3b36af8118e73b264b392cf547bdbbb9743d07c2ce8d5d2a7886665bd6f438b7d6e8d874675bcbe335dba485a668e254ac79f11ebcd8735723c46427db76fccb42d9059821a20110b83ad802850f5a7df2ad8d7e3fd8c246aa082f1c755167fdd600d90e3b7622b4191b6b32128b1af809261b2e47482aea2fe0439ac0ed76ac62dc3a9f56d0e055356460ab46cb0982ead9f5bcf8e6822ddecb4cae799ad9192c618e494136ac8e627b430056341fde9d5ac9cb74791a8c9e6ad8e4d00caea8ccf12b079cc1c5d0873906067da365a6c1e41607f3d229eb5088d3ab5c3691e77eee37fd9e538b2253eaaad083ab8a19bd9fd9e6260ef81cf6f75c65292706a80473cebbc7ed565a7565b866f3baace51a55eb91a8d7ab737166f4b502cfabe97166b0d7339bfd158979eb05626100159a3a5c917d8a4612c32f07dae00ddb28fa3938dcff676406ece352f807fa7af82ef08434b05b0435ea2f5faf7601efe8783666cb6c223d37c9f955f795ff6e2677c3515751e0ce11e183ea2458cfedd8f8c0d86a06ab4d73d36060470202c1caa048316b715808f63c559c57786718fc9d17f0a46783b5c8c71e68abd2c1a9161d7087e41a0750a52cdc0cef664a7d0c43bdcc9f648d96c1a394c84469091d568ddb6948344a0a810fda1878784666feacdc4e22306f62c7331b1c08ae5bba7d0efff13354287c6f245e51312da2bcb5bda877d2c5eb8e44c028ee4814cf929b78e79b36cc3e780eb6c1ea9b2cb0f273375f6a433065c427063f65e011cf51898447e132550abe70f1274ebf227243edf6f070a1ee97c9a320d1f98c7c8ddc38db2194d7a528f97cedda7655ae31b716313b83f9022f4d384512eee9cc3966b540eae509cb885f90bc0c93090ee789a795487e09c5b7bbfcda16ae1a8ec307fc3a0b45f9544f97a57f99b2b981723811bb52adad15512987a58ec7f8c12fb1b3ad240393a66b475fc27e2fef9af22a73b00914a958d277bbf256d0bb2dacbeecf1204abc90f43643890a3cf098c2e91f624ea60d3d536b1a93605a477605a624c17489fac6ae3d348d34d713f774b457c81a19790c4a3d975b0848e3ebd216251ee9d0f8b27326bc1bf1f207a625cef4ced097ab47d094b2410e1bc79e0160a0daef51a9d79d47567c5601ee611762ff5a4a5f7bbcff6adc3c8c66eb7a84d2897497e9f511d9da024e1857ac3aad8877b14d3d0bc702a44494b5346db1a2afd3f62ed0afe43ec3b063d0fd10e00fd18637f23e6f5a9cc1a8bc968685218852785d5cf195b68795489829c99e5a6405058e9a02356231927813e3e0ffb50bfa82ee464ab5210058c625cae2ab6b4ba8d793b53f8fe015b267ffa7da6dd1059e98a64b905ade3919c02471269671e6a670f5588dc0dc34cbc81b21f681150cc82f1e1ec4e6f5eaf10abb838832b09ef5f04c6b4b9775c6eaeae7112f1626c405f819ca73f6c118ccaeb76866f1fe823a9b6de7147450d7592b6593fb02f62791307865ae9016ada1422d33c7f3e715980662b2e7de8d307d8b526768bd5fd1038d3e89daeb708d0717df663c24d1a9b37f7760bea99691a92070b98aebace49f00e9d96ee24b2530a34e01a007530d50ed832e9db5e593e382238ecf5268c9c0b139abafa02fc3dae30ebfcafca35dd5480eabef2423ffaa82bdd637a05ddc3d7cd485fb8a1e38274b9f01b53c883a0d7c0a3603ec340d02b356d180eeaa1a4a08ade55f2350c3791f2a6706aebb67581b7f49c05f5372aeb98b6ca9c32fb6e98431005d7ceae5d5205ee2002fbc465d758cb2a59b83db6221b2d4b2a4bbdbdf05d908f4e1f58e3b105341b231f880a101b9457062980928a2f3849281e8a3d81d9711e3d900639c2785f29a6b591eb55fcbc8a6e7a4355fd9403aa3a26a16fca638c6f983379bf0ca0de7d48cb175e87d917cc65ab594c8369f15a998f7fc77ceabc3d92d1b0444a2f0cd1e4a0a66c261e5933017942cb1ce5d88b60b9f66ac8001725d2162c22d9f3ed7a991d28bf398648cb37c42ce40aa15f1b9127bc61c7454f6d77eea7ff91618f41448a2c6dc00f49429c290c211a105b92b271677096fa1f023f772bb6ac3d6cc05cfe07cae05dce3c26f60e54e3267a33bb1d23ea5143205e63ea852032a28f97aa92b6b7b2b3bbf363242eb363db0703276b151663d830aa9a596d837cbfca0e8d367b4b15eab7769e2481fc25d6249500d0e285e37ecec3f828a0e642bb58d1f7a8d00bd1d92e376ad4cf6c73b735855a36f2d0a792b9a3db38c19744a6b8e55767f7e00f0668fe20ea1ebbc57818a44a3fb94a4f07dad0237e9c71ad87ce6545842cd531c7e475055a56715238bd908bd19df843dd68175e45443e36c6aaeee6bb38aa2e4064a7bf8d02950ef875b84487389469cd77462c212a606263b285fe37d28fe787897ad95a083b2f20957fe6ff9190e118b1c1cc756d9d0c829047040fdf413f75a5de28b17757ce30ca2129c58bb7573809a979c027c9d78b119fe60d82c97dc99abf8bfb20f5ee6b0d91b5b7ded36ae751799b2042ce6787fbc92a6a46f8b678767d6c1c4c98d658ebd5a226f081ac8636d003b3f8bf729b207b312869ce8e8c85ffbaf5ddb0b58eac0968d1fa85664bdde177c89c73ca67e14a44f126e7b1da60cb7d9b32f59b13fd23ef722c4211a0ad2504533f7057548a9ab8aa19ed631ff063fa9337b73cb4e86b1367f7e0c4f55ff3eb9373b719af0afcc7a0f6244ff425839e5bd66b80c2a4639535e3f69f471e012accc50476521664e6713970abb643b332e1bf21292832bd5862cb1e085278a49ea84459cd77a99a70bae69d724d526974c5cb7cef4aa914cdd1066cd5473b65ade51283c9639f1519058d9a2b5d93207ae02a8094f7bd8a1e81a85ac4e64f5d971c9c05f07bdb0affa435c50dd9f44b6eef76d768a5b814f4b060c4c61b7025a7ae0835f5bd16c90ea671827b2d4903823cd805eef5ff3edde79f4bc6f8c85d08f0e37abcaed6c945077b53fd6c8c8f4ecd617211a349bba39e4fc6aec2dfd772438ef256636693d1988c2fa7dd45e3b8d2e86a5d592b53196adc7ddd5c599302a40adc5b7450b1b96506af761edaa29da9870f5611c01e64c7e9ffbad0e5d68d4c0b8f9f5ebf389e90ebffe3bfae3e23ca35ccbbecad1da93dcc1588fea323fde16ecfd2488b103c057e463135f6c8acb362c47587b5ba4be231ee61c39c53235ecae0be6b0f4e26fbdb3cb099e2528a299c2672ff649b926d8db2085c4f5d5f9515af5b904444fecdd18a477edeea2561c51f930e5a262eb06f5a1835a22868d493c84b68079033f9620dcf81c21a0e6c6120b6eca405ca66e45aa3e52645f869696c7c2d69a11a15dbf01907d7d0d421ec7e7c85db3f725001fa4111f498b9d878fa585e1b149aec34f27612f41745fd86eec7b3d6ec8d4658030cc25638f3cc48092c2bd19252ee8d9c7cf477d4fe1f3cb288fd6f355a3cca0391f8fa469bedf31d7b21a8fcbf8a24a66dadf111d3f68d44d9b7665c0461956a76c4aec50059454789307e4ecb694c36cf1175ae74f2b133f3d38cded76c0ecfa66440626ef1af434c1d40a9dfd1a90bd186141b6dead99552518048eea3b9a9a54b342f887970ab086c64b573d036889ce3276671036a1c514ebe96a33c2ccf57c5c06674ffc4eda248a196743db0b05bc7955b13bc035a82c427ae900e8929154b8631de883faeb541987a694fc90499847e059a4f6ce04a13efe04055c201e1a30adb240997732c1252f5ab5204a3ea6e19d7504bf849c7b4a546636378ae460a5a81c8d9aaedc1750e202dcaa2a86f81d9f41140cc043f04fa9b30b2acafbed464c66bdb0b9e70a4c5fe3cb5867876f7808b687344d5709ab4785516f3a2bd26d294571f4a2e816d23f520dc8ef9e9a363c1f5639627b6f17604ae2acf62aa8e7151c17c42e19f228982f7f182500f35df95853274de80bf535112a33911d44dda72ff8dc1b10358d544eadf79fe81819c2fc9ccd6aae2ad7670a29ebdbf3eca3928029f199e75b7a943f6e9be1b692276c922d6436e6da1f3629d31b017b7633aee1913cb7d7a9ef0beca247b7a9aad2291159df94dcaf7e46d19857be55e9ff11572350b6d115ef0eef0ea3a3377f4882b625cd40a44648b85ba341e956e583e9d24a3bb28524badcfef05ea6323d5955fb6277b879a3e1eadc525ef91c9d7488100f0107f7d85f98ca7431a216e636846b0cbbb30ca7706e4357779def34fe96b8d2aae36f67c661043708d60c5989774db7f03e143ca8ea641519dd99b0be8938dc6e5d44029168498f578c472ec50e81c209dceab3aa50a9e309b957629ef64aa1222fd7812e53d046ca56ff5e0b8074ba2afd2e1a9a478aadaed2af1bc743e223b74af07268dd327e00ddefb2f3bdf781e5819cb764f834f5919b5eae4b552660809344c4d9f9fb25afa8ea58a689820ff6b233ba92681f8752d0016883a662810f80d9467a8103bdc71ca6aef1a1db3d40e96a65331eaa8f573ce22b1fad21d1958881c8fe8ce28d16ba16df0d57596f46f9b84536ba68edc97c0d0d0d42d277754fcf6c0429bd1d3e42bfa4faf562c839de738afb693d9e6a548911cf3b5cc1381887546fbd4e2a29e9b054fc3f4298edb3666d594aba7e7f2e0eea671b89474849b00472943d208fec26929570560d3f3a9ef5ec14d43cb65eecb39c0dab8e1e118ae396d9ded187e543b096af20e460452e83c25fe1b90d2c713585dcbfb3b94a93e412a6732e26e7c1d67500863d08ec68a32faaf9b12d49c6b75aecd169030853058c0a4bc56d7f557e4002eef1096a184e0c7e93da8d6b037d7fdb308cb2cbfe1ffeaabda8e3c315ceca489288b842a806930c7919354182f9d3db34903c90380f961403a063baffea2cf86fe2ece6d851b8e9929c4971402714d043db5ad5ccaaec06e8d5dcdca7cd21192b77c2c22a0a51a0879ec982801ebd74e40c49d6f4984e4541f974f245554ab4e4226bf9dcabd731a64d31b2b8934bdec6fca18506537d158484a09ea4bfe083b4d1dd147a48d32e0b080ebba8198baa2f34f212fdb7f410165480828fadd3eb4d0b6621a10b36503e89da493a1aa530e4b9e0ee4f23ffde6a957e2d67a7711d864adfc42954c736239a9d0abacbbd5766eff13bb5f61e6008a226a646402f3539a9d5531fbe120f8fcd852aa21cdd837e4698fa17f71fb0d49d1d8e1a364cf886d85b3b6f920836fa10e0b68eac049ab7f8d0d06d3896fcc8e0ad74e6e8da42fb40640b283135b902d25bc756ded706902bb39bfc31f6fc1ae5ff3575463ea8b5351616124a59d1b5f842f0c1a9ca8038775019ba26110250b158f74cbe131fbf5981f7d2df6d6a01f522ffc3efa8f733d08092cd51a2f94a881fa55974eef433f8ce22c76eb953473b9795040a75eb3c0cf5f4ce856dc09d8cd3d1b1a77bbaebc6f5d9c7eaca666807fb65e921d5d3fa54f541841b95119df499e174fb5411f28c7be945f026279206e257282545229e9c668b5bc63879df4688fa0be969a39f718ecc3f71089ffa3a894ddf6060c4fa470c5532fee5ae93446466221334556fccd6015a13ca92e7d54d0646f3ed31b0b41c9468ff74d53156e279f176dc3c0894cfcaeb64cf77e68a3bd7473b9b02791aa9cf239058bf7bd9798e64b46715229ddaf5f6e4926e6f2c2372567c3027b1367e5523b5998e988b805ac6f1276c728dd179102cec2c7aeeade713039a10351e74ab6932a3b2744b3f83ffc6f11c2fc0eac79c3fefb8c007ffe1cbf17c9eed81800d2edd0f2bcac3879b033da4ee007f025308c34ae0f358e343c871fb10d797a2ef444d3278149f4cfba74b5b0978da867491d9c8f639653f264631447af0fde4b57b65fef2e3d97c00a8fb9c224386014fc800c4ddd25029600d1aec939f97efa3ccff8b5067aed4ee319714f46bd9810a34a8d541c4fc5ed7210c10a55932571a3d2211573488daf4caa1701df4454a61fceb379d6617c70b6b4ff949cf3d998a58457b23bf208502cd402fea0d70b72c069c9ec26621c5f93b65bac9f6f9d933790a5aafa9c1616384cf54bd89e85333c0f4e8f78f4afcbdab730efc7cf580dc9d41440f20b2df5b8d6b23956bb278e4b9b517b0bbb2394d37927c30fe84cae4075577831c0637bafc2fd49797c20a7d7c0c312ff735f27e951c2792d8c7cfc0aa23bc516f89f592dde651b9360d9922fef3748c776b71a8a207cbcc2d2d1f8f70f8ae22179b17c54f201c59734c9aeddad005b8ca62a83100346d422b79aa9ee02e7b2501b6af76c890b5bfe7e358c4e47ffd4318781b6ae65aeb86daf6f720bc6f24dbbab91cbce28d9818fe1f1eff690df94226e8c732dde9e793c3d6fc6d10a0f99ca38c179ee541b26bd8b65e5ce18fc48b9757c02d18d7658d65f33d3a93b25106d5cff701541c616f51af7815d47bfb5279bc6548c5e835749197b8ff485ef1c7c1660fb5c9a1e11a42a9da36a140026b945f1ba0b9c5bb7d35a47a000f2cc9bffd7d1a185a9d330314595cf74cd0469a1fba086b698fce0ad1c84046942e935e8bd75658590937b29b5922aab99ecaacc714fc404d66768148488e196edef18d8a88cadf66f01be809cbc76fe5805d274652ea082e067db2dfcf9dfbc91c913cf9664b1decb79577b729132ce15650c215496975515021d37688da2583450c932b012bb5b58de7a61da76436f105c2c757a1806d7a7878db834acfb80b2ce30dab1ff5eecb6c828977e582bb42181214e6946913e2a86f3b9c2e3d8967ed6fee70e26812f2a752855df48dcf252ac310f243f7f34bb3491d4a9bcbd78876217b27af27a7e17c2ca31b8d24c84f38145c7a45594977d78f98a2e8e2ddb172790ef055c0cc24fa937be15d3bbea740a24118f66d1c9b4c7e137202fe01c1273e451368a7e734a4919a27eed9abdbe133308a98bd818c192653513ba7525b747cd74e9b31a14bcb5a4a1a3b966225ffbe1c438430ee0f99b8c40f13230c905438c59bf1d4a1efe719ac9d14b0179667d0f00419f34eeebf9845c6fd5a1b6ee9914cd428740dcfa225ce6ce619372afa9dc1e9e00a434e6dd947620ccc0ff0abe0c0da77531823b3f201e13c04afd2981a5abcb7974d61e733d58b55da76ee3c1d2770bb52e397b5be62c0dfc32790bd18841df022ec69d0b394d7ecdff8c0db7c221b103f206d1f5258a3312cc1be67af18104fc1e3977d41d2771bf01704ba7b32962d493b9b9dc666a819c33e2e0adff1b34bc1e300c894a16fd616fe33544d0cc870bfff6572be54e6da14cc879a21d5738f3a6e45b7ac2ca1e0106054da117b9a3d7dd6b8cd2d2bfe50b9e7d45b524ddea2412550fe9a57aa0f5f7d6faddfbf60051813bd999dbff981fbd07b3a7723fa76a8ba2093313fc838e991ee0955f76bdfa1127ea6d65ff272131830b9a6774d860366ffa24f7a01f462b65e66bd2a7f46bcc04ae615b5139f665ba096caef5793253dc3553363eef22ede737c14a6789a8cb8585a601323ebba511a8c2a7c90318464f4da305c4c25d6d3a693ee2d5087da768a1b2a7a1f25cf49ab7b0e90afbd78318be437dcf05161188b7f099fa1d573db4f7e3196795b08d1e57ebdfd80366c8719fcbbacdc40a2021e5c8a7db2561777e9f3461cb18d56a98fe7a1096a56da4d3cc6e0ac9f61196f2519eb2b3aeb38cc622865f7f0d2dd0445d189af4a742a72066e1607edef1647a223db377cd3be8cd16d5c4e2b837a27c7c2087a2fe6f6e8a76d8afbd650e4a0d079097393885ad551088338561ce1d3b85ad69e3108df1bbeb2813fc6235277e54d820352ec559b78c36c2a7afbe246d7d846061bad0fd958d3f564ccff376327546e5af8169431c73f2ca3e2587870efa2f955011a164c97fd8b57876228982fe3996fe4ef856499436d72affa42bc7c46c987f2eee11980cf1bcc65854a91e8fdbf65c722eec6baffcc2f8023a9b9e9960356f544a703208cddb1d3426c84af0d05b01f8bee6d7d6d4a1d03339be931e2e73ea89b4ecb86ef60242ea079dd71a21e136a32bcaed2964ae5f9543edbbe203bd6e7e02a176bf713ba675ba7d6b2c17401498563c756eb38f2cb2a84c677e10fd59423c5388e9f753e236e77b281dce4ff07250bb5525d8897510e41f00c09bf081805617b3f45b6dbb2898ce1e183521d537f6ac3bcf4ce58a226bb566ba394f242dc2a287c4fe8c54c6c71e0bfc54fa26b94627a8ff3a66ab688248a6b97925ceac79216b51d4957f1dd421470df91b23ce537a139ef57f778b6082a134baafa3b071e9d9d65ddbff1c9102bab0d242bd4f8a330ca3accf256f4e0944667a4572a88f78c71aae0f448ac227de4070ff8ff3a2fa5f63a46ac12699fda6dd9eec618277fe93e81a426812176fa0157dd805479762e05b278d38d3f7ee517e0ac270589fd4c99258ef34ba0c8088ee538f192810dbb11dedbb25acaf0d926bc9ae76a15ce7e301ea8beef3e896b9d552cd80b6b01f9029167b12a51a688b9eb2ef9c4bb720f6771c49f8b300a513200c4cba60fc1d8c69a544a37ec5f5c4c6af275e433ba1a1d422f3370b9d96c8640c2dc4a4f2b4309bc368e258c1ccfd2b4e352548a186793f6be68e6be7db5a69fa04846ce38d28eabc45e85521b820b1c7aef9ea77ef7c50f5340ad4748bac93060c3decec15bdcbb2520e6cba92d0f113d5f3114e62044200f8e37a47b6213c5503700996898d888ad74276af09d7d2ecf7a97f884ba42a1594f29738392376cf890b727dd3b2f01321aa1120904c81145c3ae71786f6b5de5b61280934eb900468626a6b542458d6568257ee53d2949ea1010a02b147a9aeb9af7190c47253270da05deaed9a2f28fe941bc242e85304aef42b84475369a3db9c4dc992e345c55db0e4a60973e99062b2fcec75f421ba2f9bdf95108bc4b8ec36d9996242373569e0a0f17c1e10e30a86eae688ae5ba0776289dfb1c4ee5e2f0632ae0b68ca7124144eb0fa9c0429c99d116a9a8fb515c68429e02f4dfd4de23d36e36929131b6121c49ad7e2110315ba176ad3f52e7f08a16d2095c4cd1d1f6f58adc88a87459c000fd2541948e7fcd646ee6379cd8624962492c02641516cee16097ffa8637a77b685d38670e00d8f51243112f3269a0a9c63700d232ee5a57c45a48c8149cadffaa11e7a4eb6922b6f18eb5d71d92804b1163cd2b319f979add5d150e43c65b42ee9df20409475aa5e8c41c7e11b523326e7efcfb381add4de07db0d6e2c9c4e16eedb6804e8a59f277d2d347d1c4d25f03d1880234b842953f734499a6005542dfcecafdbaecb5a8754c25ced7e4f0143e9e840338a487aa6abf8a481ff44c5b4afc6ea113555a01057d2c0914a2c7b30f0ad5c55f7bd9c4291b9d7201424e08339696606d0abbf6fd8c4ead457beaa4c946b36f2a0b183a603bf1766b900af16fcc18c970b0b537b413148c2bfa7e7c19b195805695d146c034b837dc458ae588b66b108eba7140d5db7bf4ce4be2c5107521ca0249f29eba9454a3afb4b19d9a95e023997d66e5738365a2426ef86bb23dd78aa8a7bfd0bc3a8d7a61f509e77ad8328caf4413527ce9e2224afba138813046e91bb0a38e69c5f7b6377fbd204ceaa3f977560e525480cf89fd228382dcb2c4a138bed7cd27e4cea144d68424186cdbede0eba1148a156b2bb8f7b09ea34328a44ec19be9c4c45a85c551d07196a80ce2cb9d499a91592e5bd5280fef8ea6c696d9f0df80bb72c0ab5755f822cbaaac2a244f63af044f1e23c1cd20bac1c6c88ff12cbe54cd97b99f2b8f819d078cb364596260f06af27a9f404418c17b05a1700877c0cf5919a08e9e7f83d0c92873e8285e106ea8ab51c3f1ac5315c9abf314e8b25e1bf8e2f6ad6a6f578cadc6729df2fe65cc068d30b9c074058fd3db471ebb0ec711a19d727e6d58908641cd0bf9442458b9cfad8922dcc1f4e0615b58d9cfad0d0020012114a38f362c9b48501fbad57108ca9ba703b01a511bbddc7c3fdef6dd36a99fbce830fd8e32ed7b93aff9cc669c8d486c58e04ffc92544efbad2b0237546ab3cc98fcee54fcd81b3c13d00794fc41213e92568987757b5064e426f748465f78f5a082fa499766e48cd3aadc35cb2a822b4730cad850695db7b5814743c7c174639b62f58affbaa51dbd0a5a18031739a0fe613e891329f03bbbc00f4d2c7da79b1dcb1785980d430d6bf093fe4fe04844517cb151899a4b3ff61bb0cd70403a789dee62fab63b74cb1a2b7db51d78c170e6ea8b6a34242b14e84be32ab3fa5146eb9946420fb3caa695d61066bf90de260ccefe0cc11e185cad8598cd9a6d42ea220ffe727fd4d6979b53283f573a589b7ef69ae1a38819ac7d819f9d8bf42ac12873a3abbee2f50cef2b15af832f6f41759ffa7ba5fdfa819f536014b7e3bbc4e3086d6aad9a84f77a74d74da9e595646c367a8eac401bbea61c09d5eaf22bf8729e70cfc6b9e06ffe50628fa01be0cd84aa43f32d1642d9d520deafb0d534fd36fc97660fe13b5ed9b51681f5eadd3b6cf66f88b1514257697b1e2ebd76bfe33e1e9202308d3701f83ed2e5a5f4f16d98e7a8b58eb565af94ea84af4ce0c97c5af51ba269e1d936dbab54ed7cba93fd799eeb6d77ab6039fb97a0ffc4cf4c25ff0f04258fda63551d9d63dff2b9fbb133ef5bc4b02da076c001420dee9bf1f8b8ba8a85cb8d8a7b6098f3053ca0a33e8aa0d60eab2f9a71fcc48f3e4fb5cfb38e95b73fc7ca0fb4a8ef5ac958f80c2ce1f293495f6c045d824e8537f1bf91bac750875485444ccc5b3a08df8b6eee61b70b2585c2b91746f048584fc7f45c23e22de6df7c6ac2e2373501b5d3e159f403e51d76110af0571bb651c64d20932b6fb5050fb4b2665ed0de11aa0e48afe4899f35ee78f247d682cf67ee612e82f036f4f041873748e5877de203afd2aeccf622964532f68f7baebdd22db6953c8d9571bf76fc95f8cd7b628a4d03f446fbea26610bbc7e9202b7d27a02a9bc6d79761f8c0e7f78968ac8800d922a39f0cc444c450fccb3659f7a17a837081a74bf8cd80ad022b91ff6aa07a91ff4f8332cae9100c6e97f4e7604b8e694dafa42136a74d0c127263bda15581cd0ecc9a28469b1e6253110e5dae6a88170a48d2cf22c7f8737d6145f0e9a2d46300b3428485c137b7878e9564cbc61d8b84e5a679ae7a55aae7e0f4774cb30006ed3894a1c5b11e42de63ec5ddc2d5f88598c2347c1358c5952aca1a2542e9aa36e17f9b1d6dd0d37552a633a72e7510e7023c6ee367cbbf5076942c73f65d87248997fb8e09a508b3d9cdd8953b5e2b4560e8c69296f870e317bdad94d8ad24c0ac996541fe2bd7e08a9b42acfabbe4d806100f75006173761871c0e3da3cfd908420839eba7035f544ce6a96bdb31f8ed1077e27744388425334aa48d69e4941406195ebbff26fea98f7be77f60bf840e2d6badc2c34fb2a18e0c3c5efbedee36ce5de68eada769a143f5177aef8f93d3d92ab9179ee90ac62d1d6512509db8fed9dfefbd2748b6fcfcd27f42696228e24f50530a45ab0ec135c0b3f3c8da426667820d777f83ea8a14b178ce1dd146e0e7739d6bec8d651bc117f334c9a676ad60ab81484a36a83469c9199f317ba74061db1054eb3a8b6de7f9d715ade9a115a989dd00ddff04cd707329573de25f2e6ebb45ac6754f23ba9948cf9f75dfa458ec397759efc82ab5e38935062e2d3fb69bd2c887aa837572a690eda24e751d9e3973d8ac04d29a40d042bf9b7285bb2003f08024239e8aef514eb646d11db194380ecc508f3489c733c79f736c1b422d1e04131b1338bb644a3c596b6cbbe1378017d2206887f24709be0cec3c665d7cc062d9cfcec7c027e527323f58ca2c2c1cce61d668d5d304eeaca6541df635a86362f1ba909222d51e9e09964bcd64c97fd476d37503063d4f5f3fcb9dc0fd6c8d839125fd21ee6a559af1eac2d6786f0b41563c96fa96e778b9114419ed59fcd685172c3735d8fa136882f0a7b6ee6a55823fa0519d2df38cb2ae75d73a684a9036f94d4e1f2613c1aa3a4cdef69aad2c64e654da899a01bdf44962296dcc9a5fa0742d7df3d1bc2286a1f796f7bd9102650d07d0e0c908ac1755297156d83922aa70ec79c5bff6477b720d4488d704728f3306d0fc99d119a12a6300874a4380d9053fad378814253c21f75bf765ceddf19a6a7da254394feae20b21e94edd62e8266d24d4e0e47f0d4b8e1fcfc5957991abedf6a9fd61c857997338dfba3324920d08f31ae0fd5f0abefc9f591321b38e99ee0826f28e98a659c3a66fcbbff18ed8de5bd1af214fa16d9918ca0147326fb41665760556db1b89421e6342d15ced83e6066a14bf1c7a10514f405250c063002f77db527706399380ec66997e30f4948ed2acbf5c7672bedfc041d35702c126f9ee7ccb8303cefede52c5e9b1476d5b7a1ed99b1b5c0672ae1e6504a51702fbd0a6fb05cc2375ed45db242bdc6c18f7c5cd3c053281fc1f0e036b045e540abe995a77cc022a75e9dedbff0c86ce08924bd486ce79a59e1f5192b003791df8e3be85cf05afdf13797786076205c5ff6df290af355cd994e4e3d493d8803189cb7cfadbda389665e46c4179850e540219b8866185090b682b5bdb609ee066010f713282da269c8e862c6ab5f70014537863e8bf8d269bbc6e23a9e17dda6606077922f34b33be6c911307cc3d5f7ffd648aa41337d5d51177a3b1dd265d914ce8dffe36a07dc376d53ecdab6ad3e3583077d9ea4e67b680847fdf230c65954e68c4d24b44253e255a0551395b6176ad435d735c7b9ebe850593a25c5621a0207543bef31bcf87c92625429cc07d521bc135d5794f5d23c41c4c3817ef74bc30d3ca2fd80d05a2f4b27068f162438a47b017ac78f318bce5c3fbefee002878fef30a1162266519e5d7b929ff01ef9348b0e078ae6ae96c7c03f7704ba5e0ab05e757ceaee9399029df5406b6d4fbbe4092a0e3f40dfa3789e896706e174a6ae06cdb72800f2926fed1561b7d8e57227e7cb4c0e5b2316689b145bd2b74c607b422d5cb3c62b83951387a63da0e9508283f38e5915b85fe43c8344dabedf145fe46647a1d187c3bc15d4902156601a214b164fe9a2f4f9732e32811426a0963c1a8c05d27b64196d074ee8c2c40085de07b3d8b206e59a0465f20a5435482b038db6e673846021f0620bcb657faef5f6f75a000e82b5d3344980fc00f3f822564e79bbb97a9088362705d4d3895fbac792ff1aa72ef9efa13f763d329f09bdcc76bcb2227e95a49d3ce5aaaf0f421c2d2e3bb0636e190ed378b56c19399e3b7c8b683c62cb1d3e8a67ea1df9dda8e00e6349dbfc2bfcbe1396c3560eb8955fdb08aa0494e5e27617d811755437d173a01a4c335ac9d5f3c6e3fcf3b269a0dff8b26abc5c8285accc62e784c8faf231ad1ed45206d4b6f8626e9b40c7fa50966f87868071f9accb907367a5ae9be1233e5ef16928f06f86a59b86b05ccb4876279fdf1da1a77585d61a78d007ba275de9625e028308e551ed1c0bf3d75a6f4a84c806d1e21f8811032fe932f51f1a7d719102d53bb527396285fd6a455e63d996d3563dce923bce25108acc016d1f574fdddb7303d7b8d8467b9f0bde44aa9a3fffdeb92f5fc14bd3ab78d7cd6b81ddd529b99fa1f7ff7aca5a1ae2c0cbc26fda8c4ca168bbba604aa7093710891a9e34a8630bc73e14df37c1e2ef55b922faa4c4b7f5ab07ce3306c95f491efb9c428c8538afb1c6d561a6b6cda6396cdd453e4ab8cfaf249e1e84a45d4a1ebb2c70ec051827dcda0c58c8218f8785afb0c4e83f1b1dd299de64f152e37984f2d31de03b192354076d4985c66ef09d3b373d5d5c7f9397a7b6ec193babcaddfefc4df26f2db68fb43f1652a5f8908bbd6956541f6b3b0f02ff373aecf63e2b1b5501cabbb8243a35cc8dad7d9682671d66c4c4d3194a2dcb69e85dfe4b6404cf529910a23aaf8559d4525c767363b025fd124b1af7f0493148a226ddfb4079dd69742525681c558f7fa127c25f09b9e0e47f1b35c22df6a14b906fc0cb370e3b44712a42d6eb9f1bf704861037d9557b44708113d7c003aef118256c0458a79a2c9da692ca7761757e5c6d803735eb272067ede9b113d785f260846fa346925246bc97e251d90aeb1332478cbe9cb8bbed1b0857700dbe94001d5356b466e1bd6347e4565d8a256cbf7bfdbadd2b85df3ff1093f66a01e856301d1ddc996e761c02f558a37728ff3dbb14a0fea4ebd79e6107cbc8c58498298fd733bf3c6626ba2f2c99663aa6d587ac06f0fa2868abe3732187680c3655e821e1fc695fef2b41d00fb85bd1ff668d995b71fa2d1a92b0e7b738c6ed795000d4c0f7e7dab74f89bd81cc252b376a02c34ab61bee8afb0f36f203eaff062870e920a23e71c688e3cece668fefc20dcb14b4783b9f848802b9d7e2cea25cd0012b3a6a093f6880caf063d68f8d184f29f4a7a91cba6b3d2705f4419d915e14b671e7b14f8a9dae2bb385de583b70af95b064a35b6a86f3fc9ddc09f9f7cbe4c0344a2118be5debcdbf6c7d692d05a73d05435338b30703430e714e167265fb56b20819d0ef51d0eedcaba9cfc9eeb5dc738bd450a2c24533dc92fd1544095877a00ece9f4743f4b2d2fc01fd4052b1340e79fb307a1e581f039d7fcfa616d29ee5b8d56c20f8d26123d7adf7a21aaad411782ed673cc92979942aec708ba1daa7c89293897b374fa855b8ae510caa16970ff44a2cc57498d9584ddb2fb01bb96ec5f961eb8fe6a97da31e63e9d3b8a1d2a720af89a33da9fa4d8cb4bdec728215f098c539aeff5f1aeaa6d55116d1bd063e1775e0eb81bde2ff1d3e96049fab839e7370abdd9b63150df792e84b6b00dc12be78b1333cf4f5d38ef35523d860b2f135f668558cb630a8cf782eef8d59899916f0d98d3cebaabea7d9ccc6780741d7f4332502fdd4e8e1f23e6f861b48034e5b562d3d87bf88bb81befee4f84849ed47997af2f878c2308138c42e41de158363b31929e9a86d92b14d3d6e777eda0e0f6437127eb08464cd24cf7fca2735c96a3f7f0f436fa356f5536df86dd364724cf3496cc496a76fcd53a34937d3fed38000a6c7ce8dcdc1e1ea4e93bec28b53638d52d617d536e5982e0a96b2bf474990cca7d4acbc9c378f9e6dc48eb262a0cb04880c9ba0492c755e209c1327dc675891a4e92ce373494a9a94f1d0ec6a777c8f71cb45844994f15e0e3b51bb82386369e5b1f05eb1185aef5a13008a15a437e6713ef0511e2e4f77fc068d9a7400f097bab61051d7d439701b0e9c986a1388c729b8131d1aa7361b317f1f663a54d1f655840d5a969bdd3f2f66a5ecbcd9e0dc514d0fb806151c442f6c5f3a403fb1bd3232c1b92e1d0e12d1208db8ffe552e89b146207a5fb2044325b969604aa5eadbd22217be1c1b43f90f83d07b68d33fd011d01c11dd4f57803d442e1ed6e242f260aeb2041c514c8ea91ca3599bf72dba002c195508f99f47cb31f8ce9eafe1de68848066735dd4074f796e07b980687fc8694dbd613dbe6737a8f5923be6bed6814becf91e00b697dda1407e34fe7c5f81b2401d5df26fed6e72f75c58dc5b19ff6b97afdf0a0d0fe42271fd043049c23b7d9fe6007492c106f9cf00a42529eda4ee951aec3f460090ee37f4cfd2ac3c92080ab668ee55e80177645c50af690f9157d9aef0baf3739c8cfeddaf6add0033718fb59864d15195084cd8b05e6131775d373ba46a7d78a6071c5fae4cca3d0ba932ff2b1171749ffcadaac20d15f57c1bc45cc08ade4d468bd6bf46f5407238ad3894ce5b3389c2225fca9be6f0102f20615b1597ef993e1c4f30cba8925ae4f4dc527383ee2a83e2f601c65262589c20bfa02504c38eb315a1bd31f78ddda2208b522748baaffc469dfaf4a5cd695c8fd0c35fb7fda34e86745a88697a378f7f7b088c631ee9f945ee4d988632a294aaf78c6e5d91dd78474891c47aba348f6250d2a1ce31621e9548831c262d8721f4c2d3306bba2ba42153f3818d67aca12188ff0d3ce566206ed6cc61ebe326718cfd8bf550b53becac0b61262aa4793d251fdd2d9bbe09a69d636a14932fb2c54564c96378c5b93fd85e752e7b00acd7ef4e1a564f31ccaf3673b2ca1a7f7b9fe8305d26e37fa4562c39473a127db309507352f752d41170044691e5d0ddbdf7fb39950c17d5ccba19c12cfef4dc7072c35e5284b4a0019205033f7ba8e1b2e050aab246fcfb32392a6122834405a96b250c69adb1eed68c0b3d1ff0ebfdbdb6604aeae9409d28d9c4ce45476a1fc18869d19277fe905c6229d1ef6064fe54edada290b17eaf6bd340bf84ebce46dcc6a7bff33ce556960fefdaf312606edbb728d2172535d3d3deca66da10202a9fb519be7150f97893e2e18835f457b689ba372ccb247fca861b0cc62a082a62cb0cba8efbdd0279e5dccd525e672f46a4728747b6b2c17c19f54be9d8a658e4f94d2b05a5761c877c0dcdefe907a59558131e539fab48fa79bfd8a06765724aad2e2aba306bf7a1ec0a5da2d38ab52250986b2ed110e676c63c60476801c1d355f79142fc17dc86785ff59f3846cecf401ae15dbec99bfdce216814dfc48e8638a63eeeb122abef071fd8d4dd98a2b3315adc234df280b9d1ed0800700e18e97876f62217485771b9f8e9b121fc976e042d852e79dc6844a63dfa436142a0e53ed9d4d1466cf04f56dcecc7aea19322f0fd18ede5a1eddb047729eb1383d0e77c531fc54276a2c5cf44f3f599be4b6ae72eea778b1d9248d12a1752091d2ff36e754ce908118ec07ee0d6ebaddc46886ecb4f518497c56a52f870a65c9e6ec63ccb46f44f31a44a5514aa567d1b9755693d2ca39a8f2d77ea971150a28e946bc6a4349adadbb863141deeadeaf4d99fb8ec694bd5df35512f5e4b3d3af5ffd34da1baba2e91a3eeead243ea81e65f84f0ba3df8a426581144c89c5dc82bb9ea3ed32d73f97cbf030f3b57dc927ee623a417216e0169656ff03e77f43c3c93a15d0144208eb046594a8dd11e3b2b1d404e56a53ceb40f3013d9a8f2d65b5bd4d52cc7564af7463dd63d0572a9f4e09b28005fcb023782c7814cf00c7770d42fbcfec5480e9986e54ce354581f617874a1bb62dc14c38279165cd723c7f77e8268dc54ccd7cd354a77d13574e40d8acaaede78d9caf7d4ed24d5ea9b28085829df1f764cbced9c5d8a7ab6251e03cff8ce5c8af0fb9436db6667c5ffcd4ad0a1e04ee37e9a3a3f479d55c8aaacf8adc2230b0e6b7a4946bafc9327bc7a5ca11047d84972c6627cd58c8435f72667ed1555a1a2f846cff0d931b3729b3630ed63a73131219259a92484a4032f9fc45bcd44135c2a4ad790a5127660eaa65b057e2ec54a2c2d1f14cefb6a614b8ea50c6feba1a278fb297af94597284d4d2dbe9315bbca0ae1ccd1690d91115a31a510d3fb44cb4065c282aedfc546444c8104ab082ea94486717d72f36136b8dabac27807a39f8736acd16543fe03c2fd113b5654a1ddda6eeee3656605d1f310a89e13ac1a1da51eac7377ffb8b7dd868eda1d7491e76806e0de6229586c2f0271671c6b7a58bca77509e732b5a5a0687cc00ce9f1664d000eb253d36b36b671c41630fc05202db628251259e2a274234a6a4e30a9de1f07f6f926445ca1603573d9a7e077f7b55b8f5e2471c5e706c6102a9eff5c0bdbcdfc718c6efff36abfefa098880e5f3970701f4be0a9fdb79d71334cc2c3011fb4c63f6302ee9847f14868a6624dec663af7a6fbeceb034f8e6a96a6481d6534cb830cb0daec16b89ffe0e0ec9029f4f392ef00abbc9afe027b78b07c96365a4bbe5806bb3faa0cfcb3e7aab7d8e6297a3fe2f17101fe45bc2c71945b80aa09d59f57f3a17757ac34c0fa9077136805966f5921fadb4a7d3c6481522885f575a0162a2898a066fc45bc059c508b16370065bd17347c931773ed5364435c8ea7d39797a7bea43f4953fe0b4f8eda3d8746413276710560bfb764a784345357ce9a08772296efa257719e196cc3080209f0afb66c5a1eee2afe58cae28ce00ff7f129c1f75801ea6029e0e3c91eeeb474c4040a0d186f0218362341611647af8225d80b74c47250996067b7c929b99a4b8f087001ef84fdd726a0d617c75617296ce855cac3a2b89663bf36f454cfe70ec8ff7b515afc07d398386e00ac8a98514fc10ef51706f49b8a7f61841fe7f931939b8c75aa82a3dc636c3c470c3d973917aabce8650625149df50e40f5ba8ed037c19644663abb4748c55901e1f70e09d572f620472f454db7f47f43960c11be865d9b68751a6fce5667f0fb8172dc988b5f90f496ac6c898d80ee5581ad56b008b5b282798de1e18bae3a9fc42dea32f727e6487713b0222b9e1e7ec0a93fce8cad640f9757176774f9d9b437a0dead33c0f472087bf0fc416a42d87986b44e383a2584f7ccda149987021bf994c99e1f10d09ba555204f6d1635cb10e4e0003ac29fbe0431beeca9f83587ace6bd910ade3ee9e09a105489593d8d987bf2cc08a964e1a947d8adf7381153a5d5924e2df16084ab6f4ee2842940ea679237840ec68b6e322f4941837082a34b2b800f60c2d095258e5ab292bb2603937b998b3f2b767580cf25c5dd486cd69de5fdfd789b7ad836d23cc78a477d68dea5f63b9aab37554b45d7657fcbeaaeb3be39562e0d344807509f2f3716358987c66705e1eb7f91bd6e723c7d06d1973e8c9da2faf6559160742371b7beaa1196e8afcfaca5c36269c8f04e517611c3044b74a1d8c5802cedffd52a446d34b790f2409f4f1654bb201ff83e5e50541109fe7f21ca7aa17290c7d6e5789f4f1007b18b6bde622235229579d83f5c8e7d848e732106cc8bc7d851e55722518dfa3467ce1d4586ad0cea29e5bd5b66be0f0e4e54191e3d6059660f04c3745d08b9885a0652e476559b903cba49f68e4ac5355e9e66d82100b4cd5e6043212b1e0f3be30b538f2756bd5fa71f3478422890cf30a07089b819962e686ffe8b1194dbe6d39b555a50369207a7af4def808f2bc67c34e7f99b1155763de9f7eb8a8b38b0255a4a0c2708a51d3fabfef84128a32f9f534b92bf740dc1077028ea2a6f4e8f9766291095e28d2f678c112b4a9d1d8fc7fc31ed97d39ddebd25f938d3434cc24eb18f3f7df0167318df2a2377c8e2e51fd9a7e6025807c373d6426cb197ff0562acb256c963557d56c1322b65b36db19de113a50e85ad9d22096a684f2688d9cbc979ff229f06d7d7bd9596633a90e19fb3e0004d0d04a2a81e7941f5543080ad6ca164e58df45ed6049073ddf4ca94ff0185dd9b224a00363ad1db61bed2346294dd09bed67b10e6cdfad1b41e22184885ac50d9cb180cb51f55945c3cbfa9a47743c63939208c91f015568266bbc66645bda05f96b754fd18dfc3cb40aee6bc42d39cba33d4f65365cd48d99a7118710de09af8272fe7a83152edc6a9fff2afbe73f13ec5312ea87eacf7e8e690f2c07b5a2305c50aeb088a7ccf3dfcd7e82fe040959cdbd1f23006966063e8b0a36ad38a43d46b87c96ab44e5eb25f34121ed2258b03165506feee198ae9fd9f6068d53db14c6ef4320d849eb18c7394e56a5aa7e35bd3093d15bfff86f57cafbf4fbab28d85077610b5a26441b5ab834a39d28918d35bf453a8226728d3678c4ac2c9c4228e543d7e8f6eac9439adc9ed068ca44145cb3e064692af63af6044f96ce45e0fa8334431b358ac10b0216c6eddf11052273779fa4a2557498874edbbf83c48a307b42f471f58d280d2d496aa9997b9a3ab1e9a0d502e896e45dcdc30dc046e47c7254fb64fe8d7ddb264d0cd0efa05b8633146f75f50e5944e4bb8cce337556e3aec9c45204491dabcc16d8a8ae97c3c3661b1fb189ac571409b83cae4ef44435773cea0394eb9da4f8c89c0c3b3b44e18fb298ba085697acb243e71cf2a5403bd1051eec46de6d39c491d680b0d13a867a4d73ac0d0ff84d5358ab61b33b09f72a12551ae8f8494d59518f3e35e3faaa09ce59e290befa9c041c4f85f9050cbc0f54ea33fbeec9be96e36717e21ad0c48928a5ea155b9879bdccc32d19c850cffcf81d51b74aad0f3d1e449cb5e70401b5272ba5d4102c52cde942c7ae9709cfdd57db37c9d4ea4d707aae69ae20cc5a415b9f0380d4b5881e988d810affdb064422f12556e7cfcadcb16f29a8341b0b0ecd222172ddd8cee94c090d7676c965523df7d9ae8a2c7ebc0e19e6bcaafe6f6fa56e9fe71eff32dea5f0bc276943a5dc9696b80158b369933d79ba10f3da67bb6b042909a7acccaddfb5b91c5b3ecc52c7f0bd520d733d47bd1641e195fbf8a8619fb8e749b12d7c9184aa9b0d1c6d796d51f24e6909b27aa8333cea615c8ca2a0544e83759a08d3599147705a25256ebd63009accae3fa99a887c9315ce70544d3ba501d0feae9fe559fac3b0bcfa51b58d6cb310ccc8427dda37b1d6e2375f9487b5e367657722d82c782ee7bf857f1e3fe61b7b4510c1ebb8349b8a091829a228004941df30187e8bd1fe4bc0c788bbebb87dc2a90f520c91ab93e9692a02b969659a5bab8b0fbb4c0f493ca4f8f0913ffe731f02c3cac07d9b20f358283b40c7d4e51d66067689a328db1aef07c25c0bbb47168ba41c7dc3731df298a09de1c3f95d4ffabe7931cf8378ff41f544e42c0e15e6d4da746acec40a7bfced4bd8fa97abc612e07427b9a870b82a62d7643d8007e0cb70772a5e249549a0e87f9fa6093a291dd4c134bb8554ffa1601ac6e46226a43a3dfe4e736dfcebe3759b9f7b317d678b9885f870a64f4915809a4a4da6611dd98262741bbb3ff19cc5d83f0cb0b11026e1c056ddb0b6b239e61665af25ff0743e9025dddec0210b542e79babe03ac466111cca348baf809b60cedc8cdef2e85bec18e7f56e66f6e61f86217f9c9452f24b087188b9813e6b34799e7024d62a5dc6f3d00d0867e91175084f742f146134a41852ea28020a5a6f389f0f748c06cdf779594efb8686d1bba5262be922f01b582783105ba151401daec8bd41a640e26a6433519e98a9af57e6f0b4cd605feb9527167492df758b4417194b5ab17033c7dd4453c4c2506bf2927584142c62fed91ecf769c42fb8961221a739fe08be0dde23c5a7bc6e8a986525256a1d7605864aafbdbb089c9dbbb26905da6442bb5123f6207c92f509b2781095177306cb60eb9b7c28ef570d56cbb443ef2f29a47dfc9b2cd956bd8179f20330188c5e98f0dcaf8d5af4ea2e7f1922381bc60986a07824287b13d3c877cda1a50eecf00e12bb7ca319227ef6843cf61ae394d18364f75d55e5a65fd2ae2bad452e8f72baed76ebbf9ed619716393679905bade3351aa84e520686fd73e0d59948fece4e82468ac02182ad9b0823074904b4bd1159e1c62757e8430d7eba0d135def685f512a08f34d826f86c9ed97f66c16c8d6f49023a274aafb6c4ee23f7e8cc42b34ac9dabf17eb93a92c01881474e808606fffbaa036962cded96417a1dd70f7fd946019735f50d9fb2dcdc946aa9e003cea8626070baf7ea30b2875ca808adb84adbef399b8cd2866b01514699da6e5f5a8a1743ad76ffb1095fac298e6080ca055f5e0f6727dff19a66abdcdb5123e7f10a52b2996dd12ce94b9115cb4cc15c1307e2fef068a2c962348b7af749225535a3fe80152c62f4e1370b7b388e9791f0c5835d9b09804f4c78ec7178128ea05a58b3090a1fc5feef0a9954f053057ec843e55dc2c9ff40d7259f34f5aee6487d6167ba8856a05a97e2a861211eb5e9b92ba4d15751d1f741615992d7f3b6ffdf5344bc70f4ff098b491189b6a560dd7a1ecc29750c94b930cda78a56baa9ae9efca900dc6b39fd829a65d77133dfd366c084d6b159144dab3389317240649cc352cf30dee7badd059b14123a2a3b9dceca4150db62a9a2ed9b7d5a28ce15a104ecdd046061ea26696e0a4f628756a739e91d910e80e3a61fee6f8a5d47d35c7fc107fa394b8b8c793960749db3a89c9095b4c46c8750f25a521d1d02370620881f351c77de362bf3acfc1257bb0b5f45051e19f51e854e81ec35c016965128c139c95c8427627b3e72a0f981363664e26359819873366a3a95515cf556ed424b89dc040833b89987f7091f50edd25301905486094263d0054f55b3701fe1a45d753969c8686f690f0e932af6b9a3a76da67318a7761138fee06042599d1b33dc4d8a24f40df596c9a6e8f76affddeb7edead46855ad87e53c58c7a2dc2d7c53be09ebe2f915632713a88455114f4acb79be5ce2a810611039502bcec4947dd7e0c77719084e0f0d9de8a8cc70bbacd5260269ef2574293b0fac600a5d66ab5344c5ffdb59ff949e0581ede44e6640290c0f76de1dea83cf6f8a499a884aa6a11ec0d4fb8204238a0fbe5e9b6290f3107478f671088f8af54dfe837dedbc4163b3a4ac85eb64f269d7c248a45c602eb89b5e68bfddcb456763f6a052dd9bd4f4897bad5c8399cd20ac12a6a938db684711805d35bf99918d86b2ff0713de615d88e47dfc18c3d66ffee1bef058120ae5c053809714af06d78100eae57462020c9dc2758d28c3a8567993c51ed08000a80a7b7fb6f3abcfce61f1e8a6b00073c04e96c5642810be0c5d61fe89ae7b518992ef3dda56c067274d9c8d428e42f0bab73be7d5afa04a3f9ac20ecd62cce81c7b141230f6f849104fadcb3f3ddf2c7015dec60d6f9fbda25711d419f6cfddc9eab8311fe4be8f66c2baefa020b5d5943b65b4439b773178f749c8cd64247f928ab143dd3da253d119c5dc0019c234cf4eb36e4a29656f2180d93ed9b6c6f95e7897ce73b560968798c6ade47d4b0dac5fa8701920739c1a7e5166a5517bd2831ef8ff907e43a54ca334cc40a101a9e2138303b40a1db0c830c7e4951a599b411fe08bb6ad9ed3e2ea364982e4e0a54185d2563f325f7783d7375de4976e39fb38a608124e428d0e48534bfe1d7b4c3b65a9bc54ec8739bffbbcbb863d85af0501a0be1a1074fc063cd1022c0008b8f72339fb8aa4ede6a9f4f79e1f3bcf5f8cace90b265bbee5f6ec9ad8d336222dc9dabb5b8a30323b3cd037d6b881c2e87cb29b9db2f8655d7e8b7e8cae7eb5b02c953fe6b9e025f0d35afb3bd262dbcdf53b34c020101535fa46528a5c0114b1810b1383801cd5fac6da7c71d3ef0594f322807d80468a9f0daca3bb59da737020c462b24eedca3e1e17831a92aff7705f6520268caa8fa3c57813e94a37eb94a42d2d6e9928cd0393af6f5d18aa3d22747ce7b080a85b85ff1c916f33d29a6b85b02cd08ade85f5e8badeb98668c3266ea67294a58bcc8cff39197793619530ac346900c2bcbf658e1ffef0845c8a72cee946b4279e0e0a32880ac8fe06a4dc27f1f7b784ce79125776de1f933c83709aacc91f2a975738d4c5ee7a68636cc379c398e5a104c70f6f1c10db21b188877474ab075d34ce49352edc7a7b01b7c55ed36734d75c441b2f1c4f0f5ff7b530d86932f110697229a1ae318940ab0fa940d541683b7bf9cc0119056ad38bc5afa0f3e306a29cf847634b16e1c66edbc141a0ec2e36f2ee174f3e86db365febeadf5faa3741c7964ca2f38b4c6dc51b8141fce023c6aa4e704c9969f2435038e5950df93a80f7d5553b899ffce0b3d35069a58c79241b5e641aa46b945fc2d36e46cec1783401399220cda055e27308ed063d4b5deb40a8068237ed015dc46b38c739396d07519e62a8787222248375509d88ea85bcd1b24b3bc8c5f2a6388839a10e166a69e47bbd4f8bf516dabb05a36d393d06b6e4bf5b21b85ad0181f978d693679d2add9acf9045410def902fca0b9c080467b4550f0aed98d649994ae3f0812007b80ae713b1223836e1a98d9e87da3810dca2e062c88344a027745ab2658b37521f5055ecdae36138d3c91d09d5e710dc24001634a87698ea52f927b5ebabb33a03e64139b256a6ed8c15650017f2b010645102ee56c4e01bd8c9c844cd6551ef5f1745e733b6dbafb082cea7397e012f35a7f2cb3b2c0feff7a70671aaf8f74be93d795520f894e2674f4f4a57f3baf7efc94c3c78cef10588086eee162346b2998a328ced2dcfb4f4a8aac4eab2e6d5697ef804de0618377fe8b50b33aec4f0f275ba889fa23e60320512b84a5614625e3d4085820b01b8ac445513c05c94eaf8432f891ffdf942cdff67191f78433cf0432b4ff384ed5013fdb325ba8a20dd806718435e0b1fb18268e9a4091b612f3789a1db449004f7bbf769d6c5d913cf1a068048d7c3045c37b83a6515b8d8cb80825e2b78a63f3e6c83deb12f95114f0b073fa94712efd63ec88c7b269c59b84ae21e81e2e04b4b33a316207e6dc6af0cb529dca9a2c7411a5257bc1917106a254342fb5f3f2949a8eecfd244028ceda4d0a2ac2faab16b8770b1a869feb414d3982cfcc76c1a31a5db95c380b29365295c83ce971d381553377a7df7cab133f3134e4ceebb3f8c61663e1f6edb7f3a5a10659496c265433a70d5aa887086fbf7ef13117e3d9be9e1af106d19090b14a1dfc4bffa56f65dc15ed3de104014695585341c477b914864efa4becf2b066013696c8b7bf7f720869b9e70503721de6c9db95d2e059750dc4d1d3a83d371c7778c828b8181bdb13c64b34639e15939bd8e12ae55686165bda15581df39a9e7bbea40118fb965f47c30d5c11a8a418b442de2af1a3698a87e4dd6e20f8bddb9757ce89f1f30fa2b0859a702eb56c91d3a95975ddafe4273a8a71e3f873e775188c8f22632c79af5e7888f6a12f54993bf602845f23d7398aad7bf68ec2bf1a6a6e6bdfcb92b9bb2abab23e61c2714470510ac789990677d1ead25511f2ba4e739dc32fb204392c09208e62f5910d33599ee7fa60819bd449b570c8a969856dfb94fd375d92cf5334d82edd6c4bff062646040077c13f9cb17c6a50e93a8d28aae42a903d92ea926e512b9babac8a4e7ae925e7b1cdce720d070417a70b6d4bb529b5d29c7b6c11843d2cec77603a9e15bc724c34285e764cfbba34246ffdaaf1cad6481407b75b1bdc9e9546500d5dde5408d48dce55665d6a184d6a3cca8464c94f41c315232c6f63e029d43f2045380f7b350101a4556c8d9df6bf26354c0d9179b1a282197424c8f3fad7987bb0d948e29d75a38bdb2d41f72b6ada01187aaef4d9a4f338386da37cbe53b153059c91b1891c53c555e63a04a09d7944d0ee508d3277401e882e98b9c55fe5f4880ae62157c62a7672af0f972fb49724bb322977574f4afecfbc9d96f1809f00ace70f1d92dad333a7f8d6cf4038e77f2437f4a8b240573b0d138cabcb4d2e652b99e60f540ba51f70b7ad82f4eb5d0b0c3d099a9fc10803f6a84edfa0bfeaa0f295c97b265481424fd3d6b11ecba3d90d03ff6a7338b4c781c63b9ecb9f65533065bc40f73814c5b17da7ce2d98a2839004b5058684c8b827be6d74efa95eee20dd3f363900bfa60f29d0e9f9732e40ec95946ce12aa28f53e65fcea703e650a9a83a4dc6c9984a1367cb064ff9cd885122c6d796137dba524b233ec40e2590ceea8356357f3626ebc6b48bd3e66835c39dc61b1bd670d5cd046616fc7dc8d20213c8e705900297a760611982707ef2e55671df117464d62aea985ed51e4fe80113836353b50a7d708c83c70d65e2b69fe00cf8ab6e3f7430c436036b03bbaa16fb96f4ab8eadd4f5ef3807ec557c2c9017cf74f7d62e3ce22289b664cc80fc6c5b1461c47419a0b12c956bd51e040b536df2ffc596a056010dd7764265ed9e657102922f6661f037053996891d77313d01a17e6ce00beabe40e4affa7d637e5e5373d86508822751738f50b0a27f7c0df120e3aca93c783ce565731c1c17eaf79313d866a324192cbe30b2c3c0fa06e125a7877480575f2909034ae0d753a911a4fc6ea14cf2a7602c5cd1185578bc06ad0760bd14c87226996f7e63ac0e14006257fa5d744b52346cc658ff390ba9c691050e497dc5207d46cd02ebab3f75b66cc05132d56ae021f0f38d9d06ceb4213d83203d56f1ee8dd4e49d23859137be28b9c102a7fc1b3651d3324788972b1068d1f362499fae6171e84c185b5acbcc2e5afb379644e5d31e4b13688a0b7540850cb1c62e067563fbf467145e3c37f28bb83e6a8958a2cbe5c03460ef2e9c52da919364d014952495c2a14e93da317a94c801dcd7d81a543c0687e3895704bf514cb69a9745bd01849fe7a18046955583561ae3ebc23d8d8f24565773c090da3bd1dd3af36150a8fb3eb191c4e0c6404ffbec456f076112ae6682708cf4bdfbf1a159cc1dc3537bcff6ebeca60dfc4d6763f82ea51f2cfc6e5f41e8ac612844419c7b9962887d7e90e84bd0f7ba940f5e056313fb5629ec1ed85714483f7ee064f29f65a11da551323a18368fcc3a621c56168d998e65d4c721b5c310c0f78099fc736fbd0f9e4b2d8955d80736bb625c30b951395c32446473628d09c49530854429dbc3a2bee38e77776f39060b98be021af556a0105fc3825a9bd313b91bcf192c17fda131617a4244e8890b30da40c9724cacf3121212a48f1663940632e17e8382d05a82569f7728ce655e7b78cd7d56967038e01f909f78450758bb9698b4a8bb4e45a4888133a2cd2eb8e0eb9d546592b11c1abe7623c6a5819a2b966f8a112f5fcf481bde17e254fc74af46296ed881af502da6cd3a1191af33420359fab27a1bf4a16555514ddbcae368dbbfdac6e6a944d08bf05ed1d47fba171a3f7be64a07fa33d96d16efc63bc2c5aa7266c5406a3cc370a149ee6dedac4dfd1e3e835a54c1ca378e1e76e6aa29df2a17417ad460d6c5ab4e3c3ebfb4469e7f5789af299faa61c335e44ff119dcbbcbffc3b7506ff9b25b6e94147b170e81ad6b634f1e566ece910018870002fe2992553d8cdbb469f0d301ef866916573b725261a2bb579ecab010f0572a45a57d32fc89ec2916ee359bac68077752649fa62b1e90f635b311043c7f54767f560ce78f68940a7979e1be4f7e018bff495c02c1e3d565920448781c8e6fdda14b94717cfbfc7a1d98eed59e5f5c3c7cd96ea88b61cb0449a602ef7a48a346a6f50995ee84748a0c5812381554a3d70f5d97ba70ee1a4c8af9c73a3011fb78cadd1468d508a90f3b8c46d985c88ebd100489ba141f9c6e8de94605dcd45198d232dde6859b0707df711dc436435e7950d4a8c10ad2e7981aa50b07c8be2f48de8d9dc1c51e7af39e9dfa5b5ad0416f24919f8fbfd295fc283ef799df207f9419579c8317671cdbf9b59d4b963d5d954a349a5a8c70f8656abccfef41e9e54b6d631e20a7b0c401a4e839c31b1e3857992e2282013e6bb87ba7467a818040e7adfd034f8f09b729a6e5083df3e7be0946d68dcbbfe2c9ac799ba7caafa99b919d9d44eb949312110df5fb1e263073a8f637dbf5f281da2339df341609bbafa194b02d973053d98d535a843fd6ea500df8304f63487d1d2ff0f99d4cf571c019db82528fead390fa41d88fb902c89d49402c9a752b160310c98d4b08ced067c7f976f14f2d9612c42ce6950a32f808a56a5405f40a2f5bf6b0d356f9fcfd1734826313c0b5031f0ece8cea33e7e10830d551bdb82c63e75b9b9dd4430e7c6e9b836e1dd16886652fbe48ffcfa999d729ebdbf35370aefdfc16cad240d95e088c3d43f74134bb50c8395afdf5a7f61df125d1f933fafe1fb4afd589a7827e63d583d356ec00c59c63eb801e81713b632562cf065490d845fa5a700d9ae40fae2a280472f3402d37459484b51994f38ad5f4089bdb7c2b4a4d67267a3c86963e8619eea31539f3e3234a71b4f320ebdf1a71d04fa640bd9eedb3c98d4d572d7b16ee36d12940dbfdb8f2373f0628d48fed546ef2fd1f45b89666a3ed3964af59d876c764e0a1e09a0fdd391593b20fae1f043c186713fa9c1a44466f98fa02c40527802546dd3d2f167a01afa35f06ce23154ee3ab0e17ea23da519b2e93c955db1a9acc40c090b025b674a8ed8eeb5370f85f47fb6a5e38ea0149639bff72f03335d1221e1cbc5d84125bc6f2fc366480b9eb70fbd0e079927f38732a75bf0965cff0d03754662605bc81ed555d3d9957c3fc2a1a3c246fcb3176965eb9801378d138ee2248ade4d2c48af79cf3e9fd5cc51310f1561d78c5103c4de8165224f3194c298f80fd9c5765d1c72cdd08208b6c21b28480b4639e80d69ed5647b3de6d3fd2488c5175a5c699964dd634d26944dbdbdc4b8f967af69a09fefb1241888bbe4e38eeee33147a01420b1d17d69e6b73c420b38974a7c4c08fce3bcfc76f67744bc513299fc6667e394b4d86fbf46db6b5c1630072fbf31ca85204633fcfe3fcca3e883e0fab0e591b8417060f45d7b1a0f0ee959abd1ed787ee49cd49a0d1e01cf5aecbd0968e9766904e2fecf8a5a1ea1ba6f73fecc3d48aa7e6421801e099dd1f2b7ddc07f2aa0a600139d485042d5daa23950e19f3f0c51f05c65c451b533d310f7c61917d30d01d3e7ffa539fe42e2b114b48f92d54cc3ae6b00a8c5fb9b77d6e31176cff69375472edc04987777a80349b07b13dc21ce9052b9aa06bb8ab101ca0591faab13fca01755f40cf3213a5e3205743d4e5b7b2a3f85f811ca9333fca024f54d0c4fbbcb19497ea46a14f4090c74b006e3facf263afc5433bb69350144b21430b956ffe38ef8163401195de200ce848bd0cac7d1b4808416531084dc69043dc994f91edc8291871d726a77b97af792a6f68c9e037e28790a063933b0d79ad2bc292c2f9b0fd2cf5853b6d5019c88b5e2be13fd4e7a5e41c77078b86f7f5a552f1b8a0d01fa9a662849ecb00a47b50407371f784bd4e420a64774016e4bc8613d1f1b529c8d622d6f23c319388b546fa5a0160e622f4cc886651178a7f15b34d5405bbae6756fcc63d0c6d78b7d1f36559e7bf9b73622de03a96fb9dba871d31c327a5d1cef2c4538f2e05eb9ffd56505e2acf7065b5d109a1b3d5ba8ec282a25f125f9dc4ac0637a709f8a58ec7d165f33604b34c4544413281c33cddfd2a5a40cc54512a2fb7a482ab32adfdc77c30ed3145dac054a51aa777b466d5dc9df0ffd3534daca7858c0034ad886b6f68b4a9cbd7f20be805b1ad0eee2b78fa7e134b7184fe843437647b2b43d32f622148c106d79d2f87e5bc9e19ed2420dd9e62d9c828c7c12f3ed74a8825e63f68ece8cf35b387b3520b4530a0fd14a157f53628b9feff3594b44a70acd7faf2334104b2dc2c9f00a9be4555898b8836fa3105b3d93e998fede9df7f7dbc657d86dd77d5f4a55562812d02e8573b2300d3786c8b86385355488d2e9f9be76f0e14ca6f1bc2be66ef3c29790b9b29ddb09700a6c2e55d7a70b3948f00f726f5df0f1fb60672b16127d51a4ec1742fe7513b5e9d83441cca26b509b7129b06a8b141b01fe4c5791671892288771829e2f8637ee5d8690cd49c2da9fa17c0056765386998c0737a076863b6e79c5ad06373e9d550a599d51bc65ac949e29dfcf21a8218468f920729bece44b116f7dd9fb4cd7b0988446b1b6c7e0c3a037fd2c0b7b904c9b43a8766c699d94ffef0e9382797646b2d8ec29d48de8e1286c266481b91b551aa905706706ff043461f7c859647e7eb156b6ed210d7a71a707bc83055353374e9a9387234199d726ce80d73755b95bb762acbba159747122718df768d1cb2aad2583fbe6d46350d26d651f37dc91f2980d66e668b1a35015c76a664b5bb0b61235adcb0fc089ca3e3b41d65ec8213755554a06b3222be1c5ffea5d2c9f82f6a23b53051237a0aef1e3fb501e64a1ccfcf9b24d5f1ea37121c059b65ac8facd7b24d98dc4aa52d48c8a9a944a5022a59f7102c77017af08606a1637a16ee4803f18e008914fc25c96e44068c7be7a59ae4fcddf769b4d83b97bb716d245398b340eaf91f6bc3b2c7ad1773f54b22bb15dec72f842fbb25988f61d82b680177ea417f1952fc8da31131fcb5237d185c418f3d0cc3cfef27e726dda1b60c13eeef7a61457c39e76c9a8e3227b9f864e5173ef6d588dab51409b3d5f156f9c02406ed1f7475a5e40fe82063411a5aa4bb36b560d0da0142b53e2d0b81301f85d2520c365c0665f78086182235ebb6c4f10c7a396f0bc1007b87cb00b5834890fd913e3b46f20d438d7c10b1c70bd2b13fe5931ee1ae1fc346383f5a6afc69569cf8b8534ddb195972570f62b7fe276d009d8f674b766cc14c7d04dbfe85412981be842729bdec4bc79b737d6c669652bf39dd4957303056a0fcd8d34ee898b034e3232c1bc724b68b22b149d7768d1c5af0dfa95066c18a19e8c58a6f753e61a2235dfda11a9cca5e6e313fc5b8d6e38e111bc547b8e7da57de0f14d2d76b4bcc863bb1ddeddafecb98ca974281e2ebd56a08782aac708c6e54df6f20b2a2a2c23e7c398f806c1d9f5cb901d01e9a603cfa73b76903240f19e85a0ffe7dd5d5b47002e8aa04f93de7e779a624516e4eb514166e6d4c122473ad9c87be653547efdf5fbe286928174b1a20937f77e3c53ae579918dac50fffc0aacaf6ad7454d76b1b901587988702faf17fe1fd6c4f515650f9a9488507a31d5f2e9d2b529a05273386d63abc367d82897f56b94b398f119e8a7eab33fad4d4f9ee18adc54e5e815cc5722cf64fdd61e60f7a30fef0d6b6541b8c084115081d64c39bf7dc84e852ba6e9228c08ffd32e29a317d9d9825793cf6dba23a7777e556893b2777fad88b5c654112cd7ca2f30ec3dcebf2c634eab18b32c9adbd87f4f092507bf4b6cf857f149ff1176535f368464bdad5843d91d6dc20125ed7c4aefb3c5d87daad31e5fb1d734f3cc463e7847a899fae55f6f1fa58c095a4390dfddc66b914ae8ac296749a30a503a32f3f1567cfdbce4426f4da29c7efd3c54521bacc31815e00f12501cb06357653c37eec6da1f94bcbd61f09971ce1ce387466ff154824d262df258c4d4f0822a0ff21a866bddb4010fadd0c5f96bcf4aca7d30a48c3af3b2e38a91d96c8f6ade905372dc27318b9feb090a1b27af6035cb210f79ee922674e626aba8cc2634587ef698072a5bea2dde679437d6c6b40e877a27ae7bfcad04ff2edd275e733698103d5d6a1c5a69e8b49380754d0e4dc54b1923e08dc333adf321ad205cd8856b8bb08d65926eb5abd5cd09da8897eb9dbe513962d6fa654504ee772f409acb31b72c5eb3caa6965d6c5e973ec36a0ca5bd135bb5dfe7c44591bb189005e2948563c3bebd37b654bf78e966fa707a41049b6081afbc997ba8ad90cb49cc5ec81e9efd4c7e09cf9eaa5f4ded44d34a9e9855998975dce73f86f17d57db11b8dd56bcd2de2374fe869d1eb187e3426c7d9ec5a649377babb25f743bcc3383f1e9636f93b1a9f284548bf1f0e82bccb372e1b6378cbfabc7a295dbc93895854a2c1c00f96b6b3cc060117712934a23e553408bb5af27f0705b7b70b0ae846cd9edbd11254a02493d52a414b4a52ffb30f36fc739b9df2fec9e1e847b3e578dad694e918282ab22bbaeec9958b992cfb5e241f9c5c6254de066529a981f4ec46097f24b86981c780915366e2f0b9f503944eec572df094cb0d22762aebeec58912fc9ea1d774a998b7ffbaeebedd5dbbd32502a0e48984cfc2c0db7a8cd0c59138b00ae3a707e8f1cf87fbb596b5df3070fb52646f4f9741cda3892031310ec7fa83f8671672254bc7be5e5d46c5591da99fb205b9360e8e625415621eeb13e956679ed55e9b2ecf78b4d9fe6932d7ebb0e894c831463f5ae6e4d65004e8f63188e959b69341075f92cf8d3e44a2f79c7e853b509afa6aff701f09df1ee464cff0be99cf2d71c970ca5bd5911d27d6f490338360a74e59817cd290fdf7478f2319e577a190c18d4f5ecec50e2e7b8fe3c325885d963fc90bd4535419483cc429d48523986b2d37a9d138f167130228a9dac1455116c65bf6f1fb8c0c3aa222b8336fc5edb6b565ce8aa58e64d808329a4876702b991d5eb36c83939d3ea0ea981020ead2cb505c9c16f995b99c65aba3fcf16386ae4b9f1724f029824341f182aa75af9ca402adff33f4baedc173ce9ea1cb0fd6e4b077cf5bd805c8545c98a976485846c7e51e2a8d3adbbb60fd180da97a561907624699457f6e200d1af560798362f93de3e3778ad946d5b80f1a0d8c835b7958d6a72b2825e17c8252e0095cdf302e7a8524d17ff76af62a6100a71ffc9a718ef63de41b892dc360100081176286174718b24ac0733005719a03500f79d46af90939dbcdeb324eacb31e1a8cc14e62bb4e55820c26bdb0f28013041d853c3d0d8424d03c412786e241321ebc909787e394abecc6ef8ef8f0dfb49cc91b2e5c9743c3e40df89cc09165eca65ebe6a64271173f14c5c42ba8c4f0d2c8f4a5ce4588d9d1dae474dcfe2b963b7d4848b6b05b442a384bf0c9d12b90c6daaaddd0214c2a1764a1604610965aa26d0c2b9b00c78933907ae6ad67c6214c9d7a04a04a39b8d1a46e08d6a07d64800638b877db44334118b27073f594eed38518c5c4ea66a5c390c42875140bea246e652b4b33f9f3ecf08a38072f7169b3a40692646ba0f9ad933a5d345c60e477244f40b6b9fa073cbfb21180b52fbe128c357f134a95fcef28f2297e260a465e670831589b7390a0f37122e2072ab1d3822d39d94a1c251398380c2805e5f57f1f2a247f1b3d56a31f20f8312a7bca5d9dd9b4466b1f25c8f4569dbbe500865a00537e3529cd51a2b921975f3333e551656e1b8e94718ed51be2c656de06ebb1a3596059e44f7651a6c5053b3f8b2856d357c8e53e0c21be41ad27b05eb873714d8139ebb3af9a1fbbfe41dfbc5c5694071c3cb0da2b7638c61b1bc1c8dfec76fbd3e716cd2645d3427e7e31e5fc371ed5c4b0d32c37f46df2fd7911721416db9b76a41f24b7d4db9a213496c4222b8016381270858b1bfc33c3cf8fcb692e5f11e2a0bd3bca9b7e6bb0893b2d0cc54e3062b732dda5547e91966f7d4515f5fd0572257a750be49c882e40f7a3b9be38f040ecaf45a5206be49d5e1ef8605f2581be1d854887129b0634df18fb3c5305f6de3970337a522ad97f595f75f7502173bbef460fc7f612b5920e85848b62fa87ba62dde0fc9bbcc255152a64131aa4ea884900a2189f7d5dfc20568c760bcb1d3ded7d191b4743ce7f1f351a6501743b9a169b30e5323187422953ce10938434b3df77a79f589b8ea3cb075ae4f484ab9dc992547f373e77995b4926b8586ccae1e98ecb61f551d94ea525a98629d5ed698a8a250116876df3515d8651daf6eb79c5b348259c2e889b37788176315fc9c8bf8e964548c5f653862950ea9b23be4c6e3b5b26fd19f82d72262c5ffd2d910350ef334b6782452295032ce9226b16ff36ac2afdb4eba79ff5f21970b086db23df2a57046dbb7fb0d439eac88836dbedb0c502fe18a5de2826eaba99af56332943281110fc2e9a7748eada47638551be98cfb590d5e7cfec60f21bb244623b92f0be7e084ad546ad2f888519699244ab30ff14bbf698cd55e94b1c0fe90d2c54e05d944116f2da5d79ef94063dc809654f109a8c575f45fdfa3913db246f3dfd9ae825677fa888ee472bd4f322ad1e42a76beb1d854db198c2883229e85de5f09b6f0cc6d272d8b1fe1f0be3eec5793394a2b79b2c131e46177a7a9f5bd8766d2e71aa6e62297397508abb80e925f7fbac964dbacf0e80242171c44f53a543d8dbebdedec69bef04a95cdb333346bf327ee86131bd3cc42fffba5efe7f79730158e1cf23ef24819caa8cedf63d73e09dcc9ce0feaaf3fc20cd1cb88e5bbdc25f56513f6cea20d48d66d9c7c27e12596c138f133566d67956b3771b9ea6ce0f0b26ffb18f327839730573d164959900b3b7b33a12d99da64e263ba14470f3914d72a428eea2aaddfd491ba3b6114b3b5fb9a27e5fa6b940e7884482ae568a8b56de2a64610b25b14a01388b7857033aff3a2ce5834382751736f06643c033a976894a3545e5a1a7b7f20ef6957a485a49bd791dcda2a08f03fb9e940053d6c3d3a7b0b906a3a6d7f758ac97affd530ab290cbb3988515e0b6392f655decf9a93cfc18760c2b0f15cdc67efc69f7f628c45bf0f09b3d8d6b33a3e54a7ece47ab468e7eccca631d2ed6a9757635f2d3bd12ab2b1439b5fda202f1ffde00754d7135a4908a3b84917e2390acc7b04b378131a3102b8fe3c4c29164d8a3b21cd53a81c37d5c36c63c925a126bafee31360ecd9897c2d2ca19728dfd1491f840a4e1a4228126223bf7e5aa58e70131293fc897b9cfb7a2f5266821196b961f26aca89a14ed4fe814bcf34f6445def155083cc5b41b97132052a6146bc5e5b006859e1c2b1fb7fc7ce8085b8d80fffdd2a3cff2f2e41765e7b2584d2ec0297a90630ef7a9b4af99337e214f4084262f28628c4b5cbd185a74b2fac31fde93121547becee56d0a7f65b9d4dae8e8303830ecd93312770701d61a53c32b68b7b8a0791ff487a79f0e5989d549f444270e4a6ba5134bcd263b8d7c9045974dbbe869eb435839deb9022db651e75fceff4e206ae58ea6d72a28f9acb9f8adbd0756797e9c99d360eeb53c17fef8b53467dcf20827f0a074926ca80f8453eb1a899d1a25a5cce9313c8e99b65aacc361ea7cd1b6b9b2746f38863e5af1fa16151b0ab8cc5b2a03fe1aa7587670014a20174fadafbc4c44460454b552b3e0ccea2b857164568bb84d664c4d866a3426a89713e9f7c7865e13f61afbc821ebfab6003e55fcada335fb9a9601705e026c2180295197475df63f9dfffe6e8f1c8f5af10f556fd4a2f7ec9deca022cd8009af7360f467b9c3235a6c95bac7da2c52482b967c944e2f6697a8fc609db49fe6d7179b8035d34a45cdaf96909fa37141195ab27e94f2749f76631fbef143f21a167c24aa251c21620b4014abfc73f85b89951d91c128c534b7163a8bb7766c72f5971cb5482c7abda023368b48eaffb739a7fab89da550761a236c197b41127e9a2882e07e776bdd3de968b96b4d1212912188abbf5701432c4246e8569a84209440c636441f89f28a2f03708548e0e331eb54e5f4651a1f5a051bd36a55e7bd894d538633f666b54c7b37f67909198741e8ffe85d73f10bd1aefdeaed7faaa64f34ab95ad7545ccb9d0d5856cad5a7f1e800bd98521094ca4a33d0ffb189b58b30d638f760ddbc64d07d7abb9de269e9184030296b756936f2df25778969d920c5043311c4907c6451bf887f4e215787c75e89423fb92b8eddb4d9bc33f674aacadb7f877b37bdeda65f110ba7cc066bd950d0fe1de6de668070c0f5337e512c312c9c36cdde6bea2df2c6573cbb9bfa5ebff4da7b9114bd1e63a0bc5775370996eba71205426f3a1030d348ca5f866bab79cf29a8fd8aae3f882ac8502ec272485437d9462fe92c0f0992d91b1fbf6bf47309d00d859494e36e663a72f6222c05c981c92a4eca80d8b003b013622d3c76d9494dbe1a8cea3829a79bdcd1537cfc9c7fd81fe6a6b51391e1aecc4d3352bc6c2a01d38a82b0b92c9bd2a664a089eea426c3a5773ce2c4af3e74bcf9de837cafca836364c210d26c81581ec076aa1334ce1c9ec1eadcaa2b6cde8b02d4b94006521533eab83effa3bb82cc71e12073975edbc9ae89c6f1840373d7509dc99a770c0137cc1846e99111b5b41caa3f047e8963ecb4427a081dc6fd624de5fe4bf8e80077ab068b395de87266b845ad0dabd389d0f5939a2286fa2b26a94a8d182a26c236339c7aefab828579dff4d0d52e9f14e67f83c0f0e55530b1397a78d82fe81a31bbd327f9e0243b1d2df8e2a0aff1a085840d93e73c6868d165ceac60398b68366b45fff2f624aa40d07a90a6f546860e77f7c569586d6ccc4af0272873bcf6f83c5face3fd5544c186f7ca29ff5b6cabc58df45e75a04b1f924b16a87376f94d53f19788d72427f6e9dbab2044b314746f559e40b2218073d0b617ff3d89cdbf53f6e551151626b780ab3537813d54ee84a11fd0ab904c2b206f88b6777055ab78bc50fca66aeb33f471b279a98765baf176205ddeb8d199c2fd423eec1cd5f79426ee1d612fbb38693a8a45e5f230d706f4e591f62c510273a977c5cb6410eb5d0e14c77db8ad3e43a07829998c53c8a05a405b3bd6bcef5c512fea5809cba90b5766908c9c70967da229321326934293458946e60410e354c6431d6de68611f223e4daf879639b2ddfb8b91fe1f4041f82249a0de88fcefbec301a969d14d354a37f0d0f6cd281845ead23ebb2bad431a0d85a4973bcfef8c24d6d9b0aa95601d006f3a1d8f2bafe739f1b7148d9b009c29157d0dcd7db96296d98da3ed2c46645ba296b174194db7cd9f57a10725d0fed250f31e28834fd5ac6e2b3ffc6b7963fd962d6285c66743feacc274776ec0760ba689989025cc8aa4aff146333d7035fa4c9ffbea3b9f36fa6d58bd4937cad686fb921b025157d31d9cfc82ccca1fce3372ea098c6c73bef3ce4b66230aac782fe307fbaeb1af0d509ac311a116dafd86457c15cfb53ed56fad70420fcfc2fd0ab134994859c3da97e271ed466fedc2e758453f271d6c1d667ba64654c4361b2b0c571644848040fdb1a4ab39949578e3cdaf2bd59bbc8e06da936a8847ff82f0c623a106c58df26df8ba1dd796e507ba6d6137f687bcfe7832fd9979d4d54cc9ebc1d424868dacc5a48aad9cb887d691b3f5a2cf209f2374a6270f11d2ba80e70e36171449c0e21b8b236392f6ccd8414696a8d41bccb6e8c7df5a84ba1593735123dc9ac737d4612c7834475640ff8ce10eb34de532068bad4e7ef0b9438fd20f5c126ba2fbe6ae062f833fcb07a42995421e63efb090a278d1a42a2a48e81314b35cbdfa80e2ff829aca087527b9d33dbc138f58b61785d088dbf5504e1835185740a5d6d68438babc6f8f5df96a4e044a1ac8957c757ede84648278f3acb11071a524fe77094abd822aa3624eedc7dddce827199b719946d0915fbc8f51855596e8980f86dad1eba70460dc182a12764f67a9e036ccdf858bb3dee20627e59da7f93986643230b82f7cdd71cd0122aa63c6827b62d9ded51619c2e4980615ddd10a1b07ce03c58fdf2f16a71f618ce9596edd90bf2b5a5519ce0378db84d36ac66eb3c758a4165f46399c9e36600897f5a45fa10109e88f3dbdf26c22f0abdf0044e33552f7bb065725a025180de443836240bdaf55dfa076295180efecd5d4d90d958386ba95a851da3022b4b7427cea99612b92b6706ae6d3073511cfb5e46b4ace93bd5e41166598fb0397a4fa1605eaec26f4434b36042889d9eddb72706df2db4ccd4e40f598814e36de61bab54b2fad35942ecaae8b89c56a4c34b1ea9ceebc062a51e80a02cb609e5eafd1072f378154a3c60850f76b60bc98aa3a35227501688cf94cb9f59d458a3988b32a4ecaeef4c2c2b6090b2e90211c458f49f697ab12b7a5e7016276646a10e9a6abf9b716e053c05ea729186384a559f0bb9c6de2b23174a421de24ef7844c4b6ae8081486caeba6091bc4c43a47d9aad0dcde0bb7115a380fe9f34f08cfb1c4938c984f0cc4e0fc80bcbf71e6f66899a57a6794fa984e3eb102808365705d41422cd5b2ea59db76f5011bac249d3602be69bdd16d94bfe6626f24ebf09df475ce194b58bc25497ea49cb69c4083154fb3ab2047c7b01ad0311b1d9795c3e567433db1454c58a992a75e368f4525ecfdca627d5f444a2693d6f70bd184d88f0ba7b35434af54ef2c16f4b6e9695b95ba0986cb0b45cadcfd33f3925e801eec05a33091677b745078e43b1ab600dcdeb53d2afd5dd4ca2ff772b4a3b6aff995ef93378d805f32d83644bcdcb71845bd055d3e1d2f69173253e48756e731050f36ac61c0e22daea3cadaa1a3164042dd948ca022ee5f3b0e6abbb23f1f6864bc5b15dd528d00b7aac5169e4ea50ca50980f2817ce6b180b2b106cdc92a8ad40db1e99360b681af6d95e22624f39ca7f056add3972f11e9f0fb711c51fd643c19c78b058793df0579cda44c60c24bcb75a8be91a464d425e4b475da91e07b8685697b10da18caf8697cb090b13535b9c01305eaf46d750e00e7961ac2bbb89fd26f959caa44ee7227934bbac6518d95e04837b7f8562018d15d5c376c5985dd03dd62a704501e618aa5bc6db2efa3341b1454b64ec18f7fe55c9150e3cf14023e39f4a36189352ded56d6215d20478bfcf811767cd0cdc764a1c9a51e0f1c2ae96ec0ff1daee56238978a48c6585dec159c7a6d1616728b611e6832f6e40c6c9eb3ab791a7b8adade06f63908657cb7576369f48bda4fe405fbda5bcf5b0ed2f8cdca32d27c543431c87f7053646d830cfb112129e4cb913ad9c831b50de57bcdbc21ce52fc652da16f88425611c106af9a3c36773a81a3042abaa760d9e9db1ebd07c2865e766df8ef2a204565389f9ba9c9cc6cd40e260b4c1d93e8c3a3a1732268defd3a439d492b2d342e1c06543c27124753e12d5bca711f34b56f79dc4b5f1310245271a31114c32c495e6e00bc21f7ec37a961e32dafada2cf295c61e5ecbffb450b55e20363c77c2ea709edd89e090764e5c7dc7433bf5101e3b5d2b696aabb2c3f1368902df6f7a541a2d6ff1751f4632492dcf19c4848b458403dca7568ea3ce53556903a43d41b288c0cbbd4b786e441a6b675c0161d3a1232bb0fc1883e7f8f01f1544fae974005c22baddd560c5d54e55d51ab90cee589b37a2a123692c7bdb398a7ed1df0b3ab4e8a27bc52443fb6b211c777f43e821202ac5daddd6f5b7d7c5c02b9d1cb4fd19046d254c855ceee84383dabef9d65c14f1d2cd8695a337fc785072104be0a3667d6bb3c8c670fffcb2c7f7ff472c52f3fd167e10cfc8a3f54a044effe9365113ad86ac24ac81f4a5760c86e2c53286ae45379986decfe5b6b1505be30393b7773f0e96ffa2f1e8ae3d1c721ff3a33eff678ff4ff86459db537980d076f4d830f2dafd72a9b705945ed9714e63c59632f4cebb9932c48d0a7733d669ea9ad32f5cc0c2eb1b802d80bb8ae3465e43994525f1cc4b7d580d19d6e4e0028569eeb3911590aa04564aade5b468611cde709efec7fda36e943b081e936c2ac6886450b72615628a210b810faa8a54abe43751139dd137e9f2a06e9fd9b0635ee428fad01bfb921579a40b1969a28c53299df2737cfe1eea520cd39fa35788484bd499115e589144c9209a376acfd1f4dd092c3163845c7ec1240efd720978ce159966139e7ce08c591e28f252feec1cccc98daed1ba2839899e6f5b22d6119a99bc91687efa0f6b54ac1e247750f705fdb7ab7565679e3f02cef5583ee8e98a1655429da20f56e1e1bdd3bf0f222d0426bb182660c26f0fdc2c65dd7ba59f12fe2f361364305bc53268a5652500c2ab718babb87fc5b656395e749cd5cd2374ec7ca03d10243e36a015e2f2cc38dcdc86a31651314746b6946dd28ab780b6e2d841b359de9002cba2edfa8df4a9650758df0fd1a469af8280fb2938f0e62b562cdad412bb87877eeb6a24968debd33c83c49467770692b8109fb2f09b24a110db53dce3e1411ad4d6331cd6ad9f2d35f0d9d71f650cc214674fab3a7c6560fed515f2bf8614d8dbb30858cd78b79862f4db6e5681d84949316378a947afbc82c9dc4c3d4c5587eb357ae72ffcd2c1fa114a51b3637322ed640b5160effa718661c71d0ab372d4751c4b37bfa35515eee0fabc0a0ac362cf05fadef6740d240897f4973b73660e93d4cf1ffc41ca5785242f52f9d06dcc305ff4596581641e4fb2abdac6d3f638e3c101bd183953b5ba91ce20cc35952f6951abaa71ed6d0f0f56e63449dbe9094f73d0cdbd3f76d3941dcb8839ac8cc48349e2351d59958b2b177778e5a51d52a5c62a4695e979d3e925d1b23f2058adba8ae189177f734c4abe509b6dd2886c1a7481bf4826dd41c9c7c7d57d89318619ff2225ac41e5aee7f7fb5e927e8c2b82e8e64473ee3f8878dfd745c5a8b267657f8245651852b1326017d4718e760f185fd6320a712ba722f0a84f29071959d6346458efb75b53d366edce0c331ac37b95448fc1e18374f6fd99cd131c975bff830d6ea3c5dcae5877e78eb741cb39edff852b69820e121fd6038051fcf70bc6ce1e751ec675868c2c227aafea66fbf1e5d50c2d66c327afa75b457037b6b990695fa5abda5be70251b57504f05cf5c81ad704f2dd4442a9ccd42fc309d18b9f8f697c452fae970c0c5363d889fba65c0fefe1ca327bbad3820a7f9b012275ea4974df53585fc5c29b6e9fc9107e188fe56a7e4978c8e645a4df6495fb6b780160f36fd02f589060b859ad20377cba0de9e02a651b74bc3e1c6802707862ed8c4cfec887a783df67465112316ac42ec571a9346e7dc312cce310cadf9857c30254685327bec296eaf0b4c24561b8f3c9967f1304a40482f7703dc939604e4604363d36268c996bee335ff27ba04b1c2417ed660df978b55fb9247122541f6f54c73b476afb2fdde10cf816f5dc4ebf4265ed80482f22ecfc427025269a0d3e0c1c6d4e621219544ac69ed2055eac826114dc2baca642bb4a528cb2cdf3882c954e037125b36fc1fb92503de5828900c1a9630debd3dc399540dac0088e1cc9449bdc17ade5b0d38b3bb9204875038da6b5aee18f80fc2c8135ec9fe36493a7425a2ca1bb8ce91b3dc8458ed3ad0e8efd8986c19a8737698015c4a3a5bf3a63e48d559a96e3cabee77fd7327ea73e0fffe5c306b51f330be73832a8a3d1d055410cda76c5f26c1363b4154aa2d4c12355efe880438383dc4bbab31c961535f7722d88792081ea95cc0c01ccaf58bd6e1d02c28f0d5f9c94df0219f3630caf945836aa3b3ff176c5abeb1e098d259e64f36a9fee8b1619b62c05f294680fd945a0f3eccdd21f6367bd51c698c3a29df86e1f6f0ee42750d608fe8e7bfe6f4df01883d2e9051f1ea54265bada3d9e0caf052cc3fbc35ebfb35f66b96aba138ddf90cbb7fa24845b3ccc3dfd93c4982216812b9d97906a0cdc415d7484ae137890f8f758aa6f185a9f4d40bdae530c00bda3822b25b2250c7b14e1f8c1ed2561e43b8bbd385db154d1acabf38a50d323d4b0ada5970f358358a24f4aa0afd3ed56949a88ed881332d6af1eddbccaf166f08e1bf66ac31cf7c0632a1cec805966d751161e90f84953e16846c442cb010ce79e7520bb039290094aff3445034be6c232eb60a83b521a8d4e150582aecc0506712f5ae4f2589094a138ef3990491a310b2330372d8114dbc2050863e79f332234e6eb7e6d42dd94818ee163df01fe4e9a4d0ae0cb554abd341a6b8ba8e8823d611bd36b6d92b6ef3401c80d8ee02557413fa5f193933c3e58d9305260f0413eeb2cc2a62030b2c94dffa4599144a8250372a4090619d17cbd48e9e77ab82d0785212a16d969d94e2412842ffc52dc7a1734a4d0f29605043b07a3b08f845a5fd47426448b92d6b24c6be5245e31e1a994e8f4866894f6c8c733362ebae8a14266384d6daf749b826b7830c90a746342887b73aaa7db522d90dd976a94b0b752aff1870bd9c5f339d6d9ebdb76b1c6c24fd8c38faed14e71cb87b628957662e250dd5dff7bbe4afa511f4e4486854690ef113114ec751499089f8288eaf08622fa55d8bbb60c8abc18d552ade97aed9991be5404730d0373af9187eaffa63aa624f98f0ec755e4ea9c87713114a9e080636b209b48a30bc003e307faa9971f67f3acf586fc2aa11b0969572d737a92810e3a58acad4b16fd456c9a8461eee79efb450934a0eb7bf7c61d2809230cdafd9bcb309cc5e4bfb7c2d35b8c4aa0d92b64e55e0d577d74b2e4fac0a915961a003ae3bec104192ba4ed86c2e482ca2a72ef7b2e45755ae12379e48f2b06f1bcff1d61b7e23c100984f0e441fb89964e6f5fe10f8531d886692b1048edac92cf79d3e975fc5f789fa5246bc0c554d44bf3d1bbf1cd0ebd53355b6808c239593392ce03fe9454b29bd7c853102eea569f235a43b2e729d6b43655da0f5de153eeefb560f29e32d283820bc557b32f39b3ce948e324f90b0137bf5c476b10f372ac5603c22a0df8a8fd226e955a97eb6743df598c56fd7dbc2a9c31d3d5621846219221b8d2e3c8204f4030304cae54197e88d263d716c432e28aeea318e747c6a858e79c1becd66520c8ede26047e602f43baae33337e93e9be19b721f83fc07d917c147a1c150896239479d722f5742c9ff62ecb7a15a6ddede0cc84c6e11536b7080dacfebac2855787b2a018713756303c870691dc2915416ad7d63f7e40b4c11553089ab7b970d1c9078611d1342a6746545562efdca3b9e03eea5bcb73eb1ec029e58316e7f252d62e532e9e960633908d943bed1d32e80584e908051a92ca144f44fc90de2869c98b5857669fa36e825e1eddb6fce37549ad75a6d8af9dba34d6e422aee40dca9b6b6119a75f3953e908ac6ede91b3872c5d00f6b188e8e6fe611b4b2efd1db306c8664a3be3cb6577be51aa22454f510f40b08bd55203f38a19cf77a4a9f595449c47335c151a66680ca267a49593f427aa66da377b8c4a02622ff372f8e7ae0d19450d6863a6eac61b77c3a68461ae49d3786795663f6742b911c9d0fbd6ab405c471a00e9634eb98cded687ecd442844958d689578a14fe2b261aa63e5c43ae6a5c90843d47965cf1d46da97b00308a4ab765b78f841c2b6f8da23940009e2e8f4235611d9d769447c3fb727ae55e3348781db047523c593228e61584f7918ae0025ba654cc68013517ccdbcb0198813aa95c0c25368612234be31850bfc58f6608a82ad0bb58da3570c9a4ac77c0934c58c2cf3c8e71926dd8b4161487c5374a7db573d0ab1672dd8fccb20be205d11118a9adb3b284d77214eecacfdb279c7a86579be099ba69592c5a93973922cb34ad0da6725bdd40dcc2ded798352f6399a6a57f58b5fa11f86c1ee0350737d8aeaf8ee4f9b407ed1c50d8664528a6d6bee935638e1fb28a6e84dbd67f41ef48499667a0ca4a21dc5a43404a2d19d279400d8b0cf20771ff57a1ffed224c8f906ae4397b43ba30ad0a0002a0e618c9fdacec4b2ec6d1327cd988b90edd1f6fd843e5040c103f60f5347bfc0d8aa1006530fd2a9aed37c0e43ca2cb30935df6242b37f98b94c8b89bd9923e019c0f3c48dea7359b702b28e8e2cfc16ceda7b9aef90e4b6ae87530ba2466cf0297c6db0b7797dd5e0325e8b1330261cb26070dda191c01485d60caeda78f62022b9ae81feb3c8f142167c73ff0c3d60e961c951ac554f7de628a8cdd904a58ab1a88b5789f2bf6979a510c7fa00b5b4ad8c6e2eb66b019c7890920a48837e6d1f4c04d20615f59b8db4a0f3e9c5ee1ef0e15985bccbc97704f4f949e6421f59e7856346aed819e7c4ab92f1af98f8be4545380ecde1e06f2c7b3f7c5e7d77c8248120a78ba3db9423e9cb9e33527ace7758e29a418b47ca0b3e98a150ef2f99658167f77b1252e2b4959f6dd45376baea5ba8ff574e1af29c8a7faa0bbf1c4932bef9abcc58e3e1869849edadbce074b79eaa89bb1210bbdd5c037de4ad521b7702b2dcf217dc4e1c5289691f090b76e9bcb06d20303f725a6c070a42c87d891a44d621570881cd16503e5d79c0811211370857d16f044668d68eaabc32c5d5a7ff6a8ff1ccce690c549ee9bf0ca30a900ed538e5e90a742f340dab4beec5cc13506de1aefcf68bc3edcee9276b0267901dc70600d75eb400c8015da5524650fb0c7d6b1ab6f7a85b5ea235a1d73f9344377b2722efbb4ece6e0c7bf3fab650a11d9fa00cf38bbd8e8740e06894b7333cea4d9739fda0be73a363581121a24262e203f9f66931e3194e50223d6a91ffc40da23f979ec05615dedd9efe29de06b8cdf3e8d1af1681c5ab0be573bb352662bda4a4d87a1aaf771071fcfe2a2a3830c7746b3b668861d6f51a798493de9a496c3ccf98ee9932d520a64598803cffd76cf349550c49f30d1fed256b345b99af2c58b1ba7a740d997e52d11376b59ab6413f8e7694c2fd0da6dbac76a34fe2ad29d33df850a7a3ff0bbc78480e6a89cf7c2539932599b40be87966a575a6379b0fbe19fe458fbeb20ded714031c3f6369e76e6b19142799c1854c9d6f9441b5ba13dad219529bf9ce40321a37eff93d59599ed90bbbb3b51d17c93e577be0d32ae07f717f8e7fc3eb8b19a7a282431fc0ebbb24538265a4b245f1a38a73dc27c1d3a6f00ee6aa442f89edd91f0e5bc11b413497bf912721f6bfea235b9ba145f8808ec05ec0712ae5f16e1582087deb095b342a174dbacb210ba3f02ed891239ac07a92602e1c500a8b88925ac24ab5b3dafc01287e325d60607452c3ee0f4a8dee57cc23d23ad317e5884dbec2898696b721f266784bdc6678a0dceb8278cc9180c8d6b9bef5a85f5ca749a5b9e1ddbac9c89cf19e249160216a35e4a83167a88668a3f8b0f839748dc1ed50935138d8ef06055027ea1ece4b4f857d6f25d9c782453fae46aac393af24029678e189d8275fc9ef31dda10386551bb184b4aa7c42a410436ab4dd9aaebd3a98c7fd49c1e2eb4342b559b55fa60eba06505bd71e91c3b88d1362632207a5efdb05c1ededd6dd33548c3e2ffdb7fc5d90d4d2757210f191f59fec4d526a18c640741ef1fab92f95514bb65443094759b21117345075d6cc65e0e15d8eb3fca8720fef8ab2fd35153f857ce42ec24056d3e4db5ecc917651abbba019e92ed3f8d2eb172e3a2d8e7834c64c6c2d1727eb03c3360abc0b93c05efd5d9e2277644320a913e04d52d7eb9a0b41018c1b12f64af58603efa335cd00ff3a27be5769daecd46c337d032497db9c7dab7cc4f9e944e7e7c1535e1231c146771bfc29ee4e119c63999bfc3e58846b582c1a0c715b888060dadeb96e5a6163733981d0c9f03ac37e314223d7de61e65256431eed516e282a78b2c5622a412632ba7ff4cb9bf4ee345fe6d1451d7ef4aebe6e272b5fe4ba4e0fc36eeb1691bcd50ddae61da793f7b512513a2288bd836cd7f136e789536ea69f1f074a8db0328079a139d08b97d012a7d46cb753478362ee7cf3bae83c7e65485f295e8ca831399b932d52f09a657597d657f2d925499d3d91de90332c1f605f2d8c10e59b9015be3f825c72b079b4bfa812f0e3e58b443b17544856ff5df3d320b8e081ca5333ef60d9e4f0c92f8ea77f505414193714e225082d6a9aa5c987fe6ff6e09930526ea50bf1a057df6d093c40e974cc4c94771d86c766ae7731c7f397552fb75a1a0e574f45128a8112c81f84a02cd79c5fc596d2bd64ad911636626d216a6379c3730de7951a3192ae2f9ab1f371ce59ba5e58533b44ed8bcb314dc24de1726f6f57fa3a0c55771f033b67376b65359cf9ca0d9475bbfb5ed090ac3e2508a87ab9de23b5aab68480ee7934363b1cb831fdc1b95ef235d7286a9101bf9431fa21b2ed9a231209af1ca785ec1cb53db41ba7d3afc4c140d33ec97643f5f3d88816d20928eb846947e3138b4c34e1ea90d6dadc350eecd0fb4bbd4a1a4d3648edf760b05ed9fd488bf2e08dd4462db5e844771e446c9bc28d93450bfed22c1ccc57bd626bd465df1d299fe9e2e6a4e871508084eb1bf5f01569a3973e56ed47e495cdb63b5062c0635e1a11bbed8c2be3e5a220ae8db09d402faa1c9b3062a00fe0c052ffb113104dfd598f2f314a26c3d13f0f276d1a178c1a93d8459043805410337e736a590a547784749d7bad5f5d9bfd72b034d5e01a984aa4e0c74b486f3eeba026941d9a1648f1b3d9d33c132d4d229bf667a4be398fb77e2e0c81f69c9fc692c8a28bc4f6a6d33c483d3fb228a26bbc753050e48e7a81de9513a24ea010f150f2afff072dc0aca640722e0099d66c9dd45ca6179a22c71d8c697dbacd9e9e44917c1709967cb10a5b788acfa7d1c90c0f92fca15fd7c93f43c867bac4fda7affe25eb746b165a0af7dcc9828041abbb565513009604ae2e56f6cddabb23762660bc8ee594733d67c58c79ce8782a7e15daf23c096096741d2465e1af130b04a89328e1f9ab7dbf0a5979cb6187eec2196277506dd2d064c808bc70401674f49fdc9b336f8d6f78e0c958ec877e43389ddd9a10f543c9ce8dee1d5a4508a596b252c3f4622efd2c895db5f632db208eb48c1bcaa31ca25c994881664773eb5c9cd5cf23010b741fd8fff4746f4442207a58189df014be5646341ee7681c825f7ddf413cc89442f33ac0efb95de674042d4c0f7aa6a2ec3800913d4281e33fbfef1218fc6f0305baf48bf7cd0def3b99b7073211a7cab6324c593db8ad8a1e3be52d6ff44ab4c3b3b227a5b1e39682c178d7166c5e8f75e782ab6439ece74dfa720d0e6450ed036faa7f76d959874579805913df9329975f711d870fe541fdbc36a873f4ecf72322323202fd01d743881ad1e0436ba034a14c95a08d027277e8e8d94b9823688fd4f2e460f7c675d179e169c0b78d2ef502624b50ee78c64bf75e6f0f2d98e5d9b7f0793930be63373b38b56408507b3b31a7874160bad5a441970146b17d90ece9704a6adcd67eeffbb65def9a83dcf1b4606556f1c8190d4ea8bfd1a1ee9deff9631fdf6c144b94589c27399829868574292a098f157d654ff3d3ef9871f9e5cf23b6fa6a1cf4e8fd2a6a7b2cf8e5209ec3ae0cde355225154457a782cd8ddd8f3bde14d4b655bbfdf87875bfb9920ab312fb9c4905a7a6e94d67d6144cd6b9e2b18304cd3784db94c6a224d1762d8df9f935f7f3185fd6c6e2581a342421c3911efbd1527e5b40bb25147cc0f5098efcc8a7437e357fc685f3dd4ede5b9edb92505828f5dd6c0561a3992fbb3fd5f9271f2eaedb2ae39b3c55f96767f9f330adcba59654e2198e8caf24f5914a656ff56ce983cda5541e1a3ae3ac4321909bd359a556f03a7a79fabaa2968d811b9adb22a826ff72be14214f09feafba9cc821be16dc7e81b5f19d1c16fd4d3dcd83fa341aa71f9ef7863f9bb6ba45cfd895cc8984ef4e71d63a41c7a4eccf4bdeaa786c0e74458ae8658b0f3a85fc63ef0aff5e3fedaed2b764d144c69abf17f0f5adf232b03f446c757c08608e397909882b6cca3e0f27264b0e585179408565813144bd2c33e1cc224ab3469fedc971cb46bc6e4ae1309cd0465c97ab30698a0b2e796798aab6dba6aae3bbf750c983a57c76492d4121b61c76688a82880eaf6d94e57a88094aa0ea7e1c043113874f6390bb8db0f48a7bcb3e338ffc152cd015200e96ab60a48606fd40a6d9c435a02e74cfe504b720da4899d28b9a059062fc650cadfb61fd653099de1eb569bd284fb92b591027e64eaca0b0ea933af3e86b3b9c0d2965b3ea24f05284eca6a56ad7d5845219a5dd6515fbfb642f4e86a8ce5a0f6eea02b002b80b8d887aa4f1425756f5327d7656b92497556dcd180ffeeaa2cdb35dbd070b6e1b20a6c1bd8f2a75f508088029820b04a9efe77bdbb1d4359e9f2ba8e08806860c6d53b772dead0f3cd671185d66497d88bfc5425ee29f05fcf8db76ca61bc95ee5097354ef9ef8d57203c3df3e61d5c16cd79208bc59b3e129fb351e160385cbd46df6e5cc9362ac55f4e7af9387c835f522e053b41b06eadd32303f54708caf05a4cdf9f7325b8f230ff20c84bbf561cf1d415ab263670d9d36f20737d06439ba47c35174476b098d66be264d5415e2b1830280450cb207bb34484456dbe24200160c4d0b4a0ec5023d7234690dd6ce63527f12ff7c544a330012001583208be4c609d99e3e2ee09592d9bf88909441f03bf841bdc68fe87186bcce80a2a382d85571e9745fc0c66ea3758cd54a2567ef05a203c6f20c3699e3f6251940f281a083007ecdf867e2952eb9bd4d3d94f6bcb3a2f52df1ed28776548939efe36ae077bba37d2a50d4de9ca838780de12271e25a81697be84262330a6fcc0334bc7a274990a43555f4137b72a1da81ef2d0d6b58b25e3a38d28d19bf6a8af962a909d477cd8dcff20587ac5c995ebdc76649eedc559951c058f22af82cb24458f15bddf96cafa035a82f892c28d2bceab47ffc625f52096cca1255e7f7226bbc44b1d63cfee5d51b6b02fad0aa1466954d678b9bad10f4452fc3fc8013a1d3ae0cb2ed6817fc7fe50dc44edb97908baa8ee567d70e0b5abea4f9920f28b5cc0bdc1757795c282873eb28a92e77bbc2a47ba8377b174e0c6787c8e4dda2eeae259e4e4d8fd0a96166cb57af6182bccb7578b64fee57831cabcabc0c771d8c1c0f1a600cd3de0f087f19c9bf28aac71b7e45bb2425003ceceb270590e8a27fd06b38cd6936f41e24e021a706dbd5876049dd3aecd5c177ffd9f3e0651fa4f304705839914fbb32b343e00daefd2a5c14bcf684ef654616732db3a6a55527cd0b7d1281f5db1befdbf597d6342c69bb6b3d86f5cc3e5e7a7aad8311e4337a8b5329e2f07d3f5bd72973db3344a1dfdfd00714decca6b371d240c22ad81787a3a03cae239f85ab030a3066a603902bca69147f5b2868548f71cf3a59bae212ad311c97db5c8a6f8a12bb8073bce4d8f1186724cc4e01e661c6afecf88c4fc881a297e737cb45047b9a18f57aa1ab92bc7926c26cbb9fc0788b62feb00ad387b370376475a485d7d2187b2953bb11c8b02284b0a447b7217de90cf3e81f9285fffce85e51bb3737fb0cb7b9345cb61f855397cf0d3fc3f123df6f610a2fe41a2915fab1467bd54569f4c3c1cc1a69538d15686294a4f5a6b0d230be819666d7f9b5159be915fcb90fe3f54e43bbc6d93e9abb85049159aea70da6e90e1ccd95cee8de4fe7fb8d589cb99a1ad62fc307da2f7ec981a6a89057b2d22d323d49d5dd4381dbf9744f76bde24048212c61710f6647eecf8e0472bf12ef97bdc4aba045d2caf39e7ba592b44cf109fd4b9cecc71cd829b0e8b7fd752789257fe66c5236aabd3270654227c4ec3a2f1057fea3ce740d1cbb245fc6f04f0dbaf72d76131cde743e65feea85648e3ab10ef652951d5ca0a78b1235854f74dc4ee99ba4fc75f29688128082cc745b780083c541b0574cf623916e713335aa9f34317ce9a4abaa3de61bceb18e569f64784c2b39caa051b24f4c555872c3b3a17c815f7904c366356fad3ef92593b31a9cdcb5c45a7157ad20cebecc33bed1c504b9ae7aa7256a3815d4b5119f555fe857b07fd34a6bac1173e1bde85a2d7db362845c69c37f5aefcddea2103fad6f61db52230a1af75629d0d4651042b3a91ac67a247d15999423bdd11df12cd6bf70c89ba43b2e64465791fad716908a0f88c0f0f59e62ba83b1621bedaed1ff880997630b3f91ae49d61f9ded5fbd6501dd1d1cd5be9f0bfaa9787869403fddf8211f0b033285920a7d27e037fa8f2d13146d3277f5e07104a15f892536de28466451a5d579d8df6e9a8adb5fa86e8a714e1ad1aa23883a37983bcb137dcdef8a6857018a63138e51feb9a534d8482664dba1ac84f367f269be004c041089194d0929d9e7782707fed90dacbf5f7dddf4be16315a2a1d77cb0afde3c0eea5d8457ee80e81f1b7d2ddab89f83a8a6acbc65c1f08cfb6374cda2517fa9c0aba009524fcab92d9d10864a5c48a59b4049ec1dcc32265495fb13ffb568639946a7f68d7aeeaa0d561aa37dccba3cca18fa6bc13b5839536cc7863e140e0ea78e87a67cd672a7997ba8e5fb915053a27b2f1dd80f405f801db293dfb95a69a0df3a6ff378743ca1bd58c8abaef3657e04944dddbf0ea0f3de80ab335386aaff41453ff318723569c2744e76482922957e335f3e7b533a623f2a2661d483dba4c55674be5f552b2a0332547458fcfdfc537b987c2181241a79f3aa35db2bd3fc9e20750306729c6f78300ec0ddd3ac7d877cbf0eea5153003cb1a13cb45152fe8ef7b23a2571bf681f3380869b5d3d0ccc50750515b769fd5dfeef86f09bfea65a226b3930c1e9b7c0fc5557b2cdf5ca982ce38306840af64f957397156a34c43cc51104c43df302454447cee4bf4ea01042855e19b827e6bfbff0034d4e03b0b494cf59bc83b88e725acf736520dd24e8ee1fb0783bf99e40f3d4ee31feead12b77e7248b10afd7c3777384e0fa0aa5b0ed86ad58e6be5c0cf1384029b21b3034909df328ff3f57f74de1255ace713903b2f7f75e19d07125f37ae30c01161cbbe06b4f2fca8b4899825a04d1ef0c58253ee274cfda5f1a49f453cccb105fa0a60a659394063d1727c681044bb83586c258a8e98996ec984aa39b155708b8f8c51d1330b0fc1a69b4f8e758c15f7b554336fbb7f584f4d550bb9caf3419978c6c6aecc52fa0d8fc9f566d892362188ae789f8ddfdc5bff4a3c2ebf13cf386ea2a544e246fb8871880d8e4bea53ab15d1ca40d9275da8c41f2ffb4c199be03b403574ec127db08cea92f65b74b4924ff76e5ad74171cfa694fa63400852e448fc708630009f4ffeddcbe8d7de8ed22be51702973a56eaef82c55be98b6955439405f877b45ac45dcdb727335e666b0ac9cfd378ad142684a346b03e14bcc74783610043dfb5f393533bb647b421d67fc28c5070e1b5c0455dfa287a56d135d64769c37a78f3e5ff0436c13600ad83e768e0e1396057563af72f80bf5c95a3548b12c3e0890a35dde9c3c2deaed42c8b5da1080ce73fcfc463ccddef9ab2dbfc353cc30308b5cd454fe42642247da8ffffb7eee3ec4ef4669d2b449628b7387738d3c1170148164fee895b759ddcfe4edd279ed8307c1f1b3c658e5a0373e03bcd0e0d4948630e75a377b5a43c9a3420077318fd352a1f27f0b2b4ac141328de5497f7aa4927c6b7f40dcbed1d45ad3dcf7748b0ba36060e76f1c8d2c1426505db07c3dd6e9500f185a8c8c117c1577ded51ef366192300cd61c53705c75e42aa029d91d78125cfaf45678e30a1771a880c7762a6e8c2fa381aea0eb6fab3a39c9f0085f0a28c557b6296a2e2599ce426c4efa57897d0b057bfb1c9be4c56c0e0d0b8307ee6d6de135a8fe87ee35dc2c64f10c1ec0d2a3f48c8dea7dd1983c0a40a81b4cda5559cd1302dba584336550f932fbf6bea98bac3c4481ca26ff84ba4761efa0f059c6a229c1d8e9f5eaa004845f7c076224fdd209427e4375e88036efbbb588b1a47651681a308f8c45fe760113e776fe886f45c5eae6624ef8fc7737c0a7067971507da8505af41a4ec10da9c2db21741616043ac80515a3fb8867623f9d0564820114121febb92ed071811aeff2114f6874bcf460ad34828ddb72e6b3d920c9212764483db642dc630077ee76b12cfb3420b7c753e806b56623be9373ac8a988bdefd7dc993020227084776837d2498147b62c3ca661d8eb6a148ae4e602fbd35fc65d701acf888915d9f7ad4c77974ac32de40d2889b1a63ac1702a4db85e41810d05a37042b335a398f561c19af0f36d5f5067f2122f5e51db89a12512e30b2c86543299be90fdb3af755c8d152b4d6e42b81f47e8737f125b2b2ce7f11ecb70132f03786ea95620d0a027aa08f9a00d6d02b781990c8aaeed29ab16f08a2a62ab89893f92d8fcaacb06fd97033fde434f370f4771f66156772d2081bec728d6f42181a67e6dc712e86005105bedc60e01c73d878ac3db3248bf2276c0c7a2e22a322ce07bb532fbbb7d27f09ca7ed44851b60f76717737a58e4f53804b1c2a2c6fe22070addb05449f638b8cd6183834f13d7381568bd063c62b02a448d7fe1f28ea5e539a39f256e36a2cadb706d14c7d2d7dfab4ec080899e7c6e5d80986f1b55e7d27c005f33a74efd155fe8c4d01d7d5fccc7218f2b0ba20c281a48bea20c58bf76b8f5c47c4fe679915c46a5065a0dcb096e3d671d3309f36e43334af3ee258797234f97a0a335fa9551bc227f87875811782a0d705802dc04e11d19ed3543eb2afd96776bf7eace89546a9cd1855edae3191572a8631c9499c2290f1ec4a237af62ed18baefe9645d2c250649b0abae33c0b2ccb2716f6d7a81df09b6b75b770efa08968fdcbe904dbdaff47b369e97ec5d8c27d7b5dc396acb2157bc45154ac38a97ed75897ca048cd67e433a338e5822f460d9cedd0f20ff064521f2eee2097eab3674c002cfb7c9abb040df254f4a983cd2ae296d72fb8f8bf57c5821d1a31a06e6dbd130feda830fa3cc0f2532cb053c2093bc354af40a0c60b541b8d7e2ee2c44f91c46b389112746c1e29689fb119ecee235239ba8073d256595e7e165e01c2ccc8a613ef090a2d16cad3e3cc3ccef4725f34898b74958628fb914005e88ac41e0a2b6b65ecee160ee815be63482cef121624786445a8015247a4e44aed7aac9c1c14de7238bfe74bc3707fc2dc2f1b617e417649fc168b7af0afb3baba6f22f30cb315eb889a8c47dece921373454f59c72c38dc53106233eb8888f4656977a13de86c640453200f1acee04a9de0b8bffe2a345174de3ab97548848b9c02a577250bf2498c417794b61d00364b0c53fb1497c3a6c26bd60f1f363b3b832988b663130a8e7ebcfe0a021718f6bf0f63944638b8e4d7e01d77bdc525c0add3bc457e8d917223a27abe96191159f2d941ef4485ce3e1bc9b73936790c0a7ba3a027ff8f028bdb3e2ee872ed8aca7fb4d4e1f5935f37abda8692cede628cafe0822cdad3522e22e6f78e0541e2f91fca8e7a22be3d56b39071861ecdfeb46fcca9878fe2a89725c97b4c2686b5d9e97ba6fe25717295102c1a271219e569a7cb881d3f56b90f4bad3e38e1bcfb510d8511cf00cd34dfc0b21bd62d03dcb44bc632221f66e94cb8adb8212b24439da2ca366e1c2b1f309f23b48864bef0b92983969b22519d80ba87cba614e92559bef335232acb547bac0cc88103d90b5c4cd4cc36b02f1ba9aab2054b84ffa2b6b00b97b903163446ecb7e146dec6463acafba25e06e0c5cce88b811046c02dc2c31dd077281d0ecbf1bb4d3ca8305a9e57a3f9498168edfbc2df2ba387b0ea3349fef3cb3b9e5dd295412deb98c124b58b48f96283ce59a225975f69f87620dd9dbc448130966eba4f533dd010aa1bedb95dbb6fb89486bc9b7c584c21fe720019a39bb4b7ce0ee9008cadbe7d2a7de83dafe119b555f120b395092740be7745b9db1ae0c6715dc194a4070efcab8502472dc7038ff78942ce1d86814968e56d7d70ab8af6e5effadbeb8c0178b29431aac91268dc946fbd9bc97a6547aec29a09d3e750fc1b17457b9c7352f54a01d2d595cd75735a164db129b64a67b55aa410bc31e6eb4069f0ed1a3cd9ba3312ab17a207ccab1c5bb9baa86d7d97dce82d71f35418d7be5d4825301a6f11408fd1cd8310d5631fa6d9b117ced9ba2e98d813fbd13dfa6fff654fa1aa8f1173395e06788578c390477e93d6d887791e91c283aa20925a419eaca9a4e46b78eaa30efc6a5cdd88e7d257edd3c3c7d020347a56c9622ad4c276ab5ea8057185185dd939ff5b9c6b8bc2b8a4d461afcfe849e8e4315eb2703dbd71bd745f4e03db1836e10ef3e6adf9a040be12876ddd6a21ee04ae8b1c42bc36282377ee5ffdb0fad983a085f7dbd22a92ee969c6220bd46f303f1523efd33550ba11144f0c9df1c8b355883b5f9ae29c9cd88208a01b836cd7be43eec7ac52510cae6a9e7762757e214e2aed648d8d4ac13639eb49cda0a8824b35b3076e12d9e1b97c62163cc8084a2ae830c072ed253503c2c2ce5a0d026e6dfb3ad4354636b3d5102c290b13d5fe5548b525d6d536bfe050753e0c3ec7fe6eed50ce6f6f761220e110b734d5b31b50d08b1b4cede0e53b182d03edb312126fe922fe95e5b30dfcbc77cbfe19812ed075e5de6bb3d1a1b8e85ffb5d4e7ec2e5a046a94e2be736062fdeaf0f6b770f13b48f4548c3f26a58ca0d394acd6f28c1aa0461c5f5d29f6f9cc768c6fff44524482febf3240fe45511a1199943dc4dfb344649af4eb6105fd148b7d70f52452d0bcddd265c216e6281c7f3196dd92fe1fa27c8bb8aa42a11d47b7c79b92753705cbc78da46cbfbbbdc380abaa19b2a3fd25b50d21f8f28133181aab0dd69783dcc1caa8d4d68f7817234fe4ada80ff4553ec04ec62819cda5bf6c98893fb4426c8b3feda65990e49899c1498aa508885486ebeebd20a6d923f4051ef237082f805ab4be3a896d47fa2b8d5c1808657148efd632fe6302f2d6c64f84c0425cdc526ff4469bf92a9288dcaf6c0ed17a93eb266aff9fe42b434a429e38497a9a0f51a20d50f2e4898ba6029b261fdfba9c445a43cb8ecbd0100938985e0eb7d81ec710f86d6a512d80a489bb3992bd22c0e911a89ed244810273cfe312dced7f12076dc6a1a2a6f2f8741d9bb60f5ef9af5a887fcd4c1f1c29154f2146d17a423e1f085a98480849baa0c8377db35b446b811018adec5b079338af3e0c142c00f92dea658eb57554d1c68cbde2aa151f494946c87d68a6faa2b973a6de974837fa035f19b9566554acbb45e1ae6960172b5e8610570f4d54a9900a992cdc2602de48dbe4b51d40fd89c88860597db854a4c6268f45d7f45fa7950f8df5167b0a32b767618dbc0f59a02dc535acd49681c30cb65a2783d913febde0505c27c8d6289844d0a14b48fd00454a544d3eb093add65ac64ceabfdcfd8245630c6f94e934ec4ffa2957921dec9d4da2ce83d775f312ffd3a2874ef6d1bbf4954ad4972661b92192df378c9452ddd204dfff7de5c59f29af3e4d03572753ff7c4e869553f766f480761df7196920dba75f21400fb3e64f535713f1b546d8afd35fc8f225e644e8aeb0cf335fe26a5a284ae2664fdddca14f009338aa82aed71e5033d6abc37ddad03505348cef977a6bfbcad2547276b4a07f94ad915f16b44c795dbbca7aef8ce664bf1b7462be10d7b2bdbad9222fbfa2a1a059e6173dcc364b7e52cdf8e5e9f139473e1ffa52922011760c8e3e2b3bcfc579a6e8b8341bfe1fb4185c3f4e06c552fc04af89a279d4e1b9d0f7bb13662645976492825b4a6ccabadd5afedccd208b61cab8432e13a7746ae849f225776b623dd6516419b5929d107e741e34854db968015b05aa5b9f818736a6fdc4501e21531d0a7a27ef7943096aa22cb6207cedd7a5de8bbf7b92a34d54d4f83eceea8b1dc30ba5238ce26bb3608c560f2f5bf2557c12f632f35cbeba8136bdcd64fbe3d4c1a4ef3b42463ca30eaaa2e633275fc7a0fe815d00fc157fccf45921bdb08b63b0572ae8d15aa045c44a7fb8d68a9e6d99ada28e51b472760893fb7fd47a3bcadf39d4755c4d1568377a164859d575e7491df412ccd1413377a14b621030b618f533960cd6cc825c3d7bf151eb331d2c74943b8cf83ce639a97bf77c0d887eeb5e7dde24ab0a76c99171f6cfa6358806c71cfad6585d7a1193c91de8a0111b96836975fd7481b1dcd387704a228917695537de45603050f81e5e5934fb4872ab2776fc15cd3db158a7f1f0a4178fa58e28dd334cdce580ff0274fbd4f1e649538a46dcb9ef16df90c7cad82f3567105791ab3000f3eb038caa101c56cbb8a5f6c936a9fbe1ce1c12350e0b156e6eb30f4b732f47dbbbc8918db168c06ac28972c5199709f8267991d4ce8b824e6851698fc65b1435aed4b9ef107e2867ffb2bd51f7b737087ad37d981d15fa0c85c97ef09deac0120acaa7353f81459feff88b4fc67b41ed61329206d59e572ffec40476736de478b363578e9ab8564597c5389a74c742c9bf557645f7a2fad8d8490e2b132c0865c3b5bc80b8741f0641e6843884ee365acffb6302ef8ed50ffb4a5f2c917ccfa9dd7329563237bbc9aa90ac51fbe3a816dd50171d814efcbd7eac5a496419a381c7466faf6a448e6f0f67590185babbcd2b9a06218d87a8fd62aa3c8e41c33d5f11619c2bf4f15d13faf61b9be9cb55c3ecbd42d9a28349a19fed403e55111804979917432b35f2fae57e4385d6b1f7b68de7d39dc66ed531dd890220f5668c276dc179d4c584e4391d1f3b89db022aecc6f9c50054d4e7afa0c0e26a6335d733d4115f0baf08105fc2de341a3adf9c3209ef6cbae9a02c21a529c2a345aa43221d7dd667b00873fa5232b115ebf58945abeba71a331e034858122deac08e6cbc6e213ea32ca4dd80199564fe65b27a072c85a05fda72f15fa40a63c0fc55f4ea369576dcbeb980aa31db9825f97fe464a14f2f5fe4463db0d7595f4f89329f08d9823e0b05875623ef2035595b8202b225cc02f16e455299433abb8a0724a8e13d2c415b8530e64562a972564cfdf0ffa74f2d633a70c46b00e22d3497a6bea2428fe7b9b554f7cdcaf7457d9e02f007b268e73e7116e1d9b3f8d2b9339925564f68278cde2618ffc309f087bcf6acccf2fa1816a11f9ea56b6bad96888b25e6cf055cf4292f6e2c485b264b067cacdc1c6dba8be2381cb0190effc1a313efbee95a439835af3920543d39ef5f64109c49c015735e6d2e61abf104dd28f8d9d088957595f205695b657286f5d3f0854f232d6a3807c38d1703dfce7a728aad6fb27423d5252b6c8844d6c57cd6243501fa705422b45ab186ecc10e14e952472dda1a75e2c7947e11f1c4dc5ffdfec7f55fe1b78f361394cb1ba7bfda822ffcc32206a89a06e4752da41c0e5e97204f93dad421c9c49c517477171056bf4797dd62a2f1e00aadf4b4831f9f9ae2d70be702a07a59729dcf1f8041156eb92feb437aa5f14c0169599ad62781f25cf8e66cb25926c313a9923b3ca7ef4c754a30f5bd0d1d7480553d343149b4ea1ba72e3a1c1128c929918ed7104e44472a85086f30491b081e861fb81dc8568052aedec2dfda0726e7e48682a6d40324204489a2385c4e18ada503a1b4aea9a3d49bb439074c6d9abc2c652035dcd168ecbfef73ad16fa45b914814c85e9469b524aa8faf31d5b12b2983dc1b093a543b795c5b627effb9e085bb3509bade66ee6bd30bf46cbab3867a309a3fcfebf2172f57eb9ea9e5a9606554b4b847874ee165ead6eada79da90a267653069e0108ba8ee6f6f924fd8483c682d8880272faad4f2e030c4b3f56938d3d033984ca5b4f84dee4fbb1b95a47df692a86c27a2759aa6995cfbe71f7a171f36a82a4571985e42f006607855bbe9310379a17fd93ff6e00fc6b4b2e20ac02a9d3b29e56c49ff851937de33af35b5d2ed7123669d6af3ac4ee97ddbfc06aac277de86a183be8dc972837ea1ba601729c46ae57251e808977a3c7232e3c614b5e5ed18ac97c642e797d216be0303adcea995740778b7b4bd19cba6eada4c3f75e751f46acf10ab577015421393da37f00e0426f36bffc1e3bd53ca4545883028feecf799d06f5af45fb0f6a17f9e085db4b9ff6f192133921ac9b4e483d525932705ea3927379966cfa2cd894c2662212068f1c517b15f40bfcc286c92bc890064c078a5ed6ab472cdfa82a632d9ce9b0ce1f1832e4b916383532b7fcd2eed32468dd302696cf0ffebb6b7cb165b0fc88ff66ad6b4d381520a27dcf6dd2809a497b209454505a44cfd8064efad95cfada9c8cc8b23c0bf9db1275a3f6f5ea851c5e2b2ab0b310c7465a8d21f36ec6aa4d8865d25b2aa2ff6abb26da536773bba304e0cb2a8419c839e3aef18faecdcf75114f77cc26bb823a5925caaf7c5ad8c3cb1acc1fc7dda928af8a2e45c8db2f1ac27e9eaf53df20980e93c7dfa891b645ffdfdd5364b3e2972f6983749cabdebb0f5f718b5946afa5b95afda4a7c5762a8226b0874c2d399aab371255c3d7fe7362f3ce661c079f5cffa5f67ce92b64d81959e44bd223984cb83b778094c88298ae838b6f61c370036ac7a732d4fcf540e013c7579682563ba9fac2a14e568da746d27d8764114b2134f945d20d4519d16b92bc8e53187836dade6f2e83887adebfc78c30a1d24ef1065d3b57c10655f224f785c8cba65a4817057349ff1681bd06a8810108e2e575adf88b0330c4c717c3108914d479f5730f7f223d1d4d6dbb9b623b60854e230e576a37298582e221bb6f82c9dfdf59562eebdb26e746f0870ec02c06a1ed84531db1de03d332f8c3b855fb3be768ba0414f1bb28e90c0ca6ac2260fba1886842e8bfc4282e9f2850743da9fe2589ca2455e67d878cd3226ce09c89f824fea7933444db958ebee607bd602f8d0a0df00531c7553331ce26da9e3cd5b4edf8216cf950a80883f456e4bff813e05c44a57a19487bc2548fb1ad904fe3dc59e3e214e6ab8352a7cd81a11c95ae6e1b70367fcdf96c6e55afa878acfb2e2b77c93119655278e3c6e915c05e4e0fabcf3cfa92ebbd1eddadbafabbf075741dd4d770cbe9a124dc5b86cf01926f96b8501086576f8654105948c5a3bf9575553c592f0a13ef71a281cea01dc7734dbfcbc809bacce0d0fd3fdb5aa3c147715ea121f95309584aade4d17f589c421ad92dbde4908fa391900115f533096ce9b063cf60232e553b306c4ac1727b4dfc46f0ec8584800ad5fbe636d7ad369facc2e5f286fc1ed1e96bd1dd95ef302bb524812c3c98fd9d5467446542b086cf320fdde8566a0f184c1683265f58430daf2e99f42e3f37993d47658f6521634e1f9316ac6947d163d6a48f01b567dbbc9f7805c968e8b14db65f7232eb274ade1363d761501fa3145885eca0c3aeeda58ae613c8520e7cc8c3cbcf99ec08ae4b6bd3f27b637b1034f4c031811136fd8f9c8ffec9e33c31630dd5def9a50ed5fba61ead85a3e310f3fc1107cd64d14fb184fa8cfdb3ac3718e1a09a21067b8c165ee64ae444e325badf6285f5c4f41f84b385a42488ecd10c741918a965472688a078ce9d43110b3d899aabb44ded1fec491facec0b90a47f8fc646ebcedffc10c08c95adddb01fccc6eee0061ac22bed7adcf978312f534be6eb957f034508cb5734c6ce664a45d9487f0b292cdd3dc361ff58ac3951dcd2a2b1a54c3aa450991223f95b38fd7115448c5ad91bfd9a075dee53049b4b2808016d9d85a2f3d5e464d0e2fc221ac52874d2ebc48d0a845e26c1a35a0a9273e0455aaacdecc2e985a0d5017083c96c594f392acffda8382972b20e6f86aaa73e07f5cb147269c70aea61508b6fe445597b5680c7e720f9a86cfd66f6b64cf8998322ac157afcd263d9dabefbf86fd925e74b39ba4db637470a7af9ac0283c08a1f7841612bebc31f187a2976857e968f6f5158f36bcbf60b33a46a419fb8258e7a377a49d097a3849813bb06bf09bfe333e139104d530292aafb539aa9979f5dfc91d85b0f9d394f52fdb112c75eac83cbff23576d79f7ab092c952fe2761dc8304cb12bc11b0fff16aa1a0e4b7c501a8016e4ec55d34d6b532bc1b8814dbd24e7d269ed03c0b88800f126ce0da467f81041bcb5ef5612943226a07aaa9e972b10b20ed4ca394e314a456801bf656284e6331c545dad289ebe5af3d27096ca3461f3da29c765ef660b8ff4620ca0b6a063f69f9ff25062baf8cc596dbda9ab77819ffe609f3ee4df82aa938191b5c49d79d710870416320075f2299c924e1f5b92ecbae9361b188f698c7182d23bb025ab23f7c7074ad44ba4a26eaabe2689158c9c771375e35fd4a9bff268abffdbe4fdb909ca782db4cfede5d59537b6a5cded979708b29176d0a2ae18eedbf6e4e8f874c1527f7a3df1fc2f211455b405019ffcbf6d9bf2c2b2582dccf387992e6927583a04badb98bc40754cfa0a19828880e77a834db5fb93c264952e1752bf4f6ca5c24eea80b430951b24800cee04e90d88ad32ff9a93a61a9dc2f5e9e3719148570119dd0f7096f57cf99c5d2abcec22ba0bf57987d88d49237c91e3d71ae075945b9a63cf1badef086671d226099c60c3f2280e50ee20032ebf839a0905beec91f0b4fc1beb7567cbabfca7b41348a57379aa862eb5bd5c2c22f4883362bcd7a6f21d6466f158c99d4a491deb82c4ee864917d2417d60164b0550e21b659db496058d546c593aca2b0e32a69ad14a23f223bc8be92bf5825eaf5cce4eed4000f105eb69281bca1ff46088790ca8c916f55922ca6965bdb57155225e01adc5f05fe6f0c9d6ecce3e3aee22824c2d402cbd9c8bc6fbc76d75d93159f4c6659c350863287ecd5ce712b657254069e8af76126cfc95f785f89168ccc66989100a8db89ace52c9aa47f479b94ffa1cc4e36105d646c292de82e3e71562793b312dfb6225b994e625cab17485360bd4b2393324d39f1b5b30833e2e2f19c76422fa258ac92594b7507561575db171fe5ce0c6a92cb28318696ae79951bae54153aa287ce03d5dbd5505b43970ff8ec6f626262170d8c76663ef226e31602599db853b94b9cc1cba23878b9d341ad87c41b5cf08bd4172bd7da891ccd6bfee3296563aee34a3f3b3143bad009819fdd260dcdb27f07eedacdfd6c61c7e66e6b3122e2344620d64b32756d42fd492cc518986ee96b7b0372df427dd3e0fb78063a59cc25286e1f281dcbc8798323d01c56df4afdf26347457b437358dc7c1af92ec97900ea462c5a079bdd0f5d386287085c73060145b1fc60ef0834942fae23fb70a1b2a65502e2dcb1edccdd3069bfd19008265f34318e05297583601200000e9100b41a9f33ff3934f192399352c6bcd21aefda0fa441b7d5e319d7700a9f75386fa39966bb65a53b43bf8b6d4c9497b68ece619ae76b0032034361538025a7074b6da36ed3907833fd47d69f73dfe22b9ee06d586270a53e51b801e19b5ade0a1e510e70edd79c044806e4da14c2b157c0a5df93b66d9dc57955bd3008e5e9ed03ccc62521a8201611fce3242a2263c2089637fd6da15c964ea9a88c2806a46de69dbc269621aa096c9fbaab49011b2b20a4dc4ecdcc09ffb5fdfdaafe9c577e1a47ac4c3a4ca702543154a6e41c364ffae3eb38606f4303126b49c13b59bd05d58ce977d93591fcff66d57924f9aa1208e5a1554ab239d2c46474ca79791c97c15013ac370f9edc7d1fd1ed3475f7cc61c6dade9b545a8c66cc3753ca902488c7c0478576f2a808effce87376527ee2270b06c352d9a232908126632212be4909e1ece3e5be93ed5fa146dccf0c7dee896f77cc67d17b3388fde3a598ea35654d22e89ec551ef84ba74f184f758ae14b2ed22e785d91dcb413038e9e1b1e0e060b2440947a73ef25a2675fba4a1b84b321e57b407afec5916e06777dd805835ee95c12642cd2e5a03f8ae41e7551c2d8b474e139328d05be0bd313ff581f7ef9cc395bbc4737d4aebec213f862e6ca8a99cfb952a90e2edbf9b1366ccccc9b989d960d851bb92265e50c7fbf76e1e3f2fe847abcea19d9da25e77fbc18ea48a92958262fe27f82e107db4065b69ab63d8c0c3e8d3efca34fd8c000996b29df6333ba305c96b1c21d2087ae31be4e7e9c307401f0fabbafe1cc32c09e82e84969d9d668415974b6301a95d2c42e18f528132d827b6f3a92a2a33fe33c8b8d9eaaf25bd78cd490beb0489f20269e6c9da97da2612848fc18af3f463676f3235e766bb3579526225c334a3d6f22129a688861e5812307780d73c56d865b564428a207e4d8899dab5e84329b4dd6f0271a58c92dc20f5b2dc33b05c2c25cd5eb44fdd29677d980e7f737a7ba3a3643c03f3e340c4bbfb73ed8d3456ecb30d74fc976fd45d1ade2e83c64cff356ef763288832d4e280d7f3aeac4c760ba4071c9ee69e2d7e3f1ac96aa09c3c8d47a813ad8b197027f91759d32a227320d2022cd72d993146ebe1d986392b9990927a5162bb87f1cc9d5f9de55a683bc4d5695a037be88ce2e3d136890f992ef073e8b128224de07f094265d539673be02274173232ad53918dccd0ebfed5db6e3d9807ce202e6de7cafbb25ae067e8b4b02647b5c6f3b98eff2e8c846756417830452d98a880c0b987033660e9e236508b79fd2849739a93f17697707406e4dfdca783870a7719e432c5b32ede7c117d23d09058d9a2d2303f3f24dc5641519a1986ce5e5e5f335b3af7e1befce70bb5011ef10929bb678edad7a9d9f5ec8b1f484c91a002faa7b892440a0937d3e9be8fcdf9d692cbd07fb25a48733c0155080628813c9d864fde23f5a21da891f8b2ec8f7d53c2b3caa2710d8e1aac734e4c42134415184b89b491238d088ebccc3653af81c658d06507e0fcc23ba57354b643b52f0d238171b085f938930b32adfac2136c9740be399bebabbaf79c9e2fa48e98927bdb60b50915550341ee769dd0dfa75f454d23f8109236519ed6ef604f9e6385461c9b0e704dc9566485763e07be75296f301501357042e4a9fe16c2f8864b8e24c7662d7e8245e454e3006eac580acc9dacef92591f5d007b7ab50799fbcd4cb099e7b93c97f9e107581f349a93db6dd9755b5adff06600e887d6d51c00d50171ad944059bf0dacb702c3538a4390758db970d03f61a70fd48735386b272387bb20a42cd56247c5ea1e53fa104184dba0da4ef191691ed7d037efcb0f5d4472bd8c0fa8470aaf3d917eacf6c3701f8d3513d2cb86fb1ff2c5a41a6cbee038d65980cf7fbce0efa9151957e99f1133854606badd536725564a8e0d1cc2749097a1688ba170018329fc776cc85aab83e505f6e29de549cc7b3df0150ae69546f89db6505bb11862e876cdaf0706167cd04a629459566a962c54d857be68328774a90eb3a705d46bcbeeb08d689b6f5558ef3666d3c6a3073374bc351e242950e1e144b7aa09e927fa5efafe927fb99ceefd1354fd76056d2ad02f5a34d06b07cea89e714a3bf91b69b4c382ae08e364eb9a25f423bb0e4a2089be3816dce362bb5818252401d63b3b7a88b999742d50272159f11f51f602d5db0a5009aafa55af97e59a730e77fbf529461eb5539e81b734a45bda21156bde86d98ff23da2f23b52e4052eaec517ff390474055ab95a6351ec8c948e754356ba730d1186e8eb744a60a2bf34672ba82995b735954bd3c306aca26ae19570f53bed2db5e3d6f0cfdd7e8c0c21746cda40d907859bcffe77927086daeb54d655762656dc1f90586270607265fb741604bf88508cfe37812c118e5ea93c8276665b0592a24172be7d356338bf1e2509731c489f4602adf759054ffc5feb96bbbca9da8494a5f8361a8a1092a461464f9776ce0458d5f16ea1a5742df7b157fb020b4855766cf8f73b62322456cfa4657a4a6121fd19ed825cd18aae932ae08465337b81c454741d476274988e84349be69ba6bad40930140a06a69c945a4e7064faaeb42e08dc4ad91f924ad6c53291fbb699d28b1315d1c8f1e9a3c49a35d3e17ac341546f6b08b9a6e1009fda8f7ee648f339f30f27a8eea9cfeef0475fd655f54900e82710028d1ee0c18e3dad85894fd71055356d9dd939af54d2ad26c54d343a8f3aa2f27e5953db9907ad619e5eb324122f6caede4bfca147b10528a14ac35b23635f92c9ad48d4c5b1bf447db43ad0b8273b6e00cd5226d374d3a3d92a647403fde9ab818114b74f96d00e641860e6b1e8aab04c4dc009eec63c3f281a075a00c2e41735aa70a1f9bed4b1f6fb8e0d38bf0c9d38e578b43276fa89ce17c83d5c10242c0e537b2b7d0331aa0bdd26f4a0bdd4e50bb204b0cb2befe5ed73ea2f630661963f51ba5d40c78017a825c89eff33165069af767e19ea68f43f3b051df9e26523a70c6c2a054ac130fbce2c20981272a14e7d58905f3a633ab745b07b806e732e72ee8a10b14b22440f5ab04fa84669c7f013187e3974889e0df89eb67b1736aec9b4848e2a1d6413b626365df55229e000ae85ece2d2ce9475ea5db84622031ff7858a43509185d40842b90107462e69602589bd42fe2fd877278b04d9dab06e648887bd44e759b59c2e86c040ccf870155fa350407e6efedec6cba24dab71d266f1216a229cc1ae4bde79309a9a77fe7c990cf8a6d3c618f410ca9e11b0e58165bb7d07dc9a9ac92577330ce686142b8b6c3f18a6f8a87f76a99e901a0e50e8deb892969fe2ab739b82e9a6abb8c4ca03224475cd519b519c155db6ab9c782656f388d7b2fe6b1906b08cbb8d81dcdcb642602de30eed1daa6ebed0d5baeafa2fee8a3380201b0788cf8d9c62d7dbc48b5c778f512c959b625b2e17aac12df09124cd3bfa7e71bd5c3f19c1f8bee7393d34d9a3103b8a4deee8557e50818ffc8945f6aa69b27e3a3943273de3a277af11eb637283a149f8cf966f1b77c77aab5a949590d1256091b27e4ef9600d64b981b764594aeb7f9d8c70121c8e1988bd4a17cb847e57ac435a3b70554ec0a85eebac468f4d97cf35fc9ad72d6ccf9d53076d53ebc1460f0cafbd26915e27ced379fd0ad2f60cc563477d4afab7c90ef2138d1303f9f8cb51d59726dfdc92dfa06deb8b1e831a46010ef4fa1689a16f966d4914199bf90fb233af6470e8d4275c7051c2fa85fde565113ffcb85bc06021196fc26a65f2493573ce6cca3a7eb22e3fba9e8aebf4ee364cb55822f4d1ab2556bf2d42d062702be04bfaf6173271c3dd12a82645f7588f796fd1a2266a3b446e9e4d5543ef414c9f5b237f4bbdd4aee8a700e8ac74d609c621bb0b6cc5c24893d5b7046153a3f13d4b5c999f63b1d90d6c89f7a7258a75132c00e6ffb593a494242b7c7208155513adb381af1964cd69288a5a46eba81f8a2cebf41e60a4e68451b9ab7540458a615761c0bd93bb9cf2590f1972a2f1dbe626734ee0e3551bf1a111951e5858214e85177b52d2f7e3fa53629dbdcc005b48b0c49624d63d7252aad637c94e34702fe3cd919e99e9ce83905dc2efdd515966dc49468e5e618db4b97c835d8b0c99650fdac6d21867f0e8755ce1c14b5219ed360da175d169193cbfc757f95ab524f2763db202b21b310ca572141dc9f65df31ddef9026b29af17229b0133757e1e97291aea63e6dd234a60a07b660e52bc382bf18cae4e5f3f83b4295fb619cbef31aa4ca86e56ac27690b29522c2a9c235dc8ffa1c154dcd8540ea5593d11b7e8835d0de2aa2333c17d3165cc8262156c6021cbcf9fda8c8ed55dfbb7b85b677ecdf07227645b015a3cda6723ca0c846aca4a0802f0991de8c1b0788b4b3d87e9fe51f47d2a32f1d8c8dc5ab0ddaf159bec5c1799465c140ca416b2b715e1b42ec576acc35be2b52c2729a1635546156558f7023f5f8d91558f26c895ae4090d2d6d0f8e375d24b458450e9ea4fec9e7ded078333774a4225576881ac262710ed2ddf8123a7623d70efb45fa773a8b70cf6331aaddee452bd808184ba2577c364a8e1ccf5821cdec452066696bea73a02c486c88235edf6de4f72420aded7328f6c1f2776abfb18dd145d3e66d223f3a7ceeeae71cc6afcbebe91b40ca2a6c787422bc36873340876a9e5a870e0e9baefe818b5afb2cc82364e3b13e0a3370d277c8f87ab669c1a48e88af9031779b5865f5f332c3153e740fff954face5cefb02b60174b87ab7d1f1d06be88ed127bd69874376c8440844244b99e8034c8c4e635a259d5de020b2b2965c4f8300907f7e1f4de8caef47310339e1754a0b48c1e8d5d4a902900ba20d6aa8f3c2bb29e34bc68dfe76620ff148d6f8d0ef085d0a761694fa229e404d9df88ee72b9586d57b886aae886a47f855c2ebd9e656c36665c750a6f9a7a0eb82c40d8cca62abb30411fd54a8958ca8ebc05c87c728e29d3bc08399b6d31b00c044c6728713e44d9309dd56150f57259f7cae25be4dcc00e887af1e1c460c48bb13bfca90487c5a7d6c4c6729230e8798a0df85c496b1342fe087207ef0a289c1cee0a72642175eb704c178bafa683112ba8880cf359ce2bda17e8a6419c486a0baf7021c7d7b7f81eae5de653102c00203cafb070f17bce66b3df48ef023a26372f05781a485961342f0444cc37f2c21a888b3e6a631ea12fd793c98df6f40b45f525336838b1d66caa4d3078717ff10d9a96944a1c98093c00cb3179621063947f081b8fd1648cbdd1c66db7f596f5c932843132545e69a39c022da812d8d4b80c5099af277e9759888e4d90bd427c88ff6d67a38553a71d964022389710adda75a2c577a425c1fdbb5e77c2fb2b031644d51a9ce0f4913cd1ba4c98caae44c753d96f4fe06289fcf33cec1e29f39df9d99e789f6f8444fe1ed2fa1a78fed5ef0bdb09f6f104c4e2e2dfec946b838eef03ba01aba31b9b8d8d6d7e2452f9fac3cba3841f8ab02b69543c37aaebec5166caf022380c4da3d1334f2fa0ade60bfd24e59d882750d65b8d53472aa1f9564225b685880f8517518b49643d029e8af6a8c73b9317d4d72e435b75443f631ad7c9b644606f9aee8272165057e310149d34217946d17aded537fa70c73b1a43aa9936bfb71f94312fa6107a2670c2c16da346cb09595789619db41ec404f6c91e57e1da4c4309b4ebd9672e7ea4bda7d637c954f92ec157de65433077e1eea08c00e4f063d7effd612ad33a698bd8f46b5acc25ad9852f1d5263a4245daf0ed1ffd10788b7b5941cca0095376cf418501b666d121f875ffc5e80e6e20cb4eb1363d3e02c4fd1d6f515dc9fca8d2d577eb0b0ba40fab5aca3fc67f9cac488baea3780b5a6df3a192ea0cfd8de21ec55623067cc759467a230a259b80399746a6af03f200fa9b8a15b8b062599eb6414190737c91c72f488c9c1ae16d6a0bbfb78232e3855261a3dd6ee9a9e0eae84defc65a48bd17b189536604a60b8addb9023d93c784eff20f755c09f3f75637b67b8a7240efce76a56a79a9f9b3d248e3f5a7f38e213e43e2a8b6dc8713eaa1d7d60f889ddd07c7b47f52d15422046ed06c12fea2b06fb4c2bd0d290f597397fe352bc6f8337c9d3cf12d6abdd56873aa58d8189498550667d66975d99f4cc08424f6e93c342ef90c893bc8b28e3601243640a47d84d1967b7c6ded62e8cb9821b8523c36e7d1bd5669188a29585d1d3d1794d87c71794e365c03daa99a80696645957c745b385d500e448b9ff57dbbc2357fdc3435dea3ea8dc84eff9f9ef6bf42d230ed6d69e099cc5a18067231379c3d318faeeef762f688e68b45255f69c9b471d03b77fcd12c1619e6dbe435b1d67a274b7acae77dd17e27721713d9e5f1eca4f4816cb45c7d49189774d956069e2384933d7d0d130b21b3baf5e7d76a7a34803ed7034585cc0a254a4ff4309515a88ee450bdeb930cbf7703a27c344252ed9ada9dc86ecb45c238ae70be3f314dc7f6214700c76b848f7de7cdf7b00b24e743afaade2a1a41e142eaedfc949ee38c06404da4e3bb9bcec4c3a62e8cda2dceec08bf3133e2a7e68837844ec3f6ec1b61d3fd76f0fa851d8c34056070dadc58b24b14242df1d1127f79186b89e53558aad6cb4855cd8014d4dd6fcd7dc6d4fefaa8b0fca01ad88a5d497463a19bae35f22e8dd11af13d26bdb54cab53be0b14083289d37aaf9269263e0c0b388a9135228882ec26735a40b3730b3ed0960c5bcf0afcd19f378d4e56566772019a7f3f993d6625dfccccb5e5c40a8d4df90e2c0efcee3a06c6f88d6e461e1f1a79c259a09cc9796b8702a1a2aa17656e3b8ff13a536f00f6205ed3c9fadae9d5edbac241d269b813b9506f21497606f28bd39d0a645729b13fb2df265021a90cd8b3773d9abe5447b6f2cea7dd180c1b2dc65772d380544f0a1aa11c66071da591113821bc426632359e0aa6d4445256eb9c271900f46f69762fe717a273a08ecc535165b4a22002198cf77785f7b63318b1fa912edc848186be1ea3982b22d2ed5399d6ba1293d5192984c2b8be31c3ab6818c1641c783ffa6f2a5927fde0e0809ca6cd0e8fb3ae7ff0afcdf9d909a8ff1fd9107b91b10d65a42214de2a347b71780b84c1d43fc2cbb06ac78078789c7b1dc4267e64f5fda6d517a5ba9e9af1147a8316879a4e251ee2d91665d5039e4c75aa7e7c4a01174b94ae6d5a48ac46a7bafd662ec8831ea0eeda7d682488dfe73a96c72238378319eede7ed398b730d627e79e1ff645365a3e52e5d57eefa70ba6d38790cb2060e7f96f520b7a7b4521b00381c549de78e4f50191edd71177d7f649cf3b43b31d3728418b176fec48a36d5f04e28f83eb0a602e328cd14b00dce4a30975e1bcc7c07a5649266b457eab7b18ddc06077a9e936e52676ee0df6864834934633fcba5c8bde3b7e8558f6477aa1392a4b1b656b96f151731012ad1023f520850c8cf97e1d6476d4551257120819277569581fd9712c256ea235b21c06ecf1e67b4bbf782bf0d5c62f9e0041406b8302f1b1b6241b4045d2c7a62d0cf0d8ad400beaf557fcf13a82ef5537332f1dd256f9dd26ea5aa5bc11bcff1d86b71339c3bb17e0d31189f2e229647befd6853960b6b49ec26ef7774e0615685280013c473bcd470c3489bf218ecb768aee03b44def60e0446140dab7ee86337fd2ad0ddec1c9984d99f947bc268a149222f59b9ab105cde9089b836e3eba279106239a8ef02939b181261226e404e9f907741e665957ea81a2c13fd04d30786c7a0ce28fae6138c3b62a257e4d82986cf77580a40843366072f25a6582e6e2614aba63a415ba5f326f455d43cfaef8b7999e1e616fe43522cd6062bb973eb721548df4f9707159201f09c14b83d562c1b310454d488b1b529166868c395b013bb2f926dbfa918e384b256d09f241e9d8cf5b043319e7abdd13cd95e3203b1c190363c3599d6583de0ab60d1aac94fd2b2569e08b6ccd7ad9c11049027683e0d3eafb0dc883b20a1c2d981c395af8d93eaa33f7ffab3b047b8e6f0f313b5ec3eb176a2eefe5746c85c4875b7ea914edfded5dee5bd4f797419d85001c2589fd981fcefc8fb8b5a1774cbbe5854d8f02dbbcfb2f8be9d6b698f606fb92232464316c92c267b05c13b848eea4e3200c3b432be0194129c7bcbdc0c1e3cc10ac6f1fe3e0bcca11fbd59cd35dbb29f6bdf741458e8e32772fe8448d35d6a73a25fefdaafac58e8acc9576485f9fe804ebb19fcc9a50f0a28506624eee9e259d6ff8b029e6f49f51a5058a23b1bef3919fd37e1198172480c10e743d052dbea67d7195ecaf186081b7f6726714edf799650391fe3bfdfc542edba6a8590d21912d53f8b50764817213bf46c1b3f0fd2d976f1033a6ecd119a217b772d9faf63d9471a6eec77987f89aca52e9ea0bd4194ef31030ef832357a734b183d0d6a701aa7893c2a7df1e865491cd04bbaaf26f4b94c554e16cd158eccbb040fc42253659b97d5f571c84b51c9fd99a5d768458fdbf4b5011da0905e80ee3edc52c2dfd2b346be806be782495295fd3b40f81c7a9685964b245bcba1cdb4e2c96d8202d6e221ee5ee6214a2b46df6a0fac617017bcb72a61cad3594a1d9de92ca4fd62fc0fe5b90e6571fef53c9f9cacd0c2d472f127086ecb48d556049573aa1d36e75439e2f9c4f9862767617b023afbf5b16d5d9ebd098a1741212c09e179c713bdfac1773ececbed221a00bd44b1fd829c602297b2d2afbb6b765bda2aa3d3edb01fdccd820785a88d7dc51579a14982570b256f08340dea2772333e41a69e0c0d44444eb62635ab107ae280956944764bf5d08274084516f0bd94529f172a1ce2bbcdda45db68659fa6e0097ae015325f8ae835ec28d3ab095af9fb02513e3419e3508258eac3de5380902870790bd5b1495b8a4518f8ff65e6e99e492d3d115d2fff86aa6f10a5e914a16fd49fb3249e617ff2aabc9e7f4665d92470043461ea4041b6c7e0ac9826c2a74a37ac6b02dceffcbb8a2b9106eb24583dcd1bed133c46afdc05c3d9bcbf25cdd1773082e9c14b9b0e2318d06101c040fccdc9830c175bfe072454d133bbe3505407a6e46105d86105240e1ed5ae4d27e0ade3e4a37e0f47ef9a2e526963002d10fc0b7bbdbe172c597dd2f12ed0efa0ee3ff573514c450e10390c7608443db1ad7f49a71bb31a49ec262e340c9e86f97a192e27c8b3474040c144c05aefbe08835e7948bd6b2259a3e7c305c8c0004aa06822e7599ef2ec8d051aed10b81328db6347e3c209725fbbee803cd60bf1f95aba340f8bf618289eb6a751878064a044d00c2f1715c296dd194afa171880d0b184f799cbb3d071708f2b1228ff1af783bf83e08d6093e336e868dff6efe5e39bddb7cd3215083b7d52ca07e84c7b8a53e09fbafdeb297b2372748f8ea804724bd991c5f57f46380812ebce121f5aad5a0a497bd1a9f1984ff6895952daae9a9a97e4a1afef994022b107ba411213f370639ff118099d721994db429187e77029dacdd3f70b925ca0b1f82116728a71d21cc21f3ce8db1b1509af4a53900de16b3bfb3e5840d43fa4c3a1f211955fd46ccc031f5b21791e3d31e936529c8455c384b70f28d10ef338c005a7b39e05bed078aa9c1e886fc73c5c868ef16ebf723cdf52d931199f5925afb37a6c18fe32320439bd470ac38f47af964b5073803a8fc3687392aa9f20b8ab09983b6864178dd8a34dd8a65e3ac649661623d7befa25ac660d86628a32830fb3a7c47effcdf8c755304c63cec710ea1d405c5a1261193e930e421b05a8a6b30afedcda12a9f6bec22b7ddc4b36c78f932ed30635f7e8ab7a9d7372a0898c88ecac1e24062b239816a19dacabbf651f5447354c9d22cae881b36ac95c0fe7d22ae478add4125ce22811543c4de2e5d2570a4e26c6cf4fbeb243ae8f8a4f4aa60f9a077a6f4e48c063bd38bf80b8c20bf5195a4121c203641fe02b927afca78ae8c6d5b3ed0d07dee04c04ada5ccf0938592134e582ddae677ef8489fef2ace0768bf9b60f0eef0afcd4041b5857eb7415a7efdd9b89d671731ebe09a008ca13af4b218ca52a3f9f72603b5f3f27e40dc1e2de1738ed319443003c85b53b976aef7a6d2cc8303d3af1c0e3fe762bf0c9308334d1346f6a46eb90a71bd18bb9fea72e8578e5fef9377c57cae32f656e843b2050e723ebc89e887d98fc3e5e7a7a40f097335793b5b8da8656065211342e1b8810ea98a5458b554a53bd0df1d37e6bf14a80b113274dbc470514ad527a63e8833cbc3e62cee2de9d772d7e882b38403905a964df23682f93c5d7198ba58910a0fde61422df8136a1eac7df1a606639f19516e6528c248ef357074316572be70fee552c311ac8e8a592655a2dac55b03bdd235dca4a219593a646e8e685dee2d70410c491ecc9d9b06a509d5482b5891b475cef48ba270e29de4742ef6ebf8347ff227345904693bf3a521e7d5581b55f695290e75837132312e5ca5a70184c63cba617a8a004ab22c65fed0dae8a5013d6b5905850da9d9b0f73f00489eb72dcf8985b664e51b1bb892f9dbb73be1875c926e47f08af9bb75e7d7842bc4dcca7d73df1c497465acec8d443298ec6a090c968e76756488bd90907acd9ea489fd0a05a4d6ea390acff582252477071983f40973bbbc94ad1221e0faf36d5a725afdffbcab64683ac2b2b32a72f43081f5ae72efccd205c52c653887f575e8453f46825c6d5d133d7c99620404714e057adc51cc2923b8dcf94de1d482b6fb680d90e01079d5b04311fbbc08a827898b8ccf09c7bed4a1243f042a5724874e629db792068455ceadde27f428414faaeda2f6408457b0ca9cbbc4bd8f7eb3ae726e634fe940eb6e579ee575690a3778fa5416df518145c448b44eeed94aa8d53c0d62b941b0928e347161d7ce95b4a743345808bbfa8d8ef4da57b41b1fea43a5cc506b94adcc930e334a0218349540b4150b3dd338782a041f79dde40c256866131d4ebc02dac2515d45f6d89d28f6cd73e9304fe6f0c20de431eab2f7c4e761d275885f1b4e665cfd6c3ad99651f6f186cbdfc24f8f9880935b7d2adaafeca3bcc997a1d4e197863a67c44994e6106282d526b5335c691e80d4797b4e8c619a89257c58bed07608b301471228f85cb6c7f1d7653c00aea002df2dff17c933ca3de13e25a63cb5a642be792c0fe815957ad5cc0b52ecf4d7bbb3bacd7846bd0d9021cbb997dd5c0cc7f61d3cff4649cb068be0eba0572f391cbed0d1bcee5399f9588a1ba82f66c56b0ef5da1fbbdbb38179cadfdbf9e91b3d2d59fc6a56e7d51f779d3878e2044a44c536e55a4ebc6ebf4e8c3d6a4f90cd9f918597f4c076cf2df0d4bafa72653dd43c32af2696f2f3c59953a1610fe1e3d905ebe722b9722b0d5870a5c61edc388b905aea40b1dd52bf8257df0c48a4273f2fa4fa809fd31557d9d0b46ee7614dc8486d5a327684881fca6a1ad8dd96bda5f529430293cfa8ff025677d2563c61367b0fbccdd84dfa2f29113566ae7366413105e442cf242d82007351dc8c04e856d029056257d8180b53a28cd8ffb4d82a4fe380bf244cac236bc3987690665a5d35de4d6181b8d54350395c13aedb03db3941a3c02af1a944b074424429df16676c1c293a7ca3ead7fa54315960d4b77113bc6c61d78841bf132fb2e3ba182b6cb2bf7daff684976c603c1c094cdbf2322f25ac04ee9b18480aa23b122afec61977d5c516580d2622977af595e2848ca766b9f60b64c8d24d04b68fd59c1066d67dfaaaa875a8f5e968e7925d418e91713e07428e814aed8e0645e531c989dcc3ee043e5a5bc39cc6f6e99ece0034b53734bc475e5d72df8bbafe31ae2456a6e9b36820196cd48268c3b8bb223eda5e26fea2f9aa278fbc88bf9c65e1997008032c490abdfa3cacfbd83ace41c5c21c1ce655b418e273f26fe286d203e6a852bfc7f03cd4e00554929af09c063ef87dbdf4501618403f31f1a8638a44601dac91a592a015e9c92954b0617f7529ba9e62b1afc75d4b39a969955f0bc5363c1c0938e95d80dcdc68c40b8bd7258c770bfc800b099f3e03274e4a381dfbf87ecbb93ae4756be5d9c7451182b4cf4e1a90c3ada7e85ea7be6f40aa198cb67a830f6a2a7e3077784f1059b76f0f5e96d40dd8d40f4b91d2532c83481297c9570ba740174c6bca954b3c8575c7b51223e945dedec91d6f9480bfb68fb805f2ccc8f13f06ca4827f9332ed8d8ff7d791397ac26bc7773d68be2d6ef0f10be6d8d572adb6352fb66dee8407db84dee3b0ee16cc685fe00ed2699c36482054b9451085cb549605a127379293b41fb37b5fa46600d1877a2d38639175efb4f66320d6faf429e155a33639702ca69e4cbd19edfdcaef123bdb849d9017a57cd223a5a28d028baa50b093f3b7f304d3b8e054bd9a010dbd22a2176bb0db5044397671c979313ea4704287fa70e077e02e3b2dffc37cd3df706544203cfe8f6d5df3aab3c6933521771a53c4314f94e971b71b915da0294e7c715060b81d3e95a3b684848f4193da9a5c54e2f4ec57ff890627f8ce044d5b0b3b9fb37d7974ebe605804983243f1f3a345d72c56f544a772d2a56bb220ffc080bdea8d73cb3d3595e2587550466487f35a6cde1481f230980783303df585217a87e091b8fa4f567a08aa4240a2609bba1006eeccff4fc0ba5bc526faabf4dd4ad1189a3bf424fcdb471b88e9ec57ebce6e5d4ceeb979f51feb625a5bbe6df4a54e1c6ab0a3c7da5d89b4704b9f47b700d985a64d3d160248594ada5a3f7e5c16824e2e1af8e22fa5db83befe911b82cfe5b0f68158491b87705ec22e8f87cf5d18ad9625627afee7b1999853a31748db4b38f2beac825289d85177a58407820c62f0b0692f4e05f2379549a70a68350609f1cc9e92afec129cee1e653c5f378dce6eac6a1f10b8b729b000e39e3e32ad888d8fd19800546af2f0173febdee0e2aad2ac5d6ea5bfb6543a578e5f6e61556de7f1071953e37913079c00ba68094d2ac6c9e391e4a7b359bd1e4e309975da8c3875076dd7e9d276f4bdea4a7c22fa3d5f36bcefa6089fae562fb83f243b76d74c4ca041abe8e0b5d5bff4d3e0935c7cec7edc10ba1ca26e36b7c23f9e393699d41ffc4d66bbdae86ab7c54212bb0998f247b9641e907cc5ed60c18a72679444854cc23ac09b014902f30ed6233f0f9aaf9c73d8e992c681e2b717778adfdc7ea46abdbd80106bf8db61718c8e68a1e9759698eaf79ccc94c68b5a352ad3039a7422458a2895b086b7303ccec249028f4f41fac4fd714ba802e93c417d8606153b18532ee6749b497b6aed4f8c3487cf5b9b1ae87520f5e15f2886b934100ae57c12bec665ca1b56033d79ad2b4954085bb302c85cab96ec0f2f280f8193bf4c6f45224ebee33ebc1a6efe7c07bb47beaab83f7aeda79069e715eb555bb2fd2bc06315ea2cdc3a8262c7963729ec8adf4c59eddd6a95adbb4836712628233179bf670b1868e696b17a9e97912491d73ea81750d68f2af9a482674094e4c213968ff62da773c4e305956a690a1689964abfd5a1d6eb96b31a3c81b8de180c800034a611aff259f8b37c949fd1ea8b0b0820c17fbea12aebb3206a382ca0025065c91a19dc6f1e7fd6cefe8eb42e516a97182d7dad6b7fb76e1ede579eb52eb481e2d2dcb5ecca58300079718394337e541dde8e7a07344ea77681867d5f7f12c4790ac1bb4703e2d054ffabb0b836d801addbffb9ba5039856863c0a3c95fdeb77e1b8446af40c115ec86d762d081d3c86812d4e2a0bc251eaf9248a34dd8a7acb2ef72446a61631b1990fc3445722e6adc78dd7c5bddff7b3629d9344705678e50f2edca83eb31033f552d70afa1ba6b038c24e4e9aaf8de7cd367c126c4b80aee1dfa288e58ee4eefbc9a6280f66e18e5c73bc71dfe72164bb8d6ff43e0fdf08201c432d9b4ea6bb326031d8f1ed50e874564ab4c15a3f91bb947d101c9be248648c3e51c872e8e86869d11fa4d03ab197d71927a1fad7dafa47e3587245d6a555295bb83354e6fa2a6f72b8b7781c7e8c0fb1fc15f9a4d869d52dea30e05ce014c70a9deb2dae127ce7a15cdf64df941ce3e0d7aed84ba53e183457b0cebe9e4ea423423070cea08a78c2b5997dc9f9ac81d050ec93a381570fc4017ddd1c71bce687bc446e4251df433da756858bb92eadeb174727ce5e5a94a96cc90a8f9878a20978694e1d92eca4f80052f01ff7356435140f2a3d57a1e04a6f9deb77b559fdf5a18f74d03938a09374d23d90444106c4bab7edab36e58bb740dc70fa0fdb821058cc697aaa06d46e6e5305526ff99de1a34a690b752996504607f3d0edced0b545b4ff9964283055e6ae277078e4e868b0779c223ff80312e334c3f3b42b5c04cb516d010ae22ae8d0c2d7a39d376d461dfd7b49814a5b9402c3ef9dc4633de563d04d64bd621ee6751bbfad903712711555c57a5fe170506ad455d53a3652f96087eeacc60cd584b77a95ad589a49b47bcce7af3b5ed0008c859e884567bbc26400b85a9685a1785b4b20986a3bfa5a1b2bf68a54a05439c04f468a890cd490161e27ccfa0e84b04b4e3b76faae48c8f6f499dcaf6e37914ca25d04b4079f769c4bee3f3b0baa3c3d379d69f8d2bd6c29b8fad748e5c3c5f6026124ff7c558592c8a39d9998542a7d51b3a50f05c27e64af16125c485677f7f34d65ee1c5bd705ddd0a4fb0a112d3775a083a1ff7da1f653af4a30992fba90097875a529d7e01665ac3d9a44b137d2862cab91856f13ee1e0481caf8af4bf00f58cc2a7e3e2219b9b6af712c121d21606cdf09c2d9bca4408b5362c8fbb7b7b4ea444919fbc39575eccf3f83cd53fe068c50e40034547a3306fab939368a4cf88435014d79044ac7ac5b6239c79a7e584a300c33be27c83bfd136c098650b520beaa4eca1ee172fd1e8fd2ce2a195c2ec7408801ba9d2343cf72f59dfa3b265c98b7703cd77656afbe1a652bbcfd8ea022aa5daa8390994f471fd7605ed6871317bea978b079113daa07f04bf7262f47352bbe99145b0bf232e0ebfb29ee49284bd9cba28787e45b30c8830d9f859ce9b2e97174d0c319571426ab3b50cbd83d9984f1fcd3bbb1a954b383037c5826ab22db9c8b4f2f98bd75449bf06f462b5e1f92860c16d09739f0a53f321d95e2a68a80588e57b2462fce9152b3489100830193d5d7005a1c4a6e294d120ab86315b5dcb50caef8a237badd8dddd2d3a89c43340fefaca2d504283d139dc44f9c871e93c15f3b89380a339e55a2ab9b7475f58979caa2e64e68e10fbdd321469e29113513915f5ae1eceb0ca5a23656e9a3bdd95aa621675e382544b0862533c438cbe8955e666754dc72879e23064e5de6b37c907e16178d7694ade9e190fc69a5ea632532e71e7b8342cc7bc35985ef6422eeea907f435a5681bb76f7f5e1a5d591d8a562e0671adb337a42ece61ab2031494bbf94ad5b2b454751bf4db2187542460c4eb177b99cb98dc3d6af619317f3c9d069386b0236068d905aafb3aad9d0d45868e6c8e810bed1646cf3408bb55d29f79e2d9925e081b6eb29fcd7952597ed5d10b2e8b9420c09021239ce4f4962ebba5ef902c7b384ca6477580c9ccca3fa7d9ca959e3a843011da348d15b49acc1c9f033e0e60ef0d5901ec705b3bb3b4e82128f805f45c49d31a62e56495c1324270a83a4b77130ea64c1ac04adea119d938587762066e476f2d7f711ad212bc1ac853d9a337e3fa3a904994cf91dac3f1a3217241def02ac650365951f10dd623446ce86037496b045a48723f720975cf2b1e4bc3c83fb59909da35ff8d8f7268eb7912a8224d212ec57f4582d6f65bedecd2d7d5c5ae0eaee83022f4a849003ae702b0b0c97d479708a8090dd5b4090a375959c9bd39b9f59b3d8a8912d52de3ca7e63b054841519c256798b4f3954889fffea0c0347735367bd7cbbdc0edf0ddd0a377c13b973447fa04995b2be1b5ca0cb61735c385eee4aca72038194727fc161d63b648319191493b66702007ae76a8bc0947eab5156007eff611c07d17bc8bb8155f2cb916185a291b05cf6ae5dccd865252aaa3a9cd941304fd9cf072c0dc28fe3582d1be3ff13f5e7ffc986902888fedbc7ca85abcc0d96e726e4e04f49716416aff3b902c8c48c14be1bb785f194bb86828913455686f84e4aac6d7ef6ce5ada6c51f2f07aac8544cf3df1ff373689602022a9b69b90d2c4252aa621c5f20e78016b05ca9de11ef9cfd8cc5dddacce28c3654f14b86e92a8358436e4776efbaafd818410de069bc529cdd4738d72cbad7680fa5c82ae45b938878d3f492653a00feab2b9bea8a14e2ebc3c700eaed9d71b6afbec50c0d1f780f10fe244911af023621c084f1cc506be376d80c9213649dfa23ffb886da024d4c050333dd88458230c3d7789855b6ee9a295cc053bce999a7dd3c75546d3832a02b043bf35e23b6cbf28fa4a04cc2e48fe22b8057b6764e95c372de19c8bf54445908c8bd0c5cb77b4dbf16bb558517bf3aa83fa194bc85359b201d3d47a7e0b452ef12abdf58013a6c3f5388bcce93054c2c660e3c07cb5fe87b0e3ce2453ce5dc7d0b9a14070af86b13d428fe422214f618bd038c042d11db957ae0170fb2b6965d4c5a757aeb1fb165841a927df42539085ece5403d7370c7920f269ef5aea1d41367fae1350e3047fdfffccf08c171d321e9a8ac7ac8ac735b4e52300ca003d0d10ddcbf468e82468e59f90b6c1e6060d1f0d3b0cf7d336b5769f2d7817d81e0e53c2de73b0616d13553c513d74cb537f0844e2d4b3bc85248e66efe1eaa6d3ceea1d9756fcc0780ce8f33d5acfaa1a66671077441ddf1b66b0a6ee8ffe85339f1dddbc56bb786231cf2107969e2fc2209082987ad80692289165b15c65abd0d493fa59d7e430cc50065cc60da6b632259e89960262d86621995a92fa194e005ed5df7521d0811aa40eae39beed673abfcc65825d83b0383fda39d56a889a01242565819f82bcd4f22fd059f6739533d44d7d4f4ab4f44355ccb8222a47461326ef578c3302c73690817a9cbcc0e5b878b954cc473d395ae8114fa89cda541cda1e4403aa658a0a4205bc9bb88fc003cfb4c777c8b49e6786deb6d8a5aff9d37de2ef6bca5744ef4cba2f3a5fcbc3cbd4e37054a59750320b588b78f6bbfb3c85bb6622e4e6530b6989b7bbb92e5ce329f1c4b271755c6317a72c7959870d1f8c938afccb12724278384f981f6c00507d969e909ff3c8a255cc46cd33742913035ec1a02c6def998acf91aed833d7965420a0773380f30941e5c2c281c15c3708e8fcec9f69f2d2796a69e44fbf57935467738635971c6793afc58bcc878c701f5da1f6cc7bea1a18702cdc35876f34682a9c26a6de9c8cdcef33545bdce6a2781b14595e5ebeaba9ad7df206af91379ea767f534f23808f067e6db7e4ade812ee7427487b5674bd5b742c0a44232c7366749dca1f0eb65914b3eef69474573c952287364cba9236bb1f7c6a834da69e6c9e4e8a556bb0e0956f82c89d0f2398c6ab63638656c3b35a368abd6e4387eb0d432a923c7052a7b9deb3f8f8fe8639e8f2c39cee0a19ef3d5a94748433d48c5d18209e2566eb540d65ab8c2b92931dd337d21faf4b34e644ec361e14907a5d9a8ab52516e3227d01c15eab6410ec322072309be257acfa8afd0afce2fa2cc06e762b21f5c58abee3271470cc799ac839b21b0b40c65c2fda2594909b9da0cac0c033bb9a3b481b2ad0a61642d0b078ed5b7f724264f7dbab6f34362dee3e26723a02e054f77808eccc370e4e9edbfa1d0c462f2c2303100ee291149b50d5fd9eee091a9ed1a004627958b730faebb0ef00c2a76660831a5e2611e0c65f2b65a21a48468a8fdf9a15049d81ec0478eebbeee68a6ee9fb2b0397596e2dd468388501d218579245c746309957e413d8db8b1b6eacfe8abfab73bcf04c3f55aa1565f1d0e0d2b87e8b8075544497685b2f2ca60677d2e1383520f380ad9eda430afc366ed986b3c5dc6f7417e10328360ce3e0a4de2c557137a3907fa97b5a29ea943e87d011bde9f022a57cefc718efb63acb131e5e3993515087a91cb6d1bb455083e2ec670be4d4bc1d30a901caf32684ae64b3bc911daa9a4081c700a9a19498b7f411639514c0dbf089153c4f3318de700e9bc26b0ef98e253eee6296473daeb2551dacd36ec95623e224b81f9822ac365fc8c7e651f75e441ddbe2adf84dea06f96b6595bb0b8fef3d05915782e85286fc6751e44e3f4417c775f31277a44a33db79052bcc9ed4655ae0b44cf0ab8cb69ffe0d8267d12b866cc7f072eba667c4ef0899de1fc0051dcf15e5b44e661bd9f8fc09dab9512a812d316b7d4a44186f53d506790a3ec1219fc1b4e6f96c3bbd2ce244a2f1d2aca5f556c3ede5938afac925762251d35a33b1c340cb7e2960bd8058b1e7e88fa93390d662cf1dc07339d062d3ca27dc71cc231f9464345553aeb14874a856f4c5d6fb087e21a5a96f9eef443f93b739cf60c09c7f0e77fbaa807800be8b6790860e6459d6256d9c74513a42cae6771a4640e05ac590301f363c763d1ba836b9bd33f1ac8ba435cc4b0b94e3a3aa15be72e94c657d8ebebc15a648fa6fa151dc8f8925dc92d390fa24b10f8992c369ed40fb88004d9483e7f912a327b7778dec1b6ce552f7dc9b434e39d30d419bfd31fccebe9504f16419d56984efc4082cfe8ff45d495320d6cdfb899b6c42af0416888367af958817e41db1d97f8e2ff5ca70417397c0d170015441b88172843f9bd05e7600af96852ba2f051fdf21657d90ca28f040c6c84c247ede8e079469a6bb77d0348c1511feb177e76c127943d037bf26ae4e2d861ea6757aaa3e3dc2304e96bd7b669e1fd82be22b0dd8680046e7340cb9da1b5f6ce614d592afeef61dd28863f0868aca038514cd21483abf28519228facabe56b40ce6e7e23aa5e7e859c0915f10afc14676d6052592cff81e380e28f26dcae38a69b43d9195293dea1646fe9bf26cbe720d5fff1ab313b776770e024ad9d2ff32ae4ef54d3ecf7383932e5873289b335d0f9286fcce65cf603cd1833da1d071ac38d69305ab4fd14d1a3af80802d97fd827d67edfd763895da61212518f6721bf404f6a88ea6f69ab3ffb0bd4e5a237a65a1e55faa7e40a9539c81e4cadfbac5d8a5e27d5a05c48ad6c4e2ad9cd10a21def08bfafc3d041282099b5a9fe10068466d836cf6d2448597ebeb6a035f670898461e61413547265afe98b1864538ed40313c00aa3675185370c44fcf35f6b0fb9e69eb4456a9bdfc35f0b8858f6432ecfb2a3017ab3d85ad6ca93a18415dcec46fbe495645c166ba66d36719b0113323479f6818b58a4595ced4794fbddf0b2f360a8714b6c29ecec655131d795d38355b89b57abff6a6f63af69e384ff58565926779c9e954f817406503c4ae9219a5f90489e6733addd8ba11abf666d4aa32b3ce5cbd12a2c301a5757491b3400c997f83c50ef017d86c8c904a7dcd1d463d5b349a7795835c4725f5e30e44d24161ce9e0e409222799af374b9581287d29e918a336c55f94314dca3d56ee8a0a848201020a2eb01175d9d85d8f071cae33da7af35922d5c974eeb84eea3a873ee910656758c47c6629f44620ad2052919decabc2f2a80a8c7b753581c58f8d2230950e508e8515b0de3342494577f412d2ac1dc6c47c6650f8e94de9e85890d65f5e4dfeb49b6cdb469b154361cd44b6c2ea5e154ee64a2a78fb24aa955a1caf70c0604bb79cc630765eae3a9c3e6715fa41f7db54ff12f91d7e82c7426647e945db77c17ac3258b17ace148a8e1a936df599faf26cbc004a434868a33ff0ab381913e732ae1428a83eaa344c5057454e5caee9689a9509ac765a49fc6c53b252757a2ea75acd61a9d18ef8673691142597eb829c21f9a4a425a6154806e7d2195ee3f210ab7eca6b6fbedae1da3917d31052844f6e5e0a116fb99f0faf43497075b853257cac197d0bdd18b61308ef21e01f321f70172e8fe424584fdeb6db7669c569d04d95dfcb4eb6a2a9d9d5617105737ef61faedaba8fd693e3b77ca279fa5cbbcce6a9beaa4880a18d21d69fc4d11b55607dc3c382a30c651c01b2a1478acc7b3b0d952f387f9b0c1ac8526388bdb7bae1f97f74cb5b2e780cf0bceed1e15abe62eaf60b0c94b5d5d93f981a3d90893f0987ad90a018c000b6220d259a9fddbfd8674542dd98334e067593c2220ea167333996415f34730ff5d864f07ac4b62ff08f838142f60eb26577fc6b2310a36b73555107f69379e5c652b3c2dc9fb4d66d285f8d604d26ce7fc044fb3d2637e0651f340ef1e10180e8ee465bb33e49631ca7ea64ad446f326d85a35400af7db5cf8bf48473f8d1c069405db5be15e3c50ba611966908c47b664a5d1a5ccca0191ca9b34e1037a50e3079827d9b81ca1df0427cc899522da1b62260a4dcb85c5e7ee3efeb184d5f2681e302750fe0cbe863a13b4ac71b20514df1f40abd7c92ad5de60d4dc0286754ef995513caa38088be0f5dcb228132e642c41b01a2e45ecfbe1781e1bcfe9eb348df0312aa868e13575a546a6625c6fa515760c7bdb9bc668ecde06d4baebeb20fa7fe4338377b8a64c7c88c6ed79562047f054e98151b59e037a4f37de3db24102239854eb53513a06be24f07fd0319fdff7f5fedb7b84dfecd133bb7f48b1e0c71d80f93c7abacecb222e55090f367b3a260794e0efa84aec5a5aa5a118da72cfebd85ced4c1f02a85027227f124398b29c6b52ef2ce6c4c62a81999de3022e05a8207269f23d839d8445f583c6fd9a7d29fbc9d8c5642b22115c7ead9db4f011900db2bff93734603095819ad90716f3ff693ed95ce7c28a8ec299f6f1d7c4df3e119375ba73261ece9aa36bfa31d9e1a109a01bea9f87f8aee8dfc6680d2601f97d52ce4596d6e79ddde8f04aaa7c30537b30e33b75ee9bc3f1010dc17daef8fdd68d3a15006690d757c3daff55fde561cdd8f3efebd3443a737014c6f8a32524e0a4d515b3d81837b8371da7606ceef9f48fade70e236ed0c377fcfc80bad51cbd5c43b4ea138a574fa6c5d25ea5eb47e3b75d412b4964fcab63b93018c10af97b2510152f491e54f37a58c01ae25de7a09f31186902b82436c9afb7ea43db3cfeab46c1f5b85abf94d6760ed65b5a8d51cefafe84c72eacb32e4ac71a41b649da090ce348417c7e7432dc5859c6a7bb979296c7c74ce414086d1e9b5b6f5b165145c0358e92a31e29035f3ac11961bdf3917699ade1b80c7db66c2e11e415e7ff0bed8c610658244b4f038bcca045e6eed14d7b06fa756ccf013cda0d19c1d4fa2bc452d042b69b1b53ff415be5ee201adb37f8d5d6026afce5a0b681ed37c8299cdea78a16637989b69a90e7805728ba3f16a040a0f148b0b67dbfd09b35f72b56252b3e57286ae46b8495fa35967512916f5c9261db54520fac953ebc718c5dc514be7871a7a03b7f6886e771a06c652ccf087e625089e3beebdbf6a2544d716657f57824aa43d310d9cc4544d8baee86872181d75f694cd13d07ceda7965ee2de32ee156c09f274ba09675bd6ecc3f29e155f80b44d6083220e72c530bf7e17b73b8bf8cc2ca9f2c06916b73781708bc41240471654a6bd56e12f7189d0e5713a1ccfc714ef1d4abe01ab5162be607b977d9db327e1534af7a573efff3bbf7abd3556e9d9f2d5379c00f2eff60b617ec3a9b2374f1cd2c7caf44ff781acc009772596095645a119634b2445424be92425df524eb6c22ad1d6db32123bb53b634f82431f1026ce90e7a71d1f723cf7b2b0304cc34a6b1dba2c446b94fdba586213715e112d02c6762f99b554244da0950646e81bc2cd3cdf24f5ec53e863bbd9fa6ec040e147525af5a3f55aae976ed28bbe9414dcb25bc52a0d6bd8246914679837b17148380e0f5a1fdb23982251ae53e958ba4685c74c541d650a7c44c4cc5848a8d4abdb69e74424f2cb9c7f43c78a24d61fac81c6a24326f5f666fcd969e6f7e7ec4a8f35358dc008b9eadfd6b1d00d64c3b18268df0ddef795d9b6f916907a9babfcda4c4d454206e18fd372a8614ad7c72d78c2a15501ef24811b87769aaeb31ec1e367d38b6bc65aa8c913c314699f296751cc13fcd44e0d0139e0d9cbc54e5fe8723c58872259064272482722f51b8e4c9b22abc91765056f5c5bb7115d79af6a188f4c4f5d9c85006d4bf5fbc8bc4334f2ab30d0e0d921244a4d27a6b7940023fe43bef67355b9a70a3ed4b520d88d68d604cc2ab388df43ea2b4cbf36789f2c8172d69d4e442ab744e82aa82966b07b716c528480ca598f5de492ad6a1ee090130e926773d6604661088a055be1e7aa9e40308ba6d28bfb4e6675be791e6192a6d583c3b588b88145aa824940c6d43097bd7f82d37b71f998e3dc4d68ef453d78118f23f8e5db4589f7868a9698a32b1eb0f9b37b8e9f68017141198bb40621c8aa41b1db15ad6eea7d1c30a4071090bfafe5103e18892e0ba4f0fc372ac75c7f43b0ea6ab50d979405173cf27d2abd9ab8cdec2dc9e97c2dfc11f61e73ea242cfc2c787b3424cc50223e51de442411d4127fe84b43cae094d7513484194120ed656e065ece549528f28eb451325fcb78fabf5ea2716a14fb9bd04276a147af18a789e6ced1d540f3fe8a85dc98b0da0f8fb29cb03c47af53209bf5bdab203b9844a4f5e0838b46ec0bf17571ab61ab5265c9a3f9a589b962a7975c51ea13e2d49620dd98794c7b4551d8ec17ab881c5bf9ef579e1ae035559a0ad15d3231ba19b16fb869417c3f7b018b442a83678a150690a8ce3bad8251f4268a5319267de7956684e3921218b0fef264e30c9848123af63156fe0fa5555803962b03068ed9d66dac04e79b927df87bb480041056560c602f2fa14bd4068a49c9bab98c94fc22131ab95dbb81ff8e59d6184d1335ca0f832042fed214371a7c286608dee69da058227bff3edb135193e616dd08c67e62ade6770aacd704492b53b318822cc36f61db09274a5b9b0da519149c18fe8865b08a009d5841bd4237ceff5390a993cf50b761a971ae720aaed72bd23601f69bae57f05d2544cc0348f03e95e8682003a8cd1f606c95b6d0e4bf59f1bb9a5e658512fb465a034ae0f49e8ba0cc8cdaf050a14b6db90c98b0d09adb702eda22c11986330fa902cbf9f1379c2b1a78b65955f46b689c85077a44c50f4ab64a100520a050382263c9b99425b9aa95edb41aa74d28cfce49acb065626559a28ca512458678a8d9336eefe0d6ec0d53163769c7e610bf77a9873b24ad45878f9dfc309d19e99579adc27e10fee610900a2e551ec8d03de26a7336190d5003070d0adc863e3676e53974eb4d4d7b7f2a6d7075f7e39708d437e648c8ec4f20f09d3ba2135829c9f5e41c3d412f46ab435c240c04c7989163106c436d2277eeffb5e0d7c1446c707b63b8ca0337eb33a854fa21b36fcf2a10f9914952392e4d39d0d152fbdc890dc447ef4b4dd9542e5d5358fd16f3eb4eedeedd7a015cc8b5649ac2d8f355fbf262a28f412a85199e1ecd2a2101a8bdf7ee5ee0d7545c29df995a80d2aec44605e94fa3c64367eae9938dc09fa8591b89738b7e7a90aa0ca0d7a3069dc6eac46a759abd0eda433657bd2d876a9a0b02c5a5ea796e0abf008b81ee68f0fbd839d4981df29d4624e499d5c21191f490244ffe8bde934edd562565a900ec227f9630bc8ef7ef4ffa9ad93fe7af596805a6a84918b0c077607b253f565dabd136d56805aa8eebb711d44fcecd771160af21112d876cf7902c46e35b5f31ca02d77fd459638b5824fb7e21ecf82925b61073960c528c18236c4ad440d55547adb3444649ea6e1ee204d636726c44bb5f89ac258b6eaada3a3f1d1e6341144646e4a98854a43bdba5f3c2925ef804a7f7d5004e1e817ed804c1a38a4ee536af6f3e9a79ff6992d0a3e608ee48f3b832c389678b0ceb696cc7a62216aad349e6e403aa2f9afa625b87c805126c478db2b9b65c8fa5ca3427901a71cc83d28074aa15415272148d2accee570aba08a0f582d04c9d9ec4dd3b82194462e6567c79f31ac3f7f0252a25d5417098b5b6c41c568b5a05af731d23c44f738ac4e19ef61def005bc0c03bd781e66c07e88e469951b3a4bd762fe60559412716e62c0763ae2f104b13308ad61a1379a9cd3509546174e000cbbd971dba4d21964a8c759e9b100ef494bb4afa59a58f0f0626fdd65c3787feec238808561750f9a015053aa5b0a53a990e3ee5c16e29910f1ac537967f0ccb9c6ae884bcf06026fd98d5fd6a46ee01b4f589e24fd82b072afa3abbdb7acc29b583e0d3913b633f98e60d8b3eab04627ce9469dfc620d59cb2059551234b44fe3d4376f912700e66091d00cef4f7b4515b26d265bf35a66e2894245513d0b5326a2b6876688c6f0b338b32789443df984441444b2642330f316b70fe076566eb4a628ea834baa9d8f1a13ac897c7586768d5fc7b96c5fd5dc488c6af93dfa3db9f3a86d4766fe3a92f6294640e5f45980b0e6891fd0399ed36257c1b1ab60f03fc4a49a33a739d35820e372505db740c0c9abb031642d97cc011a57f63feb2c61916f8942942af038fbcb986d50e1ca2299923b00de85ae103a1a0cf4721ea612ed513b140c62f58916d66b5d6891978b05823f5c82c749fd584c7586379641f4052e06500c13d7e1dd0e4c6e28fa7474ff87394ae7d23823893429ca15b59e31beaebef32dfcbc2b4d7d9a68431ce0934db0d244ff250cc4d3d7831fa16efb10f8c9c4bf8be2fbd423451f0cd603723542159c7c3b14a5708f0461995facd6f0a8181488adcd4fe8fee8659ce428d8daa9af98771174edb36dc1a2957b29ce3f96486423e0a83b620987f5dd62b03d19ff2d0aa83c149157fc429cd22571ea47ef1517dae8ac91a493fa3d5d0ce46932004838f5dc118edd233c7c864b1e7feff9eb05c30e04d67c74d66185001ca050d681f81c81cc6eb4d894cbe4b42bba123aadc85a3dba8a9b310ec4332295ed5959f3365585d454c5a4938f83bb6b0d83f885285f782db9d1dade9681783674dc84e3a0960fb1ac7749d3c9b2bd7b7608015ff95a9b67b6f53d497b6f623117de84df96610a81fc45f506cf35b039c260a05e6066cc7170a2752a8b75948bda4ce23f1ca8f33d3c314b69ff95f6c5f01b9702a7ebfdc301d70a7174abbebbbd11a3471556def053c45865bfc5693b42cdf70cf7e99d730afac87a6d456494ba014ab06fd5b831e9f9c2ccaa6b71cfe6ea06eccf4c65c96d432364d0ae32ef51c57b879fa8366423cadb02ed81da424afcff8782e048321babdfe574583fab87c0c9c2502e40650551d14af4dbf55680743f87ac927bbdb267473210ee779d8d99dcef33d55e761395228f43daac9dda13bcd0e8bcc638fd1a970dd4f3abef86c432a3018630de97b4784514fb2230d47adbba0b961832f8ce9d078facaa852b1f7664a2fc035c22c7a3292d4549f0c724abcb3af1d51334afd7a8f546167875efd5575a7bb593480f288c9ee89343731bc0fc9752159fc982843ff61dad65c37403bcd8d7255319df207fb0876645bdf901351bea3ff03aba7685f978d2d2fb26ae8b0a044cb965d32e2d0c582577907c97b221286a4f78588ea41c58bd9846b166fe91043b992631957e26fc12d883b7ce23eabc0667af2c2bce3a189ef8d0b22ac183838799db657965967d289ce6415f9a3eb8383abd7b75b797fb0e67ffcb3ad8786c8f597b4ac27e13002b5f2bff2d5d20f2d390d18f1d0ef093d7bbcee7c676845c520703a6ad76c87819a22f8e0ed8e635e36b47a1a243dc6a31dad5c2faafdfaddb2df693db1a19523c480e2b97ce5bf8962dada5d31c48547a8a16a61045b2db5cd3b32b0158748b74a0c85a3c18b1e1e481e4acd63d28ffc941a86a9af7e4999af422283be9444280ea3c9bda417d8983780642309c90bbb070695b355d6532ae6709abf73d16cda868bcb2faffe49fb90bcea374384328c53985646fea7ad5a635d0e83f19c959fd0cdd630bfac2c1e26d4b07a055575909a681d6db2cf4e26113c8d866bca4b34b5b7741fd510f06098dc2fe38f4765f343d5823bcc8bafb452749d798b33090abbd8d72923f54848b644da7517fa483efff732cc6b001729ab5cdb47be4fee1c98bb391b5127d88eb5a1dd2aeb2f59d6ccf13eaaf9fa5b192dba18ee82fd20d67c8754c611819cb6fdf3459e7efca1e9a650e3884b8529cb75af35da1679a02416c809173be3986f97e897438b4d679026ea01290177c43b33092ff61ee672206e5e5b0ca7227ef6c07d98eb19e1586389ccd79536b6a49135c08e342f907d5b52b9b7703b800ff5272c6b2b3e814ba0f1f5ed027612ce557420f3a3b55e9bfa90546c7e5ba9bef64df9087a8f96327542027d1f791f7991d1e18fee4c59fce4e1da73259fca8deee3fdaa1e50363ba731373a2ce8173e5a36ed1627fba76d82c559edfff1edfef342e60c3f3e27e22f79799240f08a84ddb0145c8bfc41ea67031e30bd02f813418efea768e978b737575d7de2343ce04c6a90da619cd5cd4d63b6a30531eb62a9929083e82462ce62d0bb1fc6bf67f459534f4dbd1634765c4fcf6c0fee646d303ec7daa573718f5ab5c70759a3b74e53ed958f6b1819fb52a5440b356100c3b1564fbdad643a4e67a8e51cc211d1b2e78ebf71d7e4e63a6d8fe8aeaf9f8d25f99f96c84c907b1288c26236487d6c7a8e6a6efb142af38d787addb3e4eaaf81396e286901b0954f69293c47dc93b54bbf5060b3c0eebf0823cbeef85e724c6250d1c59399704fb9195762d706c4df7e7151a473d8e82d80b96b7a65d8ce5469c0c21f5e0b74d4b7ea29fb2a0d1c65fa6b5c66739007546b708c3440bbb55235f894da942984a251df9f4e0ffa3116e7ada5ed4b9560452c7c8ea04333d7a8d237f26d28ff33b1a51b8d9a032820def6e511daa7749ba49c957d3224e9a3ea406d1462f967762c5320718fa8b352fcaf1d10e291031718dc5c53252f6ea45a58543f8ade00e849d9f9f8daf390f87bd86f5628b2937dbc419de493b486a831b3b5b0ab7647748ac693590ce536706bc72e9e31c1478e994c5e2dea373d1aed56f3708fe8b672f28961a54271e7eb06487aa5e7f657e3f17f29463ad7e9ae4fe96af97e8f62134b3a3e3307eec53db1bcb21bd4c27fd31b11e27e8c8fb7cdd890a8649121b5f5335664c69974b4304fae08de34221e95b5232653c8a2935e603b04f15c7c67fdd42604e26f44e98818810f0bea032e175087f283c37496af30001fe398a9d18a371b00ded5ed4f1f9ef8896122ad75273cb6caf7de3d384290f981ff07db8f6f16f3d5849834b395249c6ea0511c20379b9a370e19c1403f679944f4d5bf7ba7ee51c01c2ae0506884172db30a7413fefcdd4beef2cdaf0b418c5b605a8ba7d27deb0211f283e4c0e49f5bc1dac312f0fc1bec7bc3f6f0eebb4a3a2c2daaaba3a6dd5e8f5634fd530b5f8a3419efd9d6a1eefb7ea90fa3a081af5eadb0c27f92eb1288792e7afd9b8fb3c2b78b13fa89dcaed20882825a9d7ccf24386f0b41a8130a52ee1b5d53ec1ecd67f1d365be6a4f8dffa3eb7566b5ef3885704b0ccf51dfff2efcf360c7951da0b02ad4d2bdac6da1d9a35d55e6e4490377774b47da5968e5ff16502211bbc25f95f605f6e3c5682c4ebfbfe845f90773f09117691db7ad2ec4cdfbbf2bf79df91d7d6fb2226db63ead761dc7d42474ffdad70f2778e70cacb02616a07ad4240f867f8bbe9cbd952ea4b704bb9a8222f4f8cdf2db8bb42b411a0e7c96eff62d0194a99c0e38d30a1e89b97eaadbfebcad3c139d97d0ecbd9a061579702eceba286079151c1a739a8457d4fc387494ebe09d595919da880108e42406992abf82aa11e63774e226b69d4a0584fdf9f08ee5fdfba83c71ee0394f3b8e58a666c3b419dc8fb113c792176270b4069ca43a10c2d1d5febed61921639211fff0f26604599cf5d647a7169f4d7410ef487aad47f6a5cf63c1eb1cdd5f8099debbfc4be80915e0c1aa0241a4877664d3f8e67cbf35111d2af1f4833fc46cc8061ed91636c02348ea8de72b8197b6791fe88850aa6891b494fbcbf442b96a50ffb9584c41c146ca9f6b7cec07b7a5026908851dac651398e252df6d5aa61837516788020a90339a74d75dc15624a1acc609a78f7e98f337a911d14eb7b42c8613bd526857db694e903dfebe015ed297db37c8c49112cc6fbc029ffdb9a64cc8a4febcc1ed4d48fa1102ba36ddfbf50f0d3b8565dd6be822398b7ef8170d8f3a9f71a701c8d68aeaeded9ccdc113ceaccf8e08670b42c208001cf46f6cae3afdc4227e80b66483bf2178715f6508cb6b2066ca6ca3b8ad1338ed85186abd6055ed21f6d23a9c34e1b9ef209ab97fc585d2bff566ebf2a641e607bb4df3668663fe22c2515139914d632df24a574d4e43b42447bba479e90fe82b4e63245fc2df558266b9ae7e90e4b724777fe422f922742f159926abc531b4c2b03f79945f921869142b08bd0be5967c3f26f336f06bff3fd56a39ebd4cdd81d6770eab8ee6edd9323ce788c8669ec8793a5fe627022e5e5fdcb3a588ad0d1fdf4bf3f666ca1b7c91e05f75d51e40210508e3c53e37078c4f41c0b49ac05265afdb71017b94c0eefc5d882c27ce27c2707afcba106f8eccf94b09943f3aa15207988579b6d944e68559452bc2263bf6014656dfa1df0c188fc62f10bc2e79e75c3f9d998ae815d3daea47d468c8010a84412b54616202f599326b2ff8fb854a2a07edccc19122a3ac62350c10b75deb7060a4e260772e6cf422f85ec7727f8482c4107558db1156264bab2c0463cf59a853b4471c5860b00e99d34de9087473634174ae0624f8015822542e6a6fd9a5484e1a40a3131c76a8c072de0fe8249163089cb4aca7a6354983438ee4c1c2992453a3cf67c8dd3e26d4dae4f10a70215e1308b27882fc3930253c817065acd1c195125d23489ae6cb599ca590cbb093354b1b746cc5f87cce01ee7209584b84a247bc707abaf6f6753f76325a73aa713f049ea7ec98d8d1eaad08cd3b210d81b9dd91bbd1fde38ccf6712715c3680dab390553df62d41da0b377a378054694fea557160a5694b35ee154f90f0f38a951a05092bd6c83422e5618354c9827f67571447877c84c8bf97df2925c53121f28864eb8a5eb68c9f322cca0728260216122407d79d3a707c08972e062cc9522102f0e836eb6fd96251d697441ff3a3fce77391def8fe0839f00647454568c2b4cbbd917b1c59bdbd60a2150375c0c931ddd8eea1aadbae24bc629eaf3beedc2861c84eede5c85e72f00926c3f2ca65a980b7d1b0c0dd2bd27563e2924de9ec9713477e07853955c2cf1fd55723279e6eba654b363683a46ae8fc68900d746a3edd84b857ecb405018f0e82dbe55c34542f159314b68e297176194f0863986eab71f091bb52f3ea527dc8bfb01d990bf48a09aad9569e1e11b7e51b71702afff558ac712e31567a76bb16210dc4b4fb035652e7e766502a6c087682af8e9b7e398779d1d718d6abc24fbd2e6fd5ee772f89260e724936611211b8072e42293f706882650d37f4979f023fe44c16f7b1fcb6b901d230ff92b1d370ec8e61c65434edb723ef4d5240e85f264e145cc18ab01c7d6aeb088489e34dce0a2f08a39ae8f7772a69a2ad5c45a44c9b29cc0f4c0ca7ac58adbed3b15152f06428e77946a8433f2820fdc3d197e34614fecb22cab6cbde8414909d5fb5107363a5c46f2d9bf94779516f56c009bb2a0ef565464ffe7116ab61e034880de213ae26840be9f7f8182ba8cfd9a1a6bd34f3281e5172e76a938f6fd608565046423ad33e212e87857e2de00bdf9cd99f5703bf8ad8cc380a75de17a5e0cc042e5f2c992cc3a3d5093f4b694f75ce8e2793dd1f07cb3c0c0c9c4f0f97a44b93cad74766b9171e5e1e8412b3c0f6d0fdf207f38f240dd2e3e279e00360e4d0cc9a6732492274b966ae80bf185e5540bda52948a1984bfec1add39725a5560d36fcd2bd9a90e5fc9b2bc7db1783719e50e762a4369879f2621a10a741b5a7a52a6f7c1fab55ba7a97dee6d21504b71390e39e2f0478c4e78cb99b224b9fc670111f50c60d064c1cea70121ed12456247a44ec72f28ffb3525823dfcaea948dcc91ca5100418cc59a50b660e627dbb3376a832cca3322be9172c6221a5013e3628e631c4d6e2a31185e11a07feed7e2aad4573b92f0e6719728479ba7833eee4fa32ea3b22025c4e19a89e61a9aae0ab4acba12b56cd2c1e00a1004e1caaf5a71d69ee735910331430a3748a067f28de69f217f4847591429b3a8b2c38681fe85c41bfb8a6829a7126f163322ab73f5bc997b21b419b9b104ddfebfcc697e81e76fe1ce89164f5611bcc1bbe482263f7d5b5f7cd117bab75052020b909efac0e6ed57a58f6228d1cba2a7ad39288f132f6f3180181bbee956aaa142768e5bae1051b92240a95288fbe8fba9ae4c42d99ddc9403568925a8dabca822186ae61314dc9fa6f6c5ffcea863cee53ff2dd97b99941d84fcec1dd6fbe6af8f5085559aa1a9c974889577aec7fd6c469f51a537f34e0f075eac7b4bc8cbe5c58e071aae3fa3c2bc0061865c2b71aa3177d3f578f7763441a68d64a1cacdd9b021f3db732a3ce100a7f8bc630027bee55a205cadb79089d048cfb64df2554625a92a39a296b425d42e16941426025b116c37470fcc7aaab055e488eb5ed903d9775857d4cbaef5e2bb3b42b81d6170d9fa499cf5ecc5d653569f54ac557e9234621a9f362f807c6163d7e90865bff242c4802c53774f956a94e16c4199f43666a36c7086aadb159f75737f71931eeca5b4bf1fe5c11672aff0704498f6e2418cd4cecdac3b554188535aeab5315ad6bac2a858f87197d44e079de7a5fdad62a719a2990be3ee918daddeac364e22f503d7a62f2fbed260c54363434d89cd7005b8fbcbf9ce55ab249ed56215bca28721a2cd6fa94db5d4308efb30ebb702f94e892e26c6f8a970ff9237a6a8f7b90d51f7bd28c70002b4308ca8196a1d75cee8b98858a2eab457ab07291a064d7d6dcec1c5f829bffd988c1a4e432a644299beacf3b44578ab5d95bcfc91dc9ec1935136f24e81309e23d7c90d17e50d9be33b6f0c4f0be1100f8c254c2d1e1e753ff9a0f4004541c94d45361bc2b12d67e6a63e30aa734546dcdf58396d37f662f2a396748d7cc711e56040e3a12e381af6b4c540dfea0d5390ac8a88e1d6601aeec54e7aa3c88bea86bf39d78338b2cfaeebfbe115c851edfe7ffbc1b1273c63643b1922245a358fcd55b3d42b0bc4a1373c570092d47ab8abb5f3581e87ac4ddf1f24ad537e438650b61bd49bac0dd7f58ae0f22f2e3eb15fabc5044a3deae0a972212d8a46fdc2cd7304fd066d82289d5dd819f3274dc7f600a94d756f47bb70f0afab63125d522e68fd079f61ee9cf64c120ab15bc76fe3971f20016d9fda5a1c20f6c9037606f3e56b5450dd03ac82332bed2b452fa5e170ca65dda5181a315e35acaa39160f1f61847da2d2a089d042c27f37eec8e4328e5b23bc101dc4535e78ca56b12313c2c2f59cce71f73bfe96ac40f63b5dcfef5cc834f3d83c605dd2da1d3364af3f9f6bd9637e0006dd35a3a48992896db1d9efbc83239e920a44b1c8a86a80d4f19f591653e293d8d7532bbd98907bd2a0487f14827bc434aa861b7074387c46b39c4506b035b6520fdb425401c9629ea0b008981eb01cca0ba9b4e756240a62dd2df0837586b863b7bd577e317c9536e91c0bd37a0a098696b9aa014dad6c406566a54ba3550d5ad588b646235778742f85598da5bc19a581f6aadcaf77199db832f3d478ca508328df737d85aeb58a0bc95d210b780d3d91ed511a04a1afb1fd8a98733a1b2ff5ebc05556260dea28363c8c0f972a02aebdb7d65bd0d44f7946fad647d98a3080cd6dfdcb5121fa8a5c6f61e2620b06a191469cf92f51861870f4d9f7256be22824fa985d4f33e742b16fe4e97c7c2c2fd674d96b01005c9fe0132a35a20c82a13f2bb036069c9fdc7c69b9dde5e6beb2fcf8075f6d6326a4cb00f3a03bd1132790a54451bb9de748402836584185ea57bf7ce5ff41bdc1b10c48c63bd44c244616637420872f4a7ddf35f102b305853697d40a3de652161beee7fef7d7a4c9845430766d44674c61ea19402a4bafae96fa2500e8c911813e615905afc2c9c8e5966caaa3580fb46c59ed4fc69093f307d4879123a78026ebf4e9ceec85dcb14ddab6b99dd910d4590ba54cc2331c5059cd4d08199bd1e6b1b2953a729cb0a1be94d83e9080bf03255d8106408f0a64c09b66814215c6a59821807ac265b2002d4f835db1d9c975dc37a625f5923e713973345d2a5216b81d54ae05f72730b0d27451b63a81d68cff439ba79bd2bfcb5ff6537902216bf75e118ae987c40e21180aa6bfda654c6d96f4e777c37f6a3d18b14ed3bc81d6726a50b5880105e46e0cdfe9e7eccf06b53eabebecced1bc1e40ab25352b2791ada63896c2a508d4f7c25e72a1ed96229d7cfb18212a8bf8da5756e4e7888bce9316de4229f5706901a5fa84d6c979868d41065b05e7e69f81b19cb90f8e084f8b438f77000afd2adf87c3f2a4f814a8de0c4153fb8f080a4847ccdf4a156ea4e53720c225c1b3e7d3a6bc90a3a72fc97cbe905ac885678ec33cbe803342375d5cf5aecf459a8345ccfb3bb1bc7f5f875fbd405adf3a7e23b8b38acd80c935b9d0738af7b1b2935291de0d6edbf2c89c5498baa3c3843c92c4570ef8375ec365d4e541614604834d8b2a8503b8cfd6de715d297055cb51f858b22bb4d846487aa522534039b302b3ff8755dc5ab4103aeebbd209e866d98768fe9f13c6a8b5fa92d54710c8d0add60d9b75c5bb6f19475331b142615459175eda1a330bd5c6e2315283aa7f4d158dc4585ee81b386a8948e92ac85f39f7f5ccb5bf5553726b172cc9b07987c0c3f02f1a3fa90edb096ee8e8dcdd0aaf3dd3566647e1547746fe6145c186b7a82af9ff6af022fca1d2f72c563ae8a4ada80db31cd6b4753796bb99f5355c4cfbe43c998a208e640a7205c9d1636b8b24d60466bf0ee7d1da09b5b49a9a4bea2ca9f0065e41ce21643895d82a732d37dd154e348b36f1b6cb8ce20c5683abf591248e42d5ab00e7b3e9a114423a03a29a7b970ca6e9e32a7dbf39630d0186c95da852b6b6b451f665b7ce1d0bdc1aa49a46a0d5e2ef12ad80bc8ea63bf1564128f44dc0b9416934eae834705b4be8221049695d9f2062364a1623e0d6815b382d1af87f752ce8655cd7c23622ef2616c39b3ccbeb622636278f86c15eb1129d8a97aa58b2740499ca6a2255eccfeb368d734b864b0b7106b7244610556a19821419ab140e3d4e1a7151d85a5577d438a894b9f60f8bd821fab1f95a1cd0db486c61d60867c3193a77ff2363ef54f957d4dbd6ab43c1f69d6f4fd734d8dafbdca2c328a189876dc1a90aaaa8cc7ab92c2ec2320cde0b5fb4fd7f8d8f51308d698954c2897de9a50559caee6989f9568cd95033e460cf7954d6cabebad9043b34ee25ccfa8a77e0e67452279d9ea5ad165fff78ceaf6597a738ea29277809d01477bbc78a7fe582a022575dd6716a16ed12a4879e0ca8767ceb6b8a087022af25d9ea19cf7ae530a5944f48fbbc4bb10567287c69034ea65e848a5039c7891dd0325e3fdda47a478ab5c52491ef9fcec8f23dc9674e72d0485efa59173c8292120e65697cdf859a63d15528a13618c33cdcedd73ce0d3ec26d9bee1ec5f0281c46ebbf02fd601c9afcf383627420b562013a04e79b0de1816a2b25c5a6a2492ed7c09d502d6351a68e6ee1cc31ee359b6972bd89c46c702881b615e8233cd7536df53d5afbf46d3b7873f8660e98433ff72c5736cda3bed69aa66369b9ce87481d0828109bd926bcb912625f02b529a49ff9da99e7e7b5b4bba95ffcace754d154d48c49532d65ae5c94a796283012c70b632abe795de141f730f44f0169816546524f4d87e883ffa515db5d83c65443573e2c5bc1e78b8b5d3ef64eec341e512e9de7f0fa2aea213ad5fa4fda474b90e374d78b2fd9c9f7352e41ce3a5d254c6b1a46c681c5bc8ed93d5579b6203ef6ae5a004cb92ed45f61a39e724e5d2c947d02e9c3f1259c37a09e7025148dffb2855d0c3575c6afd07d31c1aeb3f4a725910306008a52988d873743619cca9b22dc394f72dbea6c56b5340dec0a48ef14d73105b328a47b32ab9ddad1c51a14c1c490606a07b4bec6a0beebe3fa16891d9e60ceb0b2fe5a54b9ebde9c947a46046e05f22b8b995f6f23ae58d526f87b0c26b878f5a9756a14325f541e9b4650fd218b3b05bf0604b9a2a406bc2071b9c76693dbfde15423284f01b709453a7646e07e0cd9a266fa79486fe3f4199028807acb1b1579d5a1971b99e5c89d8ab7707ff184beaf7c4fcb97e46f9dd3cf574609430da1fa67f2d76ccd93caf9f816fa22294c8036ca0e8ea698e48e52da31ade55c6850e2192a52d372f7a86469039f54680bf94ff3fde1c9b789e3e7fa29e1fdcf77b1e748637fa4618ab208440a752a2f7b37d609244893290393de15c7bc4c33098eceb519fe7194089bd0408a17beca086ac76e3ce49ce78395d261e55c2b1716873421f7ae5f7048319e4e9d9fede59ccc45ef8f82afc5b63101544dc23204d2675948e074572791447bd5a7aed9d16068cb715bc408aea5833d8e4a92c94cdb2eb2c89ecb7a976a1853255925df62bd86f114ad1ecb728e39f294032f3941fecf26a8d47745ae8dbe2a95a7c27fd3a678b264b511fcaaf3e8e5240dbe0a7767368c142c2ecd4907ac6d3ea7fabf1802fd6d209683cba75dd4082c768f8f322d42761aa3a0d735f30cb9ccda3fd559965090c266a01f3994d76a5d34cd372da60b73b79991218ba1150a9d314058ee2d48f692e442e02c1be74ef803b3f75e0b24a2d31eaf355643ecfc761ec480fa7053e16ebdb370f28d279d0ad8d583dfa0494b28303947a41b84a45b7745893f41ad561e42db2fdc203f89d5c1a73b177746d2dd03e6480be00e8c510bb9f9c5d3f13c63badccd105199355c931171daf3bd498748a6d8ffa8f72acbed9029d44d26480737b6c07ac181fb3897e0d465be488a5714859cc187b50ef95f429e9e944566d063de7c6c01868d790f9e22509f508209a292badc033177079774557972ce9c3b6607cd065b50f0723a12c3d27a221ffe5b0313d3137ba61cc42529628a235e76b57ecdac046a1d87228b9f1da17283fff910f8de7c0797eb5d6354db401b1e949f9ff972e550e34dd788111af6c7d8772a9d77aa0f2bbe7bd3c924e63b96e93f35cbec3c340942e0d980b9a71d3f39b64a997d66a2f76777bc6ca69cd1d446d376d0c75bf85861ad5b751523a0ab28f6bc77dc1495a207c969eeef208bf5ea4aab5e906373e3c649a2fdb403d0fb89748cc1b88d70a75dd57460003f23de975c1e8b9277e96ab6f485dd0b5923d20d999fca80b95199a911f9ebc3fec1496d8708d532ce80b91f885595d355e5688ea60f3307afa442293b2acc181b6187be5d110a74938e427d177fd3e66082023b1f869636eb3d369cabd0738edd2709c3319b4468bdd63a058a7c2fae30958b1cf47fc787656fb06f8dc2b32abf50103b130b7d7a2af54610d349482decbb6d1639ec0fc5dce0c7d86dc3ea1670c2ad0b0469855b8b05ad42a0992cb87b21546f5ac2c941d6bb8e9d4dd3fe1341381c92ad50b396e137163e23d59d244c87094431801149c473e073b47e9997e6cab49eaabc8be70a7a466a3f415d7d6d06cde9079758cb14d28317db6c23bff8244df19c18e03bca96dec9ef6af401784412cf1e73247209ff0eb173a29224388f3f27dd0baf74e5a394a172631777f8ad47b694b3822099b66e0b519895dcc82229de25c0c42652335d639ca2c6071408a51244fb04c82da98dd4518136666808ac844eff1e917ba29f575b6c4a78a43ef4184b4fb782961c17e7c7aa22dd858860fe383720548cdb01e2adc8ed87b6f90649367c10d2dbe57437c576ff20526149a7f4a81db70b959d475f56263c2f89271a9f75b515d019b5d2311e0eda59f191ef7c149cdefb608bd07f0c9fb23b649922a34a57302878a8b98026bc65d154cc3d4cbcddad5135851f845fc6ceeb59604b3569f0b7b1ce5b7cf441f7be15d18eda5c5bd39b6a04e390e985cf8f6c8ce876c42d6394bed3ee1feb4f39f5b53f1f6da85894ebca8a8b8830b6cd7aedc807dde7a3a7f81d5d25a6b15f4e36671e478a4237e6f434f6cbc03c1dd154904ce0be22cd1a2d8fc949175cf3da9a9244f463567e2e4120d33572483f9c4b9c22aeaa4d92cd832042880cd1044860f4ae2f4aa298ff5a69aa0f9246f4ae239c44c6395a0238d1da2055ed8cccaa29f61c2891f72c2d87ecc8f2365a86de89421ee257d1343745b83445de7c6dd94e76dde13ecca2333b41e87316852b3853a61c7bd0ef56c8766b5dfb33e839b1054cebbea74e739099a466969188939a6b76e2bb79c0c3664a70c511f852e8f88385a1b4553cbdc000b738cfac33084c42e97a2b7cd0efa63ee6783ffd27aa83231d1c5a44e18c8ece7dac8889eef8669f04beb9240f9977193a85630474bf513c4d23f9825261dbcb51e6e899abaace97d5209e857dcfdc296ab5a1739bda5c0d82feae0ab21b2cedebd28e49a84bf47027caa6753f63370a6586a80527e18e7e817adfbe06cfa4dadae9919a57b1a40e4fb07cfb43388d542b1d5f28a31318b33790689142a58735b6aaf92b02bc0c090890f830865d81284b061673cb2f64b7f28b876a6f7f9d8333aad5e69ff9da1e075d1f7e228f01feeef91f1ab25bab3da6340646ef1ba22ab565140135918f23d4f89be26dd89b7b698ec16cf45529e6b27c8478ecf6522be50429af9644c81f841d9a55539ab89354fe7a12f89d5b4b96274c3f70d85def66040accd40d840337821d35983727b53e16e1c2c1ab9c277d03f3a5e70746972a843ffdcb09298351b279312b11faf1b4db496f363fb0cd13da352e8c3465548fe0690e7796b6febe7fde86123eafa786a76a0fff0ecd17e524483178834b5b728a650eb0baaf5d76361f697d08aeae2023e6a1e0fdfc849ce037bc8bae729288148c0c860df4eea6df1565dbd15b0e4819afd34105ea42a2d4e3d49cd0cc00c43ecfc3e39619808e0b10b5d22bfb6623ef538aa9c2426370c65a6c5b1fee0c444a4f64fc4b07af0e500a5e1677e20e7a46aaaedba7a7aeb2965d89beec680e09c83a286aff9e7b1f84125d478bbf98249ee80b503115cb31270051487de1d82f3d23d0de5906af103ec9da0e191833fae9e4bf13b61cba37c50619d6cfe4c76aa5584c134cd5cf81d255dad18f0dbe1394105673288c9a2f82e246cf51ea6af40cfcc814d9d28cc8120594129029b55e5e62625addfdc8e40607e20928632b4e69dc419adfef33cde7ad362584f23ebfb931c42f409b114753bac16a3822e1919560c6b46eea11cf2af73c7f6a60500af53a89cff8e40e7425c9bb4e2dd55e58e6e24b7d412db29435551aae2658e2bdffdab7460948dcfa8ba2e3798be1422163a4056a830ab6fc596d6b76cc57f60f9ea8626c047a22030612902800c8cbe52eaa6227f6b7ab1e556edd5220d7be83663df37748a68059c672ac9a5b8da084e3e8eb8f1c517c9cc3da87342e1245a1b13174e40863170af5c303b919359399bfa726c8e0696ec9031828a0b4068d79bcbda531a968e57054c062a4634c4ba319eb9b4bd6fa7149fc88915a04fd0c696fec34408897e65b0ba17d3a469e2faa3c15a8318e3524d79bb252098953c57cc65ae6df3885c05189f294f5ed7eb6162471076bbb81792034eb59b1cbb82b0d4b52944538d4b59bcb1b9c659db67d2405a582ea5d91b370b50183f85bad11b9b099ec0974dd6a4dfcf683db95439bb1ca58fba92aa65146ec95f7aae019fe7dc0c7b3c7824e6c26f0ce8fce448afd1ffa1b7212db1a26778ad93ab4186c53a4bd4eecff76ede09ea616bd2f04337b0303b5dcabc5034ad66be39d817180149b9a39f85d8093b97f2064847d410d398a228530733ca4fe46b03a27838b534d75ae3bff283a174bfa8255f3ea75b69c749481372f04b486a1d6a15c9d70c6c49bdd37302d489320b95fe434350c4033e0b83a0525429a563c77e1bc51a3e16045e7215ec87cbdfc2e52fc7fcc8fb6341c60e92c81bdf2c548ee4d0888e7944bc62c44bed62820cf1ecce673d073aaca954f0286a4780c6f99b3552242c538640d8372b6c52f3b65c2644c615bee6d314a23180603c9c05f51bdc5c285e13b49d7a3ca1f9bcc72fec37ca416a8598fd68042e928eb24822ef51c4c7314aa320d448849b84635bd49c881cb8e3544ea458e5a1a73a49204ff1aa5a0d19dc5531565d286e7031b2b8081f6fa73a43c293e78403d0c0dc1abcf38fd42968244fa4c6526a8a21525257ca7f1183b476cf5b1398ec0d9f94d9beba23adbd4c0c5b324e1a246edf7727b6920184a089ec0d25f607ad8c9954b36a67f7754e77ed2e3c25711a820d9db63c3a65054fae92c8fbf6aede462c2bf31cf6c8aceb2d8ad8364caa40c478642c5a79a4f47426360b84474b57b88b26a6ca96dc663e0001275febd07190a5d622ac9e3e1adca2f5bed9cb47095e5e7c3f9ddfaec7a53349acc41ee0dc5d64a7002a53f63f4c30c3449587a7f322623fd66a6cab5e260de173a64cf52848cd484f47a36b6a15ec69d0b3bcdc030fa327a9a5c436579a3ad15076f3d32781f19e2d27d303b4a89cb23eb64758f639fb60e3b573b66d92ea8ee693a9eafa378896da0587882bc079a31e87212af77b8b77de481aa9ac1a5c6a6d582703ca136c52446cdbc22a52d5b1e8fb3bc1a70708b85cd2efd1f1b8be2c00db697293d42cabe8ce47f4fa481555f6ff1acbe7663198020aea19560a077c3794503ce9d8990c43037e0949b09788ae01974e5542c54ef30e6fdf94137fd9a4949a31fbf8c3d2155b43c083df720bcf75cf76e9c4965bd76eebf69b30537bc2ffd00fc0ce9496c3d5d099bb1ae2a6a5e1cbbe311e6cc3639b5faa8784d6bd1cc8c016f4d031ce06f2b06c248ff0558a6892f79769d1c17293b433509c139fac5d9df7ab7ab3dc4cb2bfbba8e882c1196ff6ea60be3b4397fff63b246f54421ea2bda1664ca5a1a60f4f72a05eb74d9bf3b2902fb4847d9c26f5f8d8535d3c70b4e18b7069dd3aec75b9f1257318990cbbfcc678e2368b6f8f3c7903d1a79d5fe57170f4141c05ed3b4ead19962aa170d46cc41e9279cdf9624a9ea62331074dd67574aa139c178fa00af01f3beeb96728436f846cdb1122098e9a584e9745e2c44587b4461bd809a0585d95e05ad627a10db4e3e7cd2d43fa686f7158a7ae608dbfb33966b7104dc6b75562c5ce5565d9507eae0c57e5dea8a4809dfd0265087981f6ade34ff9c8f495fc2b0f5e2ef440741086c68dd124a40f4d1c3afb2bc1fcf8ad9b038a0cb5d6b3b13360548f480d1230971d7e7930cb8decf7f27c67c5dde518e46b90afc63a086c554931abe4fc2e7d85e29e36a6c2a1f0e7a08e3fb1461fd86a9869bb2a9a6c35b3b6813fce117437ea9fe27a09a798ec912f422fe2530e65c02380084c36a5c7e53b312902d86218c93da2c1eaf5248cf4a31573bb2305a475838f68bd1cb87a39cbd69b8d3dc306d63a802bd67dec4f59dd9cc588b9e7b510e1d7391c131c1af30dd9cea0cf6fecf73bc9fe94ddf463f054a49acf226de5c77b8f140136e6e2df4b3247b82e3ee0326a658585cb01d5fb38da71315b2c22485488908e67d0e56bd927dbd3edd8b29d8fabdadfd35c0242b9d00e47ec744b1a48e961be7218dae242130e17351f0232df5405216bf9e3fb2a8599146c430bcd8a46a7f8625bd939a228b83ef63828453e1899ff4748dcbbea8f722d1ba6be545a56dae0888a6becbaf9c1ad0f151bb5a5a3b8b7336076000c491b4e22204a6d2d175a5627a971c0da940cc11c0164e5aa2be9991e21aa9343caeddc15d9fd43f752d84623cb57bf7be47d3da4e58424a9dd984b91c84fd865d38d67131644797e2f67bb7017f4f9646733fb7078a75cd94e3650e185ab39e3bfa93076cbc1cba46bf82b50fc61df58375854cf65b5d730e4de3d02b8fbe871f61441c6919197c4f897e633986ad9a13949eff3e32a82dd53e7db44d5c826c7e9effb2a18c0fa15213d79a5495b34c2a31735b07155e5e6b1bd09b958289d6d59728681a881dad6e589a16b984d7b42d07aa1b17d555d72583484fb10ebd432cca610d09047c246751438c701b13205bcdce272cc718ebdeac9f11844911554e8548c8414c8e9ef23edba57a939c7ed718d7f0505bb3bb6413cf44893b17666987bf5725a68f9bd09c2af6e4333193f07489db2fd7c55d518c475cbb7e17d6d389bf566a417fd32c031159ec4bcbda0a9f25acbbd37e09b75f12055524eeda78e3fb8a07b2ecce64da3917690ff4e8aa213650ca36a25cfb433b945a981f0637c54d60e9a41827f718cc5bea49183ce46e2155c5d067d1d18679383c336d65db0b40317fc56e23cbe6ce606d7245f985f84fa65549acef56835904c306bae3ebdbf224e07533ee59a4cb823c21a9186ce6e58062f0656e7472ca866ecb82d51b6f9aba3d5b12c2217eaeeb7b932ee05c36adac6401a234c1c05b20a463bbf56759bff08a2efdae32ac535132354363cdc52d284f54e5a9d5ae34c97c0b2ff5ed949e4c11ef4c5b1145c0afaac06ae90c295394f67d1490ca9a9828cb631c28fbcffc98f33dfb35fe802681ce2bc193d8cbb20e04c8acb60f3c23911d62377d5819f3d18c02edf65171e9f2e48021e9f731b8073e4b3807914aaad59943b8871e66b359befa30f748ce39442567516c5bf107cb15ad9033b9337bdc1ca6d6c1099ede20aa574ee9173b06659f4c2a8011f3fa895596a925e2fd88bc6f2bb0784cc4e5520585875b4e469f7af08f6dccd6392db86038066cee78c77c7c307d878510cf31eae07394a771bb9888c692c53714e9b8f24f2579c009250922b02ec702c43228ad800d9d213ecd45234cc55188f41328f676b62517711aa14816ddd2edaf96841bbb040d57c0a8ac1780634da8c4703e82f2a37f4f4fd5161d68c39f1fd99852ed17a3a29342b15073c1b171f848cb1abb65c06b6b14334a54d70fe3812b4709eaec8b25c0d287d3afc3f8e32eaef30ebaf4a253576e0073afa94d2f84924e266a7ec0795181e63d6881583a967ffaf1e6b944cbaabe3c3353e319e3338b65aaec6fd15518a3248432c447d4d3e415f4e0a83f65820399794faa71205659084ca17371e94c9e65a293b62e326b67d091d10dfc65adbc2ab1a97b06c4a4fd867dd444272fd58dfcf0e24ea00917e730bb42fe42cb4c781272dca2068f11e24297410e7cd8afec5ac9b1142e1f02e08dd89fcee4b5ab503313898339184c3a8fca946dc561844607518b5d623782459060f280a822b09fe00200751444924311254f8b42f4bca896bbc715deda063beb88812220235b6f0b02ca4b2871cc617104619d54abf6a5f5d4312418896bea263ac7fc2a4cec7ac9e9a88f02afe3eade9d7a8e377e410e153143c7b4cb3e1af39f480696e305fa063ae09b343723c0a2bfc7bf0c5d87902e9b6794cc61da478edcdb1af79d576ceac6f4bc2db35c08a70c8b377a453ef945aa633082a4fe8ae26aeeec6d57833752083e587b3c2bbe2072b8d4dfc60973ee8b05c2d7a269bd0dc7fd6f8ca04006330d828af17a863a08e52cbbef689705813adc2bf9f8b01d573983c633733f98888f3cd5e9899a05ed9de08bceeb6fd40b9f891601e891562e06ff042538e6d55eb8ba4a17bd41e68f7af6c4aa9557ae4ab4f6ee8216fa11e41c23ea9137d88c85cc1558ff5f7e71221533a5f3c752ab63fe352500ef7d3fe54371ae0f391685bcf5b300068f2737a0605d65b31f904ceb80304ad7c1e5a032db005b3ef1b210b3b9b89f968e3ab3ed0b7193e877e84cc93cd3d21755c01b8dae0f211eceef78d8275180a4d3bea1cd460256891db5aa0e273c7050ca3282fcac17389cc50d7ee2820710dbd5355fd5c11616616d5d810341efe4e3ca18f87a0981e5741b934eaef40e02185e4ece0a3a090a8f7d11ca7c9c86b487810b9683059cfa754899f7e69ca2c32686424765a9706d75826a0c6f8b93108412fb466af566b99ef28c98d2604d3d486b7347e28d9b5fcc2857fa9f9f870aa3317d8008ba7a851e2eb5c61c2267ff74ddf7beb54cd58e7c4ceef40c3f88e15f53959f8e8bd2e23b3e13b7cd1ec7f73d80268c31a738cca568edf501c69849ac72f55cc80c1836aacc4f2b59672aa8a931bc13f64c90862445206e83ef98fbf51d26fe275cd5e23981f730041d45e1a60fc6ffe9d3d2dbe99f2b99eab53be171e9ee3f56f36e7c8f6c310965d467caec308ebcb3b8ed9df44624eef0b7e2c9ef293d67a844ba91cd40cf2fe1c74e475379f3dc2fe7fa3989d80a9360e57344aa6a03106d4b4965743fe874c26d3ad22ad9b195bc6cb3d9cb190b31e7af3d6aabd40c787875381d26bb69051fae64046747d90f034a8174c45e921fa5dfad829de2c5bd51d159dd4515562ed25d95114b2b34aada780da4970c1fd042a165d0135b3682991d9eac19f1c93cb98e33f4197f6a474c0a22bdcd5a0e0621502d8138ad36fce9ac5f59fcc72f739832f4afab4db3712bae4d0d768d557167db8b0fba26805e810e16c837836e46b9dd0a3d05cfa32729cd04d3915923ad24084509c22d3d47a437227e77df69d9054f9fefa53ec8e4745c9c26ee12fd9744f834a23d6eeb19449640563728eb9c156663ef358cd6f19c5994247960653a21eee805f0ae89782e37aec4ab6d948932b964541809bfe93c54dbbc5fd0216ed04ed1d1411b7c135675b028f8387c5010601d7ef3663a844a7843240a07252b550705033f134c3c2c334a5256e4cc83604b7d20910da362542868f133949aea5233211c93fad04d7bae8139ba172f411991b6a4c9e0ac72c30db0c76c44065c45c61056591cb405f7078c95a60493e068989cae88c94c930e9dd9dda24e2e64951ffe92243be2a471399f1b5325bd8056ce7ae00fb15c3ec0abc0bfea82aa2a0ea84c5f402085a4d5e02441ed02911172c9e81fe33c786275cb601967a2a09ec0f1ff5a7c3da7cce26d18a6134ff875038b1f7313727e793a4db5faab0c6dd0ef952d3b6ffd9888d66cce9954716cca3883afda1680dcef5bb43d1bc5aae68ef170e08ca92af7e335ba2c8c9c22ff8b3f095251728e77e28be811fbe6f8e7fcd1b149a8eeed0e7d25ec13bea18adfc5fccf588a2d9278231fb91c62e81bd66fe12b5a4de79ae7cbb609a58bce36ad79a04ecd7ccb765d60b0109db02ccff9fb559dac611c289880688bf9aa201028a95afc8f047b29952d4f1d56e21b5ec935360f02d516af2fa24243fa9e0d6764c195537d719605dd53d15d92e1ff1783526c09383660640df801c36a19314a1a20cf116dc8046dc8ac679536ff45528b71bebe71fb8a4b1bcbfcf6f8f3b32393cc2fbb9dc44474326fbc11a758d60e1cb5e6729082334ed3040805e2c011d08558d211b57f351c546caf7743dbc1f0f6d7cdde8db6ce6af21038ddd5d5488b8033dc78a5c686275190c6434c6f9eddcb97b8efc2854052f780fd3e2d52808829a306fd1f6231b2d513ac7d6bc7a385e3ea048ddba412f13f4f0a9cdf1632c9a8f76271fbf8628c78ccb2ce013fec24415e577a2576956e20533620b3ee9381bae61c175a6febea9235ab732c7248611293cc035d5e8ccb0e5f7dd5c89e3e43913d64b382e0d1d8ab9f4b2bcc7a1d5dbd1b0cb64fc040de6194a702aeb1c89c42aa227331d5581cfec8ef6b74791d93e3de36f5ceb3238a6ea60798a661dd8006720f61e36400c37ed3192f5c5960c2a1931552bf0703d9c6c1fcc90d208eb6552cb9f8cbbe6ce4a9b2ef5d3b4e2a0aa4ffe66254fe7844ae9ca1856002c97f34da686c953f3a3e9a9a33ec8d67d4724c347bf192441979dfdeebf72e0b7ba1960bc65247ff7bcd56aa3489b21b5aa912b2b0e28597812232750bfaff3c02cc6ba3450675f8006ad74876dc8b8c31ea7ccee4dc4725609e7e9bc67a26d4e1faf77adaa3ef73f0330225161328bca55a016ea5eb95c37e7a72fb2aae667ad4762fa77328a8c52c348fe7269a2a19ec2925826ef7f026ac7ad3063d355f34eabc3434e7321cda65e473e3de9e6d92223d6c880d3d2a517fc3c170fa7cb0fa52b61682dd8e13572a9ad9f9faf3a2b392723fa4466dcbf6c7920ba747d2c546af819a1301fd26b4f605bd52482e24a409a0bf8b512aaacd977c0bbd222670f964029aee9d522aa001dce5fbf9f818853ef7526b5a573b0b9edfc989ce3695b35c6c346187441f74581f5e37fb59a10faef8f4d98ade9d15341a0a65a1fae534f1fd1fddf78396371561fa3a119462b7cca4c9ae246d371f99e87a618c3a94b5212669ea8a0ccd94db792d4ef3a29d55c21a837517917a55ca9e9db187e03cfb57c58b3e1d28e2837ffdf03a28d772b747c294afa8e132f6d16a9afd1dbc312cafe83cfe33bdd6c97568b39e29701d01eb715ba4cf094f5bd7cf158c9ab949b28dc93d256a1b0d23c4a34e000d43ddd6b428d559460a03bae0ab8875e1331c39e8e86985f536c4ac0e394980df737fc0470d18790fd3e11c5abcecdd343c39f43cc4cb38bbb300090fdd5b1953ba1c002f5e5fcfcf7aaa82eecd13da5828bd8acba1b98ec8b33d313fe1e5b79dcb49781f112b31e97bebe949e5f94b2c6f003c143ca411bdadca9ad518d1e129bb880ed6a88e9c7270f331fc1c387b0db4004189624d5cc0ab76b9b3f5f5ba08e8e4d5a0a647bd84fae27418272cf3ee40b1954c33e4bd0726233a0f1a03ab5262a0a9b9193192daaa7993642c92ee66d144a5989b41e5ff0db654d9236cc7a13eb2583c99de28cb20be42e1d8fd32ec4472ffcaba12e3508968397102fa7d2fa6d49d547fce12215b1cc95e7cffc5f7bc5187f23a42642e95642b5af8cd8a4728d60bf949be09de75e0cbe6ad8cedbaa2ed3b865796ca937f1fe7b15c1ea34cc2aa33f55f16617ddd77ea31e78bee7e6637e71af2819cc06c2294e441aac424da8e3b941b5c75ebb00c5af1dd793db2f600d673bf0a63b967857e1dee3ef51c6939c14cb9a2a109ec2bc2f0121c3f12b372c005564c39c578b96b0ea7c94dbaac102699108cd5afa66fd4d13485f013834c511f9e221c5a89fa8ac2d3532e3d27f7934aac9a2e7bf9f72465f39ce6cd3de8ff082e5bca5dc3d6f5e4e649b6c0b55b326d99c309fb7bc60cb0a6365a2e9f170ae81e265917ad762e6d50b0a4af8ff1263df84e89c97e43ede09b671c784631c3d1cd8d3927cee8d974378b1e4111ad98da3c57b3b03038eef3409702b9f72225d4128ccda31f1221219f453ded8c1fed81fb5e8adedad150e50cfd9f21b5296d586abbf0af8b9abfd0aafed85d54c41edc7f75b357803a6d04c80938af2011f9997bb86815482e9eaae18c693380ad18109b9a02844fb6929dee59f41b3f043d9fc50c17bb61a9cc3a29765ba723ccd677966599619b0b62b3f6e1e165e806a007146b48efb567c800afa94c4b5dd180144a5bfa5cb2a1b82d968539bc072d31da93974594217ba7cd26ca757171820a840b6710ee19717dd7d2a51747fb3c9d3aa5ed8d3731ba9331697873daf2771eef7d26f8e70cd593f21591b3685b4fe12e8d8f480b072329f2267b94878d68ab4a7ba354950e3fd152c5484456af22ef3a6d70f6a9c5beb1bf1d373a37e9f466b3eaeb9429e22ee2f3f8e18d3f4a2657b92b899f9e594923cfbb1cddec1c6f288a91d31a4e32ad0fa6e4cd006a3b2d33847203673a20a038a2e14f8ef6721acea3b9b46d95ed6373a8fefcf453c838059042f52f6592f70b1f9d91a8d4bdc0611862f41c09660c443424bae4e609f70a7f160d0d901914db511d2db7fef7bc93839e38697b86752a949a330411932708ba822a743a495e760e43a1117f7cb3249f542784245ac27645f9ab8a77ea675099c391906d8030c2d384f141ecada461fdd6dc3290a100285f6692cf4ee96355de92ca00f43c821bc325a72ec59d785f3d4930be6dfcae3c64250922bdee611976d4aaa4b6cf203fa9ac4f5f42945d1b6235cd389f44c1ba41aaf4f70a2c5d0dcaeffc34c5067c036d92f33a44ba4647ee5ae827bbe373bc06fd96c67014d929774b3598885b36fb5fd8614189dbe399944f890ea657467b63dee518d1e072f05566a198afdd4dc53299218f7398a2e1866b5107008f3112e72fb655815baa544f72bee4dc67fada74f4869055265d06eb399de131149cdabba69d23d4d9487307f00ca0e81124a9e2cf8853f046f66591576d7ed273fdfa3806602e0671e0f03ed81ff025df2f435bd0881b069317e8934c1b43c826a885f0e7c6bbf3ecf54292d10a4e047b393cc052e3674348bb2a250ccfdb5a866a4c98df832972d0bbe28af3e10494978275b43010fc42a9d5ee18da15cc9995deb47cc1b7fd0dc4875ba72793856cf5407e5789e90f3b1760a2ff0039ffabf33e56acc32c208b09fd97e0d4194825548db7c10034a353c651386a2466643f8e191f650367cf64448f66995ab31085ce71a0aad3e4e2a9a2adcc3bffc347f475d9ce4bde7844fe4829a01cf83f6a02d5e9346525c382f301e3ea8fc59fab37045927d259977b19958648bd8076254ebf916d53229f05af7bc5bcce64375c0ea3a6cf51fcaf80906972090e69f737818dd97598659883b878e4c055eb705b1d2599be10856cc1ac9692dd2bd5b3c099088ee8b14b5b34dcd0b1a4e537b1cb641a0c1902249ad55299a6a549b0ebdb0181f6801b84b3231bc7657f5ad33a824aee29a3f7f0f8985b22c7dbbc988045db976534e748853cec90b48877a1a9472b913ee900efacfb02cbbf79a648122300b59f7f46f2a499d8f02788841d8933b078bda9556bb4949a0f887a9d2afc526358bf4b47a778ea2e722117967c45eb0b9f9e7a987c9f93b211755cef260e75479385826ff7450d166ef90b24f0121ca4b2cf4767aa75e787105c28446246ea0aa2ab4ca4f92a767d0a58a1dbb05e2cf5e8147ce4c7ed561cf4d89d28e3e5a13e349af951724e48b903dd4e445b629621d35b730c3fbf1b02dc0681206be4bb981095affc85139cd18dea99b8d1f9d3e3fd5c4283d0bdae68cc1e1706c7bd0f894c23ffa6ed8c071a60049b81a05889e42239d9963165a18eb49b1097d73951e7253540ae2132bd45bddaca4feec26f1c1ef57ef5516a470d7c98c2f819ff1276fd3cf0b1ce28a6ad0d3ee26b0673e0008961c6d28976d68bf3e1821d9a4e929b19a16b02a602794bb2b0799304c69950a4852f4128eb7321733d392be8575a383460c1c0da2b18a0e39d3d0d4ecc8ab330d5b86a1f3380fb8077e64c303c3d80e3370c78d769e9812206c5542878f58ed0c5d13edf90242cb43d9d0d633e9b63d5e7ad526c2154c5c7206eba9a6f8d05703f063423cc0f397938b303369780cc4666bbb909f866a124b6619bbaf94377481874f12fb774396ca5a3bcf13c7777769239b8047dad3f5e5025be912eb1514951b196a29b4c981c067127f9c7a2cce363e22400158c538ea060dce9cf0b54666b914f75cdf548f87f39600e08a6dadff523fb4796d9dec518cce50441ee2380e08744a460d5d9d2e5da971ca2efcfe73205a765b2fb1aa5b027aa81c707f8f75055ed6a3f1cc69c38ad92e6c4dba47cd8f0a7cbc96cb5f638cb5a52819cc4f7db8f711e9048ee9d46bd07c56002cac0c905038ddcda129ce4dcedfe17a93efc36a508978974c309bc8a33532d04de0fde119620f7dafa8853e9c323d74e79841a349142d28c0691cd1aa542690b36e0f0c2d493e422eb2153e999904762e8020e64e7aefc1ebef7d8f371189dade036473878d57f44e3041bc27cc3000d276afd54bd7ed22d25d7d79a9c1ec19daa7911f2fee5ff14cb3df82b83f4d26408ff3f26ef1dd17fe3d6af93176e7261a2ba32ad1fea45549dc9f17d73f78be6fef0caf9045ed9720857b3fbc007b2a94c39051673685691b01909f6569abcc5c30da6e33dd19d0d9e4b892129f8d4a177daaa4f31ac5a3301f916bfedb8367937f6083ebabac9c93116d199e95ee73097c71e21c8c33d8c903495056842f2f440bdc6e97dc24dc923922017849880e843df940d185aadbe658d9a4cf80c0f367aba01d3731373021202db2c58cc894971f83955865ccaae611cc3d5374875471f443d86742e87430e81465558b1cd265ed46abcdea20be7ab1c94ef1d5d2f9e04153f97cc47209f23f84197c4469f6e9c7f60f6546e0402d2de63716dbb767fbf05ed446e7cddf5e89054b82f2a947e8c71b0a125f9d4266c37e8115a49977fc069e6538fe62b20d7c943f22eccce797cec03f79b4c5a1046f7e9dc0240c7e1997e7332d12cec6dfafdf8659f90a201028dc432df7d2dbb234db03352fd50ec22a56efbd9ae74052905d14ad8ff694e0eae18664ccfea7dedcf6edeb68cd834a55337aba3e7e886cb8b3eff59dca4f75e471ad1b8459f2350b0b339f4195d4f0b65cb70da22336ee38c9c282d5bf86a2ca0a67f6a7aee929ad2b24b0d414f7062028c9b603ac4eb5ecca3861a11849a9eec382fc6a202d6c93383938640dac5fe0f22fcbc22d43d5a522ad607f133c89f687d48e113a2aa8bac78fa71c501e529a0a4392ffaa18d39448d452e81d9230bcf69df5a18da55d69c626b41d7bbbd0ee0a0245cc16a13e0600b58a50e9494df99dc1ad48aacc3224b3e9fb0204765abc5ab2dc2658e76a543966eacaa7b46c7851e37747e373a34694322cf05d0594498077366971c9463f5043e3cf5e142a908a0a3f9ba649648df95fec92e247efcda38efc03d5f954ce240cd377f756f8fafdc9053c734c85a206c25a98d34c451ce30d58fa23b28e5523d403998dcb2861ade26766ca5111f405022f1e69c939a56c950404fccbd4625571924c56e1c9699b7be575531e58011d2056729642974cb1cca826f744ae1c554d4f066d9fffa2c2653e5659a006a39cbbe87eef24cb55750e7251bbbdf26c3d505140fc93fd53ae6b992965c1e271189dfe29f338dd802b34a6523ab92f134e268faec27dfcc0564f4154d8cfbbb9ccef8ad1e4517226d948d2f8c7809d3982641251cd6724015d320f4edac2750f9f5c57da9e6144dbd89cd22a56bd9006ef51e714504cbb3121ef3ff071c4cdc71592528d8f2af0f183d2f5b88a059f5947a6af837a4f23bb7b62a4146c68820b54b47d2413574273cb1a7f635998759f9ba94205bba7baade8f69031c0b3e4ae72593374a42309f5beca4eecdbf3eb57ec3dd45efb1713de721784424b32f7a56fcecde8a1922790a7c1316fec4f89c8196241082a058e7e82b1f5af4a08b4f63e99827c6e22c2748a63a5c3b60bd41b08095eb84f869c6dd499d64fd13e52f01ad125016d0ac5ff3f2dc8144c1812e8086ac08d335997ca3d10a28b4bfd1a57da284f487b385a080324fe93be4454ac66a73cfdb3398fc9e6b18ebb5238587cbcaa4532c37d6931f580d66bc32323436392369de5d228eb3c192ded6da139ab55e7e46839afd93ef4431766d18f770173a16ca396806945d2ce797d1e31cc7e410208ab8dc640a06b3c4b8e821cee44de7183dcc14d6cce47e6195448137985cac9700c7b68adf039b3685207a90cf06d78e4430cc77b6b2d56f1170cc1c9182acc456217e6fe9bbea71c8afcf64a78d02611e7fd7f38d60a1ada3d80366723a99dceb2af8ca88fbfb29ecfbea93ab68c0506d5d77a3a2303b594e74abab0d56d007f9faab1ab0be72726b9449c4db60468c4afe21f599c8c17766058491bdec95c07db445271b67716fd208debe931abf1d1c730cfc9d45e7eef53670cc4f2ce2463f59d19d82515b38268519f6adb10bdc8071b551d602d2e5a07fffe070f24421f4b6cf1bc3167864f82873a49a938a442b6eed84b2ed3bc818fcfbdf51a58b355e869f3af326ed39fa97ffb16dbb96c2de03d99af672c35d935aeea988b0bbceefd5c11dc62a06bca7a02c0bd1ae2b6761a50491cfc693caabed1605ded999f5bd71afc211c5c72bfb0745849e04b60bbaba0b9b904a9690059a27904b147e524fa4a795113c0a1af9c4430e7776626cb8d057053cca22d3019b9988b8d23131c809748fae87a791d57b90fd41501d35201e55654faba43ac633e34ed055f7877129f8eb4ee200321f755d8267ede59bbf9f43b650881a1d95ce3ae2a789a7fcddfeefa93674a759270bb6fd42176a29d0e567b05ce0f84d7efdb6a724a2160ed6624bd4b63c819d8d0082016847a5e9cc1d7ce9198c57ffe61abfcbca95833600145fa3e353b5736f52350ac3dd1fd29626bd980ddb825cd5b9cf83035dd5841f83dac2e058b8d534b71eacef1ea01fecec2a2ed2ba7c531620a36252153b0757294885ec3e2df47ec2b876e059a7db9667353cd76c6af76c080290c76a01a3a7a7e184c4c8432c796bc60c719692e203e760fe85f9d87fac936502f036f1e52496ccc47679d1be8b6bab0c4d6198174890cb9286a623a20f2163aa7d63c8bb19766f512b1276685899080f5aab81d2348073c3b37f8b05919cea8f25f1ad54f58e716760f656d0773ab9e5b5bcff763835441ae2ed70f0e6c7ad021aaf0e107b574331a18541adceb5b828549533b97c9465b5167c8ea208967d7561db8c3ca0af9bda79509a2b2c3da988a3b0f6b7ca54c9a48346e691140b3f143bf87c7caf9261b739effe723d30aa0076a3e2cdf0ce6168ee8efe76aa5902ecd91843d6648920989e06af4a44ef6e6b96eb650d1b21a4f4f21a8fb28d6e4a7b56551401298032f98f02c5fad0e4e8d4f94a0684069ec542b255d5d776fb3bc744a0d1c018543ebacf3afc3186ee7855f4c01130db9fd341c597647a452aec1333b908f9aed80be199da9fbd8a8f2129bd294e6cd2fc3f9543cf1f90c2cef9fc9ac035019cea8379498d2229dd07f62bfd7af32c78ec4dc2fd217848378f17d25b61f25e6ceb18e106f976770719ae1ce5cf2f2c2c448ed0ff83b6a5b64d3131735fcf6a4c795cd0282e09110392bd8d7119b28c06bf4a719fd2f1bd063575a72291497b7196c21400d5b908b094c73dc9efa830131afd7e17e80ab43f122929aecdf29939610eff34a12cbe7babc16d54eca6da1eac4206349636e40925bbb9f4e2d1ed61493b997ceae1569ea17e06cddd54582d0ffae22e53c311e4c673f52dd843ac0091b00a237e342f4bddbc697876f6b44ad0e2c375a68964d65f0976d6d6a109f9f9d1195f1370bca061d9d3fa7d079bd617c88ad369466b835d271ab5c0108626fc30b286783382f8f9f3aa1b16179caf2eb5d11aad187a4c2c769a22428ac35a03ba12a843ec5c45af89c23f3a20d39906573c1ff9d3cbc01d5a5f2cd691b1b2a8fc06aa3c2ced59ed27072a234dec6205e8fc5120de67d0adb1c46ee60069024c9172a0466ad5754331a86f1be75b8ed5b06d07bcf9898e67978921bd76ccaec42d07047bba0147f2d8938a84c22add3d248afd995d1484ae55acf5e3ae636cac55eb261e9a2faa82260c555577095cf6a1f7de43916ecff5c788f5b066c13661cddc969d2e89dd4f5ad5241e804846d1b4dac4d6efd3ae3c82b3ec6e5f299ad2a603c5a17d118c331caefccf2576fc02258ddd16260e06f4fb3b4c8404a1723546da6a9340039c1491db2ffd94bec8e3e47e826d08dc578f5409a6ae07f7cd3162e475d5a15465e30e990a291c09cb2cbfa652d686a767e8762576fb202c3764a669cca73c46eeeba58967908283e648754da3b687a23fa75358979e538eb49268ab7fb437407ba2aaa7441c0186b7d11370bd8d38f6fc7df078e3e535a4a554edadee222c7f608d2d7ac30ba860d0a83a1542ffee4b81a2fac15f2532b3ef50cac0a5e30042b0b03bbe6283b333bb05b2b036f6a77d691015218f0d5b53463750bbd8f5696f598809fd4f57e99241b512cb58624cc5c6f233234fb119731bb6ecdecbdbbda86af409252b755426fd39d7fdd82efeff89f066d8baef21afa0bc511e96abde3631991d5ac595aca16f379cc27fec6012129403c05a5bcb9a7c341438b5be075fe6eabec333b5bee574cbaed6faa70e22baf99061046ec6595f6d2bc8be5fa6d516e80f3c9352d43d0348308f24fbedc6a3926504571d694c1c9b58ed10842b0cd8e22f400ed25f46a63c8176bde49a4aeb4e60af2ab294e18a537bb8e61421243faa888f8872f6caa6f31539278c558f95d1891826711a516e1ac31fde41266f6606c2627e9af9f1583e03a7e6477d7ff64f1203fc8ca46f1ffcb3a959469ea4b1a95d027a8b23c2a21b291c0d22792eb8981147af78543ae3a94e3c658e991f68cc3ef73e2f05d0557d79958fbe9458dd915893c097d72ee5b7f7bdb2d8e5ab33d744d1194320ad192cebc5ed494cd0a1caba59ef9ed191d4db92490be150df2fc88e493c75dbc1b73bddb86238062fba2b48549267b67f40f0f0c4d18439c498785bb682a699b6345629f9c7346a47d3f917ca5398c888151bec6ee6a55eddfe73f7a51d417ff51b92ed7418f9f308c6ed20ef42ff62f1f5dd8d9a29332a95ac83fb5bdf1672fcbaa0bb1579f5c27157c8855212aae41e414df3f411fc9f372a00b5d7b392fb712bf7e898acc6bfef335b7562b20601b05aea1a390c7c34db0dd951755b8e9153c814c343dcb9c1659f873e817427fbcbbd5e5f60258ebb950d36a15fa7625e64e78faa92545e225a47c3e2623fad813fa295def7678509b2133df35e1d74c3e342f16ec6e82f02fe02318fce49ea109fb916798d1718e23b870cbb3f266d29be24765781d9c64a7df024384beaa46ea9c13ece304721b9ea0b6101975b8806c09761b2e2a678b8717b79d8afdac7e1510aa4f31f43e42f551cd5be8f836e0e58db80a5650f033e7505a8e75f3025cfcbf8a9f19d179fe15936726c6cb6f980827b59d718fcb93ed3bb957ba519ef5ec5fddf0d184b4365b1f558166d89341323e84915d057ded5d7deffe500e9ece8f5d1455862e13a70516e17a23a7044084990186436850da536d812948bcf8babe4ed016461a7761a28fa9a4946898938a1b6e8893630f26762fecb97bf1740eb3ae51e4220abde167e2cf43c91cfe6be41066025f9c462da274341618c242d9796962ca6fac206790484a4dc8cda5f5cd0121fe5f2b701d21d68c656f4fa7c8b1f747d3c5011bda4990cd66533bddcab93a51057737a81ef5c7b105deff22a1ab2fb82e2ac9be05ca5bc6709675e6d67e3dee2dc712e3b916686b1d5a5844e7999b5bfcd53e0881d0d5c1ca6f1629f10e538995c725bb7088353ba9af7b988d6c43452d873e8ba4f7a506a995ff993e1429ad0d194c2363a0f000a758b19bf80f9825d82f0d8dba561272ae198b24a3ea3785f6c88999fd970c16e0c2409ee77ce6861648b04b6659a8dbfc2fa1275d452de593d4c576ebb789300b0d488a8324a536499763c7e2a7653cedabe958b037e8368b172cc3f1113a7acc4eefdbc39425b43b9f61ac5aec3df76cafb60c48788a4892fb0141dd333fd8f9ceed8ff75d7dd79aa7cb1e0bdbdb45c27997b1b5796c39ed01812d8416bc1efb6a489724cd5e652eaec6afc545114457f28eb2f404a417910073e76f4ff28c3ead86eaf3983a9016a387c8caa85e7a769fa792cc33b17f842e1a9e6e3dce49903d7899da4895e27f10d86c4afefd428480d896b9350abe12dce51dd7375e2b817af854e1d115f17a6f36287071d8022bfb16c2279d42f501d09f73f6953c66219b53cf0d3ef9bc453453465a3a581b1e54b53235a0c876f7876c1815f2e2802b6f051de5d0b9ed4284c5db81c2813a55d853f1688cbdbb4398bdacc3259df320b3338bc59e3770ce32ccfb1d1234065d90e07deaec81304820a297833247b91f272a6ca251e1ab32903273ad7c68bfa9afdac3a491e645c8ec8b9caa22f38de1df886965d6078038e7f7f1778b0ea17df984b67416a63fc5fbd02db8a7c8935403c9f3e47f6011daac1d78e1d7ef7353b74795db705b4d652956f33d542b2d0c06b0994161350b36d9c39e23da900201d42c6f0915c6cb252be9fb56b98b1657b7bfc184dab897a88b0f8783ff5c168955191a77003e979837b3c8bc16bb830cc4654ed59072685da282831627d40e31425810620f25c8704a7f3a4870b892e9a388f499cbd5788ffd618065f83df0d3f4395ebf9ea84da87eb0d20b9d0ce61f404bf3d9760e2d89af3acbb057651ac79bdab3f567b4c577de1dae335ad035ec324201c6d433d9c7cd035a1bb72d7a286d9aba08cbfab4878b71552cdd61f4f31416f8d15253cc1d6fa55abcbc70fff3df2b82ae2af7e3d80adeb1aa3ee27e0a80720f86f08011843ff944d1204bc8084184a5abc246e3b2c37d83eb7b133052d1ae475f78562d6521ddc37926edb294c6d179e21338a638b82f346ab16f04337de7bd89f492901818ba9e9a93a1efec1985a10d8173099bc61977823cdd29647f6fc3b3ee1eddc7a74fd9f616e5af2bf5fbe64e7707e4761d0e3be7d288690c6ba5e7167c2d0f80b5ecbf5c89b27a8444941b1f70530923f1a40d2bfc40c3db129223831cfcb5cbd8d46379cab1697d3a0ae1686219a45d9e4d8bfa343156d5f850652046afbb159eb51a1ee2f1d520a5b07f872e6e4313b54e7495afd15e6b35bd47d2e0fd7f7b384c3457742cfc831eadad28f20e046234c0b15fc827b3678c3577bb5476b61a3b267daba02298d10de93348633e7978945d804c6bb52a47f4ce10bd80899f442d79df53197682e5281901041e3ccadbf0b83c86c30e2e27706eddb150cb48e85f76eecdbb0cfb464b433c09c82cfa3f3326c2fa0e505bacca6657da7e07d33a0e6bd6d7a53f32d2b170e986c0b9f946ed076b6aefc49ef556de34103420c279eb438df745a6aa2531cc4ecaed0f9fc571afd6b9b841406f8f1d10a2bd695116c1fdf069d68b9d7e0ae128c457a47e3d7ee109553775b4e6e8960bb160bee22a27efc56974b2a903468ccd2d175772903781a65798cb2b1cb06944ef28234b07f5b15d2649954bcfca5a2e2e6fc0041c0047299f3cf5e225000d03dec1fc3361537cf4d908f41e2b344d7c631a40ba9a222aee58c0abce32dfea307db1f852f4506eda739e3e27cd659ecb94744cf25ee5b061d34de3b03169815a30b7ab5f734d3db11be53286a68ccdc97a2428e2f2e3e4bab802807b887b01d1a270f27670a415f2a7cfff6bfe2334ca60601bc46ae8d48eaeabfea3ae8b5067a650d20c7f4e9f10dd08891ca6024c3b37c14915f1e0d5810ac11b5123e7529c4248dde9de1b8496f0db2c36ac28d9567e0fbcb44c90d76c8c6b74f46494e2af42c3237a09c4b5aaef81697d070b11b3dbfb92f0f8bf7ea6fe10435d96c87ef3413eb98ddee4cd0a5fc9ddf5015e6d2a957ffdb094e247c91dfcbf8544022b1adf2af9efd880921c92107d7cfba2e1792d4f678e6b8eaeb24d5d052c9fc8a989918dd23d9b1333c435cb45b722f3ece0b66fa9c238ea6cd58e14e35afc069305ac036d3572e8f5dc487a11ff24473030788a349539ba1fe30b1d06945a9014406f2944c3d723f9b5c72b4afbaf5960f8ec849218706b2ff78b03e78e05198eb7e765f8ba85c19af4e881b69c4f205c5378e78b0718d716d7e8859ff461511e6005e78f6ad09fe66c968a7e6474193d92b03dbbd3c668f7792c7000841abbed0bc6b91a13157dd5fdf48a17681afa96046b677d49f3f734ae20ceed7235507bf184df39038290a71fd2f737dab304d44c9995ab292b1a95fc21c91eaeb79fe51cd5d9db4e457f6107a21d6fd583249f6248b47b8e3cf109db739fc25d7873b991f567899e1393a9be35ad95157960f1e3cc5639e0ef75514e1e18cb078f5fb261d665a203cce602f33192c15bdb91fe5399afb620af1faef514e28b3a01a3f3cf173c878a20b34d8f136e75540309b3dd97efd56aefd5b190b7ec79c39cb922d43d26dc04b766be6808682eb1efcd02103adf1c53d29269ec94e37fdf8abce8417e016141d07e37ed673926a4e2dd75914d27029ece79e4c4d227658184b428c204d6eda41722dee04c1f3899aeaf798232770ed6c8df5e3bf71934b1dce9327ce775745a66729c7fda507d6f78715e556804124ef4c68b758673b518e10c1d0eb8e1ca35c3768e5c38b40239860f5702c6e718a5453919b594a24e153fc1abeb5d1472c7ffad60ebd8f46898876dccc524fa8c394d0850287c5b267b0f529ee016c3726e3e6ff6b0999b6ad49ba3f2d61d450da92f55c0ac26001be6cb7352e99bdee98fd547f8e1b0fb1855a4c01c7e95a1155b5d88d97d9998ce2f4e6daa0f42ac7ce50867c9ebec5b3651af2f92502090dc9e9501aca5e82762d99d812453ae5ea4616e166357f2645097e928d20cfd157dd9fdc698292c1950f960694b3ae19e244d304e1ce1fefc262651723df66055e8e95cf2bd03d95f64db1ac9fe760136c5c9a79555169af87977efbf9738c946c2b3ba5d432710fc502e920652b90e05a510111ed0f8990ad5f025407ec2cd51a704fcc605a1ee686c3aef463447e84b75a9c3e9a9ccd89a1ef44d07b9572b8fdd14b9cdb83db9f035d2dab8b4f116ce20b416964e9fb1ebb7b1e92f418bfcd8c2c21f6a111b809daafb151c50234140e637e1367d191c276da9d65be90d25dced6d8a2df0de53396940af05b634ddbf3c3cbbb6234c7acb37d4c8fa20654354dcb00167863bdb81c4c53e4f3e8daa0e5e18eeb3c33c034a2f03b19864a0f720b698a2352d56360677c1db13475943ec5cf7eec7d7827d6a2f0e8fa33ffba90284808bab6eb27b9c4b0c8ddda5a803465556b98e90cc9bbde12af8499e20a9b23837718362f8f4d9977ba4639c2fa8bbe126a0202d93cfd66c3f7aece2fe20aebd878d01e39fe898a4b8322d919111260009a68d74fcacba280c8f71f4720cd77a65e70ee8a792da12c88b8fed1fb01249d2fa4dbed0a4e32ccd65a8b66ebe5d84d1148b0aa1c9711d0025a2347463b33297bcf09c97e9fc0d349186b49a6f2ad2af8591b752583fadaf7474bf758fba5d07d11544cd248de03e7edd524b95b75c53cfe8f27d25b79625f8aab28f3edc3d0794c414e1f42a9f632882fa415b0e3cdad4761e2df7864831a521ff4115a47cae30a1a032bc9dd63e7154bd15a80f438a549eaa643c12c90e6e5d896e08c9cb137395cc5adf3fcc10b1574cf8db0be3267411793708e94e4233a24610755b112c2c56e983f12313e7c539921b67f9a7653b839f50cd8f337789d9f6de122ef89e441ec4e0cf87d03043fcd0cb8133d4fbc73a247905f026d4c28207b89a636f239d69df683725e5f7b5a0a0a73c0135bcfee4df7a022105d2048632b6dd429d61806f60e50b16c18f0875169a49a265b0737b4ecb970752a413f4cb9f21afe8efa4511813c6cc4aa31663c3256f0268dd9848b15befaf6719b5ec38ff87b97c7703ebaa4237142a3d40ec935c97f0601e29080df34934700595dc51ed6e8577df7f61e2a67cc31e08f827c37fec23e95509458ddf5810a35576d33f39d373c1ea4d69cfcdd71b213df96f3fc62e19e7df929ca7fccd7042d4d32b6a1a30b6584516c0663e4469a78715f052e4bc47acf5ffd3a84c2a6623c82edb96206a9e3c1ef8917646b607d6ecc59d58be3aa274125205b473edce58aca5cf6d8d11d99687bb65178e9bad04a08ec444e2fccd72607c1cfdba84006c632b508fb6ef19e3f9167472bd142d5a15f03f3c4a6021c9267cb18dab8657b600cea2260789897e9210125a70286459bcc55159e9f5dfe3c47c285578c3798fee69db963d3c545059967f179a0ca485e365c314bdf043eb435613bd2e30257dc85d02043d3364bff12d4ea6f75074745053aa726c052729a2efae3caac34eac18481991191a714d216419b06d280293189ebb778f24ac5c9cff4dd9eec24fffac66e79d347d48640f6c6d5ea85d796e6600fd6871de7e4f8c7d8c9c3b441eb092e1fd63dd63f086f86f6ed772db34340ef8f2f0ff098c68d1b0591d4f2dd9e5c6bf9c706114bc7b88ca3bece5edd2c6ae87e94a8aeee5818068a87efe2a0bd9ad78d8dd032a84c3551e22892059eedc46eb7d4b1956c2ff5625f39d315c6caf46c352a26aa82466b95544bf3b41fd98cae02cb8ede20cee824dce0420c6c9648525a3f1a3d6cc02534ce39fc4caf1435e6af71822bc3183f788b64f8eb61ecd172b2590438fe6cc9eab5d0b7ed500c962fc17bbab9aa372bde0c6c459f7988dd1d5dad39c2214f7de90b2100faaaae3743cf1552cad90399f5ff8affa6dd9a9c30a0907e6e5d7612f133856809a5b8e3035c1c1df5a1d0a7dd2a9a627b54210b955897ed8ef0524a44cad6588620ff09a732ac820d91a15ad62697f380e02ebf4cafb72017f1cf4753697800ccf1e336a9e6a0da0f9575c0a6b6a6523ba1b04d47bcce88df2186b5f3cac4a61b7c211a895d4768d01e98d101a8fc68ab4a88ad1db0613c68c6d20de4991bb7b9f80a4632cb3a3de60d11f16fac64ed90a4e6a86bafcf99f0785bf665d44b3ace5184d2b86a7121c7c22a088ec8c854052c2ad81cb344c81bd3d215d126ffa494c5c1c0ed0b47e98c828ff1bde8ac44cdbdc21f8d6b52c9a7b4691477497e7fc542cc32bc6843bcba297c0623cf74cd6ffed5ac7d0bff2516752d092c30f76578079e4a04286b5b0be89d839fadf76d227d8127ec8c5ad7a403a4e30e874aa142956dbe5e50b4490a7a201545766b970c6da69b536352de7d248689a6ef0958f488f67a3eb8765330b25b5340ed8e963766d78e2344735147996e835aa3970b8dc0cd9a8e6dbad067af089e18e5a1c2b474f0c0c6ead5495b4eb10e2fb964a3b7e80a2ea971018ea51f68e1f1c151ec8b24c8ebf55469fa94f1f45c0e5ca34446cfdd170dce78d03c7f859fff51943912d0f57ca59ac903fb2fe462fc590aa181f9228f27b6c3296abe4fa0694211e1325204c6e39aad9e8e93725ab42e4d3391f0baa37495102196c515ded0e0c388a2e3e0c9a5d58451ef4b0ec58961b81c57fc4d1ccc7a82999fb5c02338e684b69c201a71c6b050ba385c4a59946d87106c3abb27a75b192aacb49bc8ae693d543c4d74f53be3bf611fb9efbff5b89d4828afd30f0e7f4d80596bd71a317c58c528d5d79280d91b967f3a8663464b827414b65bc4e311bbd61d22aabce64fe162fef32b017e9bf807200bd3d9408215cb7339684ecbaaa806e4ba256f862c7699e40ddab0b988f1f5377cbefd7134cb92eb87e1b06c89aa2bddf224d88621690047fc871aeeb1df73819d4279e1158e2c01e40f59aed7c87ae08e7fd5124b0b4c982e8da8efd4bf5c5f066a537fb7e3b44c5d93fce04a9b12d37d61fb999e4d61202887f7cd1dd6fb42a2f9af1e8ec66de0c7d9dc0e552580b1fe79aa33728d79f6c87862e2758591ec483db9ceb708edf739a702e92edf58e00f329c7aa85330d432903092cfcb03efca8be93e670661fca2a70641a0e351fad1f9027e58225019ffb3d6edab6b5f760f020c7d331f4c8a46e9ac756505ec7b257945ec1ae07faa20013b00b0d606b40bb16db578205916355a43a95e9344847d6612b7bb0491a6af441bb9dfa2f6e60c0c2bdff5c14abeba42ffadd2623bccb05e5ac667f3bb9d4c8c92f47100d5643194fa9c55cd6101e266ce79577e5124b0d9785a538061d98bb13c0e6caf7efd2b68dc62cad18fcfa94afcd750fedc01f30e0023d66bdbaf94d566e4722779a6048e1e279ddb6163696429b16d7a3dd6c635029b6d247db7e99a9bbd434d6d70449216291b4319d78b6c378be6f46fd7686b2dea6ac209a17e34af1bbd09bfbf5f34efce5e1296ee1f67fa1efdd0c188f438abd040078865156c98ccd9a3bc372b5a09250f3a11b32b7acc900942f63087158ae60c8c26c30aa0015208eca408a81c45ba2f9f0f02bc8b246eaea56e06936d1b0d82619deba0245584d816a5a286417e2f6664b0a6fb582e5dd732780ee177280c97966c77a4300e4b311a6474b968d7a45fd143fd69ae55d95232b88eb8ee8e5d17c5e818792d4e0ad490d506376f81a420c66e66fc903cd15bbba4a319eff2e8e3d3482ca5a858d30a5ffb7bf1f7cba42c2ac7b76ef933e2594ceb4c143bf6c88d815d877fbe1d3a200ca857e3c7ca6469be53181b15ae08a2f287ead779aef37953fbba8a9d6b7db0fae80fbe3e566e77a2a92d0aa8b7c7411ea173add9a9d7d0a9a074993001e42ce3073fe5e5dc2f654cfcdf27c65d08c6492e0b4013ef058234e2b16da7580ff6807bf966eb1ffd31407bc57d187445a6881b002cc3c180c1112d628a8e0517e8bd77d50c16d53b4fea9d4aa218ab63f65a1dd2d071b2d0a138ca93d8080444120870172882e092645e50641e0b851df491c59d41a5696614b4ac3404f7e108cfa85e2f2576fda67a1935543d4e64ab7e0153fb82fd8e73c78746e7a2d7c0399aab13f985eb1c880df82c8f507e2aebfc24ce621ec772ee16a4e75887cf31225768c07d57bafb11fa9b3d56e36a883515fe82c47694c46e77c0ee15a8d734cb2efa6d9683bfa55a6452b0d7e9d67a0849aef28d6babe62ed4f09b78b02d1124373ca99219c18260f6617c84cce45782da64dad4811383a99da70539fea80dd40f6f986c7f0e12dabb365e8f7c4fc060b369ad3cac1cff27b634e817926f26db57ce2689eab87fb3b1471065f38eb33f5620980e43546e4f149d1e4aa1365720cf6ba04632e8e218e8b096e81fb3a8c844fb599854b8d01933f5793d4ceb909a4b65e8d6284f9b6bc8969f27facfe702f720fb8ec7264abb3f97f3c381a737c1b3d053045cae8eaf3b240ec4cbc96452005f2e85c32756a7dc89f59591d68f0888938b3ee11a096b397560584171eb7bba44999886199985de5918d7a96f02de355f24b3e469319ef605e835ac9a28a895eec2fc6fb9a3cdac44e834a73cf206b4f52f5b763aa4805c9ae7266c6a57691791dd5e836c8beec5561730875a9300d6af5b3c12c5936929bc622d21f163980dc77e845377c70f247b44221d0416e25574255da7ee5b088334176708ccfdea9d5a715061eefbf1ea7f0489a97179727bd2f013db6fad1f51d8bfa633580e8f2c56217e277dd58eb8a1b83c3462f2970c5f12422cdbedfa7f6a5240961df9b4d968ee16a9d77b26f65f5d145404065f5686c3ed5396ef65d0f74f4d0453d8bc008cf3a66da3283b71dd19da01762323e225d52945b5e8fda3c08f694f5cf21eab189fc45cde8dfbfb5599964aaad9d0ad2f4cd2799cd3e22407b66fc9dbc8f2b8790116b08b4178a4e2eb253e9bb0344a9838ecaae28371ab7c0c6883844f9fdd7a8c6e73fe2c6b9df7feb87a735eef003a934bc3ef33b4817fbc6aa5efb2de67a089bf3c764c2d3b6aee07d4708076f9237ba9b32be3aeac2cef3433c8667217b73f0f2a705226a0723f94332b541f369f072ae24f2bfe2dd46a6a4da6e0864daf110a68ecdd13d3fed20eff3d01f224b0303747c74d355829a731b9ae590c81b3ac8e9a1f4aca08a7d47c353da0dcb41cd08a1f3844c64109aaedc00585e5a4746e74eb0aa7b3ca5ff21abbbde0c111951a95a8028f0cc4763ec354af347279ae1bf3a05cf21dc02b1023ad50aa5aa399386faf0511139cb8219bdbac605d971503a2caece320584a18aee1e426ac9f18c0658dc86d40235ad828a0ff9e694542caf9e825013bed2d95701cef20a5cfe9a9577047ca02e8e7153581d25c476c07acdf15a57d7fedf4c236b3128dce8a6a4e98554d2f404154b64a72610d5bb2b4004d17513d6d3f3143c2236e816766d617a34458e716ec8c30a429e6d497546d875a85715820779b84ee031bfc6bb70dee1845d1c0003301b4adf113652afc8ce89210f9954838333f359a85d96722d8afaafec8b8c17ed8e5a1436e99ba9b727867823841e79d7798c6ba863382e8bbd774f20b5807466e7abc4b451fa666cefd6a2d87bf62224cefe280edaa44255a4e92fd66e3f491d8a8687f2f5222bed098c70a920d2ee36911ad24b39b509efd8bcda5de48df7be38df918e538aecf6f5b77a022c7acc5959b1ef6acee1cc5b083eb78806b3cb1b6a06de3f0428f2fbbe6ea7c7c8bfa57eb350f916968416a4622bee1640c4c8509cdcfc028dab537478ce28d4159a60cd69c56b3ebdb988975effe1a208be7bf3487597c863a0fbec388336295f0a52762aa77578f966327b73273b529d29980b86824c8bbe4ce69bafe8de8ae52b5ee440c141f9c3fbcd8f97a13853db3a530d22174eca35e81c48862102d7689c3d75da7444b23ead36cb802b3d946bcb273816a8526666e7586870335a76822caec4d3e2b58c383734fe3930b9795412ca0904f9aaf23e5f581de9f33367b038fd82e6f3e342920d06d8e26e24ab45d3ffacd5e627c24a569469f9c3f787dcfd4bd55aefaac7af69d940616bb6ee95189508f48f35f552a9f764b09603574137ada8a60e1478cc901964fadba4e25d0106378f302463b781053575eae6db678ab0f00a342f896bc1d0d2955355cb1ff5bfb245b437e9bc011fb12bac9aa7edcc2f041e7c255ccb5639603a50085d64360e7859235ad2ba415121fe0eaaf123bf75d9213b0750a5b7e09a322448060832b94ae4dccdb90152abb6edacd110264d662d4543c2ab01b06437dcb91adfc3301b2e2d320028dc0a8cb4d29e0cc3532bdb48786050fe65f20344ed917f26abdc1078d1cec70f669ae5503ecac0630eee3aa737aea08c662743bbc937f2f16096fbd277b2ba999520cd61abeb215c55e0945bd23283a9dc471b75f6440cb9abb6649c733a41254196a9a44c0b46a4108f67d686482edee8c10ffabab50bd3f1d348c0a6dde527826c96617ae51b31de029670bbf6968c3f425b3284d1d5460a586fe43a81decc58029802a65224e6dea7ef7bb455081f186cd8bd8b962d746edc7f95c85a775d91253fd205a4b57fea4f1113557fc2ace215a191e848fe2f0205de86c36d047379ace228a86b9d0f46fe38b560d30d8fd67c742983e0b75386c6b47f2ea071e2b725cfb99bbea05494e7d97c12bc8fc724f4036dc191e0f7a6f83debd0361055af651aa8bec5e63e71f747eba63a9934ee59e883185c270711a1fd87eb80a63f2f463557d37ed40743770a7f49788461d99656b7858ecbf6acb84c19f24e8014120ee290b9f72d4abb3a5eeb8f82043f3ecf6e020b229cb00a38ff7826c4f77912f33f5dab71f3154b666b6a63d2d82a47fcf839f11a3e85e5dbafbdeb9dee9de5212310264a90b1b5bb6484bd8dfb4247846218308647e8354d3c21511e39b4edb48536d1816c8472a691c088e0549fcc5e275c9ec2ae8aeaab93c666952e2c0d36e02d26db5e628f37cf8ffc5108e3d9a930a80f949b6d3a22858e3970daffad67a1b7383b08557185e92560be0d7c77c6464b41b50094575d329eb33be06afb768c00c001d0839d0723c4075d4d7846d1188cd55894265c74871e49f12197618d1b41f95084f0fe805b70e9c1d10d34355df94879f3747a223a34cd96849ffa9c0d8b4ea5b689b472ccc9d56481f79b22ce87b2c0e0a61de8ead34b292ba34d5b7548e9f520c9688c9e7617b590005e140691c1939651cc47e0c6f57dffee817280881c82aa00a4f79fbb2da41918109a4301611de0981e39b0d64622cdc3a34da7d2f438bba8353c9096959e36097f7b7e62d76c135c764578c0c9bf0be70eba37aeacc87652bbb7a9b0de9972bf496bcec9f6dc4fa131a166976dc5eb91d2aed8ae9cfd0c90300ef0161d0a8a6ccf7e50fa04a8e650063504103a7687e9d697157467eca318772e11bfadc712641a3befe8175561be63321bf2b7eaee8e2b826d47d6865ff27330bc7fedecb3f6ccb0a479bfed526a7edc90bef2bad5c82511db340b84b46a6cafc1ba6ad7b23ff7c0580ecacaeaa1a62e31140d2180189b7fe2eff5223f86081e64878b93926a10524b99511d0c9a35ae6425b5e0586b59560af35f54bf26c3518252aa8b818196a6fa432ef1c0f38b890527ced0640af3e59a9e9be7e0266bb5a753478b9f803a66b12bb9ea4597b960c4c1afe5e83edddd62ad8b12dabab6c921aa8080e0cc2d382c24ff2fc59a5328b5380a53d1adc1bbcda109368b9298a195fb8e872be8f390049817b39976538f5021a6181b6479b8f747123232b14b771da486847aa096ee15036479aceb0f7ac3c824b8dca84a94898cb6906fc1a53f5c85308ceeea1cb7e29d2b88f695f40223ae6d0a655eb83ce5732395f5f3c1676ef1744ef7d62b1d2d45056242753b4401305e0797e407b6da9cc5f50ceed266853c10151b04a08b8e250474482d1c79e1825d4a11261196dcf018875f9367fdcd0c15b43a6d44bcc64ca28c9d7a88146aef8ea430581c7b43b127d3f94569549b1b6f6c2ac9b77aed1642257a3ed7802ce486b7435a77cf38cb80df7b0a5880bbedc0feef2b587c121617bb48827ef76d2557ae9172590b2d33dace42e096c957d97bc2c7e159a065c1d60b341526f3a804f8f0fbf0e2d455d0515ffd35f7804d21ea495fca96045182d6cbdbaea55c2736ea5669619dc3bcdf40e798f04d688332f0e0729125ee4c1704e2c3b1ba64bbb95b555c1886d24300d9bf4c06f907009ac227231be4b9130c71fe7beb1561118d6fdc412941b8d2f7d2e339db9590acbd1117db9179440b975a9776d10fd15c32610ccd8cbd43775d7ca9f8847cf76427f4f21246b28282f6080cbb8ca19129340322bc672c5c8586490e3b98cddeca60463e71082a29b3e453fc5fdafd4e07c8e66472782c6ba66ede9bb91c1496b46cebd3cdc91c2f9ff6b74781fb64e1aea610f480c01da34d9f7385b39433d67cd970120d5941b7e196d0f0933be2fc49147eaa317ecb40da6cd729cee716f31ff24dad02a541d6a72dcd11738a37d5b0b5095e87aded0c4ad1d94dc6d6980c16aa772c97a8334c51bd11218e5f5718e37b12122f680308b4afb970f906f9c8d661edf00d59f2c40279eaa1601def8bbce68081022fd7620040460afab60f1b7b4d7ce6e90f87d223aa6402ca260baea67f14fe7d4716d6451ea0ac83b1770516fffa7295c5c5790a26794b9fce730fab565e6e2ac0b76e703b9b4a8a03152e570f27deb7641295ba949562bd5bfd7e423214028eb9668f153eb625bdb9ac511d1f3f58527f42537e9788dbf3338bd741d3bf95a526b7b41ef69a4c34879471943a37673258fa7caffc69b4744f26ff90286a9bc2c08980f67d3d956d4ad0597e25d15cc90bc96a9e140218666c4d0c9b72d083dad2ff7c6572ce314051fdd382fdc7c7f587240b3b2c2c5d05ec3c1f5c4e9b3a803bf1d1242d9723cc4ebfa2e1df90a167c9b8de5e0e582d219a226ae7502f90457d5aab7276d7de74072f9ac295f7355ce368f469da2a75770d3bec62a0f2c32811820c4d3bbdc53bc49291ee88b5fc7f8a0a14d457c3a12af9979ae6d2f726e5702cc4477898f4260dcd0efd1a300492d6912e32ea74c5d663db0eedadc479528add1c3c1059f38362e0356e1e3f697d881861c509d6320d21dcd8dd32cbe3920c97441d0ab4b2464d3c32ffa92d04a9ab4fa03d4a6e8949ba2e7cf2d048bda7947635fb95eea94983c8e38cae5d0e7e4daadb61c790fe18b53d25faead1464ccd2b5828feb5d758f97740ddacf897a3060ffc714d721da95e714fe88f9a497ad6720856885660486ea7ece5a8a45e710185ef770d53510a503089dc3606defa592fc2181535ba60b4dc828bda3e7b9adadbc84411ab8b36d6a589b5b689e7b704a68f11b0eff550cae499ca5cc8a952a86f06a5e8ed6cfb900aeac11434978c2d73270f3a50c7595aa7dd87e7e496372ee4560b90e95706162103fe27c87107424a4ea99647645700a25eee5dc6f15807e51da1ea9405de7c2437108a7c533da3f0489f1417194fe3228a385d72127fa1eda8f4b01a7d34c8c46ce88605337e0bf391ef0e1194e5b59b565ff665e13cbd8799f60d02881f7d5952c8185d0c9a963f3110002cd972356337072703489014a319428feba9871de8d7cb8376740c550398ca4d9e378008b0161afbb43b135ca28b64d227838f8e3380e9518667b126b97f441ed3e60d178b7ff5ea6ce7300a67f7a2336b1becb5d72e033f54ce2444383c658f8375c66144f94c35bb26cb2e4f3c76c3679b1981d3b82571f72f6d2f4fe8c9645276fcea81377f8cbef9d61a9f63d408ba5b1d2bd07f7656fd086be53bdd065eb83907ac78cb58404d947dc03f7ce3d46e32e683bc2c1fe90d92458989a6ff0036edadcbabba44186d717989656ed07a43f2746557a9191c7d93497fe39fd6a4c0fbe11440ad00427e57c4708538c595a0b1528d99a312afcc7f7216cdc2b6813510af8b4a8a0104bf764a0f7aa1606159532174c75d30f3355e48302b6f3f1b65fdce5af3969162f4710c9075c56e241f3bd0cf3601db4231c8b9840fa7a6a1473db823f8cc525234f59fbe22bd85f32ce4d985382c295e4b1cc26d894def60eb4375b658d0cae1f6ac35920e6bfe4bcac3120d1cb18afdc6dd7c9926276f5f2ae3218f7fa3c931eae4cc48e4a3e34f5a76a63cb37c5812ec126782bfa2513c8b258afeb3abf2ec2b87c267f46b9f0a6cd8ba189ece9b1221d9f7fae059f77a82c9159cf6cd6363cf39a7e3bfd227434152e50c3645f2ae82686e6bccb0a8161ab6db3bfb3d0ceb12fa50934337c3c459ec1178a4644e497d6703c9e901d915051b2fe5a3d95ec9fc3a870b64b317aad70e152a3e1657eb2ef22cbb8aa7eba27ff2c64e13cc658d68f13f7058e0e9ecc0c23da70d639085bfd8583e39b36390e696a2edf7d811668f8fec0127fcf2318b272c761dd7acc1da21e7b07abfe666ebb260dd573bc5c613a191170b22961372d7a9846a46d4165c1f136a6297fd5bec984f88a1db2f9ac7b6be45ad2b24b1e8b0420857bcc4b4a9a48d475fb3c5a9c5feeb5370cbe621552b737cf5720e4375f217f1687d7fdb19b6e1b202a19325e8f0bf570764fa70e9af305f6ee1e0be6d51dd76b12cb2a499296e2c991f01e57e2afdaa6a14f070158394df85f7aae4042c4a91c9fa14930cef8b7b69675361abba3506fd5e38325127ebb02667681733d0bb94a264e2e31b9f83f2ec0a1c0a54bbce475df93aa960dbda7de200c2030f9dcdbc10c848c6e13ab7dd285bad8ab8dccd99b9ef4655b74b8b1ebe974bdedab8b91887ebfa1faf1c6cca7e2357ee69ca5220a2237e0fbf8e144e9f68f35ad738303ded63e84270ff897ba81039dcc73ab2a2e64a46fb8bf632d42b886ee848e468e0f90567216a44af0a5ec64975823a0340a44c61932153ec364bd4bcc81de52e8ecb79d597a273f03832dc50ab01f7d97316dd5866732730996eb2b2e971849ad2dd71af997035d91fb7ea2875a8ddbd48e26fb1d55eb6bcc58272cb963f943fa0221e1ba7b56d57e620c6d2c9b9e8adff3de1e6357c82ed6e518d630a2983f2e02a92955633cd287304c335a109d7159c0edf181f3030de99dfb9a1f4895b25654c6fbd1283a445d5f64668472e015397f1db376182398944368792fa66f1ae0600828b6e95a45dd90925a9a3127c8aa5e951b07d6ab52ec2dd5be289bf5eb76f9502d787d446c9aa383846fbab97d455d9f87ef97f86305f0db3eb24fd60f6897a00e2a1f9d466422406121d78ed82856ff0d7f639f88800bafa325007daead434999fd8ff0b8f03891a527be3fa967e586a378a1dce29169aca99c409e31655a8e864148380b199a3f9c375ef1a64093bb38d3ab92c11ccbc769daab7a443d7a6a93a9f9d2efe73fe5da7edd09b112c5c25f2cca1b166d767b5832cea769da54acd70eaf1412ff38e86d6c8a69a63953eb453b5bf7d40ed577bbd649c84976f2a32b11f37fbd11c699188a3575ab0e01c97a478defd690da4a6b2e6555d9e4d6acd0eb1a376795f464995d830c1ff6dd741fbd15ffb16c442e9102ab3f8aea37ff1552bd74eb8b987a08f89aa5995c44a909510a8393dc131cb6f49bfebc0d0e2876c37fd715e60e8a62a7013bee6a62c106cf00203e4a3752db8df3c94089b3052f61a10ea2b9fdb562138559294cd801e004e292dd39d3b1b7f6fa3a79252d616d70013d39c26432a89c70543f7008bdfeac0fd2c8fd1a2d1b7b6e453b5d0f1adbec0c7765da94872143895d13261d18f8326e7d006cb7476e0bc9f78ae9db4e07b89153a8cbc3a3f5ca0da854393f79c1af136a6c7becf4040e881df6b827f0bdb8918896a76acba843a8b4b958c632ce50e5f714f20c83d83a1d34e02138e75a287c8dc79c5e8809397550d98bd09c35f6eed5a24dab1d0f0163010dd388c2349f2ea36416e35a122ff88a8130b77cec6850b98a74d828a1ac403520f16ac11e4010fdbf9b7861263a5ff2d72a35605d9c117ea91c5a357c1f061520c134bd669205fd2540c9107c45e26af94c1cefd88e9231028b14ea739f09b8fa9571d4b96de9aff7b767f0e0a654c350a2cb7fd357db99d72c4bf721477e3e70f75e059efa1956dd81bbef0633c14006e018b887c576a59599baeaa9dbbbceef4efbe87b530916789636aded81e87911361494af71d71cbf822e0a591930ec4fbb0673543994c1bbcd5c44268ed86f353c160f9c610c3524cfd08fab943fedf16b5f363a44969e691ecb62822a6808d25754d62320a0d7001b550e74ee4eb808ad31331be188f919276f117b68e9050f409b587b6b6bb07a0324189621f14d9fceceff057544135b5ab7025a5b82eb9b922c4a270e73e2f9f8885901721a743c52e6b73731a91743251f2a777c3a39ab6358119ef9fd777c96e6ec32ac3d7fbc47836518e6ee49eaaf920eb4b01aeac919a822b8a6450f786282b193096b97743e7ebee49e616c6a302595a4922ccaa7c75d31fbd5e036817689f26b874e03ebfab451ffae3db5ab375fbf23574bc32d469d9cbadd707421d990fd7139b2a712ad810d391907e3630c786215635088a9288f8cfac9101d811b6193d7c09f6ef57e6d23053462fc1cfe8d97015b249b20a7cfd552e74bf82f74f39080977d8ee5905341b109d63969d80994412bf7ed084e9ac600a489e6e897f6a161a53eddaa0d5cb679035424c632b0fe58278c456f568d2c0e3e7e2bd22723efae13e0c67ed5c5105f1b38e57aa49967e6bf7ea4b7f920faf5b4aa9035e74a0a9a857b2c7aea249581ebbf3b47e459952856947edaef3c44cb58e9fef85b5aaace250e63b9effb5dfde0caf46c1f1659cd21411a084f2eac8f0d245028a81ca344f082d9cce232d0624d645711764ec7823891a2e4d8406626326c0d63b79c1e0b3e412971d42143625ee93264a4fb0873640f4968582defa8753500e7f1133cd7ced8afb9bc2ecec3c2267b075786d2f9785d10c4ade7311642d9a4f361912f76c5bb38c8e5e2dfaafc9b35fa9b3dc4930d5e94d505b79648d16769e039878c2ee6c43c744d820f4bafae8da47bc64f7e53b499800c749400f33f9338879828613a6c7b712e41be6585ab155ae834f872c3928fb1a29100f1b475e61bfa6b4ab062d85639a06f288ec434f6597611f40b9adc39c04dcf935482951fad42195b51d5165f3702bf3afa2ba0e53446ae524892569d6807ed4fe9ef93545f2895b71d0d0ef06280f28e196c34745bdd77cc48858deb9588398f7991386eb50beb1af06a74cc6f11020e3d3f44fe1f9458896eaff250cdda44244f73741f6dfca5c16224eb1f2b4bf88ecbc6111f8b032e26a6065c0615fe0a1c592de8e60f889206aaaff416e3bec52b37bec843cb591486f5db61e3c8cb433e17ec4ac83e5fda4820563bd172a4428b9c112faea6c3a22836f9f3bf2986911e2605a14002c3d42ff0ee764beee7acb5c42430e99c249cee97bbc70d25d1c885ac6cfc776ed499cc2857a46b3b481af44ae5098ebbd9fd75b1d2f216f09ecaef779384c2db4f133f841dec5e3559905ef638b1518d7e08952ddbaf9a89e414eb01eb6bcdb7b2871fb6e21e5cb44cc56e2363ceb809e4afab934cfb9e98568fd198cce1a83a55a9565c7693829af27be3a584c8f77c318b58a5b76e4def2caa10f3e89c40de1176be55094edccd539066cdfbdaf664554117e96b407a418e946ed5921b8cc9fee151625649ebe8d571ef65f75ed043039697daa2ccb43a4ed88814329e830c4c5fc8917e765b428497834e2d8bab822c90a0feb62ef0dcc676418441fe4efc17248a7dcf190c2336d89b9daaaa7d17f7af07ea06f8067e1d4549d709ff8735d94b6ad4e8b87f58af440a44fabb402fa2ffc96092a5f05c9faffff4316085c80c5b602eb4200cc18d9052bee4a27aeeaf2a867b3e259ac51d0b9b3d9cfdaa0b098e4ef0f20e45d7105e74062b8ba95b582bc9a1c2978c1be6877479b821bdad585e7fd75fda607afc447b531c4d4128f35d6bb0d9db343fbb81519dffd33a8dbae5c6c7c8fcaee8c2630886f5665dc5a1ba9b08c0faf4c84db9d1b1f1b44a273377492118796ac5d8a090ebb2ae343abf96b562427cecf64af9e7eb4ba462e51f437608050a0637ab87dd78505ea60aee64045b5d8a6ceea0287d1be0d75ffdbdb847f20023e192fd8578856e1564bf7fc42e8163819a9bbb856ce299598341fb9db9896bed616b63cfd0b2641773dab525522fa704f575d2c88c7577d3fc7572fe47608d32edb32775e24819efc65f820edbc75ebf98f9d7accf6f7baed33f6c57c9b041ad8c590caf596e2ef82cbd4a84d04642378f6a187f160777ae263667c93835c9cf21db16bf82c247e435b0f6df0cb18d5f88548dbc8a94c120ddf04d381c55fbf752b3e2718b64c680cbeebd7db69512320e7a9f413ee88c588f683c5c62b2b883078518c59c4146b77004bdcbccff3e6115fdf5fa01b159a516ef78903656b345151a0e4a8af5da5b385433779676c7343bdd139c3651f29e11421d4a9c2c93e52a97fffbe96b94ed42e802f9304e1d32fa09b7e2f681b993310883a2369d5d14a7747138f164836dc4d39a131807d39dade8dae8a6cdb3c168ba6e1d34067eefe19f37bba3ef895802b68963d5fcf3e1bba57945ce14ad370a4ebf6ba2bc1afedd92baa6dbb20796b4140694d87366ff0d2cd2b2aa9ba552a4ba447bbedccbba66316d531dac0cfcbd6545931d2593dce67362d09f128d84169d033fd14574d29ccf6f66b28b0b85c5318e9467791ed4d090c7055ee8fa0ee3056626b57ceea0ca3d810de0402874d8bb31e939f09ff022a0b9add5734640bf691004b1ba4e07f0613c3185ce0895d5cac26fc20861a740ccd322411d33b178bcc26097c2f5a5159887ee2339a74795152f824f4588730dc340c50cab4feccdc8c4379804b6c082d897035a33b5a5fd9b589af00af0de796d3f49bc9e08b6ce1ab9b8e210127869d14871a5bb25b59e15188878f9b38ad6f82c539ec8cfebcb2149bc029cfdd9d447e64d8ac4d7ab078d275cbc2ccaff057b516a62dca461141625fe1714c21bdfffa68bfc54e1e4c808781c57127c7a3005f070cff673db681d052ed502b4e4c53141d0b1684eee4f338c25c4fbead08de6660f50aa572a6525961a78d796bafd9284a04d3f325f892072c114f45934e34a0052061e9e3e2d7f7922416dfbab3d612e3f81cafd771a7bc3eda87c9ef2d7403be680f42b5d58f1283f1d309f24dca57d351c9a16abf9fc03843f1ae8cdd8055b9c8c180c4ede5af8dbfd4608f16f50c1817843831dfde6a719649248732286ee471cd138a6715633bad929447da5c090a2d497f36bdc36e180559dc9b31aef27a7ff9c58d1d69ffb1bda1db74157fa55a86b0c38bf712e2247302d85d0939ab0af76941597127501f773bdec0bb10d636d9b369306c5d32329febbd4835a9aedaa0ec580ab31fe3219738df6f1edaca3b002440a55293a8fad9b7c660593746c27add8cf8c8ea51d972e84869d1b5b715ccf2cfe7ff14d4712c67c430588a9dfdccd69550874c6dcc0eccb828e9acb16500ba75ab99b89218248b39d60a59a042f5c0763093d30bd8b5650df7909e58ad51d192c9bfb58ce86e10adc2214a9d3c7ce957c4bff412d66d9d53582729f5934af70aa165e7d1c57d9f88a11412087e96ae0500b60ebdc3cfa204f6e7eebd5bd369523cb3626dc2e40548575e0263a2226a9e9727532eb63ee2bbf9a2c3ae49d81d377fad965cf0b36ca071c9a067808dd18eb668b0b75003a059201eedb2c7f575ddc761faa37a0846425d34979905b6e6d3761d8789481fe5f0a7fb71ef53b208c71bcd5d3bc0a2ef794b2c84dd8ba04306382ccf104f1fe734002056d5952934e884410944e12772996f2f56dcd22445934cd1370e42b37bdf26c0a05490731e9f9537b85ad4faaadea22b24ee97dcb62071b5365950c74f063b20ae12180b3e7b7e3c92d53792403ac63128e876f7d4b94fb7ba869658316ca26ac5dded642d15b7df6ce395a95e999364a63cfafa48bcb09abb67b5711b28e94eeea57c120a822a3d2297e7f565e316427ff8b7822cdc56a4a9cfb581fdec928b0fd2b658cc70fd69680cbd7d8add233c31fbad448b6726035805d932a9c2e4af94ee722d3f5613260309d5e595c894c7da553b73dcf38736346d2681ddd2a728c752c8f30e0d962b2ce5f71c14b7bbd256d06d46d253675728fe986c6a72739ffac5ab91866b511372d81a0af4c9a9c5c624927e07c8adb344f315f6ce0851f232aa06b277e6714d797aeab233c2997fa197f3e48f635953f212209c51915af1639c6e5cd6199257c140de7716446657d4eb25434e32e5680ddd9d3e3c233d6652e66b1a7cde9ea51ebfb86bc229ed3efe45b47fbf21a75fe4f1eb207e7928938bca6d6219de35a4f8a0425377665e86b983a941a0c32a5f146d8d32fdfea417346a8e529c507695217fde0ad085e4e3c7dc353262d242b46a6b954e5856c545b31e1fd105c6a3263a25ba7039e1c805356d8a2725ed6773625d5295210f0ed9f55173957d250564e7bece58e5c433eb1cedf2be1bd2e50be18380434a43e34bdc143d2443e175894a6373c54f4dfcc2392a83b2e9c674e1f541c515d6f88fe69d7a63cdc8e4763bd9dd4daf3cf49d1292f720ce71954859a22b616e7fa8e685a669c30c370a8351b8ee2b8fd5b72503462fd414a8d19aa469946bf32827df732f0f7da793ffb0030cb75becde3dca40a87740f569b60815ac3f5569fbd531728b205a76bfa3668070af6bd96f0d3f7cd2a64517b2ced5c9badfee20340b0aba0b7a70cde22c7c1c1c2e1cc09f54c8b8570df9d0799b02dc9689b1b8f710aa16d9c56704dda78baba9f234c79e2f54ad172dbbc4945105cc8fd041327cdf2806e24205cde8e1032e4bb077a430f51e931f925df1bac93394af16ac6fb5c54ef6d00273591969cc3552163b42fd5ee053dda1b534aeac2a3e86653c1d3d0402e49837a9814e85d3a2ad59319100b86b2f8ef23c0ea7ed9ef32ad8501cdcd13046cd29b27c37a2eaabc84b3d2f9c92b9b502b2bde826038ade03feef8243c013c86b66da7e74f243c9bf1498bc2e7e3310f9c20329447ae492ada7c13492355af4c709277af67264a76d8d9e9b43446301b2568b447993436bbaff92ffa12121f51b680288004816517ade6217e65338dd1964b0f7277b74929bfea905e6bdc2d4c5824dbd31d2682ee7b8306142485bc6471a7248d2b926ec2bf3f5c58a58d8621efa4239c9b84f8a2b87af09a65c28e40d974009d8e55bed228e6771d92e2820a4cf61c188d6da659ab930ec37488422a7af930f4bb76219466ab28f51718506f7ef955422b39e4d6fc7e9459b986a04f0626af0dcbfecb03bbd0a8296c27ae99f5220e5920fb56e9ee1e56d2addf1657872358eed3e9f0292555514fda1008e685b79c2b873ed5340d492fd2e6efe65dc76b8488ab0b0dba95047f17d71e613aae13deb422ac62e7cdd70ef7556678ffe329e1f585182ae1f4a9336890cf2b1c6eb7d7e526d3a8318c713a79d7ae14c56a4f52cb5674ec41d6c678f9fe3f12ae33529134fc8f6c907b3595cb2ae1c0c9077ad581d680845cb89c033335f6bd6fab5a3ce5643c0c72dc1107d09b5c9d1e4ffe6d04f4de235fc3feaeaa1da5c5f6ce82677af275fb0286e74eb37011f189de96d8c7478698e7189eb14423f676d6251e1e9b57785ec4a632af20b1dde54be9992c40fb4bd6122fe75c1575e965c9238fb5023921648c9dbd71bdaf368a121b637759b5c3af36b89e831414fbf168ecb20113a9382c62f0b9959ecf1a474927486fea2dbe5b62901bcb518b051e759cab9a67e4e7e4eda4b4dedd5f017c2786c7047feb051e6dc2472ddfee1a59eb337075907945430329048b56a09bbc4441abe1ad97980b2d1c2372647929f5d71a51d6d469024bad6de7119ba71bd1b96e7dfabed80f3b974694c46bd1593dec826e84801accb061e917f286d39e9c9a5a99d04f676385fdcd88e24ec38c2eb33044a53d8c199332ac20e1df5b1a16ef8b821f341ab430a1d7014c4e43e8eac2da1a90d73b3d4da47a7d19a9057fa962ab66a75b9ebd7411a2b68a96c5c8433be1e810c4d4568a9705465d70ec9a74bcbc24a22433f1215bb8e79c17b5639a34e34bc19581bf7c33af6314e983c2194a17d525bf7e7d6e94f72fc52154e261fde4a700fc67b9c173d1695512b808fa00d02fb851dba8d68dba1bfc9957654247257ce3fee17b3b5d47ca5b7717d6955e95c34b8548ef2305b8311cd43e202e3166b214fa1151ec9888c4a5e6822831f04ff7794bab7d9de31f4e67e0419c87fdf2156125642c64dcab5cf6c9bc479e550e681e5cf16225d01f58a91d4e2ea651b52270de8722aefaa472568c0402c87565393b4bbfeab99b04526f81333cb0b0598ea829709bf444269833a95bf2fa936b1e8dda0f3571b0bdfd52421012248284995f3387fdbe50869eaad7302311f8a53156e5fbf26837c6f0d89d25365de06ded8a90a3acc7b89519e7fe28fa580516edd4bc096ab4ca2a5255521f14f3231eb79d9974a6223b4e04c3ace7d39bf5f105045b4a65afa6d4f417edbecd39b8440f7dff67137d2acd84dba0ec8a48a564bce1d2d42792e9c849ee7bf6e8a912280f10e90fa7c93d8352c10f97eb1fcc4dc7a16aba39c9265a4a099b470712cf11f4a5d18b45db7091bb7521c67ae90cddd0ecef8d85d8da9a95c5c28bd28e1efaff765c9e3c98471c0b08b52c95877ec6af1d7aa032e52eba4af574e2c0a02a0eeac688cbc207f3d815d7ca5d6c256e061e9fbc11e6e78608d2057e5904497c360b142d78900851f3cb657b591455f69fcc746c36cf1b0393ad18f215cc5381ab3a0571cb90cb8cb25ed0323190cb8e58d2d9a5b066e161047069248efa919882b7cf70082c97f882602a3ad37af82836516a048fabc95cdb4dec0d65e61f05701fc841da96065115a45d5f0e604a3780c01598140103518e273d9d68fc98756a7631a8ed1ba043bdbe785cb1bb55c9c414d455803b57b556c9c286bd28c3ee9b5698c664e2c6c24ce92868d5fa64a8be656d6308729f57c80e244f6fff97415d359321d10397bfbaab01bcb3847748ef157dfffd7c36f2ab285ddfb8d15860ddd84c66fcf1e9074b290462abdd6f3915de1149ff19d658f56e7bdafecc2313ae402ecb8df91c56b60c7770903cefbfb4f7184b61dbcf8ea28866b5ea61ced88cea823a97f4091c63766d32d0fb6e3e5f4dfde4f56bcac1d6579aa192e8dfb4f3396c8e28be70856cdb62ded8923a49bb91e7a116f8edbdf880dcdd78c6dce3eb3c60928871c957dddc42945570e2b328071ae148256c9175a063e2a85e22f9416fa2f565e42910cf0ae14f76ac2e4975af96f7e7ddc0c4bba20098165fd9d60f2626e17e7a3869bdea88fb9b537c28d568729dd5e5142566df01fe8584ddcaed5697677e8bb16fc224a095b822772a90f644f53121a0d9aa9e96d1fbab754aa94eafbd70cf9dfb217dde846b3c50ff622819368c0757c68e33e477f2b8e0f5e396d66cadf103533cb85b9a087bafa9c3968a9621f3745fd4d724424f73ff9af618d5e639ddecc29599a2df2c9c95128bb8ee6e7494b973d1a867cc983b1972ecf3dcc975dd8cc74ea5e27109fd77b3ad5f85e8198e2e7c9f6b37c893f0770dbd75841a68193564a6544499f4d08c51b8efe4a2c0173ba0d8e75188004e00d934514a721238ad61b760ff5df63aaae9d2e5f9051244ab30e561758cd21950df3f85b9569b3321c473545acdb2f5f651a375ced4d6cefead9355ad750583f0e9f898ce87c600fe140ee9a3cb5da81d0c3e3c2a42e7bba84a0c5732c7d3bd64eae81cf8c3a4bcee7be7f8399ec02d87483f711782bc416ddd1440466f6e3818de4f1f932495ca8d1e83b1085658fa1ebe360894e0cb15cd37b6ad538276bede9ca5f92fd956641f616ccd6119300ef00440e543a15e7a5547a4b5088c12d5619eea56d8a1a79c083f90c1f2965b66d03f0da3e662fac76bfa743a61ef1873ec95bdb9ea107401a22ee768d63a604b562dfe5e950a3d15da1d4ad49e85e8828be018f8ce4d7a94bf90c746d21a431264c47f1fcc18b3acb6f6dc2c2238a222f4558da458e5e77879d9aac50ac75ff0d3433ce49da9a11faaa529baf50e8691bd9ce3f3db8614f6d947c07fe9b37b907adf7893f5e3b5053026467d6454a2d007fef42b811b18bb39c10f8559a0788b7efc12644498589f516599631e588840bc332e38813230a40b3e1cb4bd061a59c76a7ae482190614eefa29afc6f9be01d31e33a225cc787f9e0ba41eaf9cf5f268f7a2fa4aa45c00d89f73a527160ec304a6c37250aa4b10f8bf141a280a8f7b70242e35dbdad271714b3db6a02b2053dd32e21e2a42ae6e02f7c05d778009a4d6f40469b837fc0fe5c46dcc83b4b027b13bd53800344918d24a25b68f89326f70119b5bf6888a9ff2af11e4b0faaba07823d69dec0832aab7b23bd96afdaf4704c4d2fa72c9ecb8a2fe95a4930d635f2bb6910a39d23de2a512032920a3f5e91ab248f227f1baaf766e254ac5996f425f1e7b9c766491f361d4220e73c57aef61a4263b3a4c5c6bb34810316aac44a35be8267f4c63b4c053f4e7a8f3186fa219339724898f8d68c67425d572a897683aa32912b9993784f9a81eb6e6f645c2dc01a11b403d63fa107b8f24b2decf9783c8a7348476f4406ffb8ccd07151bc857d953c00c015a3a1ee1b6f098c5e7aacc6ecba3aefb1ce5dde8a24baf1c373bd55eba1daa608b3cb05bede05ff09a8a55bd0a493264eb7bebbccef76e4749358ff9a78cab4be44b116fbf499c066c9b2b7f52492020fc40e3dcf913333f3b652771afaf5f82027f1bb5c0194721c2fda2aca6e0f111294bc59bd24d6f9c2c3f0f464a40082e30f73153bbe694798f5db0ff2bd502bdfdc93fc82bec9f567b5cdc3144b7ef70c2f29dcfae4525423a1080851a988d6486a55c284b38e9d332efea72e942f4a83c9bae258284a5509690c78843d5376d1ed1ec34a3d9dcb3005a9e1bea8e83474f5ddc6a8b0dda36ec7eb54c7ea8babfcaecbf367e1ace4c3e4306c6d0f385e1862d367744fafa2fe9d58d0d94752c73eeb040cf40491f4c6dc1de637536ed0e426698839a472622bc6ad90cc848585ce0cf6ce7d47cea17eb05ae5f77bc092d7705bdc1facbe69f394d15fa50b5cd43111819061945361510b2c7e0bf379f19715fb62b384dcd4ee94fdc2589294bad66e9d7fd2e63f5c2b123beec27852519644fa0fa8d22dd3852b1c930e3b1cfa928b197dc2f7012511e99211c12437d0e29684261875700da01413b766d898be13261c6f399fb832fbc925d2f8b63af984d86d2added5fe18f8346892d20fc04fffdf7e3f3b3e6e6128b1b21227ecd844810b8e096aae0e389f2645690564125a52b979052ea1d98d24f83243bdde3fa3997c3b5a9d88e985424f496a71a2275ea12f780c935efb575676e3d6f365fa1a082807ea1ade5f20c2374e628dd0bb13ef57b83e9b6aaab5d2faefd400eb6141219e3c1f47daa5c38d28cee854162c68e42f16012a6e59066dec25ff385bcfdf02024052a326d095ec9e314716950d215a4a7d7ef1b200a651be03d6dd3e7959978bdca81fc5311094f8c219f0b4d51c586bc37d1ec323030869b1b57b48cfff23b62ad8250b3804cbedcbb35e46003e6d396b58a69b36f002dc9bf0f9b58d94eeb23389db270c4be9fc36a9ad202df2d04088697a75a2c6a28ae06c83be8dee0e9fc459ede64f94e339b94e056bc35ec90ac51bcd538f2b3366e987d007b7f20e76694dabcbc22a8a1cf540431473010c786d2e2efa1168b6fa5788627fa4cff61a5c3cb9566738b9c9dcd33f3d8fb5feb6b5a329325a65fddeb809baf5f3bd258a5fd208732066a69553e0ff7ecbdd326764b38cb5965132460bef7aafae99d96a0590efa88b5b8489536fb06eab0c47e54b856a842f3478a2dc3bfdd37e8540ac2f38a2e7550d7cda045548f8d0e33f00c8b1677a87176335daa37335bff5620b8ad6a05f0a56094863efa056ec19f39d980ccc2dc9f34f781f695b0dfd881db4fcdc4d619bc3b0545735bedeb6871e05c8a81d33fff64c04f25328163b0d5113ca1a67d4c0cd01692cf477cf1454f7d77ef6e2668a0d68886cd14f98a25035bdc12e9261769b5e225622a6da375a83e9c6acd1da8302b0371201aeaa01784d535b2044026e2755709a96a7a93cd027405b1e8efbdb517a7ff6ef096fa223c44d10b961c93febd52b7253dab8dbc6f35c1cc42f7f4cbdac7eebf53355fc8c66e854d2cb1e2d29c7fa943064e5dd094f9c6697e0d9f698fff566c8e8c87ba9d049216a1a8700949914048d24170097b7d8702568b4426daaa9ceac697dfcc748b2e9a8da7a641e8efe004addc9db9e75a74a180eada705e6637e99fb8dc161e1d34d4cd39e82a4d11e094d5288eaae3000f44282585a949ae7263b859bf42f2b1553823c87e2ba9bd0029f9815b0024bfe6bf51c5441139270c434baeee3847a10252516f6d8f5e5ecd53cb6410af579195f52349799b2a675596da8d69c56e9dec4da26dbafc734ccf48c2a84607b1cffe76f80cf853e6c1465a072cd0390d8b767e5159f08e5554ac2ffa8ed631622f6f33360bc567ff57ad08ef840c9eb70aca5dc5d073a59a09322be2b5d6b52c44dbddf5165e4cdc1a904da7c98f889640bb5e36d40c4922e2b6962fe942ae813b4a2cefba8e199d3136198aacddde37024f086fd7145fdd01404a678514a71e64250ee2532fdac8ef45bfe432c8b73996637573c7296d4e9f4b0c7def3d5eb26ba15c9c885b83fcc8d2ab19692ec0969120691f6a3bdfd50b5b8bcc0cb1594f87c9c9a4ccc6492a0fef349538d706d27bc21b3784d612eb4d763c1ab1c1100017c50093364398a43fe88c5cbc36eae18520353b691e25c145d908f016283845d72653df6cdb083f249b349981a91b8b80b7c941441d7495bcc7788871236b5f40ab3b1487d77c0f59596ac137273f9570654ce95e94775ccf0d4f4c5e290948ee2b7b837024029294a81315e504929fa48ed178852efe512ed674e83212894e9816ef596fee485f335d6adae6c7ceb0e7b074c13067389806aeb11d89c7c4f0ee60a340e015d94a5c65c9b256447480085a957fafcaf4b76742841179ea1e19cf005933929508e392b07e42dd4fa560eb8a062131aeae355189a42e8d04b16f9cdb2a67bf952aa5514b315ec3e7c0d9b8748f9e0df17f979e45ea174bbdaeda3890e69360f52d1fcf01c36e1059a61365e3f5060afacf11381f839d9c122f444b0e5fb31a7403359ece8bbdd2650963158af119ebc717d2f31cca973b80755684435f44ad2a6c2205b5334a1cba7d9650b6f06aa239689e390afbb0501c17dbcb41c211dbce3cb3594969e1ab49df0406a1abc8229b9128419ba90387d16edcadd1ed6fa8c58e8b0138e9b0d37e0950b6cb71448e958430d2dd920eef610177285170d8c10725ef6e4402057b35bf6840bb5754fa1bba6326ba53b531489fc962154975f5d15d7debed60e9fd63046524a36e11e99b52a446961e143350b36f8a9558bcaedb4c43632244249488e329fc23730de337eca64c3c67d659b809209a93db8e4bf313e4ffb00f3b8369f75290e667228b5efc73d55d1807876531d47a9b5d7584e9a045d4b3328417527104ac180af897b8e29e33121b2712a7a75ae3324534c4f301e6d3cde008ca2d73bcd7697694799728b9b7b49449139ee52e47386dc7848c2e81838eea3c012cd382e7bf6c90557d7c4c4b2a23bef4514e4a3becaf58ec23890fd0274744b6023c862faa406dcae990bdd911d619e96d6a0cb61ba9e4359f052bb292d82e9d1d9f52b05638c70ed4e73f51546fe1e6c57b275b5a9ffcdd99b6613837ec8d58c4889a5fca3ba27bf5dc42c069cc401674d63ae5a389223fd2e2a0deaf7041e2f07fb7ee4f0af125f7fc4f5d0e3e6cf82b6fb34e46201d318bc601b6e0436de2baa9e8d022a66d18378d24f52b58e4bb645eb50ad5a19dfecc5b8270d982bd509daf11dd4af5a6538bdffcca52eb184811cb23c6ddec17fa121ff16388f4db6c7efe8c56741460e9da6722a5667792c460da8b7fa3c65f06c70fe42c9a00bb1bd84f5e7bb2516d09e9d4d17185a10d9c65703e94580812c5afaefb333aac483e329fcfac57591f813779d6d118c4791ff45bb3ffa21abd63af594d94b5dfdbe301c68acc6275e7ed77f2dd5ff9702b3051aa7c66c644cfaf4903eaa64901db0e4a42551dcd4a42773f6cb5629c7fe799aadb347a468760df0e0e1c22ff5b2a4212259a980953e1702ebdda9966fe1bd621914300bb80bd04f0f64aed66395d37502c3c07fd39e1e9fb41b5e4b5317ade870f2e72883d4821d4be19c1b9985cd48e91050855fa0e26797d4e546d42be4c10106d5bdec071a91ded386bb3b9100b3a8134e63b31a5a997bb7be9ac2562911f91965199a0e680cbe2f672093f80174f14952a03327befdb99a0f88bf3e0f7f5275176fc1df7be44020e7a3db7e2c57c7bc9b5dca129ff45034d7bb60fec790378a7a45b5d237dc29439dc76a308ec229a2b68114f33b85f1cc30cec3efda40d42a3e96acbeba2cac834bb6c092c85182145dad2f48dc9f7bb5d0b80264b00dacb7273223366729c153446a180efed36a2ce4418c6f9f4a8897219b7f2fe1293f78cb807d8ad86747132d6921a3e28b2afcf7739611266d0d1015e5f9f59c8cc5add7090019d26e0ae5fedc348b22d06f9ca70f6874350945e3dd79ba616e2071041e8f2660eabcd6527186e3e082fdad41a28cf8bfa0e0ae26400d47e74984608d853b676abe8e6ef7a83f69407cdc66170e9d7afe106e7f6a269bf15595726c199467a5bf8203c34801b7ace68c0025f386e7efaf9d443e11d855c12f02e37c79f3f11cede348741d9e03c8b02c170f980f2046049a694c4f6092fbbdfc6230a7b49ee594087a837fe1323d5adf03e386f455c0a9805fd5116db0849a9325c91ffcd90cd7be40873c7097279ce0e82d4e3c8599adae1120e315cb9b2706b723eda296535b12e07129a93c02521b4b0cf6bac76a98c98cc16ded5f92aa342fde1f1259ff15dfe41299a173a067d7c516aa779818d36977f03883d75639a624c2faedb0bbc45e94f2ab7f4618887cc3061b3250dad49ca0e9f03e19cc840b9d591514ae223e4c67417ba228f26b995b34b082eb7c0d25a062e4cb200f9551f1703b182fbdac43817e59650e3e6e6c8231777b92f6218ec61ddc6ea5e91c90f9adf996fc590a776cfa182b38c8b286caddd39c886ea0358a25ddeb60f4386c4a09c9dafbc2e061871a1506bf25f90bdbf27e66061a23ac5901756eacd95015a2c2ad6960b7183d1efc7852bbdc59f5215a5170fe098627dd213898c2710775bebb822dce9846384b2a77e4b18ad9e22591516f9108113adef5e5990a881e79eb404ea60763d17f85a62cee67c5c10000e6adfd9d13e5a13e1436b9c1797c0b645f1daafc15e3a23b4f31457c45f7015d9f84d309063944614e0d3f9c9e3eebbed1bec88e3fd2311f197fc6e78b9ece3a7628f085f8df2ae1908b8ee1edd21aa88f5b47a80d2f444cfb6594d23ae2002eee29ddf00a364d41cbea84410f20ccbd142754d16dd6de6cb365b7e5497828b80b21a0b49839889419fafb74b05bdd36d3cfb4f7a8b639b05ebcb0bc507b8254e42de9a21ed995eae1a6821fb4e5757468e5e60d31f817d04768096bb518487040bba4a0cab73a3a3f26ffc502ce6421755e6043ef7304b78d7349368b03dd392dffd0692dc5e80dfecbe38c0166f1a46e9f18b2355d37b9eff06548faa02215c27614317430e178ad15ff2f248674567afbc5eef79a8499869048c010770ddaff096bb3f5a6eecbf9f97b281c11fdf633d932015e00a08fe9f30bba79f39a9f54d58cf7d930194cab3dbcf66687c3252ce9a17fac3c5ff4a12b9028386c62c0e715ca2aa26f2944af90804f879a36277f048ecc3f9a20a9e2e99b3b76df11e956dc5a4c36227b92da919a6ec5bac16f9036bfa8b356409ac1dc34f3f1884fc4abd465dfd68268d955fe4457b67f62a360208d80db19477dbc850cea8ee61a48c04493e15684fc2677fd4ce6bac45b62d896682b74dc0c4dec48ba617de62c54a51000d12f13e2a1ffef9d993540d2bbcc6306a3bc71d8a0d41058c560fdbc3333933643d17936edd52f7085195b16ebd31cc4ca7ac0f796758ac6f2684d845ffcdd6198511aa6e9b8f673cd66cd2b303accf2262968c057d8aee10919db70ddc2b7a27eb02fbaf3771d08d0a7ef5dd539e62e5b97261e5ce85c9fa42b5b2aaf7d94419d00278d113e08d0b53e761492dbeab9706f4cfd0c78cfbb3f204de9a9c3dd134ace75a4804587f6040487a404d572b7818cff0710a148a984f10c896f821c16782cde409f63b7f9d7478db87ae4050f08e824765e0461f107b233e9dd3c4b53f085fc000411a5243a85825dd90e162733c600400536cd1b1b4976e8895294512c2587792566da8a27a62687909d54df27b8b654c4d2383347a754f5f5a4bffc5dfd5e43025bdf2576bc33319badfeadf90bc009f7adc4e08fba47eae43e1a190c5069958611c9bbc1e9243a56bf06864e68ba112b2792b36ab2cb6ca363622921dd5d1e9352f4e73d1cf8dde3abc3e9eb1d280c09bf8af0387490db176c071111662515be8ffb8310468e621cad779d3a0d683b690fd1b3802348ca7e85c9624fd402c5794966a2f17b6de84243582562ba529265c0a082148b7a2b105d1ce3d4bbb0316373ca6f5c3d5ad6fcaec6f1feb5f8df8e53be4238f79f2d116fd20fd3d24c42dd25ed910eede0b586e815c331faaf05c79c23eae389fef631abf144c5575bf7b53aceebe0c33d9325637a6ddb878c107e17ee3849e38cfe85e6dba814826e1d2736057febd4e1317b9626ae04c7257c5a34086324fe1b40e8737080dee3a2d0bd6e09cfdb413145ad75f1f2a5e20a50eb75783f1b09326da6bfaf02dbe90cd68be81df271b46714a859f9653387221bc2d0fa95771f19662fd2161089e7510ddc9130f270bae6a683a5a16fcbe719465c0ebb63b30ef711b396c5465b042347116ded26d45109f23f170e4163d14ed35b9e4dc629461da6eca74a203579d2254b308de5cc67b64da9fb33f5b58175455fd9340137aabd64fb7126191c09d73a6ffb86b06694ff755dca3e97426449cd8ce8fbadbfa80fc15ea604412dc3c1f14ac77b4d783047951e15b5e73da4596312b9ebbc94f51681766bac4dad4d7c8f06313fd1610162bf0ac0326ccc1ac088d617b83334dc7914cd0b0acef435779e97c6de6bb5b00ba32f11afc35235cc6aad603571b0a711f8161315f73b68a1c9f9707862c6f3d213e41ed60bff12b20f8b35cdbc9a9f6cfd45d47c9c60ec4e8e5cbdea10edc964a35eb2d4d86ef54e7b1f416771aa0f9adb177812a48760e57a9e97a2f16b69a6db57ca9ce0b824924d58ea253be27f002c045d195a02e369252374e9381508264d3bdba1b64dd4918fe0e42139f0d1755456436e608610af0e7226824ad6202b28adecdb7464ef3421e0edee745a7e3e9675a766a3d982977a67f4020103cd57689d0c951d5bbb4370543f4b60ce404e8a1f6bb45bb0b1b28539a9548bb68ef46456646291af9e52902ed12f0486f31ddc964ea688a8abcd37e692e3127efaa693d52ef249dac23bf5b048cf2fe271955ac35c1caa796668e23c842747ea5a3630079260057ba7997b53356b4d387fea45f9b7ae1a9af2a7096a414400810c4e28b7888b1f955a9a4d94294269e3f0998dbd454ed73ecadde5366eafd1fea8a10144e79a555cc8ea14e0b7e9eb020aa63b0dbb0a942049c3ebddd575a82151ef1f211759fcf1e57ccc20b4bf11e349fd4df37fa8cfdb5435e0b33088c10352a8ae446a24275f114c56de13b6ae7ba145e2175be7af0de6d5cd9dd8f2ecd8a646ecaab5383ce6b75d676577776318973fa447e6fafba1b6c9de48afe85d5ea42847d84225c8abe6484b77a90c912cd14542f7b22867a06746f08688e4a3804bbb51fe22031c43d9a43e9e2291dd9e3a756284033bd3eb93dc753cae65ebcecf18749fd961d5ee630709e21de6f12776beb4d4e3451ba352dd9bdbbce11be4a296da2f6f38b3ade05a2941d586f6c3a649dafb59ef2b4dc1599a45eb670fc0992efa65df56e2e30e22b15e4318a723295f1740083a83cdd5f4bddbf5608863982d5218a2e03a002f8c54a37ea067ed52c0102d8c8c43c8a97d2feedae2ae803df099e250ebbeb7085997023fb671c0d4ec914b54ca6f81fa7b1fa3500c5c1349754465d83e4edf2f7eacdb46d6a1a08190a649c0dfd03fec308620995527b8c018606910b47c4bc4e63780e2336f7d38d1e319e867a16ffca6f4d51575579a6b966a179b08b13c64c6c575634dea1de32d11c56799228b9a360e8c378ecf73a42420b329876d92fb3603f1b3e5816a53cb17543fb045019af2c50c8ce5c1ba0acc219cd9b86c25adf07e86e03fc5af0f2f7eb179a0136c3ad0a0cac21d0c4a3e48de182dee863bcedda9d2e4ab22f01d2841a8bf3e8ebc67d72352243414b077b71fdfab4776a50174589ff834dc8529d9dd1f2ad883b6ba2ac8e77b3c47a7e0d276f242390918957b3545d9ccd0e9a6ddbf4d5b0b5477a89ed7c57b16c6f1a2d33d558c6cb29cea439ca0dd7da68febd5def894cb80f93e96c1c2d974671a22e95e9abe10c6b4c9e9c88d83da45a84eec1ba6d5f0a664fd7d1608b06bf0deb9efc8a41f3a82a0f5b7b07aa77d1b86182618ee0cd1ddbc79142dc1cf891103a0cd608a9d6e7be953fdb3131c0ceb9a0cc4179ac0d04e70686b2a8ea10b81f9f795dbfa5b928e24462837c4427c0d5c65586ac3216c86101c4ba3fc575f99514d4c69f89aa51419ed34d4e211aa6588881e65f7da205278da41864a4c70916200580be5b230034c2508cea2db380845042155bf78fd91432fdab21bc0027dea17cad6ef60cc1548c721726d5e6a59b2b37583054b31cc7806f6fb44e0f8ae60fa6a5e322e9b2d7ed7b781001f22bf5abe7bd26c46eb8c41e110820fedca6ea48df5d4930a0614eac0cbc22e922cc69908d1a045089f7c9c381efa0a8eae5ae4485969d76818dff48f97fc0998c6e136cf86666a17529b3f07d610893d073dfe1f63cc8e9a66d5086be1ad3f012eda4e4103e5a9570cc21d4fc3cc00f40d463cb316ba59fba220003bbad91893fd1941a04d2b5f4edd6c0b3f0d60888b688ab459df7b5193ad981a10625d48dc473264ee9b0118f4e5e09aaa28540280f6cb2af284143da8649f5cb1870bbc94d5cc79fdfcdd3cece450f7d9f76cccb4f400c7acaf02bce3c9320b22d2ef2db44a62b5b37f7e950461cb26a1885a403c92e33a4234df6e38883ebb03c13eb02ba90931e46e9be609a6468fb7e222d4ff199758ab8dd03528436c97f2b63c3171d45fb9848459abac212b20331aa9fe936e23b6821136005e56670d96b7cd62aff501ba2b0eb7cdbc4f751ce34cb9d64751881965d5737a9f2885d1ed998a77da0f6cc860bd078fddf4e80d4ddb91be0df8957638e9a99877d767886ccc82dcf26a425b83963d44b1822acf3e8776558dfcf2a31a3f48a9c3dfe4550061fb98956371b7281862458b68bc799d0327ba588f0b41a2754428dd946a966afcbafab368a90f5ce84aac553bcf4672ec9a4f4c7eea9fe22dcc853043de5da16cc28d94257f90951a5e2d54571c6723cf2da2a472a2a2d62de50521fd5d81d4bbaa9e54a0d97a5045ca5e2eb146683ac5d20799259a39ff6a2829e33c46ac8f6498c65a459a04469a176c953dcad1865156fd86272faa50fbbb48960a8c7c28ffe78e2bf09fb2e4c5e4a6afd5066ea77a2508005e5efdb7f6edfcc8bd2a7f94cc4a67d9c811f7a3900f74c8a5a5b7b1b661768784c263842ad77d6574bf9c3985336a8b2036aa49f9f3ae98e1d84847f1ddcb2e6fcfb957c5fdb540d33eaeaa31c3a67fe8ff44661f1121bfe8314892304c33bce30a339402c2b1edbb920fdac22a4d0fd17f7f323d377a7fda4148c101d134cfae7cdb361aef8e40c235c094a36d4511ace125a2daac95fc8e4703fa44d65f2d2aff0380d19799581de9f507f81493591d7c9fce90941fa7fc5be9dfe2cf881b41972de130873c0853528b19c52fa4c44c4bb2b72ebc45a53d2d74fe27bc1860c4c659175c8ca34e03dae080504c051660f68925b15b82c2d5827b2a0352dfb14eb8d796a44292debb561c5cfc4cd1b411aa9b8105ffe538117f846fab1fcf0f02138e965ac5b6f003df71aba406fae6e60b4261a9c2b5430b14c5252c729d8d9ead1ffa805436f6fa0e007a1e4a6fab599091d137c17f7e13ae45264b807f59126e8c60783c1c2468847c674f6fc2ef936821b339e82897df2b23bd57c3e2b346a36078c579e2b9e774e3100aa3ff57504845a30d8c14075a2678bb57182d2be0d45dff752a0f776eebac08fe5d3273a1fca08be126732f8df6ff845f15c23fad0b5589c54cb19ee9c4b1d7d994b1002f677373ddf503b93bf4e767c023f805dee7e8618ad823d1189254baf6c83aae4ac6dd2fb55e2b3ab33c589dc44cbf62b47bf5399b8f0d98b0e6191bebfcb3473ce4b5c5d24d0e518e2ff62dbeafb092c60db34e04cfc5cfa9e53fb54f9035e8176679cbaaf1a33cd2797094c827e604cee32fe4d7f1240a700f5e2fa225d1846e9dbb021b01252366444ab0728eee160e308e4971d1a1009abbe029286b3b35655d22e6021ae3a9dcb00e6ad58d902681d08079888efd274bf3d896247ffa43d2712658dd3f365f848249f15ab946d5768885585c639fe973b1d3d75535875bd34d7d08bc587701b33dae59d7388cf6676554f63c1d089c566c4f0629a7b2153b6b410a580a8f40b1aa4e5e8d298f6d11726752882ac73e03246b2ef56f11fbd6bd50f953cbcdaac5c0ad8be24aa16adc60e2be59604bea5b90e1351a205483ac7121babe5c8b7a1cd76f2cfef643a0e13b8f16b3d2924cb4d8389ae980090905ad8923900163af6bb18d7e229acedf54c1c61eea96aee60b231e5e7cdd805faf334546d11b14def361676338e6aaf47dcb80084f136cc3616c85ccf26254a44adbd211e6af7afa1af4befb5615113806411ec6b38e49a04b6225cf8c72b5f7105c5a86c38a1bfdc126332ac864787f66d6d0e29a2043b3b7f8e6e213769cf53ea8fc312b37f58ccb6bf390dc86796f56bc6af2819c3ac8f1559c95477c7adbff68a3e714606186c20ee082d7db85be6c6eeae4ca7b7c61950706970de155096ad177c27407bc1fffaba8fc910614e7d86a0d257c1c193181d193c57a87c9c12b3d15f566d239e4288d00b319fea44b1053ce4c08274cc7cc6efd6ddc9982d9f9027db0dc6fd683c89c1395dc961bb4eb32938abf95924319dd48e230454b442395ff5376a5d515db89dbb62f8ab393786db8653de10dee702c28119be35659e67a3468afc1f1f7c1502263cd13092e476a235004b2188b422aec6ec5ff7beb4d00f4b4c7b75dd693edf757b7680cefb788a5296ebf98955faca611bf692d28f5a8901b6882dbe30cebcbd1feace50d99d49d2e8c9fdd434c7c9b28a7084fc452e48221677779350c3dfe7477a8bd413202bf46a52e23497d1ca65c7ac8a3b96a919a60bbd1409832ed69a39bddb2c1f87bd19b97ed246651eec188c6e0bb0cf6fd7797d9a7eab2ce8f1f10e7013e0f4f7a08de69bc77dac7df94ac8edf9d55bae302b501359a1a26af900804897168a2cf48891d9d57b9a9ebb0c0eea2ff15b90d03bc9b7c51ee61f999aa7f9510060d96502c159e70214a2d753eda22fef056d1ac4a8c951e2bde3920eaeffa356b4d584ba2816fa9c1a4abb8ce1dd266b9348be7b025b71ffbc440692687cecbd180b651268bf1ae70c9f6e9d0e1ad5c5ba7085284c6451df4666b7692bbc51c2f52702225572ec6c1ee372d30a5686f23ba2b6fab315779f29d3be9f24b8efa0bb8789fc1b95b0e72fc8b74e3c5954c573ac8e5811623cedfca75924466ff3bd13990ebc27640506b7319983e2f672eb8ff5eaea629704dd8340c3a494fe4e0dd6e06a5e8d2bfb727e1ec762a598da7cf314d4c25d6076167c685c48948b5c73ddf997f76b89bfccf60b2e6e4475979070dcd94ca8201e7e1f6afd6458cc0e6f9d4d018b719599fdc1e9584135068e0e77715480ca21ff874b1d98b1ef9e0421b17eaa07e1ae5e17e1f3a5f81caecfde552db8903cd0485556cf9b10373f137fdd9bb2faff173f04d5ae9a2c31688bcc45df5883b08a582c3d11e96369f91ab489b44f7d0888481bf558472a654fe6e5b1e8ef2c07652abe671697f3b9b1a862b6c0c6c7d4da90aa3d4ee66936f41dd8816e8c1f8a25dadc1f86c23e9a6d558ca84f2c1e6ef44afc6335fcf227320b4bdb8354ae2159654b5381dddf894810e13e324790854000022a7efde6b2fe7343978a21a5aa27b836af97cea08409a7d752882aefec8138984912b109bfd2b0e6414b8a5f169e7e7545bc4f8fc503460ccdad03219e56d696313e1182cc7656c70a6a2e3aa4722bd3be507c0d99e5378e7440120f09ecde6f1995f89c11d79fd56a782178f5079f19644d7775db1d5d9dcd0b165ee4056822c25533c659eb0f66a0f5fe6428aaa7a440b301b04091517fa90184af903f63a3f1afa5c36c81deb956c6ba3eaa4dec3a4b64620461f8c95429e97bbdd3024eac3f0b8458e077120a59170f85d4160529364080e8875040ae979e56f2e0f53eb3d04678e617d58b4fe04e6d71e3b0da96b2429fe9b174b7f9b5ce09f7540aec3639420f0f579b51738f63db4b2b3a516ea7cfd6fcbf78ec286a0ec3a5f18624103d5b5956d66866e36a47878e2e0029f5dd3ead38e2a1d7e2f67e690786247be56b61c4e628cb5505e109225c937b4debb932e11bdd9f5c24f9afc01f98dbb206b4f191e99165d9cfa0b2470c809e19b82c00cd6a142b838ca1814a2ac3d78bbda56f080c301be28c1e557626b0609dce5492b9de3246f60202f56ccd5ec8187e6309e2f22882dd131dc29e89ee7f437f488517ae975f63f9e5303b6a9c179a3da01d69820ea4e104f13a8af8ea512fabf11a1a65ec3fb5de98a5f4e4eb2652cb5afe7c9aaa32a205ca15c21d938bd5cb1d899983f982f86245cb971a990935428a263ccef0fe1160c5d72de0a622546866a30acd13033d943518485f17a7e204b84bd0d57c105102310e25a59980a970868b3f8ede165bcb1f56e741f464fa18319e2a2bcf264a0532c80329a407e7179909e3f9d3c3334766f00cdb06cc6793fc23aa9bea6ee8987e41ea29233ebe7c97a7c75e087eb4e539f5d35bde8b1f5dd5dc5caf3573826b857b4b045651f99a8764f5c31c6fcfb7a9acd8982ad35d3b79ccd3f460343044ba782fc176a8166c4d62e056a8d1afb8732df43d87d3c9b65b35d550661b3efed7cb12f62d0edf241f3083534e333b57ae813c42bb0bb8d1cc96f633b2ea832b4b759c7c05196eff58f5696e315404e9aca4431b34a507067d6211f5c00a3064fb3bd04d395a31a7f21c4e3dcebbeb058d97ec8a820f33a2720dc5b9606576ec16a3b2055234654cb360dc611d1fa5af5f1744468800bfd81ba18a77c0c4cca78427539f3724ef59ccbf580ab1e9d42861cc8030fdfb7d9ae4d4900a26b826378fe6ebc9b94f7614f8e13aba2913771d1bf7ca399bb634c75b0a7aa01489bbe16a4f61496ff4dd065bcdbbe4798412ee9f6c1678d021c07576f198f1744fe0cc6b0c6db8bd1627e6c98bd11690a5aa914f780220f6ce71124a821763f3ab95f43fab80cec1de84175cbe53fd35cd3654d26c92efd90394d615b8c4651212f4cbbf31bfec98bfbcc0afb300d087e10b259b2dacf0ecaa5f03652a9172d9e8666e0222fe14658a9d20675f8b550daaa388da97e123a84c261ea64f84995dabd24ce4a02017d41b64d34f56a9b7af280257770dedd285b40bb91478b8641ffe8042d22ce4fe44cc8809321e3982794524e97e366cb4aa25660093f21686f5a2bc7e477b2913e08a7b793333e340db55dde9a9971a3f27f9447811a24803282db99de85cd275f7d3924fd33f60d6696a833a09107e5d740f392f760bf9f2c0aad2b9f2433bde538c72d5d81351f2fa2df8cb7ba0ff4966034a4d62a30bcb03a8a80ccf5a2bc1738808dcf5f20e80ff9710e1c7efac89df394b997cb36c0d1ef1cde77ffa2bc1505ff01bbb7e0506106f66a7675f414c3ab9cb3e0c88191fabcfbed3d96dabbfe4003ce592b20e4beb3c3e733e985d4a13b9ce89b0a77c6a552fd32cba0384531a87188c8d093b42b56997841085608d84f6122187fd8a2c4ae603a894fdc6edcb9a9d491cc705807c6e53bf43530ec41dc5b1fd57c1b6eb03694cc2152e2cdd59ba396ece7137341d0826fb5ecfaf39eb0deea2e1cb9c6cf87095479587e4ea5bda4c2548d03975d6f682de2b73be4724d945410b60198be060b8ae8f5a44142b76a087e2b0db4a7beffee551380328f528513b7a61ce82e2a1c4f627a3f4e751d9f878d4ae55ff9fe744ef6c4081f9f302953e5df04c2b6b6d0b4e2e6f4bbeb1b5706b306df28d48b8ffcb5dfd1c92db8a948aa2973297674e2af7ba960b6ec460bcf0fbaff5961489f2a21ef259a6038f0340d8e8cb5118309eca9fd9fd8109085cdc2e6f73c1c31efdf03bbfcf7988654f8f8807d731f3663521eb5d0b7e1a70edffdb017b0c5e75864dfa7527c4e205a441469d7396be75ff0491fc5ff1b4d0b96c4836d508dadbad8990332f12b3d4472fe08f1bccaf8394f79dbfc3b3a0a061d4e237129e17704d6ba4d7d2eaa15725562c7a1c68ea637ced0cb8197ce562b10d52f08f099c5efb2c7ef6b9b4fa30933509ebb86f77674638a7ce2cdd87c178c0fa1cd3a0cfd9c4455b671c8146db632c7f97a0e7491477f0e5a153d0d2e4c96a6262176433c3285f52cb5f7b621e9f88baab4db1db81bf16d559c4f2c6112bf6806ba717e739029b1c06cdf7de692495992e605bb07fc451770d17bb6bc4594ca4fe84ee83e768161fe6cdbe7b9cb48d9179d06c8a2f77564e9b8598828dae7fb3dc31e8ca5470469cd644daa2f373923cdf1aa5fadf4d6a4abec1da30791aea7ea1fd3f612615af96977b62579b8fc1c5b781e41a540f89acb005cfbb06b9404d6c994cd0c3c93954bc948b76a8f164d0e3d4416ebeba601729de6cc1d11c249fdc2a99603e2663663a0b39148074ac2e3b469501f6415c7ec497d7c0597525825b1cdeeaa33b1628e773b66bbe4b0f3d6e22d6b2bbe68ebbebc9e3183e67b271c873e0e758cef3e11ceb393c9cff1dedcdcd12f5d4ac7cf970df8d068dfe58801513f441ba859465de944b232dd8b91cb5e5c1291f72f9d154fce65ea925d5d2021429ebc3470e3803455cf9c147f6e8b1810a22f814f08aeb08a0ec134dd1e0833330dab5bead37bb0bdb7a5cefcaf24b09f33301ad4d172f05fa78f50a7ee91cc792805e8fa5fff68971c96340e220f2bed162ffdcb2107b1170e06b3c5d4a71ac8013a41ca4d5e707e565023f4e86cb34cd4fc6457c295fb0585521310ce9835806d6efed28d6f38cae11ae435a80de07f41dadf2bbb0f1ed07ae542af28d0e1db30245921e157eb7cb08501e4aeaf4d7426e1d60ef1e89e6c41e696e73347750476a51312e56b8ac74aa7a4f946e5572d80350349d157cd9d87c04d21cd7c96e733d247f52c5a5eedde69a18fd811c9b7a8ff65c7f622710723996779b379d14eee0499026ad58c7b8a547188208d865be9cec7aa0882326b492ef779991dd713100d6ec8c3ba9a531effb00d2afa68582df466219c2a9aa9c6992ebc64e219811ac77094c96fbab0a43710b95fc454fb5785b6a99faf924218e30f6749ce2d68717e027269a353c9910a052c57696649d3dad8da37c4252599f42056ec9ebe855ad7ebd2478efc3dd5b1225bdb357b5784c20d76a6d7df41b8ef38c6f18908c266b599e0de73b16a2a40529f9a6933b3db5012972b822d8df3c56e27e857891892dc89043e9279f61f7c39a5d6edb1ad66533375209b7fac9582f8b14c89fc90d9d77032fc47a117fc7683387969111af2c3665a186273e7c8bea2cf7fa11310c2a310a6a8b79fcd0c45f256625c8b99478f5df29554f38d23ebecc19620eaf2ec4781bcabcc99fc054772f9e56575fb43286680f79971148a20f5bf4d346c0db23d77c95e4218cb1c96b4dc48fde3b79cc7bb528f490074ad69b97220bcca504b75feb2a35c7d17bdf729ef800ff7da513070651d075165c8151388344325916dc242bc68f4cc6d039950acaaf64954526c5189de5a9382a5d2fa777b54f221c0605ab1f1bf197876d8f59377cd680bac9553bf1d3f8fca1afb4c2333065c405fe5f95a5e646237f5a8c4e18e175d390d41433ac4b4d9494e5b39350b937bb312a50d3fafe8567fa32db0a08fc87f292ea3690c1830218ea8afa1b31babac2f39293697834ee8b8e4824070d703027032423116288353d7f09ba9df5e5bcfc3fcb2a24244d6794aa3dfbcb9b0e13a07ce13d2c22ebe7f82a703c6314ecee61f3043d1988e043a92a88596435009ceab5a22bed64820f9f80a7fd8b3325e679328ab63917487969009fef071caf6ebc0a664e6aa271012a76f8f9ba708e77ede1874356cf42ef34378653fff04f7d7f82fdf01c3fa81c3d3910c8e316078d12f953f57ccf94c2c393d28470513fb1bac7c56944e54127198eef0ad21f1782b22fa1ebf00ef961afcff334fd040b7578e67a1aa4342d99f693ba385247922218fd1102bb3fc10b20c4599fe535fda7d320cbe9a86f433c284d35cbf4ab299db0bd914ba5d22cec3be6d5faf4fcfd865c893d03c094fd35cd5cd416bc52a8593442afe1ba475df746806c81a2cfcb58ed13810078af5033405335191897d9c9b2884729a98fed5b22adb74bf47954426da2c8c2795b7296283b26a044841c4cc25980ea0dd165ee1bd6d594ec135327de83e6dc680e59d4cdd24fc10099283dea597b96b60c2afd52d033c32f6576327730ca1b0117abdc1586c5bbe59ff61388274aeb677fcdd0ad649cf90b4bd5f81a6389779e2afcb8a93ac4b0dddebe1e24fdf3c0ff60a21de2a18c026104360eaed8753e2f90cfc6e52c004c41fd401e32ec3a3e20b26a938a98c7bb6f5d802640da417bd3e36e6f8bc34e710ffcbc90c32062f8d8f72b818db157b96ea1675d2fa62bfd2c8650d60f39252bc26f77ab3163d80a7c88cba345a60c46245ea742ddba90219b7e6e0b4047342c446b149a0181532911abc1da92e1c3e12399608d3929cdab7bbcfe553cc5163479982a667501059544d4928df32d54a643b0e02318058c31a3a9c00dd32525590d8f4a6c237937cfd7ac22cd0dc615a3397c26a22aa71e2c26258c30186552281acf3d9a42f26d861fb049741325a549ff8fb026e4081806ca4ce28f4dce85fc25047489a0890fbbd233ff976ba9aae77d65b9dc2079c1a81783a34c2c9a96104d2e20bf02fa4b4cfcc2ab9d44fcaed447786e3f353d45d42a6672034fa0d9435b9414b9cfa0952d83f0243125d923b6b679de61812a303f4500b8bf634757f58f1b98c303bdaac06e5cf2673930284b660784960a88038555a99cd2c92aaad3331dc4830f8349223a791f657d886a82274639267ad11f9e0675ac793cec0236958afbc4964118c37c7b9117391fa23d0e09b761f14c8a1b3dcabe0e0c9387b12f2c335214877d1981f9bebdb82dd87e102b0a41fc76eaa590d3aae41ce30d963c771fed010d98a056b6b4a2fa0052548112f2dc6f405d3eb0f023cb4afc480f79cfbd7ec7124020b8b39171dcc787128842189cdc8eb04deec4b65f8a61554816025aed12e018870b5077438dc46d812f43844452d18ff5200014e6586a5920d018c402b6f3826d76d44158de7eab14eb6ec7a33e792d8b14f856fd0e26b554389aa71ec7a36979d123e3d15287aec1a9c6a92e8cc7764292d925f11bacd9cada8cc8d4055576fe352453e7e0f792f11d63d2ba0a980c9c9bdf292297698da38237db8fef432dce09adf5813accf4667573ed7c16249704abf2ae1d6239181d4d06c2ef55d28195a2b1a8babaa2b620ae344b1ac34ddd5ef613774f962829db3852615b57c0d1ce7e7e806adcf9df6026ca70e3ae119ef8b9a575254d1fe7702301384775d37f78d71ce92a5563c63a09a73ca45cbd1ddb2d914a9e939ab36ccc7e2a1bbb09ab752888523977a2f0eca7386842297fcc621e6ada5388cd7865b3394dbee861cfb61f3fe48619db714fb72e5e2881d303cf161bc9796b5729fc6baaeffb2d1481011c8aab6ae7f1e061fa8dd70c6aad6e31421950f792412ee3c41b656e86979c1e511f938554920fc59e4bd3787d7c50a968915510f7cf866b889eb15bd531d58c2e34d4c973897297dae936521fa31c1444300765099a6a99d558bd8763a5e7af74672545decfed775e4cc2393060b913616fe2c18a4635d112196856b4c21173be4df0d0ecc1c9cc29a9a9ec1080f37fd0824772bbede2bacf8e5f5d029151545bfb2d3292d82f509f9b66de637154030fa3e8374d07d740102418cfa0876f1221d9e83ee7c3d5a8ea6713af199366d8527295b4eabad144a9825e521a50fb8652eca0da51d2fffaa9cb9b4009a44249f964e5815bde81da300b80f36843ecabf2693099f23c88fd927ff73ecf2d65eabe7deda59023f0e14b3824100c86eb017b19f81e9e4483696eed392e4b33da9bfb2f2eb7ed9d5d431593135d912ae5cabe74a628303b1c453b14517319c40a6a48a4433bead14ee074d6d64f8711e955396ce0364674b447590d1d692f3d9a600859499975821c9564eaad45a819c65235290deb98f113f0dc734f0e18639dc2c42957e996a9e7d82289ca6ad9c60178b650b1fb1f1ccff54a6d4663d0af732a2e62ed0915152329f1f3582fd861336e87103b761bc0b598453928297da4cbbf8ae907c0ce60e1ad1abadb7d1c0440fe1eacad8d673129d9eb730db7b3e0ebf8cee79b83c5e7680123908386d05e0ff0d9fb22d1368423d0d5fb3a1872727668e3230bd02a5f68f723d04b9e38bed583207e9324b4159a72a177bf38d40dc2ac4ba7e8124ed0045393174655c76c17b611466e00f356deeef891ddb2858142b14a5e71afea4fbbbc25a00bff93d320948ac8f4b12a7bd3548ae33d0365773d37ca2f7a9cec3df65d2b3130f9df10dd8ef4c5915814f8188847c1fb14e9dc433b75182c3b9ed58fdcb2b4e02db4bfe8a26498c02a010589b007a4a004408a04f7479120959fcb6e52d52fc6eb40603658824f402009d9f7e7a2b5fce790b7e7c2c5a71598b9bc68253f0a4ec4289371b90e05f3bc04a4042cc78c90d77855f9fec698d98eaac4fd1912739870e6166cd2cf039cbc9abe36ed6cccd779fa3f0bf3c1f6bea673938dadf933243ae09c21a3ce7f4e4ccc8c22d5d83b70ebf23ab0426499344fa36375bd29a38fdda0d68eea1374474cbcb21c1036edca24c03935831a3e72cbf07b58b08943080af0b475162ec77331ad65b90f2a6dff3e2b8612aff994eb3562c9b3af5d62a65227d2761dec3824601011ecb67f3ed7b67a493cbe74abe8371c9f9b2ce2091b8d7c7732ebb066ac7f094fcaa90968a321647d3d26f7dcb22a6df6bb1138224acba44e05446d706d7b981fea96219526a3b0da791f1c5508e3cef95e9c752a4ef28dd44b2548367a4f08a8329b1df42656492000adb47f87b8726cb904ff80489ff358a4129ce9e89ff4f975efef19464e76128a3245f4f4773a4bd3b3574ab9d0cfc66d3c0e313ad4c4494a48317d7b8bc9888f7d208a1817a54f838d88a22f0f502094225ce4e96b652f78db57acd96641746c06dba51ae53d0fad60b22c36f3decdd9d9a8b25d2043e30c0ccdb3080910a69a0e1abf250396c89accbcddccea80df96c60b97ca2e5a74ecbe89311c4a53cb47515558c5fd26c3fdb63453d14ca334102838e0b59459c6dafcf65138529e4556dcd5924bce505bcc1ef338e55da6131a37f4a16cbcbeffed18bf3b9fdd8a6d1e1354ff898c72e6d721457a0d9f444b1145b767eb21e63c919b091a650ab3180f79b7acb13fee1ce033ba20911a78668d6718a97f3a09afcd0f62def37082c894d0c4abf444315c9539ffcfa8269c9f628759074a896703ee095781bd42c94a98a52a81d9b8729e6c25f11998e424beb754a590729bf2a1e42b98012b15b02a609fdc387cfd8c5ee7ec7597f24cd8d09dfc08b576312ac91a662b4f3632c40c2a239aa88c5709d5f6cd7a0305f62c968f12ed35cc3e9809fded0321f787bcf08e97025b71ff51c92ac0f27943d690afb1b5c8556b81a16c0b4744f033760d176209f6bb98fddbae9094055af84e96d4c095c2c5757743c5903f5104d37f865d093da2daf7dc6c902c8b29fc784dc460bfeab4bd26b5e71b3528c1d88f7df00421f3e65b64ab48b543c8e4d8d6102da106d982a5cf0b4dc78b3064b74f15b083eaa8595f865921e7b2a0bb763016a5e85093b10799daecd25b710f3d42794ed57ee5d3b20ffda4372ba121c36942557acae42986b843556c8940c30d55a5f4c6be668c8424d9ceacdef44021793c66f71fcffe8d20a1c9264fd26d30bf21a3d90f538fa0ef08900808a592e23825d5651f62b2b7dc9807f461fdcc2b7df0b86521378605b6bda6f5a3c5056b6d5d35e20fb70aeae857ddd674298238d2fb44499fdf6fbcf0fe0e2737ce87ffad44ddd3b6df7a9b76940beb5c318b1e1c6c21626c2b453f5c02ca7e9ddf43e2dad1ef0ad6e55a34b40bd0a1b29c8b95be03dd257de5e78b096f65456cd906e3cb336eb9730dd96bb91e291a50f873e624854d8d9180a3a9e8be7af84afab5debd8dbf65f951fc6f4958b6e4fa4458a9a54b19d19bbc9d8caf545d8a8cad4712a6ed357ebbebce19d9a6e59a22e30f77e14f24dd3e79acc80828fcb7e9092ddc8d8f77e3518b36db16170e0770042df6c39fe16ea64dfccf17cec03c555b57e06a4cafe5f93f5b8601ec26427e71914fc135d45549761a59b412960efafa3507ca635ffa4e9cac7a77d7733e40aa2931076105888119223e9ebc79481d9fe07046069abf3e4d5d08bc2fd5613af9c0722a95ed7c7d9a9d13aa14b41dd3b19ecbbe0d361f955f2b35dd3d2bbccc0821ec7d47de467e18116f32e4ea154750cbe48388cbb9f1468dfa7cf6269e39c4981c847205d6228da7a97882bd08205ca34a9270963f59a32565d9ec669152d84c1559bfa8c6b7e4a6c6b78baf1d5688aff100d4080bab073bca3e193652df9e0eb46b014091222bd2d921c04a4c97cbd95d265eb351be033ff93249c360261f41d5d1d39fb2471dcc173025e33eacecc7bfe5b0e45df07da15dd29509878569a336c702962cf2a4fa91928b4803700da0a58267f1d69bbeeded7951731180c4f976fe57880c7a9dc4fbe73b97a8a6e7c26e2f2d21519756647753f8ebc87f71e4301a115a859ef683178cdf77489ec245c76ab11f337d471f08a7bdf478904abcbcd324e049638256ff1cbc1bae7b418aad664a06cf47c9649a3eaae9c385aefd6b9c288b7dbbf922db6bbdc49f55d19fcc021690118befb882f503e64f3fcc02e2d2c9b4861d4d7cb2415f29fb16d83320c949734a59b36071003ef01144a960cf3785df3b22e3584b3ec2859fb6e449f7418719eb316beb71f4c9be60e8b73544343a777ce20185d87ca5678d229c96969857bac84667578b9a5ebd4bc2f62a8c32db6ca216a340b86d50f4285267ad07e2ea0aec3a1947ada13951d5cfb7574ac341b608e4c34e6a982270f5711598b5fe7ccabdbb67dc61f9441dbb8a69388036ca1eae8fa901f3fd569c76009bf9028a76c291953cae24dbef464a82d24ef04a87f337f7347e0dfac3e14b7584ad0afbc290420c9bba9d9bbefdb23dfc9f7ebc906d23447b4ed1eaf07183c388f08fc34c8c42f58e177b341bbae64f98abef692207237bda2419aecc2741600fb12493aa74fd1af0a5924c3fc1b3e9a737975d968c06b14986d0e1ebf09bf6f83ea3dd0f3dc1e5f72d943d69d00de15923c2005c2946ac282c400b8da66488477dc3534832c6f5dbedb846e90eadce8fe015f2ad59751bee378ec83ff31961cba5a64d27fe13bd1a67fc89868a2772a18bc2bb5413b7ccea69fd29bc91c68757a8f462813b3fcdd7499ed32e532ed4eea02737c592cdb58cfb40d9576bf059ab6f18142be7bebd9fb602a32e673d11100252e06ec809c6c09414a774d71e6316c81fd204e1d288f4711487cdd7121b6ba695f4a528d178d94776e233629b42a5a40ec5fc256a8e5b1da6783900fac45e6460ff3eec4145e8ebe70e63cb3bdae82dc323bdd2abef288422face7f236e379a302e70bd81065bb9184f0ca1e638531a5b26ceff0ea144482b19b5989645b333b9748d16c368c843d9765a56426e82b425f24b03d0e118901c957da5a1886cc55b7afad13f6ef9df0c34b75983bda53e9c9c1a236eea67959b75546c492bb64cdb3ec8a09219290f3bf8b942b38cc3f2b1ba59cce0217e50cc7bf07262d6ba1c08b3c03d660da3466e19da0e7447e76d568f257114f7f260226c7bed1bc658f0687c93d3532f64ded254c776fc5e481ec8d22df6e38b581283626bf7dde1009cdfa9b7c73db27b6cf62ac49fafb02aef53ba330b32ad76429bcd0d5d176f8a26e11b22bb7f438fb989aca9c3c3c02d0afccc1fc62977479c36935c094e51cdfc1e6ec1e054d0d2fd5b74734418d81934366c18f857c13efa2afa9c288066fbd5bbaca3118073904ac4be3ceba00481fe2cc1ae91684a86a700b64852b76eba285e4706b13808d58822df393f756aad38dc5fdbb128277d7d1c3e1740114cf7a7b1f1788fee1e64e2ef6a7f87cc7bec163957508b54d4d925b9ff92653465cb004da24c61065c78a41a6be0aa704699b61370c84e7eccb98cc113917667e0bed81b157de84884df7161324c14d9dabea0b236bf368b4a8c7269017cf544deb8793688fe06de648e984e9a7ad435264446d481aa84fcad9a8a60ab5ec18aab9e461f7a011015963d07496d072da0efaf10bd8ae10bce9bf3605f0b2aafc1e32b85b795d437e409b35f71e76c7b16521239fafc9b3a461ea03e520225c52c6c4c7b64dd579c208491d5382710a20a65d2b83326da75066a752b4c2c6793e856ab49f7433325da8f060596a1c2e875b2b224dc5b24c5953368a0ea3194777192beecb8c49e8fcb55486b47c250feabdf5d974755d292caa7257f5efbabb26126e19b96e37ecf1a02cc2fedaedd3ace02297d54b6331e683e29b8fb5a6a41fe35dce154229e3cfd161fc01b3ad6258d1e4b82fa900cfdb6e64379a1baaaf04bee07117e0bc33cc7429eb18d64c7495a5df22dcf0918bae822274139fa418e4e980bd71a1c341b7ee68c81522a05ea109ad761756aef389c297a5544289b610f5da3283e7e64a5a119fba26da154a848aa454afef6a1f4fac6627ad4df3796fd13a5674a0beaa4cab6b426962ab5ac74e77e3e42ad41624116b3da95a6146788c53e8eb2731020303664626db3073a05efc00a99df19000c5b91c3bfe31d54796d8638f6ec77b42d78cd5bc31d0fb1b4742fa542ffb43c36f1218f594b8f649bd14481f4d754682ad55d356f313355e2ef303e4725d1ddd33f372aa36012220d3e563cf0c2812eb3dc7a679482b2491f23bac18738deb3a00aa92b7644da2d8074f3ddc5fdfa6eaaf80f3d3b4ddfdceeb7c9a5528acc46129e72d840bca802b05e8adfc098f04830dfa7f4e8e3e4909f821ebc7a7a527ea8d76619fa0da210f980c9ed87aa8e442edd73513bc8fe3fe06216ddaf83cb2c7dfb45ce442212e28d4d3731a34ed844313e284179354f3d56c68813845a1c53383297053e07feedf58fec472d99d73aa527bf651f48164b023716a185f5fff0690a2300ddbe6a1b7718bc42259a2de14b14d8307c7771a525de3263ba57f190bd3fae610b702715628c5ea892a30d27d9664dcc94ee2bdf2984537be44fdd1b9614f9d7139ffa5a74275e6ce63004ddf5a9a1b614486357ecaa71962bcbb20b8491ee67c3e4f7af0c39ff90c1d8d9b2ed0d7bee42398b2dd981cb414973ac3e9b452e4f178e19b439f59f978c9f5c39273c588ef34b04f553f9292bfa6a52c3bef6884197699b6fa261ac1d332b156fbef8f0edfd959a2013091b85428e593b6c7b4a8a971929d4ae867dd300c23b5e651cb369eec99ab30c5be863156492f8a957c4539079156dbe0dd68aa3fdfce6d1a432f4bea22f4ab4f8a57822c9bb9dc2698fa422ffc07a145e1044e40c0f1d5b89efacae28df0c8bc85ffec84e2f157318250f4ceb787c35d9cbc918dc2075ba55aab704508ad189ccd5feb1e8f7204ec50efca81bf2479b110efb90797cc1d47bd44b5083a462af23b749f66e11368d4d37175597b3f73daacac86381295cfec012853f9d43ad93c5e306d7e5c79f4d920382f744132e577eb902857721b2338efa2bfcdaa1dc1a87ec2dac828a2543b724a280931fc25dfa46e1de9dfaf5c070b8797c7a99dab5b5d5587d2195a5176af6c477c7e3e8b95e56744c343d340e3d60ac3b9cfbf522357afd5e916fcef78ebc1347cb305b96fd2e21e6e7d3d380671c7db7439e5598195f43687dddefa1f04143a190ae48242438cc477d249aebd57cb116e753a29b75bfc27039691a50a47717d4297cc9801db8034bb055e1e6ab07a68937858e920efff8218c3bad508a5d8672b272dcc9461aa3ee082da889997d83e427d0b22f2cc3fd1e6a16c4836b502ae232c8833c036fd752ba013f3285793b383bb0503d0989319fb750acfa5cd9d854841ac0a3a177867d47239bac8b7bfd7dc2a758180f3c5a282294d96065dfcdd06cfd5be00f35e811ed8ad396511c2b86ef9a51057b24608358e68a59fa090db84aed92a2eef9a974519c7149cafa6d34686986e9bdb13780564467971af545d3d1d3d650ae7a634d042b816772cd7173809b9d726b55595e8ab4c9c99697e1898d219f53660136b96b3d2f307961321db32e87187e63b51aa304d9c0ac861bb8af48b0d869ef0f7c2173a23cf13df83a28896ff827fd96823c0cbe9f89886ab074c75c8db55ea483d45bf6fd3d0897498d1ed5a9ad26a0a744e0becc38ba686246e40ed7eedd7ac063556dbc4ce28767e2e38b62335f9f8f8412a1b62a08e5da6829d43166fedc4f81b30b81bfbc68d3680a216d3223833091c0d07c72c1c387542392eaca97447fef80cf054e2921a0d881c86c28ea725cc10c5d6f455f79cd0c53207701d9912d06e92f1bfb2746513a2dc5cc2213e9d1544f425491a9beba09798d9874a1dc9cc8affb9e0e23f22b23d9258fcb2b8d4d3f238c965f9e6ee21104d5d52aab293f1d16fbc63f3fac9a97f93579def5893aaf0ae60f0b8b3f282f7763a1a87f1f8a12835b8c894ca08e67d592aca7b419227fcb89881eef72d310ab1508aa034b9c0a646aa217068a417dcd3c474d1e41298c343fe588fbdff104ff1a1c4211c34110b43148c3e1e3b22495747d7820ade7d2f632d4fc914a9f0b30adf0eab181d56c75b0d3caaee4be609d5cc55651a1a66d8c6e8e10d9bcb2bacee25652647ba9d529045d4d438a295698ac0745fb63d665748cd955525fec04ec1f6cac95c9ab7c0ebf29cfd4baed0a513844c92f361a33e7316c53387c05ebc9658d2c217f75e6527b7313a54004163fa311784fe893ab35a78d5f6b86e59b54d3c6163e048ba5459d6f01c6b856373961ac661c5f12f4329e6ffb2caff1713abb1d0598a2b3448c2c78fb404b4c0bb5d73afb02477f767e38ca6a6300e9caeac0974ea4a2359692aa3fffc4f5c1738755f7c2485aacc993690b580e07f7f7fc0587a4d4071c7d7983386e6b5bfa4bf90d61d8dd75c5f505228c8da2319836732dee95ae6aae0b7ef4f5658c8b1150c29a0a86df89dc078478e6ea90a7c8271889882c7ca480345ebe88ce28a01124b3fd920bcb7a8f17eabc086ef3c79d9e2a119c2894a9d36456bdb1be2a4775d9e2e6806ef87d4e7642471050285cd392fd6a10adb28561a1a2191fe352de0c8492e0d3f0a3428f245e2a692ca8855c1532613265c84d3e4b8b55675ed7a3c4edc47ae04c2c33179fc7551e28ecee8792b0dfe07254efbdb00b95003d88074b0a12bf68a91f3c753a2e4cd28274e69441ae34ad6a446f7215bf91e9b54d02555353cbbf5e409ecb0f45e0511b80f91a9f776268dd11188e7b29b061278ec514944036543ec9c956d6fa81e717bac6924cd7b9b4cecfafb370da046669e8c49d41044184b391866e095a519c3a5892246b70a8d40de609631650af166d6ef3952e8115dd21d4dd9ab516a6c502cf67291bc96ab566ae07c4cb6f20c1b1bd7b858f4675d3c34bbf180d5f8a72ad5678614bce8f10dfb5a70e12faa7cb9074f3b988748499edb67b0e698caaa064bb72bb814da1bafd08511054c5edde7c82dc971e4453f081943b28648f197ec35760cb750531df00d132c52917082db380c4a1ae81eb7b97775b9a179e206720131b7b81cdb07ac0b579bf788401532517c8d60d6868eb13d6cf4faeddb5942a4867a0b5dbf94734700068331f7d626b7103c05129f30e3333f67efd684b26f1f596190e534d4afeb82be7e7261bc8779071cfc93716dd1ccbdccf2b26c62fa01f94516ae5e4d8ee5cda55efceec0a74cea1f727311165ce74a6a4cf159c07593395aa5bb10d4d9b04b5e3e6c2603a10ca9b116b5d6ead201c5c146b505f7a06ee57233f46e0560968c72527b7767dce81325a0737e790c22511b287c676417dca7244af56adc3bb84ccae8c656d0eef2f2440988019fd6543321b0f6b24aa856a1eead59e0326aad6bc9f74bbb9c3760dc9a39f4db0ecfe39a4b319f82c106a37d5daa4d0c44c060e32754ffd7747850d1c04aba5f56e4f85c2f90f6a26dfd25936ffb4a2e0d9833a1199b661bb6f356fc66b4eaae0d65dc0109db565a9cf264a66f9204e2cf73adb4e6b5d6c0142bc74903b8bc3a3eb25e7477e578dc8921a19fd7eba8c8e7372671e8067f3567a87bd29842def7f367986e840caf9ecbf9a7207369d707a5ee59d53f87e9cb555629ba59b139e5cb7bfdc8411dec9421775cbd54181bd0734363ecd8a60a19c821400a21058dfb489c50b63db84e7e80ff5d5c694b28ad83c9d6789b872e461806584a47df37ebcf027163def63d095e706ddeed970ec5639c663b3a5306d894f30326b2e369df7f42edc82113af83cda0da6ba3b042736e59074c6fbb3747677523185a2943e75d25134b944bafe7574629eccff35a28c68063ae484fa891a6936dd49211395e05f75df74c457b992c0430237a23b388491bade303bd1353e8511d5084df08f1c3bbf9f3445f2006604ffe8bb06ff19ddcb4844ce5955b227b2ed82c81ae4909fb156be2a68e7b19291221801bec1118ad587462400c285b9addf098576d4728aa22bf8e3a96e15e674122724b6b2df9eb70427b329b05b8be69b8706d71abaeda46a713872e64f0ee034d10d7f338a5e1e6f6e415c0b0d2f19a5f662a527161524c2947ed47dcd409853ed7aa3e373e6dc1785f0f8f3ef2b2a9be0c28fcd902f298ad20acb3a8d452f727eab92c7c42e1c9be4d602a5bf7f734143f5c2ffc6c4938de01abff924c727222a528ddf43ecdce2a92307e3df221c5b987edcdc5fbd2773c6e6fad6ebeb4268a12f7307033220b766911378a3c279b2bb05d4d9bd66587cbfccf1aa24967c9327f0c58b26c59b857a1199ebe0fb07718265fedca676cf6318fd388cf1e114e0f5ad1d9606628a5f9e2bb9c61c1ca8159e27a59a25f5285b981671178b728435cbc9266dfcc960824ac231ca0aad66de2d826dd9fc5f4b1c2b6af2cfb2a92b3239d9f5c858220a582832e340a913eba5789284b73a3edb8bb87f8da6186154b62f166d3a7e3d870790586313c9e2499af266d9558eac7c08c0465f9ef7712126fb18057a7883cb288bd0cf0f15cbd9970c5b6cd3afcc6e90feadee750f4ad22dc8cad370b65702c95866c25e83df9240d50ff64c86899842e45e4b9e005d07acc0b8db0bdfa04e7c40048146f824addea77c52be6c2b4df3e114c18cf26f4b6dbc2dbc32223fe56a422c6e82f749a361c09e2f733d75bac8888901baa3436e53776479265d5cf18a6d035b7288efa58272d1c4f32c51685f2e83de98776bd765e4eddb67705f19804fce00480ceab9a8ec33b1e27def555e1341838a0052a652b055563ec425066fa5813cd2e08ba37763ef7a497157922c7cd419bcef6305cc23a88992cc103f65b982d59df02d9964a86bda50f1f35d8fc5164736ccbefd026ac83afed643af992026b7629fe6bfd3a91d9411df8aee469c1a272af5ef5e1b3d260ae943d1aaee3ac59732905f9605af664f24f060eabe473d1b38593ae059c62364afcbdadd736d21f7d646b239cdd22bac7c30be77607eb6d56ba13a0e65141c9dfab208ad90f6f6c252e24d56978f1c33e85f2c394c09214eff4a7382846d2fae39b61e57097768216f9e5cce174fc379dc1aa8748aa93f404be107b33d148b53f1caf9d25714ed35ab23d54fc6b551eda9755118ee50b00b8cb0d665e2586deeed652220f6873a7f77933295779a25dfa7b4a2c686bb4f0ced71eb175567d00f579d7ecbfa2a322f506f98f0b60b0f9b00f2d772f47666b9d769002f9ff04a7f8e4ff12410b3058508873e2d01965333f348a34fb6e8529658fedd2b34931f9b0e9a3a986734d6cc712a23f81702d039cab17149868badab23d9876f443e8118f4cfdc2c3b277bceccf26057f27f36f4f1ed2b286747f129801a54b3f4e98cf7fadedc4e52a83c7a47e3ae199c4ec4ebe8ca3ef2a05c7fb81e0bca57fdc453a495abc33f518e8552ace418b822c1743205bd35737d22a3306491aa1336dbb31f1290ae395c66b0fe52949cdc31833271af332c5563920d1194c80ec2aff8e04eeb29f2e839b1ec732e0880ff487222ec05cc1567285df14b78001a163c52130bb86bcc6913ba174bec88057e1a8fef011fc1cc1da5c9a8b5a5826beefc3efe5ee1dedf966c1cd2530aa69d899a0f6529bcbadd077fd598ca60864d6a2417bee58ddc9d4b09115c5ef74ceccee2b73162e04fce199fba11a5891059ea82518a00365037ae10da8a0dc99efc94ca691c0604018b2d6ca819eb973df1cc88360784c89fa92bd674996c59e0f4f852c53809ccdb2217c10be2f81e5072cfae952d88def797e9db2cfac9bc36d322cb5ae60044da9ac3e4f5e8c95a74e18e419c7d808bd12113a10551484409723de3f8e10fe4f69b14f1fa3d11d3e4edf6e4087975d2f70222adc21ab0d047bd8d8d95bfbe3c1001e6d7065e831e019b742dd911959faacb6e3b1840f41728f371650e0c24755ec725f7ba4437847d684ac26d2cbc03bf7ab25d3304f17754edb7f17450e7213471cf4c58482b835b77aabd929690c07bec7835660d24e745f831087cabcb3475b8fb65dd43c980974aa0d919a04d9dc99b100175ef9d289fadd5cd4d26a96c8a89339364e0aea1a2fae635de38d9a0f85e858da4f4ac89d65872829bbd2e5d29a81daf50d05d33155cdd34d9ce6bcb493adc1857e0e4369730dcb6681d9f8c25e500c1c7697bfee71e37920cbc83bb8da0f0d1d192c3698088d32b26b5a345c79c989cfe47a1a72e50e6ffe56538afff51e83239fba690a3693b29beb8ab2c13c171f28dde655edc8480e00ec85576214df288451fa62ed5913b4f0e4c93e3676eb047196d65b66523476d46f44ee84ac7db45ef0e3c4e64b8033f7157ba5343d6c359eb9bcd4c382df7e3af17ea8cc90d28acba102aef337984ce49b98c1929435bca9a3def080decd80ba8663795029777ba41b09d86561668e6145b9d9b309f27d5d55f7d700a605c68577497d5444c8619c8aefff912708d9c359b90bf8685d084dbaf634c3f7c32360e2430bb1c6a9cd3b6a6bb75702d668b20fac90e5df71672627b13e069d36cb701a7923fe22e2f0ed69d06a81cadda16454408ce27c4571b6e036db2fdcaf80d7f13494ac7aea530cd43aa5c016c98a9b66b7382e613389115f9f27b4e9e192292c2413a7d99e1fad464a4ec6b1f0b85d517f9bad0e1352e4bfddaed3ba687ef5f96d34e12304871528b2dff7ca5671854cf2bf0bb2256ce99c5a50891360396f1055e12a434f1ac2ec2dcf4686ce088912009e1cd51c9f37fcfe6609c518ea92c1ebb1184efcd8942fb003a774179e735fd833702d00dfbf9893270b98b8d4cafed6d00682b9443fd475a3761e2789703dfbf5227886a6ef968db958537f0e2e0e86f18f74e1db588a4ca25ff92d71a3b8d0e1ebfe4352d77429cbf2f1e2228b47534662f5c1ec9e6cf2652dc60de0ad2ff6cc8ba2e9cfae779819de828b0f505a45035861dd1686fa0d8d52552cfd693780751228407f56506589edab0e3a47ec2cd64456f36f063b70c8a03d655f96a9ecf4023ddcf3f9f168e166773773cbcbc2d507a7e4f039ce1dc47f9c973ddc01a5c3fc20e3953ec4001821399cf20c1c75807cb15d1823edb550223bc4fc05949670c5e47c0b26ae82d3a8414d59b56fdc94c359cb756bd67eef6169d3ac4a96672daa190fc315efc663308bc3bc7a9ae6b619c46ba9d8bd885e8afe892f59e789a3bc49c757410f1b8e3a2ec61f5fdc26013bd9c0d61406514271d6ca74f3e686e862ce2d18214bdfb422efbfa578f6788408f9d627c52acbf0ba32a719c0a16a60ee0d6e2e1362817330b516509f2504181b66916b77788f4a0c4e3246924d165b579a245bf887e03c67409c65298fd4c7647587e8a1c16e6a764fd065946ba754198e558a8e0cb201e371e1734293f4b37bd96d4df9093505ca4014f77687285452f7e323f801edcc31a57be8d3e763d2bb9d2ce2df5ff551a6b22a3b94b94e798412f6aeff26531e932fe99d376827b892d2af7032c588342dd4e7b5245f5a3458c08be663462a196c40591a555e974e4a919c6bc1d5364cba2d26f561ffa37067dee6e7a8b5cc305b4f401777ee7cb99371deba24100a13306c73b02a2ccf2973b06e2dd5d3688e56176c0e4fa23a210522c3d7bbc3fa9eee7692896934200832910ef2eaa2528642d732a11e87ace7159be1f27716039e0c14842444f4ddcfff4abf954777ff68a870f49e390351e77778051bcd70ecbacb9b1978abd0e9a38d2c18334565b22a4208ef696fef978245448c1e1349263ed2e978da02c60e3f233b065dbd1b142aeb520de0238cf71d10cbf95424a92237679f7859be7df3c90cf49346ba7492e2928ab6debc5b9d1ce5b4d5c16bbff61e90a909275b81911edb272fc83dc7b8d6d9218d8a5c0ad65576a4aa54fc43004310028abfcf31d57ab90bd51da571cd68b3b3f765ae2b71d145802a80746c41c74e923a3801f96420e94838c1380dcb73fbcba74aa71c4712d58a054d8e67dd5a968788d4dca8f4fa3a38eff87c8e9f03719e0f3e40858bd11f087dc2d0bf9e4c26279f7a808433aa2e1686095dc559688d702efcfe8fe3b7924b46cd06311ba025c872fb3c45e4c97873843499660e6a4a08dd97dac92fae5eeb8bfacfc1646f7f7b750f9c871609e0362960503a086a9048146207b85b2525db809c49971fb84451993a6401f637503d18d06d0488d79a5fb2f09385c91b34a2944542b22e31f9d381b1e696758469cd56df182f55525ee1528d6b1325ec1d52164e60cf1937600a09728e25377c440eb9396610b9aaac8ce62eb7baddb98bde211c887f876b07338787283cc384ae326932a40429702360a7681f94985f16e3856f28951b73cfd1c92aca0f2512e1c2a5e35877de9f2610c875f33aaa0a8c9c949d622fafa32803827abde13dfee681a8efa5b436a8d15fcb24197b36d3550a5124fe636d98bce60837862879d8cad44497b7b9bb42ffa2409f54e854b536f1d60a110308f5ca94337359e7d6b32b83e7e5f380a2ce3c7964622afc55c9d5c8d7d1168f0c60a8ed34ac5395a1f4801ff7067ad31c5e2a8426e36b67134b31df0ef456270148e6fb3df7e351ab0cebb591383ee0acd85f092f54d68d6b4d60834d03ba84c449ec2c2849e86cd1fbd4288750d765ed098b65569184d3a04990d176912b57198eba7fb181479e93627ff836a19fc803a79ff15141bdd5d39573c9d58328879937d2ddd710255751bd7bd0c73d60304cee5517e42d296f5b0ceb482cb93773d26fa06ecb1638718815f67792804e4835f6a32f6eaf09ecbefd4ef7716fe83307b077590113b7f22528e85a82a6b2815908059b52850b24b98f04f5caa188de878b46227308f971e3e53d4955fe33ed33a50e69dc6c763cb991cdca54eca6962552ae2c63fd6ac7340ee57ea0d8e64df74f9894c18c0c777411b5ae65f1ebdd4e0b274e77e193fce50a96c9755def39c0a2b2a23bafa7809305c9761321368db601474d3e5ba0500f41b027d0190dc13f61f6b9238d0340875b407386c8d02b346b0e6e3fbee4ecdde6f969f340b1910825e4f61834b62f59e37cfd93a3d8b25dbc8de2c5b727f9ae87fa0854ec6b9a24ca6f8a7a04500371c81b1376155d451df3daa02b208e38122f64b9bd3d6896b628bc5cf2c19eccbd236ca92c2dc53cad8947da6cf165864a4abd2f4d503311c82ee0361642130611d0ae215b8fe6895502868878af31773e23004aced0d8fed9d78e15eb43d5e930fd969e525c07b8f372971aad70bddc19b2004ef45e0278debb1f54dcd68684d0a785771786d442f79bdfcedad128e95c6400174ac8198efabb00a85be7900dc495510934085f96d54ebf906175f1753ede7d9389d3695bc447c5ca3e93e41437b2f1763259865ecb0b2b5724ceb1f8658f661ed1f7380eed121b4454ff6ae9e766b0a088a380dc07fc7b1ff9b4d84752119e06a0de043a4283b18954083721e8c4298d75efe9c7e4857caec64d21ac5efecc7e8ec72efa2d326cffcc71a93d1c06069b0aef4b26c174317c9030d5f410494490493e388c546820bfbf095597bebc0b9ce58f9355bfec8d777f829a3424caccf498f99a7f1a963690b49786c7160d9da4f96451cfaa22091234b369ca5d1affb87413d22f55760be02f9ff5e9cddd7e625aaedb100e67d0278bd5cb60ae79ce581a0af6c4dc94825e46ea64a4f5de5613ae1ba1a58f33004a73b973a5fee9fe1de61d07b3c90362c19720497462b928777cf92f344cf523d355da58badf95f6641d39428c6364ae062772a234d2eb300ac527c4ea53f2b9692dbb0865ebf264cb65772e9552cce3d583e2ad6adae3d8d17eeabcfecef427161040ea8dd2a0c6bcba91ccbf3115636c5820f703c4f6c5639d7087db441d6c1afbf68bb24c1b33a858fa93698fd12b234b51561524bdf0f1295db04ee99d535f5e9c8866a1d97d49c2a5bfa4e19dea402e683c929451f917c34094f7df0bfbf33fe75ac813be997acc008aa315f4e8feec38a9087a86b5849f6a295a699b979a5a589320f6b5d518d5e23693f511cc752f7de56b711ddbbd9353b61a280cebaac4b9076f80e1bac0896b397671289ead2d56e6e2d0b480e7c9a38cc13f300da323d14a66ba102a5259bec49d12b7aee501366b6b1f93365c4c34cf730745e43776302c67dfb210c16d66cd3df0d189085e9c976f098fb56ae646f72633b385c36bbe8d9199dafaa478f0a4d1b9bb4a76dd8ec9d2cd65244a749c3b9a39d5cd039d84dab840782a7600a72512fe11d106d9b4852fb4baf3b4c7da182f36ed5d57889ccb89e76bcf0f38173acfa9e32b5deae67a9f11c24109780b84aab6d8945930c87e2a5642fb5a708cb238f5a43b35311e9c10d3056e85004d5487e0b9b019c68ebf864a1c95d2bce813313fe513aeb32d6683400401d043d09640ae20b7f77dc9b7746eefbaf2a632c06b76d85c70659678c2dcae8b82e66907865cf628c06fab3c4e56a22a514aabad79cf20449b6ca6e00c7062f55e9f8d78c4772320278e76417c4f641152e5f6673bbfd4100fa61d3e931110c941a892b8cab9c656205ac9ce3cb4180a7c0dca008545cb4ff4e41f4fd62309845298c245a272f3dc4416266fae144bf12eefbd78b06000faa66cf502f793f1ed9403ec30227c349911256ccd1aa94e04ed0e1ffaa40310ff1a36af83c63b347852f030e06940857459ff318d3c36be77bb6284d4e66f0d16a8fab524fbec1b478185a94ad57a1b6817d9125d64862429b20d936ef19402e4844cabfff2285f37c3eec2cd0e80b42f6d0a703d080439bb2d8afd6dc8bd3d210714f3c69bbb214439e87ac4b74bcae2d5c3f41d31378fadce3134f9031e9348094c3b9df3bb5def2f84afc00181dbbb634e4b8928bf9b587b98042dd64d488b12e5da6e856bc6c0033a45f913b76192df10fa21fd21b4692c69ad1c7f889717763145dcd11b4cbb8a5f698b95b6182899c3e00adcb940a60f83d956695e5564e51ee5c9df0d0af1b3da59cee218ccd28d53b373472ca09f3d518d9a36d5d8fe8a0a9e07ed06cfa967b4287580d880025d6d9ec297f656754ef87c6b7f6a6b07a689f1c67580cc6f6f34622f0f384d2b480df590d01c251829a4893d8729aa3efab0354357078ea2e770393ec25cfdf2e0cf841f8af6c12ba4296cb059cd269718a1fec470e9d5c77ac9b2b6977d37d736177a30fbf69f1fbfd7399264c7404a60c4c6497cecc12dbef05912e492c5f51b0045cca930dc8ab319e01fb1dd44e4aa27acc95ed89d712e0c403097e0409219fca66a4b429d88fbd0f47ab30168c7ef1fabb02162e8a90a25d7511d80d474541517b6a216980de09427271dbf49c7aa0ed3cfab6fe4d357a69da11c1134313c896ff1587dfb2dc36a96caf17d1c7197fae95f66427369b2333da02220c608a89ef9e96ae5f4a88e4ced5b8390700214dcb47302e9d8c8069d7cbb75331265384167dd7f2d8117c3c3a8e32403e94117cc0377f193ecd4ec15368d539a57a34cafcacbb0fbc8e4a0ac11ea0b8ae1c697a46c4f90daaf6fa7df7436df11a105799eeb2e4e1a17a9fd408c15984ba866e904e55f9ac54ff0a51d90e3368cd86db5e289ff39904f546f87b26681fc4543e2ebbf352d4554721fd2b5bd953d33bb661ad5a6c6f10b6d128306af8072910eb416bd1c552bea585ddb931d522747022788bb2504a9ccd4ffa5710bac49600d69a066d19cc242b90ec04055e74861a4c2d0e6c9d5f2e798c7567cb280b83823814560493bd9c85b6a34b607adf377b3cd0cc219caf27bf6c54b6b18711456a249c2f2574490543a19d3997a1bb77e6f6ded87bf33ae8fe28d676ecf93341325eb8e5696e2745d82f3e90d0947af60e66a9f0b05c184cff74850876e717a780f8d9d2481531b7d7a3187461f8d51e9650fb2a12432001dc9375dbc103d4e1a20c2ddcdfb282f467e874553c0b4ecc2805349ec7bbd5afa93611eed3982cd3d59744688506300f4323df2d8b52ec133c1ee4b85b72a761b1ebe93b56ea79500065fdaf41c157a130d1439c382cd2f04083985f632b8a3d746b87b44d0268fcb4031f583f221c33c1274e11b20466003c626c43b6863a57d83d4ae7da91981a3bbdd3eaaa999dc1e4bfeaf93f05164f0b6a39e6e080087ac7ca45cf0991422138455d9ac875a6f7900bd8790ad52dd1b4631b611a329b4c7f3b11678788c4396742c3bf99da8cc3322b77ef9ea2cc8b98361251831974abf3db9361c6403ea74c85d736a290e912aa00a13b7b1291ac988c92aa3b89fcb60b51417bbb1bef38811b85052cd4a327605883c0c4d0a890b5ee6dd731b2d01c2d67f6ed313d2c49804baff8efa60223a61380110f1c5450f2d23cc2030d8f15348acaf3d45c4dfc071e95d627742a0af57d82cab0f4428adb35984f499e2a4afba8da1368df1ed57b4a9c6110ad7deef117dde0b22f9c3c444e1c60756641b39f528a2c797b27d00045a47b2b3b3ea02ac33ce0f24ea17bfbbdddfa8021097b88b8b70323b41b2587d40f62b1d539096f4bb690213a4171b992faea650e2146d3fa6975014ebfe9e44556a4af8b3a95d7cfcff32e74893638d8ac3dc53b7a15cae981ed2ba65a0bd609ba9c32acf9ffe41b1627e97beabd77ce17a4420a0e7ada6a79ae93652e180cd8aa50ff2f9c4f96cd145054038e0b0b9b99f3ef5435cb8b3b62295324fe9cea9a6ebbeaad19f84c6520d9a3452acc7372e1f35df0993bd448a53f1f32a32dc6e999990d570cc3b34efd9020123b6795e71a21651fe7aedd1e526854282209609beb5b708f97eff88fc98d3fcda1cd5349ef9b921d4e57546fc6329e6f50db2ae91ac67baa8ef1fcc23d0e5bcc4f24c7b0a7ff199c1ccaaf70ac122a98ec6b8d80f6d8579be29b153ba3b247293afbb131b06ea0e5846d574e861ad91f47c3213713140bd6f7a8bc4334ae0d1045f0a962941660cc5633e53178d9a2cc81e21095f3ee3a07723c6ad584352ce76cef8d1551260ea0d6a2c955d12876f8dfee587417391576bdb3ef7f24f9928410f21f46e3956a0b682a983f431048d02c4d84db48c9cb49c9207b1defc7f90f9cae2828a19214c2f561230a3b7ba43d0dd2199f0c0ca72c160d8178e06356429cb5804c2d677a719fd78a24e7c3769618e5f758e98c7dcb9a4a28737721456a8b8969bd9532ce3b4700d0aa2f1274d830261c241b6fc82d11bfe45012c23509433fa32ba3b4000905f98739e1a5aaf94d244cade53ca168e400e466a83232f95d6c6594d456a31a0cb232b20b70acc23fa5b21ba955e7e3611083ea0bc1996150d4cb5a32df611cb4023be371178c6346f1cad875679f772669a76500eb73f57a271240a80a7272578e7fbcd9dd3634cfb96e070cb526dee9a95788f490b1dbf25f5a59ad5c5e6e92113292bded4628aebac716a8a98d408c6b25a1a7c44bdbf04e9643b9d38b8099ea7d420deec70b1f6cf9f3e9a73c3789196aeead4b3f5a8219158e325edb69318deaccaa9c697e0bbcaf0bd895accb9cee8aaddcb06534aa5e75cd762e61714d44c9805e5ab3cc6a579d85a236698d5ad7e2bcdb31bafeffa8bf2e0e601f51c9287cea71ae673580c98be86fedb7c734c802de84bf583a08eefa5eb3e69764421a675c9517a47ac7a6ff2cc4bdbfa3315561efedde33cbff52002647d8be2a4bae3ca7886b4579560b81bcc37fca4079c5350b4eaf3d266edf9f390caa85325d388b8d480c692dd368b3859273cf2389083aac564a2d0ccc4d2ee671ed73875e2c5c424342178f0dd8f74f10a70db12c208545981f5b144e943c0381b4131c80557504a801f37f7a28fddd536fb10c6153fcc1cd0eeb17caec5a4cf4eadc06ce62c33fd49dbd10393c89e2585e8ed7ce0796b08f1f042e12b520a0855d08f0f0c8952824dfe08ac0cb975c83cb5060c6243f90510710ae39858a57f8758d1e33fbc827e5f381a3a772c64c7cf7a4835efbb86829fa08339eb8f3a6d23ccdf289e8864c822fc243b3ca9fc22531da5c54a0cfefe795c5ca68f1c1a012b8043d5ba4138cfb929409cb11782133f85829c6a2ab61bff111b7f2e17f1243c5e1f362f41ea7d692f8c925bef1921b989e170e16f0f0a29f853427a929ca427f4e760ba7d9f65d9bfac7832b2851f1b200ba7ecba7721d6555c21f2ffc053d2a0c764b145882da8d72878e3e1219a6bf62319e90cd30a08db544cb09f9f9e6258f5da02c7d2a4a4464d9987b55ce83f4c1688f004e865f9ae85e764038c48006877d8f3001937001e9faa670cee717c25df1305b2b26c46f12cebaaadc93cf18dfc44b657fba519521714f92c3bba9725b3d399c6ef13746832419c8e492f7fb5c940295831219424251c6eba359fe32f26c97ca1213a188d8c62970f8d60279b893bc42a0a2cd2225ac8f1ecad4d0508664e169f236c620a8e139805897ce3ada216d03c7600eb9ff7094fd61a29e0591914d746a6dbc7bd60fcf9c72fe11a27c3996deb1498e3e822da19a9876469f51c7efd589b8e34785a91394028d7753a211edff38ae047999c7b7f1c66dbe504e303f3f1339a46df65893f6bbf884e09d2579efa7b784c229361c16708faa3e6e72857fe495255072812cebe73837581b979480a0eec2e40426a7ec72a411a8006875b170a04b774f8cf5f3fc32e4e3fec4b03edecc9e41951119e1393cde2f8f232e814c5e4e9ec052d041b9fa2ca9e1d0bc33800aa18ab8dc2f829ac7c071b6e67c247fd89ba0f1aa1ea313492b1c8c4f1d997e02bcb9a777ae7b9be741ac6adc9ca18b949d176d2aa2c50c7aad22010c463f8a3f7474b009d6abb903353c6c669d3fecf85efc13c77f6f61ec7ba029063919e8e597b636792815928c60e4d10d36da621cace9b5eedea539573d8aafaf053c6925de2b5c88d52541745c70d72876352d3012878e91374f5c155f0a9e11787bc90673f7cdae255e5f4c52eefb57869f999edf928c596e832a40320a66a1784dafb9dbcdd2f7b16da20ef9c272212453a4e10586ea6455dd3c3dddcae1a97c525d00dc0a3eeaac2895067bdbe8e73ac9c51f5926e6cd55c4ac1421628d2af3578805cc5651adbc6be4b798bf3e20accd96161cbd886d792e1a4f88df24e7c7623314547597cdafc7ad5298a1b0bd810def469b9303feae2ad96213cd373d4af762554d49053d3545940fa9f19a182fe8c3e5051cad5f85e69af0d1d9a8983452aace95e6413126457d11dd71015be91694689c9b2af07612087a10a4fd79c1a6e3d3bab030f99c24486aea07f98bdcc80bb711620218ce60f514c8ab244b0946fda33af14ffaec2eb65fe979390e021fda91dbd73768cfd11f33f6984a92d6dd222582721247dabed7f1504515d0c90bf3fee4f91bdfc9869b3f69ea431cf7569dc304618a056cec39a6cd985540e03bef20ed4fe63a608a36c25c0f0d55126eda2da93170b667bd2ebba761b5f99de9c5b50a6d03c2f2f0f6f7b224802b0adc9da574d8dfbb2d00166d646786eafaa92002ebfe64451c2106fefef5d13c36d22b20de0723e0d1f186d30e7f1612810fa823a085f35c108f003457f82b5265200769b84c4010d41d42ab18906b1df095a2f6f39c99a46dd21df07f9fcdfcbe2a9825c54d9881d68e40c5f0d029ba0e3375098b1410f2de40012b266408aeb94a9af0f7fdd4f3c96544999b43b106590b97e79fffab775d5a86cba3739c030da4edcf18d9986a6eff8f36d02bb9172992ccb666d91e057b7ca68f30599028a33287505de35a5f922e25ba53cf3b44d6dce7f01a512b1b7f13ece1f10201fcf4f79cada4172c8daf1c2d6a36a05f15e0964145e9f4f5ef78a5cbd38b03976ab9f0717db5ad0022edeba0cfdba1725ab90dac3f6f4a1f60d584cc054d635481d8ebc41e24d805dd1b344c3a78d97c9cf8b679a8093dfd003ab52906a2b82c63bec7ab562be24a8088031fb4d8b487b250767039e53e10fe1f4e02a3530e07bc78b4c0f5570621d30bc007834dfabbc36793547ecb3ac905d96442396f9ab8ef06b4976f4ea0e21882d8f6815a3ab8fe6435501d74445fda1a92ca9e511eab9f5d3b4cdf638ea86b4d8075a7edd424a23fd65c8bbc32b038cc3ed77630697c27b69f28f7b7fde20ec92c3cd602f9b53494e9ae983922dc246d51cd2c6d763244298308fcd627f7e71db7e6044ca6b340c92407398261bc16aa49fcc58a3b8d4f700d907b80e4155099a8bdd106988edba6d0dbbe2aeb01e66cb1a80338291fc492235f295e07f58aefb5d027bf9ec277329c2f5cbcbbf50e9dc00baa73b1e639689c67d0146fea54b2bddd80ddc13c7350aa1e77920111c4ae8ab6bc474e3333523a620d9c0a1e4eed2a17a9a542176e2499ad6311918d78d4079ea8f742e180b9c3a8bf5e990a7b2c21f6895a2d12524284e27f3deee01964556b272ed08c36a13dabe8e21cc19a0fbd41a0fd7bb863bcf578560bfe9718a4ba7004d099cc73916c14f02122a9d0ba259d3f0d1164c86bda4c1c92d70becc4b54aa7cc26598c1d6b94f11a08450dc277e9153975cdc1e2a0400d5841154cdfdcb16955463e68647253da14cb4601a36d652e6b9cdf86c72fb3fe019d15862001bd4e1f4a27aaac6e81f8dc4ae1ddded573870dd129d2b84c16a39e0ffbfe7d51e6576a949b6e48f845ee7453941a5b76c66ddcf73220f41a13892188fa9510ecd49ecdd60f927833252cfec1bc0fadcef577e4227a2dadf3a59bb28517e52c7b828d7fada654effea590507009ced4d27abca5d9b52f3c3d656be9b5e0385f3971264cf347284769c8caf84886f671c136d8a478d8c23e0373e4fffd5b2810e365a1a593fc1eaee9030ff39e55bebd7ce4b1db37d882b15e7c3d21ddcbec81dc8ba643a84cede47f0a4267356a480c56fdf1d7dbbc0cc49123b1430b27779a2261495778c3aea47543e8ff7f2d7981c2cea9ce3051a3755cfbf3fd0d84c49005d449639205338efb4a3c850ea90182c931eeb6ee2188980385fc87096f26e589929382a9fe4c3e0f5e7edb643bb4aa4b2b3697859c7ba9a7d82499f081484dfd20a1cfa535f0c973d8e8727baaa47db67e64fd3759b7cce76fa513246325cd0b89ff824ece3daab4e81e1c7ef0a660ca74764cd3ba29d1c5c42cd2a65f8575f1d4cda0a075f06a68c54db534f66aa5a110867c04d4c8b3e2737f139e984574f257c3c3cf93d63bd70345756e6cf0a02e5437cfd3aea0d8a9e633815f819d92bf45fccf8ef48105f4f4e1597b2a17428c0dde3be6d84aba18be847b5bc51aab40f81146d58bd4d61b4ad72438ed6261ee79f4a5c05b909f53dae35282508bfddaddea6e81dc06625fe2071826dd0646efa44842adbdba055db857e979da4dee92f635674ca844cac67086c80476aac26d161945e1861cd5f0b8d551b60aca2852ecc18aece6510d73fb7ecca960b2f4c53091025367eefc029164bc897bb307ead1dd6b2c2b40868a6f9f174139565a590fdfffde1f25cef5ccb9d1110265ccc566ffbbe81294b0026ee05db60e6179892f2b88796ab205f311e50cda810bbfeb8b48bdc7f6a644be9f459cb639935b73be1f107bac6861ffc9b553a24a47ed5f25175168706f43db928e5814db552f3a9850f331e5b66591d04beb965a5f97963db946c9f0306548b422271d36d45914f4777effdeb2aa31a4eae4a93afac6095869607b0d3284d4aef0da2dec637eef57b0c52d5616b45630410d2f31f4c86c226908817f0c6d3f45f6f34feab7441f3530ca34d9be9eaaa2914184f70f87b92ca5c460b9e652a36c46f3b60a50a8eb5015318c6f6a760edae25fd4262835a6bec4abf91f133ac28632bf093ad042c37019d5358de7a2460364dc80d88cec6852975784c38588c55a274499c423f4968ddf4be044b8fc6d72d6e3214695eb2216f2c0e5a5ebdffe511cd234ce7c9c73a7035252f3491a132203af5ba66e6db767036a0730b5151cd22fbfd2cf4b8d83926a7c36de17e63248d1e22810f413b7574ca7dc971c21614dcb6506d3c4c0b6546cde6c5ce60b3fc0e689deba4fb4b50696983aa4094c047a579b8ae4749a403ace5cb75f87d739a6aa50cbe93d82448abd748d4457994a7d047ab6e0b30b960cb160582e57a11b6d9493561c67f954493040daa0b017fd45ef58ac2630176d9f8c080d7ee35ae5ae9b8ca8999036e749ee1782fad9240b78d1fee5af8b373323efb639769121b74eecdffc027f29cc157ad6ec442cf205f61a7f1740cc4d8b31cb4bdf39ee0ffed376bb103064f2ad3118d3d082a1ff28b76d03a0034d44989c21b29b8d2aacab10938686cf79cdd3c57f32746fb8c879e4725e1a1d74d0c84d47c9187fecad861b5d161c262dd495185f41678e0b085490f72b97d772a936ef62bf3f4640c5b3500ef7e440d8e7ed80e6cf257ea29505e1b41df55eac8b2e9c038316354af029ef27956e0d9fe7b402694beb49b856d60750d11b4344b8c95ee7778c2363df3073a1b8be732e05f2fee2db0bcd53a96750af172f7fbc462e6fbadf3f6f8463d498098921ddbb1530c3cb94c2464959ea7cc6704f4d77ad84eef01b7a34dd4348fb7d0f0c30b015729639b45a03733fd2d8432328bd5db61d3ce1e69e8df5b6f0efb508200f617d013e0417c1f1ee52620a8d0ce3c1c573809dbaf5e7e3f85ada391d3232b6efad4553faaea6981e7165636e7556e260ebaa756e6f4c7a6c241885aef6375d403b033d4e1c60f564b286d8e0952242d4e38edf27b33a51e760d31c544d5da8927ee2f6e0d4e3f3a9a42ca1f4123966fa33816c8db66e46584ca04679f091b6e19014154a2eaef5ca3c4d172672644d6c78759712f3ec20651240c4880073e67f4b5d43166418b93f135c089424e8050fe71f28ecef4c54a2d585c50266c991450b26146ef7e9b5147d4a0e0dcd5b581285a7bf9623a0e888b5aa4cc04e2d3ed146cc5700d3297f0acde9eaf5a6f94249e3f9527882d0a7c6d70b75b5891c7a5d35d0edac5721cca1607b8c35d7370e73307def0944fe907f250112375eed48a1e1a090b86ffcaaa7a9003ce68d0d26d1b267fba89a6da54db1564a3a3f27845258edda38d3845c9585873c91cf85ced29e3113c747cbb87280390dd2f80790f871d7d3c62f47850ee4a5c53ad9473b9508be8333bfd60e7a6d4026ca2436c76784ecb3c219170880b730389b5089ef38b3272ab7b2ba35b9fa3a105ac89d3171eb9906fa86347ff8886d13c556d6dc24b24c51fb77060c612a52ae79f990f93023834cd9af6b148e7e3239166c870dcae1c2b70649c664637c17531cd517708ee5d5aa15ff9c0f5e4a7d7b7fd5397eab886c1fb926447b7ec90c570822033b4043c8e4b49e0dcfe7b86711b543cb107a444d82c848acb1be98f30af0fc8d83150b1ec27bf49f2ad50e74fb7e7128db1f19d58fffdd3ec1121718f95b8c2deabb95e108199150844ed0dc3f6f1562f0dc4a441c243167a683f61c3f45876c58553385832685832f4a1e5e0650a168f1de9f781eea4853ac0e46a53936b4cbc403de6d02ca6ec624d04d438fc38dde3812d3d4e56501a765f03844d001e466d7441e4e5457939c7b8328b873900238db0b138b685ad3f5ac0b79f225d5a1e984ae97c433e9d94102f17cb040030311457176fe04302b18a2e8ce3d6b597a713d5789e1ea3c1a483894ec11bbbb253b82e23e5db00e3e093737ed4a126f63a6e0a3d07695b5b766e2149a856d2708b00e523582450f62e56e4c16f36505f6524a1d48c99b905c724048634d9a768c576eff76c8029f1366dd92fe0810ef7872b71f0d615c887f4ef12f940b7dc7819a8463eb63d30b1a186a60d4a4937e5da87a5a839a782be884b0012c4f339a309ad6e129d9c5e700cdb2e78107be92201352ceb385f9d790eb5521a36bd9c2deb3a83a081e65f11d25575f90329657d72af6f63a6fc589036bfe61d5bbcb662b0a8aaca45a99b89eaafdace4da6deb9104e4307c776bf09dd3f3160b02031399d48a5aa3de69aad34cb13a2ec0c2c7e0a8f20d11e7900fbcbeffc7a5dbdd81eff40bc588a81702eae734e5ad9b9a61724ef4e6d1a676de9441f7f4d4245b8c06a5e85c5f6e0af523c07c209874e3bc40f1c5b4953b955167155ba198ddab8fb006885052844642bd36c2acfde23e20aaea407a770ed4cdf99686feca665e3aa33d3c793aa26348890fbcd8b62c09dc15f46eeede4034a4a3377dedc760d1e5d1e15fc447c2b455856c249b7ec3f6d08c68133561e19280456c8b0d7fd8561a657662807fb4f130ebad30d05631f186e3a27cd6949c8d4c361ba6e1332b9028170a1884e085585c1513153abb88c08ea47252fe9285c804af3c975bc8947da20b770a61b74eaa19f9ac1a25779d148ed52bacbe851253f6bda165a8e8a3040a4dc85b53937bc63c59c0aa27ef21816513d09972673e0b38c6a0aac92ef30dd8068515716423dcbbcb6a7bcb00a40ca416208928ea41a8cb6386b0592fcee920c7f1e70ca6355e5772ab8b811fd075c40568cafbc75401d121420172299c954262fcfd44ed3f4cdbbd1ceb184afd0fe797f2bc2e6d9604f18daa87ce9c75540649baf829640adcdceb47f324bb5c621e0cc7bd8d6a760cc75dbedbe3e3fb1cd8973210157d7dc90310ca86423877a2078fabda24f0dc2d6de0ee5c01a31bee55e9b44dbb6cecd23806eb1d2007557d9ad7dbe23ae0559a4311e32516f6d65cf080394dc273310ee0d5aed6b684b183e34d004d9da969e16602fc18fb3f6d297066c326d3a1f9e4324c1a9edaa3e9371c78d86eaf7dbe0e83c2be2c975d4c615e80c4a427ddd49c23f751ab1caabfe58b36ebfdd45f61b0931c1288a23857e2f9e8d5f4a212cdc85f532eb78bcfbc40213d512e07bfc5a763b82d2f3083146cea77d5a67f0d43beabf43a184f7c08c856590fb86b70c638dc2407db08a62a90661a8581fe580b7c410a678cb01e314db594cf04fe8a041c971aa24061500807b3286b2fbf040af38f058ef630dc8826bec71eba9664f87899514fdac1bced474a6450201caa537f4f8d086e996f2674018b04787bd8895ffe3fadd0f1c8b7b304c925cdd3d06f036baca985511490bcc724e335751a54279ecf2b5d95fc1363db79e20807dbc0cb8c82b2acf6d7a90f19fdea13f332efcb90d6cff13cade35a9ae39af21199e2c40b5c380170e87fda7a6e0ddd7e7196aa6c46610325da0387bf8e014008f8d039512e0837d89264f82305ddd562c81fc7ecd509c7b22efed012358e661c5ee4a16399a70aac5f6ad1882740cffe8afb9d6ea7c632c62e801f3f81e6969b139e7d5e4473fd7b9ce264c5450fe93e063cc31657f2c3b7fbf34cf157155c085ade4dcaf3f6401f44aeae3bec8737bcd1b4610dc95db5ca340af42c32954461f2a6c2791105121fc843b032b88bbabfe8b84a97dbd94b453c6a797db3afb63c20218f3dc61f8c06a4ca96db4d3575881ecbbeb01d1dbb950dde9c8dcfcbf837a8504235e9998b31b5d3fa4c13fbebecee1cb7d2f6269a803cce8f9974578a23d097b047c6173456440451a9086a8cfd09c309ad737990d51329247412c36d63ef2c17151c8076413f6acb2a94ab62c0a20818c4fda986531c640d2f0d06578f7227338747de5f7ad5d1edaaf9608f0b8c607da4badaab36980d17bef381786b4aae5ac8c02ad6fccffd11b18cf713e97dce7e7e014999f0d6be38cb5787434b6f2bfa95d410ddce9d2362054ccd6d2bd9e932cc2961777d1667153277dc250795e94a9d05226e1973c1324eb21069b925084ce2a10053f06074cf115f8b1c1fd505d4ffa4f390a2aeb98eca17de4b0365f85c46e3354638dc210484958afe4ff6f818c903a600c1f634228146819333314070a97c59762e80051bfb35f69616186f84915017d3fcbb153aaa8a77a90130939388dde2d77658bb0f00897844ab0a1eb3091fbb4e0a2a4d59f4a7c794f321dfd2f6df4803bccca3acbe96e1e1dfad1c66d7d9654e3b2a10a1b4e0d1199ba433c5cb0a6072dbbdda7ce1b6276abb78010c2c1a71f1c674aec25dc85c217781d7f9d2989e598c8df128a4adecefa9aa45e1cb15327ee4d811059e80f13d190e98fd2b704213c8e7dbc0e122b86ec77a7cd8dcaa6b4f4d5c4fa3041e7dc8a6dd56881f1597abe02a65ef56624c51c1f37877d725d154595b1ef81bcd2f920235c66fb32682754940e487e69582947614b9ed85b13fdf5d1c55ef267f6beed9d6dd99b1d7a7e791f116bdcc31ec9ef2a837682c011a7e09e89a4b176543a915575cfa6e0bbeb9da228aaae18d9b29e4537b40c4e2243dab8445dddbde8876c5dea2b8375f1162751efe4b4afe05e7b3f2163457b0c5bc5e49e75b384d74a7cce7e9441825e97c628ccac74ab0a7d596760c9783672557c63b51ad78fc16ba595e4f9893a9e055780b090102aac6ea4bc9ff40cfb9af69fc4fa15c180b6edf3925574c49ed1b07de2eaee9cbcd83974c49283528e3f9d1436d75fc6d160d6456d23e48c88429e8e5fd93a0d0a90d5caf7e5122c9afd1e047b0df704a506c373666657a1bec45815bdaaf31fb74cb67bfd47229280a00efa2dc30d5b137688f65028066fb846e497a2721b1a46ced00e80be2b3e048930b7bea18f9dd08323bebcfd09336cab172a50f1cff41a5bb35b4190b82cfe12c0df4ce6b96f1bef351c1ecaa1d2ee3bf39ecd47a0db1e23e5ae7bd8a7374adcc535ae313ce1b1fa8b96a2752e7eef604a2bc6ec58472b2f3ef24fb176c29a0aba806ada3617290f6f8e11350628dea844c104a05badb1734f094e050cd9aae114533704ae867bcf634ba2e64c92bf018ed02c3107806b469ac8e4bdfe1f25ae003f6d1d7081f0d2cdb26c1436abbd48dd91bc8853265adb9d098457788eac374c0ad133bc888954bd491c9898ec40eb76619f67e1a25c4e2f3ccfc647a3cc8d3a9bd4b0c5fce18fd6e27d2f2925d62b8076f30003f007cae664b93a02f7071a05f2a4ae9f6ef5f7c319ab1ede3752460becca74e22a57f36a81701a494c5d8acf4c2f938c63efe3b9acbda9dd0258f3ba2428c4e9f1a00a2b5950a0eac9b0714dcf7e2ad86b0b94bfd5ee81b950d0d0e200edd0c6beb02a540f141c53d4f0c826cae003a9653a2b10d8d62bc3e6f8554b9fe5cd0e810853b918ac4f5746b8f076d1debd2c7d82cb4e95c878437a936c31838f1be62b391357ca6d54fd116e20033d7f37722b584bd68725f444bd7d33f5d3a25df1ac16d96eb3f4071ae791d716d2ca206af31083ca5048987219dd60b5f293f141720367634874e8bdb37bf12526d08d0d35e6f0b1c701bb5453a55fedec54e14009a0cb35dc9216ac77c7902ebf742199567baed23989f1492042f7431a64dade219ce7de328095264b83c775852605ce9c1ec39530649a59f2b6da27726798fc8c1a90da8a32026da370b980625f56602147de3c18d4add63117a54bcd0a525dff8d614bb62552cbded666c82b0003208c17b8cd77d31540d75855a5ccece93c0c5ca0665524305b88dbca0d445b89b2707088000d907a53c209dc99185f24ea274b1e81eb0d9b4e07c20fab28de3cd670a877a1f97f936c04f7b4971ba9fc328aa26537dac4bc9b8460781d25549ee6c0ee5e212efee22ff8a84ae85189118c96ee6f35cfa0387e9f6aef4eb72cee9b97601754de6bf7b2c6d0eede9e2c47dd4e7d5b8eaf25005613da02acafd202f26ee6a2573f88335cad84af6d5d3f403a3c0ae7b9cd119d2d6442c8376071e7748de15320f4d8486fcdf2bc7eb859a3a85b3ca7aba9e7678ecdb9adee98d41a2c5499e985866ee87ce932c054efceed214faa037ee17f8e08e4c97c921d5205f48136ed346c4d8da133b5d5b30df304678bbc1e5be88d20faa4ef64a5a5b133704ac1aebf43492189c2b01cb418f82ce55a614c9089b6642fe32fe3c1c573e0de9b7f83989aa5d868e2425480330c694e0fbfec9b2d3211d67265e504fb67e86e9d4d46ebb43abaecdee1336e8846261fdcc5b3bafeb558aae03f3347884bed60f8732082edb7248073eeb9c069dacc57a2f9670a0b7f914e90b67d1cce19eedcf56d2becca8783c77e32fd5f62b1db63a20a87ab1714268fd719ed49d3d7d717e213c330b06e34e7960b77c5b75b965d5de931ed9905cbcff6c796ac056a2fd64a0d4748a21e5092468540f0ebefbfbb3a6b706fb936c62c231776d8befe94baa21f78ffe8851aba103e76d4134bdfbb435a4d77094befbc132ecafa9e8ddaef3876a138fe56641dfba98e70faee483f3eaed6beaf5fcb22fedac50b8dbe7490c132c410b7b0b6af61dba6bfb542ffa06812e59d380f7e9d011089985e80f2d7fc96e3a3d1be0b45152f291abed3185d889193804f386436df3c7b3b8b0b37d46b0646dd5abad83fce0ef22d48d25f84c213271ae65ca376b608a1e00dad75daa322af8065254f1f6a1033b352510f751f091df2b427e7318ee8ece03f5977b747e3933be4a57895984a3d7e2dbf5c1099da4a9162c0c40a6e1e383752365a3f735d460a20a375a518f9f45f35fa4ac0fe3afd3fea6148f0d35e2b1a19622e41dae406a022f4d5b18fd127d3013035075759b3865daaf7cd28f2d038e9a4103db941a486b0fe2f75c608b259dfeff43035bf73010820d38d721347dea32292340a4c003b137a5e1eeaebe8787e07c23a2211666fdd14a4aabe27a1f265d27582e5e1e116fca5d7aaa5cd9c714aec96d66eec41546189e6c25f14ed05b95da5136ff5894e253096623084ccb62996ac6000ecb83ad900268290a0d1b68c63ad46660349a38cceda08262d8a8a29545665038ae14cf787528e2ed38568b34285bf0c1a6af41189b473e4dd24b74ef99dbb11ce0b772f6a955df07942d24bad4a3116f1c5320d5cb16db7bfb65adc424c573164a86d0729d50fea10a4451399e832eba3fea7c3a5b3fee476dfbf5e0ca41c98f7eb5571d90d999d32b775052c6fa0e28472a53182bb7648e8dea9bbfe3ef1b7e86f1f99c570c6beca6dc7e9f620d43d4d685c8c97e7660b9c644d5940a5c22522c795a42c200cb8fd3c6aa2df110f2e87ed2ca0ccffde2026c89ec6afa8f067a73af2abf0ae3de8425eefe641773660382cdded14a09c0e5f7f41d11d7b309a4dc94596b238fd8844a7f8a85db534ac9f274185c2e15959ad83288d995bcb3931cf5630a9e4230b1e4896c60c0d35e725a7f2f47647659261abac81e106765bc5c79b011d6eb504c4d805f7f239359dd9f90748d5bcd40f30000494576885d7ea696d66713c9c447761bd358b520eb53d9a279b66fb896caebc69faf68d239e9d6880abf3236cf977cc7e962e98af48e9f17020b6020ebc209395717c33c250cc51493a25a4f850aa5ff9513933a8c5a11aca22e09487c1c77f95a283d2c188d8166cdc0859677b514d2140589e8ae610b2cd7ec7d358275d430e1e7fb86df99b43b99622afb6cd7a45a7c040015f8b7ba7bc60df22b40a45e889f728d2d7278da7417da656e315a297689058b353370b89eda7b374bb3572d39004de3c0e9fb053b4ab9238024d5577f49edae1f99e77e745a9afcbf9f873a49e55f752396086b16645ad593a7967de085466aad3a06069c5bb40dbba5347c2ae4b2d9b2b4f181663f7bf3924c04986dfb3f3126fc333fbb98213da95ea087648f9b2b7451d8f8f14b0641daeeffe430751565f1c9b84c156f2ba7387cb0b90495606af5c6a0953222499dcffa968f6ae7b0058550e59688acd26acc3986929d22c0df0ca4c08f472db0460347e0018c286c9f8c6c2651985c26ce835e2dc1762745c949975eb43b08e24a52b51072c1c1f72a75daa6b82813d8a21acc1554bdcc7d3aaf1c7340044a917d6270efe54fe066c58292438cd2b06de9ad492255fdbeb18ddfb2d3777032f4675861f6a76352faa34fba43c447d470dfd82dbd9501d6aadcc354db99e7a95f567eca62cbccff636934f1b83617cf114c6b62c42514a23a8814026a6d3d8ec22731d5be84c615c7962a6bf4c4ccf50b513333c2f72c27e937c6be7653f79d1381e228038ea927db50922d30c1dc61c02af553c1bf82be35c113789eaffe43911e82ec9e00421222b5d52ae21ac6711e24c0b7ce2b10735584a6866eb936e6042454f8238fa3dbba07e45934e182dace5610a2c4818a6d06f6ebfb915182c66aa74cbad0b5950300bd0ebdbc813dabbd937d2f4b9d47dacea5e7f8600c7f49fa2683aa9155bd6776144908873eee7af2ff98bf18a983610a429f08d26cf3c33f41eac6da2ac4bbdbbcd8ef3ecd10fc617aa316dd49de0a8bcf3523a56ed8b5e1111e4e40e8336c57ee2afe26ca3dbcb77dc68e18445f1bc089d91300a7e94ec1b36838086e17ad2b7280eccd2ad3021b12763b1d048f313dd36eb779b5e0d859fecbd3b7f371fa3c8efcc45ded9dae17d81a04f6337e7c00d07d5b010ce0672cffcb2964b76d15be866887d850ac3a480ef8c23cdbfc514171b34b4c63adb7db5185a4f82d2f3620e200d24f6f47248f6d23e0b8eee21f8908d3fe622d40ca9d09acb61ea801e0b8ac08886289f4448c44ac1c543112b03df90cd4dc2585c714c0bfaed79b26fc77179f644c597e2b557705023ccfa2b27111934e360cd4a3a33ead047eb8b2dc1b645116c124a5b68806f54d5b14d1f16a83772c06c9c4d255a8bfc0bafc6952fbddbec8ba67bd3e578b78af7f0a374c28d009075ba8cebbc3ea9eea20954b6753c38a2523bf1b0ab2c213eb10dc847c223fa71124b4d811cb24b44b70d411ea010bf9ca9c5f7045648b2b2f63d057f157edba8c5351f42d8d94fdeda39e4e844002beca0945134724649c2a8c95dbc02022f5bdbe46d129e8fb16b4fb460ae2340976ddb0251390d2c339747e03bec090bf3ed39543647ef758fab5eb79cfa1b776676923ea593fc2286146dd9553ff15668053ac13dd811979ec8be55e59e9bf1500ee43bd7f374f04eebddcfa41a2dbfdc2e65f74a73b7debdc6bd3d30b46ddd624cd4e22b69004595e96b1df15cf7c6ef691816f7e7919806ff53c403f721a5ebdfda0a667296fdc7a11736d0d99ba4ccdea2e55607e5a649686c436322534978c778c8674ee217db3db30382f052a76ee2ee88bb3c19488da19c885dcfd85145d3d349380c586027b631c9279a516b9c088598089e6f9521b7303d53d3779d7dbe7ec1ee99642ac3c4f273696128a66262630c8ecb62a20edc981f885734b6fa4266bcf98e9400427987970e3a20e0b5b4a6c7cbc2b5c3fff0fc8c692f1f6fc76afad62547c5c68ab0faa49aaf420922faf697dd78062b5d344ca3329cb27bc98dad41e262426b53d33e6aa4209c18839846e02c1ccafcf215e2ca0b7d5077633a7a1a65fcc45380d2817a7f04b32e85ae0d14cc2644eb07ad83025256bf8762c387cfdce47732a5f7482e361471219548a6dae895be955b324bd3338ceb72d8b91faba8f81350311effd53abc987df6bc0d61b1dccda81f868c92e5d17155625ec6fd6b48269f6ffc1a20ce0e3417d1c97e3ceb9211de7e9ce54613856755ff8bde20e6dc10d8e2936cbf56b82b250d1a0e9df29cee220ae4af21eaff190631d9bd4b0ede19ac2b3edbb5223333f268c9216891b2ef816100d124f982b3ecf78937eb5389123f9108884cf1e9482843e5c8dac7935a57a3fb8bc4f6bf45dbc2726772f9f8fa8cdbd0d2675c3d424b214598b3ca8dc0290d5724e621655d1d4338d2b6a542dbc43418bd89b343ce401efb2c8c7952180cd7f1752dd1d9f063de9fd5571fa9dfe8d26301eaf944e1666fd97ae2ae4a41f1b678d21146188a42b7c75478a63cb307bb881e472a8d7afab7e9d0740179ca4f123abb9fa927465fa3086e9a20478041a3cf0df8683ad84e50fa026c4688980d21bd11a2fb9c7d2896db43e6b17b486acb75b507efd455a5f7cedcbaa087db07dc05af861848d31e2e912b08abd145644cb0828cb79c4cb89344bbfe584b90a38e066f4b6a370013ba5a6bfa26d1af410345185558256c1f031735afab4862ffc16dbd1911008fade4ace3a424458585fe897c9f1bb81a4f1d731a7e70fca773e5453b2fb90db2984b00d88cc4ad35af96e357cdc3a694def048eb7bc4c51858cd4fd06736775aafb0919398ab311df3e971061b08fb62104717b61d526f771cd234a1f162a97c4455e202221467be73e43df99b2437effdf191c8f85155dd5de5b0ccce3246ed75dd3f2e8defb51440ea09b07ebc8390b5fb5b2dc89906b5da76067bd878be62d998f41f93aa6ffe8ed0384e13e2a429680813da6a0983eb57595dbf1d0787a0c89858000ac97ef3116a9681b53058bd2fec895815510d3e81179b43074f82d367a6c7ea3431a53f38b9be6f61b73e3f087f9bd4b9d6a4e17b68c858ef892f61449f59c16b66698b1c89b24691041794ffec5b77c30aae4f32f84039efa2be051871654d0d156e2b4c673be159093bc239d3f2015bdf13d69811751c2dd4577f9a570030f5d796c4689aa45c63e8e18aa52dd53d269c5a09b7bf9bf64cf7496a95784dfbbbec9a9239683bda7e053b970b5099f869509c8fa169c51328df90bda621d12e964d562d937a222184aa24fe59c4a62ff934dbda82e8cfa60c94ac79e9b5f8a444c429751c9444b06bf220d20e503a429ff9d8f7123f27d5dc26220aa5c7ba2a77933aa642612fd9cb1c4bda0a804525fde0064a79c5bf6721f93bf636060be6e579176eb2c1076895dfd51c69d0c2554285b412558c3ce8dc13c08814a41f22184348f8f40981b81553f317c5f72820b2c8b1fadea6df2fb7ff8480f85aacc7fda7df6397b67d62ec412c08d4b9ffd86070c0714484a190c9df4aa8bbaf20faed999853addd5c4a81995b95bd82613ae156aaf879e54e8bb107488aace3e106692dcd24deacb0e96076a8aa35e9d5f49219e230fa3bcdc6f880b0a784c2a184e222441a61f51fd6d65a37b82266be0645d51e66ef8fc11c8b6d5e1507e4c5221db0c4bf3b19d59c65e96183207f62b6d7e23711d966ad628f5f733a4505bc1eee29fab8a2ff3539be7dfe7e281ccdd23cbd02968e550d4f89e8310ca6bfac57ec63632f0ca4fb36a2fb7a623bdf99b47fd1bded680c2373e57de058eb9b356874d4f580cdeda494b422f7d7858982dafa2f3df87f0613d4c8ae0076fd8335499811aa954db2432922441853933b341c8b0d7cde9b2e98b6be77952cbd06deef74ce77cf6015e849eb830604fd60b7b100daef2872d7d30a328b7affc1120673725e6ba0b5dcc6be34602687caa3ff01e75b67efdd593159b616399c890714af673c57e1962b6338b2b7390b961bc8c31989a7fc8c3f203b875862a8f6ebe891a6c30f2bf29c24da426146acb2d4e0d6b11d90750e4083a9c989bd33abd1ab1c1b1dde2c3288020dc06974991cb0b1638f333a8a4a7d6e603ded733e6073f0994ac5b4ebc174d22ded6b76761f216d2e89159559d491a72e4a62d08a51d773cf629c149808878700b9ae3970bbbc287b86e5e86ef6063eb894b1145865f59d628403b0799899259d1999097c13525898199f1a095d19741e252160432195970050e18ec7b49230b70b7586e08f7cc2db149b0d3ab01fe66162d914cf32c9afa6e9783f6f0ff871b924ee86abdb31d436e2e4f57bf85d0232548e0b5a779555793effabb5bc8851717d73cfec7ef82cf47b129e2cba8e80dde7011e013f76b43640aea0e5e8962ee222dc4cdfc556d01e49b0a6de19f60a15985c66ce1c218a1b6fde9edd281870a1fbbe9431f4e916adf5f36f0b979bb110cd445933922d7552d0ed43309c6a9619f8c786365ed3fa9345c2501320c8d643cbd670f6cf712f635cdd5d2db01cab39f2be8509042eb0fefe71d19998e22f9bb835b9c5c205ad77bde04136eb134d9c31c91d59797f2966fed0d23302ce33a39ee8fafa324b95942a4a0770c402621467fd3656857907fdf90ea67a6d4b50ce02ce94120307caf8bb1dd468f3cb355f1c623f173136acd2d1edc6d6e63baa6295f97f88b2eae67c81ef878030b058600b913979fc8e2f02c876187e1d64bc68e25910c3fa968cf8db88a98f2526d3e9a871cb4387c36faa8b39798828d1cd7907f8354d3a5fa2b3862c1b73a02d42be3c7c405947374b801156aaed11250cd61966d583a85c75926993ed316debea34cbbc6eb9abbe13b342a71aa8044d9756fba79c8a651057e3e40c9fc4257b3824334b096f4615362d48085d5eca3faa4b0f8286d633ed54924ff53c40c78d6dbda97ec662b347ed1acbcf4d27217bf45ba0a3c4ed3a17c67af1ac9149d962ea00c01bb8e0045b30823d7efe2212f5d3617978e3b3a6cadc2ad58c246c55d685e40eef2c541440d4b36b26d7ede3370430369a1f1e0fc6578108c4b8086c0aea55c9195615a49a777a1e129371036f1d15afc7cbc18c0818af9a4731e01386c898809d97cb0397961799bc3c8a01bc5117bc4afe680e3ccf68026379c53a01a3fd97ae42719152e02441f55d42b13d9be2fc299d2ec605c11817c7ce26e8f77034af20321b594cdc40e0a3b861d19e379412f8bfb82633ab64de59af371d6df3045bd73d90edd46014c2beac5043c4ebf219681418d6eed0a4965d9988f7d9ff36dadf7a3aa1c71075d9f0bcb7d92fb2966d60f6588c42c513e001fd419f95d6dbc7b8a13e683d7cfc9901ed0ee6b165b4746fad995b34a497e21b0bf5409298d9cdebee5f1040a54b16c9b1e8d0f2dd02d46bef5f15c201d35b2b970d0c3cdbf0254225810467c2098b57b962351a7c92924bc27875e9c7b405447ad0e672eb5c339d9efbdc3a30b13daafa4f3f31a2bba9de5ac4496791b0b30bfa2e3202d271c4ff865244b00542972981f508c0bfc38e34add835e814793c708e92c0ce45472c1d27a5185106fab3aff466891d59bbbf059668e72b974e64442bd9a823fc71c69f65b8e6b84036b69b79c9e31204035002723f37d8e9e003178bb34d2c525f642c9d230ff604a2d141a096850a715d7318a8ce680d97f15e45e8e88b126a62a88f27b4a1b0c96b06726b1c03d697fc4b9dbad04fe02aff5890a5055db6b176af9e4a468df30b6ee4e1abf8c55251421909e1255e6692a20a07d3052edd32ef13d69500ce17ea81a0ae17a749f978869ba71a4e3d56aab67de7c215c8cc24313518b69dc976a3a37e78cf4567bdd5eabf689e2a9304e3f9d4eda9fefbe65b94f8ad204e34c3da803c4bf277192525df7c4186c01f4698e28c0a79ae02dc5e2a378a8c5be1e3ba49ed5cf9e49c929ba1d2c57456a8a5b20ec3337724ab280332263adeb170c1da28000191527b92f5c31e8ebace456d11b6c326ec8598866612f48bf8a5f9630f14780d6b0e5ce504f4e9f43347d648820c2dbad57e8db5a080d3b820383fb885862cc35524cf74c8980b1a0b551f93456de34d37bc30bba048b97b346de2c32ef620f6c1c0385a6420a9f173d146da7b5b4ca4053fe3a6380bb83fe56b47207135976c142edb03d86c711d90f5d92bbb0f4a41c29789d62faf930d1dd5ed6b481e8ce8a4230fa3edde87ce2eb1cf2a92e928f78399a0c366edc1efe200685557ca827c9580e33263dedf2437f6d4a357c1179f6361d194efd94e5061c895a9465a0a406772c45dea527e273308837c58eae3320b4db53e123f711c9f1f40becd64a59d61f4142253d9f38cbb44b22547ce5969b2d416ac83ec13a107dc184ec889c9178daa7535803cbe6ae2015c2bd5b3a1155010b3b35bc383d905220c091a59ee2a68a7ee209ca48f7fc0d72562479a589d82f9ef8d288e7f5a61c6d2e01fc6717a2b24673754619d6f0b3cd9692a5c5ca0b5f84fec9e712c2936cdd0e75b1187131c5cc1c285b45e094da5f9fe4feefb744dcec38bde1790808f582641e0b417d1a8f1ba7bb0646565e5f5e7b6e1ccc0d0adddd37baea55fdbbb9914f414298898252004b0bc6dd84b4f1a392f5121926e72b29fb6dc91a77109a9aa6ae0c1572cbc9871efa53d5c944d31f5492b3c9f6b18751361ff3f677070e86a959d01f6069cd5e970eace56c007aef805c030314dd587fb5d5367f2a6acbfcbd6ae301412eb7205ca07db05029392b2ba002403b71ebd49eb0c7f9d27d5a060d6f096f45864041149c88eecaa21b6cff0ca67a4988feaaade72ae184eb0dba4cd635140d6f17b38cfadf5447a3bcac23d235db5fab13289af63314a78796a456213927cbafefe90fa403f726deb3955d34fe63cdb61bf55e0708e33a6e0b6495d55460f32a7a412499c6f96b93a3df5f049d594d6604bb5fdbfe4312fcc5798a41eabaf1fe35542a59c974bf94d9fd97fd61c4719cf7332bc5cc2281b36fb5c625707c41532d8302edefae58eff87c17f8acd398dbcfbcf6928cf3f89dc100b9607ab5550bc12c83319bda698c2da1d8d38bb74aef3e01bdbb05d8c05dcf5192a146d1fc9a919ea51d12a3e58202f9144442fb6abeba4ea64c6bd2aaf81d8aa1b3dcc3052e03290f3cd18e92be04a574b36718f9693f3315e888ed2bf7952a1cefe38edd332bb28116afcee6219209316a17808fcffe3c907c34bdf62b47b58aa0670464a07c5b7f2bbd0e93f0452e77deb5d1c5ad99e17069328138cb67d16c6e9cc7df4b6f0349be22ebd816a4a0a610af353352ab83a240bb63776e1ad6fe7543944feeebfa8408f3846bde36d054cb77de3dd8df053c4a2944d8805a714f8284bb559bdae782774448ce1dcbc5c7dfc3db726a7c4a13867f0fba24ee30362da489d257e293e4a4c2b01b3167b60b8b327007deb8d1d775218cf9fee4277079ccaf517b9b1cfe4879264349cbbdf128e7e86d15d18340c5ac4cb441b397eac668215a730151dcd79c24a9bb571f2712d954b9820505862692a9aad854ad3a9df6b860c4501fd2fa2d0e8f9af0152835bf3ccb60a2bd29a631293acd9b656ac0e12c482bdfff322b862d757188c6dec2d00749ec5571360867bb493cd4e6c972d2ddaa99a88f5fd0a0748bba1926625419707cad3565c8c0dde3eb4d1574643b45205bbb05ea7b501d2010adb1b9aa97b993c0447741755c51e01a95e662d1753ecc301dc8366ecc1106a4040639a04196b99f377088f758ae6c06830a1908223500b1d9b6177429d2328d288c42600edfbe23dce1f180f3dff01187f116540ec8abab3501badbc48c49b01e7d2c42f1d957ba4b357a841a86c0a452243803c631d9608aecb9cbdd1357ebb7d3479c5d3f046f851e3a6d5960174b51481ed8694306984d73d6af9822577fd44428982fedb7a28efca1faa39dc7ff5ae685fa8d45d3a81a4f30a4f9b58c67a7f6869bd27eb667a8503d06708559f99ae0c03a5da8e8b911442e4273936ba75f38930960849b4ee28c6a37aad89189c2cfe8bcbbff3ee37fce5ff5d2662a223b9a7a3ea1a4d51b4d09ec02e30bd4cf984fe0f73af90319d0b0bf61fa1d9d17e35eb01539d9ddad32302e2f2166d33e97d6cf5ab59d1c80ddfae830adec1c45a10113ed2ee5e59fcc757c17db07ade74f299e822e77109cf4f73b43fc12637dd5ae626024cdffc4444f703b624531deffd7a523e5dc7187190e5a9ada07ebc69544aa96e364a51b8ac95183f2c755fbd31253bb3ecb91942684f15d0aac13126cdd45ef680e54453af66e7a2498428eea9e3a70f238b2ca05360f45f932e043321d54919aa6f494a9b2ef6b8769c46e0a1287341c04097e73bb6e16463aa1c3cb2de3a1ede58631e608f86ff810aa31c6575ad8a5b86104348b99b58820db8cb1b788ba3da32ee2f4450b9a61a66a082bea9864edeea4cf7add3df406e74a6dc2e61708f67be42582c8020b6bb0334f428434d92996bc5359b92349e3a5cebc38edae088df8ebaee1b5899f966569037bd6747514f925d07f13c92afe146073a7f534e797c9875206b42a5f600d5f56535fe29b09931ff132f054ecbad3837c2082fe74d1e71ababe7beb3847500b3902c019ead809986e07ef4e184f314c4107d3b2874168c5f168342164b2c92b8cda335f0437bf8db836907287b654ddf569c3f53772b78679b7569c266943199398fa1b987fa6089f6e8e2b604e60516cd93aa2dda2748022c0bb24578c28c52312be8faa20e7cdbb7a57e213da73f95e2326e06db98f0427f57241f1544956273189e7ae46f85fda31241846a1e6df6a23a7568d18b4f0ea14e5c57dcf7816520938fa67d78c972c4a4e2d25831ac5fdfb6bcdc7ef8d61eb95e8beea98ee6a508f22efa2cb4f3a86148d52de11de47f1cf0ca39de7bbd47f61e9b4a8199e5cc192934ade433cbdb6f418a83433476ba1eb41aba42edfaff419f2052a3dc93e569ec0e67bc431a6ea4485c040e54541b13a9c33e3d7fe12c49ae80e79a9fe5df517845943484fa89e3a0888f80b8a663a7f6d58fd1eb40a1ccbdff74552fc032ef79ede4d613ffcd6a839b1f337432766078de0a64b6dc0f3cb89d210fa34ee21c097bd8a520b8fc710a6080745f96a11610b62d940a003e55db2cd4ee176fe69c45b510885aaeccaadeae6445dfc63b4d3a0fff81c3fb84be2d76c792162f4dadf23d70d9cd0a01db1744dfd05a44f93f8d60de8d4d0b064cc82f9c65d56aa0ac70f7c9199a9a6452a4eb9b48c40003ca412a222de3099ff518531ed7c820d4b97b9c81e0182fd8f3d8521f4a4ad2831d08e3d66829d2a471d276d00de58fcb1b67fa1e93ca833ef186f63f63a9662f1623bd3085e6fa521eb1116f3f3e498467d115b625b559318f76f85e026173160e69200cf3f1dc61dd028ba11b21c02a0c79cb29d69ff531894cea0df1da34a5bcc59bf3b18834d62e34a72e49a13aaef0baa2b9f22ffa311e75abdd64cb9edd179eb4bd568ec1a69a3a2fca43384b0d977d8d402ea4aadd317b5fffaca66723aedc2c94c5697488b5e08d47b7121500113cb258c56564a85604f715f70da9410d652ac70cb300b5dc6296f184bd356f1dc1fc3ce31866bebbf89511236ecd75082cf97a95e9d92929fd465cd876235b6fc145f41f819e4b41815c5b28339b4935bd973ca2217dca6a394064d99daea9a8186f8a662c42aae904fbbb460ac437caa92ae5f80b2512eae0c1ef31115c96b33c9d574c197f2c787451e9cd05de1dbc4bd7e6b086383aad4c744513a99f18c7dfffaff357b182b7014561391953a32161254cf805f587fe9ce2218dcf8ebb67c357550a236fe254dfe034b1cb8aafe3357959d3e779946f4f6f328be541ef8459bcbc19a352a4473bab4ef6007d8ba07862c9c17989a86040285a5c667974457c1719d423a504fd14d7b13ed1e10f32f8148787ef796c881243586ac76105489370b25cdda652e7601f7937e4b50fe36ca3b2f3a51fe0d3fc6e7a7d28dd8ad281d473368eae7fdebd0bd38fa4de8b25d5ff55a0f2640f6eed26894d62121656fb0017401f84818d8265f38dae5e40ffc3afaf2a2690fbd20467c266bc8a3c3800dcad36ae91043df51a32ceed3ceb42aa1ce5450fa3a98fd7d5b42823151d8f56f2b9aed502acb81b710a95f46d1eac99c55829d234dfc2cf2d95c40c4a41fbce2327270ff4a6e49d14cc9bb8722249ed95ddbf5014903d8265ee5a658e04e4e191e752afcf1e97c7e70fb24e39414af794095999ea14f70ce65ed14f6d1520e65d3850bc048bda1f3b0c396ffbf430feb902f42d3ce7e70fa051c5cf0bf1f7616e3dc20eddf6e284465199aa0acb180a913c9c1d31773e1e9b3c24e0ce1a6f97aca10572c75911cb5b5990f4639df4e86d217b02d27823bb6d72f175b30112a1e542b1fa9e4ff27e46ccf9fad973bfd7d5b818484d519eaa208711a9da62fecbc286f66ca9052bd07c4db5929f3fbeb58b9f0d59547c63f9ff2d5ffb64f62bd07a9d2b5872e57745bab20777c3be989167c7ff9a1f8e6beadfb4523656470d64dbcb53040ed46fb2958373cc53004462f1a69e7c5d90b249b74e68e19765a2acfe83be2429b0bbec53d1c485a6e105c2711899de9b592438ccab356bf51ca7d7e53f450a679f2d88e5adac099d816c2b07c744a248cadb78b6738f2312b10974be453be8e86fc7fbf859e57e707c95225cc24674511ede7fbd5ffd69ed90fb77277a6ca2f0c72ae789eba6050617d8f8052a1855f3925796c1e7fc9f4fe0a20192d814a2436929de1e355c85d79687358fcb0e4d7b8afb062c94aa410c0fc3f7bde9b58ef7cfb8a532920ba400e5a7968b4f85f56c6ad792685550737fdaf7891abd37f39940f6d56ce6d66fc34d658456fcd8a1b16949d1a611f44f3d48a1db3b4ede955ca4ad707904f6e5840eae07b4dd3a4b78fb87e48fd19d7947bded6053099f3afd47d45f453640b2fa6ad3b8a5efc307171d607557d6a96d22ed69622f1126f836dd8a4d466224dd8fef721130446d98854f498da7b7e7b0a18fce2cbaaaaeaf6fabd1649e690ed62c95540a572dc88e5c8413ff64dc0f822298139fe71a15a7e0a1a06cbc4593e06a2419463b4e390fda432b4e3ab7d5cfb960e30c5a4a70978fc673dccf4479658bd88335c137d2e92a08a6043f8198da196354af1cf9576219c4e37a8b79e42b6618a3438dd790f988059011c8ee36a93359a7ef69f7dd2c9cf159aad3d35a6c32ab72d71567a9636a897088b6af582266b122c87698933f91a9ff4b2efd019405d9b6b85da6ea92561946aeb7f7a6a2fbefc92c948293198cb6cd9409bd566f9c725805449d33cdbdf09afdb3b05ace412d6a8879afe105af8b018869096dea42d53bbf846b3b3605e829a7ad229f54886df6c19af1498169560548081d16317a5d08b5a17223db63dc110d8c7b19b4cc87dd1dd5e64d02f06a190013ce271ceb58113576d757f8763bfe18bd155c28fa5977d13c5179bd51d4a07429ea1e0c6a13781e357f58103f19aa99e73b0b913fcd65ece1c3c62a833dbd545997cbba37e5741bbf06ccd01d575ff3d080770e48ba3455ff35ed03eda9ae1d340257889a7c6b9addb8d444685f5bfb02affebe51e3c0957fcdbb1a02ed5c5fe890ab80ff751f9c5b475ee2a5a9654d4e29278c27a97d4cd8e0a056307fc9fdd9421489fc7ca92083f057ef99e26daec975e7e6133c7b885aa68afd1863b0816fbd0d64eddec9c7a9fb340db7e5a327b7aa5db29633c8e1ba1f3c2d4cfe75d5246c7558fe28f1021710269fae5da786a363b8d65a805b27b5dee53b954aed0ba4834b71a6874b33267cf6056cb41b499e846135242b87a1276939fecf82f38a545cbbb4804ff267b62e70dc48bc7de7e3939a430fdb6c21a94c0dd230c3a3f84b6e6b12028e0722f847957cb9f55cf9fe51d1170b297ac9aa109fd1ba39b81e15bcfc6e07cf07488c437229be19c94f352d51a9f0dc367e3d0ba2e72b108d10d3e283ffa6d6a05c4dc34fcdd1e317199338dcfb3b83f5890aa8d1ffa749fc09b9b1e4455cf33fa686831734edb451e8c166ee0b6f9a7ed2d87cfa8d620ae8f6bcbf787469f9d825cfa8944ddeabc7a5c041a3b4d6672b8152fce7f83ce81f195866cb973767bf3834ad3818069a8b3118b803f326248d3445a490b12b9195029691508881959fdcef2e49987161977f003782cc2d7eb64ab27818fce1dc4fd1e1a170a064241cd487a686f7235e6e704cd6bb1bfd8cfc2c8a7f440c3cce4151e6cae05dbf74152e182c0e544f4877e51322105064d16afe28bd5b4ec9a51487ef69c18142d1d79cdd270a790e1c970c442109647cff57584552a9a0505f1b89dae89701adaed2bc1b473c1d20d17cc714804f68622c0adb8d7c3610fbbf17f30a1db0e1391a186276f2a2a4bd65a325106f722622aa0758444e554a60d7817069a1bcd3fc98e5bc8a02872c7e8dd25d16753de5dfcf392df7eecb74d24b4cd59f3d24efc5b8d122e483fd41c583ce7fd6d3fed8966ed525be9d3d4e59cb04eedfacd17424bcc40e11bd4d7a514666353543599cafb5a936d787745608712de53cc8f468a0ffb273e67964f8828daa0c02aff8c7afecea9b8ad446a2fc159900085efc649421ce7eea4f6589c5ae26ab38e4097585604582e77264fbbbc77645f5ec02b9c9a496e887abe403a3645bbb283d879d2f0bcdc0a1bd6068b71246f5164def4102880b77e4524e4ceee94c97e24a0a58bcf8842243b821a59258f3f931fe5373825a3af853912b796f16db8a5e0dedcfaeb2a96f93c1d61d67d98a1c66738a4a9f7219620950a14029be3ed89707863390c0850ce5f5a7b1bf7aed98660a9f6d28bc2e87e887548eb95890bc9d932c7ccd317bcedc30d0782eea1d900b53b936121a9d96f3847e29f70e61678a5f7e897c07c39df2223e5ff2f2a5746102964683712fb42764f71f9e5ef39baa0e318607616e79e3e7ed333efc32b5bcc604a35992e0ff72f4f3b65340778134a7c03de084b35dcc79b66bb875dc4da9f4ce79a1c55fdd41781105c3c6997b8fe84fa27b2efa7f6b075e9399e3a3a2e4808d78feed1433763132b78e5adccce0ba2e9e31aa7a1ba1a57cedd1610eb0d3cd72397d4acf9bdfa8a1ec780259800199e37797b244a1242ddd28eea10b6c7dc23e2dd86eefae3662b5c96c928d9a6fcabbf4faada34144aded16bdc31c9815b89a27aafb5b59c81c42dc27555fe2972015c9a0a4196ff799f07aed2fb9f8cdf67039aa0e1d5b54daef7497d73306e843ee2dc861f83da12d3eeda6643f5e1a1c8776f105d8f2ee0dab86b20110d7a9a7feab549c96136df5768285a4eac3e7caabf69d273f46c666df079d7f92e8d46a565dbaa5ce4f75b0e555de2684cc6a5cb7f31f8c6342d76a83355b7d4f37bdd2ea006dc89cc0b468696990f21ca8f1f59d41c18bb43d4cc6a993d1504a54d0d9b7a3e701fb9e4290d18d2b2969e14f4fd550c8afc353c50bf47187dcba38ee6945620a4e3d6ac75e45347447a4d3dbea2027e43a1ab091c7ec05c0cea58aecedf38e01e79962b1fd5c7a182ac49343aabd50acc486780890722d94ae9c08e9b5cf65515ba3faed2ff9f440529daa07ab8694aeb963496b566199a4cffc07c098d95180dc1e20b2a73828449cfd723a3c27281ddad283d8325a67d7b4c9aca48ddd0921f4af1d645f21711ce58699ac9bad95812d006837074e31bce8774c67e712ecd096c65cbc2886164067d5dc9ea9c70e1ff9d8abb0068d4634edc2ae6d12c22a7016c69ecb1ff8ee770e6445bd8c222ce0b1e3a8e22d57b100d4293871ac642535a44da73c6f6ea6cb0db97082faf6d81e44274587d3da44bfa46cb3c80c30f183fb8351844b72153a535d03a32d6e583ab932c212b423e062d034097a47e859accc9b559839eb39d3363ea27db340328eeae4f08443c9144741dcc7eba2c0f92d8316f84824a2568a761bd0347db872a731a7f3b4936198dfef70d0575cba23d0752810ab4a01ab960042dfb1ba521f76cd25efbffce4e3fd3f6bce41be541c5e83a2c040d0ab25c7ea92facefef7275ac1ee1404e0b3879e9dda20d5be764d44b145387d5bf15c20c78384c272fa399505fdbd0ad6348680c12415c3513fbeab542b80f305c82c3c6c33ca17996b4d5e60f3152edbb2019797cbcfeced13f7e20cb4def7a4d2983e0dfdbc65c42fc0c1363341f5dba8687f1f28f4516edea237bdfb3a1faeb2fbdecb6f44d5156baa83080d729df70e1d675afe726fc6756943ef4bf5d738b273375ee50f8a794da28ddc6d13d367dda6732421ea2af5adcdcb86c2dd050fe62e73450aa02bea5ad0bd02b6864024670401804538ddafdee86a13c8a45502dce12f937ff064290460606c96401dce22d5a7fdf1e7b6e146e20fa5e2a7f9465f9be3d4430599a8dad124d35d16752dee55e814545d9b09aeb0f3c7dd0db2e979ab3291eeec2c47b1cadf035a6ca532e233b443f86123cdebeee7cb49bc47183496e36fed2930e1372b585ad233db31ba1eb560bfe3f2113bb07665a1e5536cb4099d5136414bce650dfab9fc4fdbe5d74034d04db32d5e10b20a213d34e64eda440f5c45440ebfce2ab9717a6d03f892b4a3763d9e8218a5d9648d12ce56a31f526bd06debeb86a04b0522be407f25fb41b18b922cc8b535a9839a77b3cb4c06ed5a622e7d06aa3b74ea9da0487771b3cfb75e7ec37b2c9dc3855a57302a9ffd39364c9ed6142a58cfb4bff0b26da00dc67c086012407ab3e4ce69e0d14781331763fc1e3db0e0219cde1dbc144c7c721447101281ce4f4b2d767c450f45022788d9dc563108df1683210e7a25c98b19868eeae69d7817cad099bdcd7d915f15cb914e10f4ca3999a157039307635167c7d1fcd2d6d420244d81c461b82f31c76428e36c83ad0ce5af193fe73e798bf5a183163b889d86b0fd783d7288c10e5d6ba39f226f67eb6bb9c5af4f502fef4a08f00ff03d0a3710518d9715749f3b0c47bba863e14c5565bf199ffa957d65d2e215c4f4a149969f6bda9a83830b186b92542489b1b662b4db144f680b7a08da9db4ffd141e37b24c6d1b8e8dede7363e0f83259dee52720322cfbc752db45373cd909616b2f21be5568b6f085849ca180ce69e84d675a719caa2dd3a459177b2630d68827ea8f4c74f5ac294181a48ec6b66a0edae4acf098117eb6d3ff4a37a061c3d5b6b4893548ef7d574a4693a4032078521566235b75dc27d731e33d0ebb1712ccde7a75787aabe921fcd94c934b3429bde9cacdd7d217bb086ea3bb8ca57b9daeef9ce7dba5f34586935611e2978eb73588456dda05ab466fdf8680b12ff060d897c9d9d1ba93d37362f83251b8178e81202c0a054363b57dee16c0163573de9e56ab15aa79be1a0a010a87f37182d23c9ebe84c5dfe4174fc314026159e4052ff99b71a585bc651eeb255f24e636e2b19e8628780e3a7938ef9fd18ad8d86975228f962e877b180a34b84ffc8bc3d94a1a02e05688829c6d6af712d963ef5e226cf64e34f3f42a9b2dcaea7320a30916b596f8618de89fff48a5f3d486583097f0e241d5f7291759624712e706a7ae7f6a225ba4d6dc5dd8cbce946b27d99e2ac8d8a728edf9576a4b7e55ba30efe1abba4df9e156a51117c1edc698fcef452e4ae08da6f7b9f7929e941952961ee3a0437c1051d1cc5d4dd8dbe7137f7639ca0d59d8d2a08dc3ad01a4e163985206b3c1cdb1d40b3e90ced78824e795d0c945ab8e79b18c423ddce76b456bfb879252f81bdbabe8e2e7beaa5e61348d1e7e612dce205e75a8a9b81279bc8ea3db7784e1f1c77df20ed7a69751591281aca2442708802e60f7cf3092dfa5010fd965b57490773bdb18e21604d11e7937d08a6bbf1eaebcc7b9d852b7282fd7730c0b6bc7a663ff1e22fbd43e7373aad5d6f6486013e8d4c1b61cdb821e32128998d6bb20f04643410f5eeb7a69241098ff9fa4bb4c3965e4328b65cda8dfca1809987d59609adad32479e87575bd44a55a0eb2dc86db82d38e2d2973024dc35efe260d74311739e034b1eacf5d4e4002a5214963bc52ef99397710dcb4160bcad964dd84945bf9b7a60aa50f45faefab8b266d02757d10ad606a4dde1d197821d4fa0148d8e35afa3bce9201b062f170e05d26ff9d4afe78f7cd9559b537a7c40b6e342ec0977195d78328436fdbe1f152ec022cc7052994d80f5afc748b6aad30fa5e1dad2ebafb4efb2531169658283b4ea8b88b77afce0129614bca218c817db8bc776c736cd00bc006c62130d45dd1b24bd7c178f3359a06a0e7c16dca1090efe83ab2310f73822fec93f4cea5e4334241e345ae6abfc3bf41bc01996100179acdd904f41dcffa90f42fd309796b4b08ba0c8e8304e77a76eb3deba44f909129662fd97c904fb52612410e60d156d619f23c6aaaf1d98fa993eb3602a0b8c1baabef4926a4ce3d49dee097ea2147f74a205f4d48c0738e75f84e8885f92487b37448e00b624aaca0bf7d8e6333c767059eb8546f57288d673d0c94682c7ea6cbd6d87053997a4e5318478dcd2c85fcf9ef9e459493aeb5a7399a9d2158d065648a4fe07dc47cc1ee3406df985f7024a666ad9a3473d1d6a81d831ce3028f5c2f0a0751898bada01c46c7afe38748cb23c0201397e6c6fd38131a99658659b3d3144e6959d964503871a3a89e9781d2932604e26dc77ca9feeb70e593a1cc62215f6df17d172011014ff382d0fab2db00492f30eefa9ef5b65f3f83d2eeedf2f7905e79375a3ed31ab4640eb942120d47884bd8829f8741b140e0d694b75c7c569112b114ee7b8b69490c2239e7f743e209fa23418a76ddab592f331f58ad211a0a3df3b289a8dfc28178752e285911c4ec5d2d9e1ba8fc8c1a9e86bd7f7a0e997e05641505ac133007c1154302eaeccd4786184b67f8fc3f3f56d9cf2c28da44cd7090b1b68943eb7e24488990a8106a2fd4ce9b976684c50885af1162ce16d2c00865f7d4b44213430e8d165db78181b3fd5bea2151e331e41ec3385f4c8baed292c1eb14565066ea1ccc971ddc01e1380317240737543567cfef9eb55b0cb50de325b7c74438c94b8784b12d6dd18be9fc1b9b1069fd4e1b87f3c3a6e51a864b314134cd929089774fafec06785c136fcbd5a6128aa1b41b13751a5f6c6ed84f7f1e52898b65a395c1ad8f6cd64f591bcbbf9c34f6655f668171240884b77264b2fe279be8d754bcd9a753a8aeabb7a2ac37b9e1af7ce6a149581f2c9126bda1946d1dd17dc13fe9bd16be7c76b45e602c13fe2d6ef8fc42aa00bb2cb013890477dfa0ae37721157fe2ce6830a85164be45c7d57f8fe5cbadd77f234e3c92cfc515f27deb268fff0d6c3507e6ee1e0e9c79dba7e4497d52bcded71dd33838801a9a9ee8d242cfeb6fd8a016c9acbfc8f73eba64e2133a8b4d5bcf8e0df35d0c939194dd7bc5fd43560ad0b88acfd8d503de0f47aa29c094493c4e9a8bb0e92836c3ea3f1c64439353cf5af0808861896cca3619a8a3a101c41a7d673ce46b5966383fd0ebe0d34d9de255f55af9ec32fe38502552f3c2972a2e7a11530e038feadd1e98a605bf9ad1881d17c10ea57cda8adb034cd26420739dc0cd70a8a897409ca5c6f355776e67612e17962a4e4dd5a6f8f6a98d45988a685d1311f3b8e9dbb347e1d322f338e0581e7cc5ab3ff33a5ef961cd4fc7f97b4b7244fb6ce29ed37acb9251ebe8d4e7fef5f8bf6bbe2ee171baead86cb1115ce80c8baf220dd0115e9b5166fd1b365ed07f609164d6d2196af5c0e549ee0c73ef4843318008167d248bbb509316f6f370c76fde5393edc6bd4d41a8fd94fe857da0dc2b3139349b0d1b2bf155e780108f7047e3f7b70e06c87af0c47c428215df4078c88029bd8f6d7779783f4d09490b8c2b98d7e49292f02fdb6cce76b79d91a719e494799c7613a7921283b3cc5255333a601aab72d7d719dd425d4bdea08ab7af9e1741d7b0fcb6722bd2fadf9bc973e4269d3d2a75b2f38efa87079dfb68c3429ab1529d5e1d69b5c81aed615c790f2d4edcafb498a69d7263fa0b97f7c4401a4b2749ab80a3d7f9af476ab72ddc89f3abaff3f5c0de0749d11cc27497dd575a796d862574641a915f7f3fb600215cb11c6ecb56fa30734be46965e8c509bc9fb4f81624ff19fadf31fede8f25366edf7bfc2df6f973f66566c464a7c143540a414fe7c827f620ae8f0b5f83beed5f4b0ea7f0e6c4e0b03f1f78c317f62c97da57e7aca4336e58cebccad7a5a10de4274d9055bed8e8bdb8b55f627292dca90faba6c3a7ea71d83601b7c09c39b3c4ff1856b936ae7e9d0d0110dd7770cc29ae590a9053ae62938212ac58e50ef2b67197052d62cdc709c217d2b2b89924f6a6eb34044c88eb6b319b212511dc5a760ee2323363a265e2bf2cf7038b60d3eb8d97179ee0f8aece50921aef1ec65f5d53388ac961d809d5b5c50c4465558ec926572775a429439d817befd14ac23d45f8bd68de971bc2aa7167193c9d51a69fce06ce3774fbf237a5d37c81262a22e2d14928452bcd6c32da4ee9426c0cf48ea75f03f3a748ab65cb627ed2cb69cb31a1077b59c2961de2b0984e9a75a9cdeae7b81289f09e63b959c162502b9095ba5a34b358e532d5b51bce2d7a225454bc04cb468617caf4931e466e59e2fe746a894343f85c2e3e357cad158d1816902cf2afd0cbff6e545a819abf4944d8be079f9b43bad9d2bb63adcb84eb61956db51cf73877d5683e5f0107dd16ba014da16f155592b413e00b2fad64895fa5ebe620e0969f18b79020cc393472140b92a18020a09779e29acb2c7486b950236313435417fff283f9328e7643076d9137b6fdc2b4c2ae832b9a7d25ebe79fe04d0da7890793e822294f919efd2d20167cb3db32797ba10378169ef8b64f9e28721a092de836bdff3f1d4920fa7b2c8acb6b0f4c1b55978300b30c0dcb5cdee73e24a2e29e6ef46c4ae659ac31adf0f23530f022877460316302782dd4b9d74e47634259e24641e76cdc2bc1518679b9ac1a1ad534b24f421c1e0441befa535e96054efcea5b60623387b0897e44e745fa861843773deeb974928a44aa52fca2a7f6f0ed31436b117302d9cd98a1a44d37b50eb47174350a4e3c3141edd0cb724285e4fe868fedf4a30baef8ba765ba262a2460e07d83324c3c3ee37dcd671f2dbfef6e67425738088e0a812dcd76694e48ec0374d40abe4894e491054d7e388747bea04353db71cb6365a6826dba0c4c621d5fa4bf9753f7b02aa26d721b9890148172dee3efed4efe6259ecb286ae734f3411f953bbebedd4430c840defd39cf8f816ea89c6e544e05624f718dc1e3a4448faf2ab2d53a57d93471017dbf95972468489ac4c5f9d186847b0dc9f852c10e21d71da33648c67e41db526546f1330743b0083e068dfb64b6f7aa20eb9840a7d57e6487332a01069df81fc321dcf08e1c644502eb596149985ac8f197caeaed7e08bb1151ced1ab4cd2d3342a32535094bcc338379dd3a6a2579eabd6993aa6d223136c9c8d191774932e0f8887fc2207b43867abc9fa76e230c86a793e6c0fe59aad82bc5c46c0dc2706fed3b64cfedf4d1110753ab922c638be7a1ff226b8a16796aae49a8a1e61d5c3f033c7a5d5c14aee240d077b50a824ab53a251c0cec90802c1c30a26f5e25bfc1123409d990dbca16101a499ca005b6b9289a69b7140d0bc03c6a48e4419f2d841e0c8d2d6c7d97d460b776bca96adfde9733a35db9e77093a1e16caf81138718fbb844e6f2137d2db09d87c1e7210ed0f08da8deec0e7e1fbb8ba4caf4acaa5d636c973191a56de641d3803bfeacf490f2a536e786a091868b233b1fb3ac108cb20beaf99805821a24830a598c51bafdeec6058c7091b3203927296e2c33bd9f5b3cc5d73b828a07526afafa156ee1ab65fb39e01d7573646c5c235b2d854c75490f03ea9bc5d8be7aabfa5cefe8425bf6d40f69de3551ac6d5f2788beb345dffa17ec8714d7acb9be60b23abe27d3e2e3ace2fab332a28f81f0402a51c8b26f1d9e51c73c4804f07788a417ad1d0ad7c4a0e48220000623185ae225ab8dd06d089776ae969ae5fd52cbcf8cc084544ea11da913599caa1a648194c43581eb4883c08c6a8e237232a13943b9c35b3381d2366fa13c643abddd378ab8bc2b6b8a801c021ce3f0f4382ffc62d938c30cad6c37b378780e563c600faa5df94f74f3ce281c9b03bc13808bbfb91a70cad86fbc23748a9c09e9ff6e1b5bf444643c1889ae1f191a3cffce6abfe5716475acd1fd20e05811fcf8c401e068a8518abfa09ae081fc2c9b1fa528ebcbe21d9af9622cc7a25ab877c0282d60592863c4d86560a7594d63d110498ca4f857337d4f2d289e788ddd5b645df2e157569b33ebea1ee683920ee6f7f300bf6caf5fbd8c544cf284cd110fa35b6734cedf33e6d219de0fa76ec23753344046e50fd74ad794fdd1e6a92466631e2f752e222d7e9679c538078abc9b03228619b1464db3d5a0363ea8fb72ef32ae7201bd40f241b677d0f07d284fdcea3a56c46bee1a4c059ddd376ef724f6df5b620b049b431091b76e611cfde1458b816116ebb5cdc41f32a4011abd8145d731d3a8c977d8a04127d894e53beeb1fa058353b0e0e99577671cc4d8cbf9152556dffc3bc883a463e5e5d7f53739e8adcd20de6a54d9361d37b2e2f04bccec588d9dcb1faf245322c95442ce99730223ff08e896cf1b187720a5ec841a8ba7b02abd0f772f6a88e5bf6791da0488f45727b891b19338f7e9c53ef46e5284fd5237140f249da2bffcd8ccdf8416cd8a78890085952412b6d79be550ddbc1b10515116e15c8634dc5c9498f9e7b9aeddb93cfa254d5e1b0abf93cb77811d3c43fc1f00ee04fc14ebb711ab867ab771e1c66c6bf79e2183196cd897028455e0ff0f03161b52ee451b94ef9527407dba4259718d42e97fdf3435c04bf0505268ed8b4c4770f843ccfbea0339a978d5411b05784209119e25c939806c681e6fe4a815dc9f9ba94c9bac4a29d8c3166fa79a6f68a86acda3106f7c6b469ce182898c9a90cf3522f607e709217256c3b508c86b198635759c8695b3e59e7913cb1f555c8c66aedd56f22b3b2f2782b38deda6ecaa5168d48378779077253b3f2c275605947af4b3ba77c4fa2aa02dbdec3c3e415daaf30e52684cb3477b99fc1ae95ed45dd096a7f5384fb21a01e84cb04a9c2336489e35a6f3be5c14d8ef1d56e609dde3dd6d2889dd4887c7bb9638d151013152936e722bfb9f577f22675cf6531512dc7b82efe65d35be3402bf433d6d2aef53e6b43e12af05e4f93c27be0330a11656ddfee7340840e3f39d8e5d85cbc0405537348c3b99e1788e9f27dfd3ce94e64b4d6037494b04617d40ceb20b298144f48ebd1363b53184a5a7377d0e15eeff832e67d811235c78752f23de27200bec54b4d1425868a1dbaa64633124e7d0b5b765556dcaad633f9de8a61262096a52bb933a0f696d48f8ab22b37b88574ed84fed0fbd8053194da95ccc88669e0f6c2045c9f6c01805d44b4deb8ef8da5210d68adf9bde0e32c3b09d9739e1622b111605dced8c5ca4c586822941f323ac02c4e7d37f81619257cbbf91922490169722a84fba4471344c5b6ecc013fb998525113fc3104875c18c0aab5b3d8977e1be30ee0871bf1005605c26e8a215c1d3b3f0ea7d43aed1847c7337fd8ab8e08d2e024597695c7a4ca2365836a6f0e21e3c0f5b3fbd11aa8e4a079798fd02164155120c93608ecfa20c39cd975b89d8ad568002de8cf4fcf6227a6d757f24235ea2051db332a612e00823bd4b598cafb54e94fa697d47a5a9465e100e763d16bb7793867e5ea1b497e47fe748fdd14a0397f3ec8dbddc1f590d29951e2740b6a3bddc015923af1790f5f5e24fce6ca98bcdf2673ebec45101c053d921f83ee32a6f0abd93687676cbc5e67c4bcfff62f885c9c4f780739b42d0cd47553f1016db892addbba18e9654b92d1525d0b1d60ac4ca00bea145603db39a6f869e49ba4d6a256d70a9fe609fe4c5cec34313e726b4923a19110926d1cad2f50bc16fa926d1af91ba8b2278276022dfdfe31fee5b0392276130190d5f0678ab8201040be0819e27a3ba7b2cad1e53f3f26e7631d7f6d68cdba42b3584f5abef528d729ff75b2edfbd695677e91e1591a83cb9879fd3520cc8b207b032f5d40d1e22f1395dfba253600a5ab6d8972a98f164871e183a1fb57a9823cc53a4233d49ebfa53260bba80078ccf5e89b768de0a4ed88e43fe399998b63bcb44fdcd0ce5eff6d7bc61996f4d7fa0927cf9354e91cd49e2fd2f36cc6c56e5a9e405abbf0da98163ef3bffd88f17b05b66acbd4a47fbe29eb91210eafefa5f5de4025a48cc1a6aee64dbc9871e0ccbf771b91dd26487a2b982e825f682868754cc13a9aea30feeb159c4d512a16adb25fbf43f0489a9551b03ffb6c0da0b8231019969bedf8814971372bf43baa992dcb4378c9f0328045d1dacb8ca479194387cf2cd0b14596dea9af87347a1c331a66c6c79884853fd1f2623b2c81ec6f0ba2c2ba86159ff0cdf651201998e90cb8e2e6e9852427b816d6c824b7cfa1629024e59e7bc6236655d6974b6c51faf5955960ba7d69ac9ca55e86a91395945e590984e2ff6c293ba1e2c388adf39104591350d7f293194069b71ef4fe6b663a71908f327ba1cc8221b0f60c3bde6a24128149f4ba03891bf70f6500046c99b0957bd4b3b27f80e70f90b5fe0bebb4bce5da01031d81ee4f5db046440c8469000c352427b326f1ecf064ab3c328892b6323b1057b69e1f5e8e333ef7481ee1dffa366de3c6689d4c5d744d78fbabf24a09cbeefaa22ee12efc8e5e892478fa99d1b2d37c81ef0b21d13ed01effb682955fc1514b20d2c4cb60dced7d8feba17dd9baf453f0293683d79b1632651f11292bb6db684af8f6c083d7c84e72c2dc60a28bc6ef85e139cabb97a54990add30cfa2206c1b9efa476a2d4abff4cb35675aba7bc960dbf9037e540bbef18cb83affcfbcb84d71583d170efcb2310e6d3fcc85b68f75706206e97f04e33390566bb36893f3646791f9b84479f3a44a4c012df78e9782b827608c0628e99d29cf39e76625618290aa8fef31e5a253d1b399348ae80fabea33839bbd7f2d26f1af1cd20837c2fafa21e0b99f3b8b08fa7308cbec3d86c5b27cd42a7e28c51b788d996b147eb69729522e115e41d4d358ced5a7507452da2d3541b1c078e12fa474e04781ebfdc1d3063fcf19ae0eb7c76edd5eb1a5b7f88c5b0924c6feac62e844919e083f15a5c1dbcda29b5b80fc728ca5b380d4400bf22ee44c9fb8fb47586bffdc921a9127959b4632f014e87901ebe75bd7de033272beba5705c612e1c54c3f84d59a6e2c4e6ae4f79fff91be69f08dc236c333bbbe86c848d2a744491eb2ba14661a65ce2ec00a89ecf17849fc8f0926be83203f8d30b184fb0bab44b61da25ed2216eea1a2a75132a0f91ced8fc142565967f82ed01fd204814d1b77ee553bf11db66ab656e93f418d756b357a6bdf9ca1e13cc1b4c962df77fbc81bdc3fbf39771f2b4024f7c64a06ca573636dbf3f1dc2fb2dd40f3950e8960144801a186694e8af8e9a0231025ede1e648c57bda7b153adb133fcef0f42517affdc03059aba28a9acae96ffba6ae20ddc9810b007b88ee4aa3eede62adcbcc23adc824842df737fd47a3fc059ab99eef470c667dc282baa39c373352965560dd4526e36fd47a21b165418bb2a4498582a345546929952567b68b00688a2604d13c58851fe4fede33ed1444bf4c3960061b1e72bd23bb44e49da1f67189e33c4d1c5f64552f0c132f6453bf2549f4574a10aed57011996de2084ac011654f8ded6994c1e7af4f163551a32e5c92513e6de6d484b9453db31e9244e07767ff210ad8d78f5861cc4bb5a180c6c2950f8b971fb64b4de0af060c5cf166e33452b0f63ab781cee3739d5edb1322ba08119c28f9a10b521d5d62c02f7949dd50e5c3098a1b1abb6012b2b89e299d0c239ffdd3df04ee926e60c94baed0f5716130cd7a4ae928b7227c7a7e13fe6f60089f4d0c91148dc06b40f760b26168564e0a3ada6d7ba014266447e06170be38135b594a7d73e746168c3aca1fd9f8fd6376006fcfce58e47bc5092e48329c1bac877e4dc191fe4691110262907ac7e2838d162830b5790a09f4b8241d3fe7db6722485037fbebafb45a90a038877dcc672fb60d3ebbd5b0699a607ce520e7b52bec467864aec5a17178713999ce537123da8a41d4ad42c7143363e974a91af0508158aed92051b8b96c002df1d7a0c73bb4a8518588f0e1f5dff105820eabea7f63675e688ac741833898103b8d5eede9f42dcb25cadeecde3877a294b89427944b5c1bc0a2f21ca465d7f9db8ecd8220d947b687740c3251ee8b87a8dbefd7ed6f46dd348cb931673ee6bb27293c85c27cfc6f314c38a5c5ea767a9bac94733b742153f757546c6538605ec6b133fecd9deb86c81d530a37b57baf198a18f7f30b6ac409e16d43e6ec4449cd95adff7d14960134a00f15703e940d5ef9a496decc4477a3f5db9bfcc01eaf6aa09915440e45ec1aa807e3238a8a24fdf2c08e82183f285204e79b8cb1561beb5c1502eaa88150ac44525d2679a36d88bffb70776a55ed2a1b610b6bfec72076cfa063bac03588823024f6c7d4fadd21da29a4a6c3938b58f70b7d313542743c9d0f44b00fad7e0d45844412c258a2e04aeb7c4de9858db8ea94c4c38067217d0a4dd6cafdf5b806775647935645b036d02d954bc2baeb7fba7065aa9521156360736b0eab3371e82ece0c237e848bf821710bea7bbe05f805550e6e13d8cdf5f4de83136bca228dc9e3a52b9a9e0aadf5770d2dfa7046a7228a5ea30d60ba6ae9a22260999902e59cb871b749459e529208b39cbfce2af9ac52f4d7bfe96f7f08afac856df8f32d3683572508a5a4785b5893e262c855c61d2bd158872ea05a6cccf77a6b7092e5c533193e8b2da89c2606d8a435f021300937755ae8c17b55ad3afa8b36b6752f630eadba93b1fe0519ad19e10502e687b99efde0a9b33390b6c81972ce9057a34e28b73e513e52f884d8ddb044f57eaf12a2632d1eba0a1567fb0fe7047ac6bc5283a80a9a85135d17003288810f20d1cb277db06aedb6be322e70d26fc239338a35bfdc3c5c413bf53d92aae6473fc8e9d5ea38f92ae3b9c73eeb325e16b608071c107df58095807b16b86a59d6cc66416d0ad1a609b4adf14982d9cd48cde199c6b52dc202b773f9a80b385d84c178cb6bedf7425b728301df62840b6b11a55409481b96453e92c61804a98e4599230061b43e749991066f1aefa632b6cd90ae7ed7e7c6a3943e4ecda2d7ecd811e3bb30e9d7762afbbdf04c7a4e68f7a4ee62119ecaef237fd14927feb3a84eac31794d6911284deaa0ff322167bed857944b4eb2b966ed2d16c745a56040837ff644c53e4e6ef72d3bf034117abd004b3e0290c0c32d2fc6263b9d7157296f956ed5510bd2760b2a51ed376f6bb49956c60d1ba70a84da02a71115a8caac5aa927d87c57bcb23d3ebf06486026892a0eb24232f303d365443a7a528ec110d6e09b78091ffcaf241a669e425d8f68274cf8ec97d059f5c30a3b5d4c0d5d9ec47d506f350a127847addfa66db43d6773e40f4d26a29bd5176f5cde9eab0d27727e28d7ffc6e53bc7e1bed256cb60d7a3afee84faaed8b1af61b1eeae7b22ae5c08000adb605ea07bc6ce71e8c5f6088058e9077c1cda01bca7dfcd16b802868158c235450afcd3d909480f9578d58a939dbf2c27fbc38d764d0a9427da92d1a0f36b8812311b33adeb6d2d5a01c98b27f8aa695ff948602b989e74639f9ff4c17bb6d6789dbe7f5bcf65b55028dafcda51d964e7e36702d8f41318fd20f478b07265a7e6b956cccb16bdaf92d62e3402624cd3a84af3f6402252a4494a459f57e0a1668835e71124e18dc8ef884e8c7fb6496332ce60ed7fa786bd4bd1be4af9fac573dd7b1027b8c34a658e74dcbf078f3b37dfa2bf72cb979799325254053c5592338d64d6d648c5fcca9d8171ffb233b96abef6a0e4d5a157e9a7961971cbf44ca751c0e6e32bb3f939b8c06efece8b9b691444dcbab8ab33a00bb930445125bb45d7a2675dff50522c86b932c510022b9cb22cc0d2fcccd5fe0e29fd52e7b4b3d77acd3893456394dbb09d1577458e8f5059f29d8fbf39d946f55af6842f1bdc6a6557482624ba293715f513ff93b61efab68758ec4f3038a8b16bff811399f5fad6ad9dc847354eb44779088b89931a33771f0d8f6a6eb8e0e354f43d981ed89c05b1321631dde3bf30f77941b2dcdc348e7458c2c446b63ff985206eb3c228c34dc219b4c8e45b7e0810aac1dfe842c020209475f0f46cf45a4acd0a5ea0a45d3814af00882259316640438174b8fc96c2ba0fed602dd250e0dacd1da1d7d2514ffa408f9879af01d49232aba1e47d3d47d1956ceef3318071f49be1aae9c9483a49131bbdbc3df0b19518da39734e5c42309eae90516fc376d87be723a6bab7316b9af63c470cdf6f1d15f21a3912aa9ca984a99cd5aca31ad998438e75d17138f84dbf21b9b7d636a90c201a327fec8e2b56fdad8f0afcd40c407ef4ffc8f25fe86e5354df33f809c9ee9fb18b400a6cc94948e3a01cb71cfd67dfb74704da0375923db6e00f9d62090c46f35e3e0aabb8ae3837c03f0e56e08252c583ed1d5ec6c4d8bf64a978de5722052dbc14d5c1a27d3db88b88cff1ec235e9dbf4ebd5d01529b4c9e64811c7ff5536e6aded626e3d3693a5436f4b58a7b11867551b9e331b0aff7b7b738533addbe4d206ea986081590888de9d3af218f4ae7afb43916b290490d78dc09f4030db71028eba9d821811e959ceaec6c0e18752f14e18336735d3b5bac5283cb6e1e7b02f8eb83549bde409f36c17ccc59446eaa231815ddc68e508b5873135210e02a1c5713ff357a109b1f2f04b3f3df4196008340b9fba85b85fe210d94896cfed63fa0756b2cd4427ab0e5e83d930f13fb8f6f8141aae78547c3f2ca2893d542ebe1608128b5c177d1d378e5e9c23f9a7e48930ccc2bb7ab8bf7b5e33d70c8d67f1e6ab47d510350967c71f56871a71756d44065d679ee88cb7d7c5f28e3a2866c055b6d3a6799a9653ee0cf8e898359f79df1eeab227f03af6255afe9d9f2e77c05b24463ad9fc51d4dfaec20df5cbd97f26e3d1df0edfca59aa6d21e74051c1ca649769d6eda4e7a9c8df662aa700cc947dc245080d1c07cc042ac700c189149ec826cf2ccf722f31d0ebc83608b19147f30fd21feb07f9c30fc64b8a12b2f06b7b1f67a97a11f38fa476b18d75c72d592f1f797bffb80dced3e965fb3c074396287f7bf0d4c0beb67a78390427c8af8e00ee9c2181b609c70e765b3fea0d7047c0778cab3746bc377cba8df5f702258b072fc98964626eeb3804c339c0551ef0d60941d93d29cd5c6f774ed6a3fef68213800175d20fa8b1e3ea6cde63f9bcd20e62de7974965392207f0d439dd3703371aaa8eff4fc04d1494756336b0abfd891d304e2c3c5e1e07b8045a6bef8fec2694c0369e7feb0553a4579e18978da44f46f522ff931bc0440939afe6299a0b587f6ef67c929f9f5da4f696e2508f75537cd86cffd551fb819cf08797071dd92c6299d6b41ed25402a12cf732748220bf4c99e8f54ca84f2dc904555255a35642f4a57fa5d4bbb861f9bc57e99033756ac707defeb8446b71b86dbbfd09e549a9b7c79fcb09f9b4531ecf0f20423c25ccd6bc1df7f6fb6a8a565a12c5d144c5e8d3fa6a9f4e48df72548c9c82f48cc1da5601b4fb504be4faa8c945440c17cf3f8579cf478e5be097a896b7ac6c552b27cd886c65f636d001359fa9b19acb534b27928daff5ad78a3a9b272c71c579c03ecb9106cdf094da67d9d3ae64e14185818108f43b9f8d12a802aa1a9426fd9e1a9359c321830320f6000f139961ad12e99d0af370066606d38490865882b596b4c04597a566bfb28a4b9e33a0b5d790eadea1d2c626a77de3bef2b2c1999c000bc8f4be7a37e8ce59760ddf4c31f8b7ea32a3353dc96ff9b9ccd9df9e1d2a1ce81e1384a7a3dbcb22eaa7c9455adb5046f8c2127d31af3e0c1eaa7b951579e338e2896186e86882c4f95dcabfe11f14745d769a19428938db4da28bd03e3b2973b2a6cfd622fbb69653746030e0db7090d39e2547417f894a61135c4f309e148c0a1c589d263143cc4b8143da14c44c0ad94f9226918b9d6161741c93685c7cdb943b4ab9906022f7c3da904f19caa3ab5f02d1400e48976f2024affac09d58d5ce3eb821f66927f4ebd1c398a081bcd80a6bbbced1d711b07879f427838f1c1b39e68a6fb2b09896723b1ac9faff39f42cbedfcc0ca43b7600f0d32121179565bfb4631442b6032033e4dd4194f9b9b388468ede61204044e12f6b366b1b2e068936181f11bd74eefcffc3a71f2360ccbd7a21516e3e8310c079e85fe099bf1a1e215c562e79686758e36d0e932fe72464a5364f860221071fb5db903aa948eabe0722da4dcaa93d9a2076a7512d5ed2c662da82e7d6aadc0fbf59e3304b252d80900f01e0e9bb07fd99d5968e9f024eb6d6320689415d5856fd3b213f9bb4eea6ab7842d3d8aec704de50f1eaba107f7264868313cb27c8b84adcfed7661b3075d74ab4e8e3ee4a5ffaf686f15749f8bad72082bc195784165caf15bc539df9c8775ea9321ce0169ba6c4c0655aace1e0788a13fea18f2a53bffe8ba8106c16fe5e6ff416be4c760bdd1d3644d39257450e3ea944414a2c5c87852fb9d05ff10655ac85d9a524854ba8bbfc1adc4f3419801eb46d7e53ae9225ae54fe2495aeec88a4fdc8e500590958a76341448864c2770995e059283bd9da1ba59c0ab721d7bde022bfc1b2dc9de6914be5ba22e2c4e067d4320fe5d24053d59f0248162cfa37146419e4e70ff146d6e1e25c2be8284276d24fff70396fbc1d57bad95d92fb359f421383561bdbca38f5956e73d7e6fd8b3ab8566117089bafcd4a1dd318c4588b85ee847aa02585b026728b0660275eabac246709157b2fd8ee3417c2fce1b41ab0c0892dbaa237dce68406a354054d8a01691ee22ed1b00baaac081307f0f2a33d8eac8463043606e3a56a2980782ab591c9a8b707cbf6d3e593f394b6f1ce90e2073a3d45a731cede4421e2e0c766579836b045f828611f84bd0332a27138eecc16da6d8359dd0b993785fb33b707fbb9cf37c0f1b3afecad4c40e21ed1c29028ec43086e6a94cb6adabed6669ecb71bcf2e2e39d9c631916046173a7f9028da80b9c7ce51d0021cfa885e76dff978648b6d505fa1e5ceb2a771daad55c81cdaea6f53873753cccd1d18067820618380e924aab13a6487d0e873774c1309393ea9475543c18cb058df1d40a19b6363c6b4bb019368c197bc888d369bb5eb312f9a3a28ffc4b39503bfc3237e679ec2cf76fc97fa90a948e626fac322a7e5e6d72c1d486bace65c58b3e12c5d291e9286cc7ed83ab4b82cdb13e8c145adc3d8fb58f74e074579732434be5db0c3de9790afa81c5a3836cb1d6dd8ee6bd260a4657979ae3955a0c03cf26ac3248bc9a7e5b6a3425a2da987fd98e5c4201402f03e52a889b876db9edeeeb739e29718c0c1d56b923e17974421ab55ba15a1f4421e90066af1dd8a45accf2547ea24ada21f299ad5dfec6b0b5cb13e3a116fdb740a738d23950f883f0e7f43f863513efa8ded1b0d9c8611adc7d8b423b83d41ea95c406c1cca3cb785d78b0092f26cc8711f5c73eee1980fbe0ca32751975a6296ab39320fde3f5ce2655bfc5c7db1ab2fbb30e86e863ca1302e1c17f23c87fefa546af9dd925fafbe1842bd3f784e17ab8e57a29fc63f9f364e67e2debe7dd13b8500894f4f02916f7c098697b455178cf351697694f5b709752d1f5a4e44a7d2f5e2fc57e7631b306600a408deef2900e918c462119ca48c6524c700647b336aa5464bf90d16ebb3f8ae870a74caadf8bcbb4c82f68ee156a0cd15796314b4958fd06f0d87b265f5f55a5ccc073658116f51de5e9a4baf04adb08e6b72ea862780e284dcf079e66cdec6c7d3ebf08059a676aeece9ac79b76507b739b5e5d2e2a78a4735926eb829365c0b6dc92d8becff1c52d4e1f5762044d07a78c0083ff01b087a80ef4f08068a6a08dcbea020b33e14a2e4bf374211c7f554b4cd199208fcd17266fa25cd6ae0841778f33a5db3726195914bcf3aa61d097f5eaafc21fde5fd5bbd3ed4d8a7b0fe1191a275f1f4a34cbafb42577eadfd3b9ca63bcb614fcee547f48af548286c2639fe1e7f5d6c7d99c1a2fec7e97228ff2ceff4cdbfe516ee0fa82f1e9d72b8e47ba7b1e4c28f9cb0fb92aa04d1639b6ef92449b02ebf3bb358ee4c21728cebfbd6c8389903594e9e312cfa5d04de4d9b75b8a26105a4cdd40977d700a810bb9bcd761b472a5e05b72e7cab280b742a2f59b81b0073c29a4acdbf4c4685830aee424feaade13b329dafc266619a7643c914eb9a58a5337294264f9b49d5c96e2cd2f257909eb42ba64a8aa6736c2d5e024feafb6fe5b7c3dbf438b2e94d43a0d28c1ed274cafaba26739d643beca27adca216118ac0c707a852dbe16a98a969feab3bda945c3a959fa9bf01c572e3ab951a38da1e44a95017d050cb2d068950c314aea334203e1eb13d104406cbe97bcd0fda4fa5960fe23bf30395a7bbf6db57bce6deeeb3bd2aa28de6315e46f9ffc30753d8d6f7a7e0fb86447e717646b6dd2cf4e8cad1a36948a12455d97106a729149d1705366c03320902d15fcff0466313eb5a701b00b1108fc59485310351059c01370ca079f1c350232d70b5e36e800db2b94437b8890ccc7c5865c6c48cafc3049ae3420259ada0ac9ce6214917207930ecf6982ed13103803dbc3c75f1e26f9f8317a64f6af7f58f9b5e71244f53001c0ea465ececec93b5729ac5b13f4a2eef331c4255cda21bd7e9ff4af6ba6ee2f5b890ec7e67e64ac84232028a7c526e9abde822c5e53d7faec8234eeff03af3feae55604a1388fe250d25b99c173d490fdd858d7580f3453356cbbae6be108561aaa9f520852d276b380480784229aed626291a92fb367ef645a7122547ad3c4a93b8571f3e77e31a9f2c4b78826c7741d7459de4167131fd84da2797cf2cd1f1cd6fcb088d39d331e959d2e620ca3a3ebc1b2bf6b3f35c4d94505f39cc7f4bff96dac7c6d5eadc73e592996e046bd7965327cd4c64adb789a306a105fbac99f627bbabc6f570746d807fc508e9676d2d0a8f770b77a2bc1021a6228b0e5c9b025ac113e8ef56fd12fbde8b7d000d10218bffdae674e6dafa5630ea7fc752da61237220315e939aa671adaa0332c9e7d8650beeed00b5d913ac9ee75c7f7bee7807399a2a9ec05618c37a6b6c7dbeca008a4420e28d5e5ee08063bf78cd7ce71d3a5bdd3348b8b0c805452a6533f44df7eb6b7533a1390ef0596ad3374277b4cbacf39b3f2cc47dcab2f03c74483f76259cdeafc9bf8bfae23c46e3a9035a5a1e27525a4750a55a82ba358982dfe18302dcac7985a966a0cb4499c642718205a781fcf7fae14fc902b4f57e82b4c369b978acbe8a8c5eedce6ccb6b05585cc0edb0c90918cc05171d4d89437fbda7ade57bc7f8c0e9e99b97e64fa56ceb06bad5e36408bf7172bfdc84b7558dfff565ba1f53a92f5e237f28dbd3b5e06b17005b6283930dbb2c5f3aee9d9b6c19a0c3c9ddd2a3379d052f8f20c111b6c284ed6b6f1caf2cdd242576de6938a95e1a62b4bb25df6eadd64dc5b48bb00e97ff6d8a56dd8c1d6be7d92b5914f6d8c0cfb50554000901a08eadb6dcfb8636b15801b2fa28cb10897c2bebcb4206f812579be033ae1b50b43490e7f44a633661578c10242c169d4c4668f0270011de1147c574df0a991a8232721380df10da527d68109fd08c87c65c8b15e137e11c5e7831e6240d55de4fd80dcdb371809f81d3da1cc84d384be01304cf138914b77fdc509802350ddb17d3a13cc377de7d61e832f72f9fb2173032c3d93db7df0f9c8b2be9624d80effea321831e2315d5fdb29cdf54f0ff4e0bd516f65a400063b343ea3c750138906ad9212104c97c9f653aa5cf45c33305f906d753540dca282921929c5622df648f2f7401c2b3ec42477396e53f99a3fdc4c97f719dca2d1957bfbc130717160795ca32b1a2b1b990499e8a0dc2fa027d0c62802c22639c6fe8b70bbb56ea44890fbbc0dc9860f681de4295d431b4dc756197351ddb53f99697c2e4f8103f7b0ada9b0b06592cf9b0c5665935d162ac02a225a884022707cf28927bdd94ac47f338794b1038bc90b96596534fc3399100ce82f0926980a26c6f2dd31dfd97069e155d30855eca04c7d97021646c0739e7898751f49a1fef8ded0f4afb952bea0bc91580551ef76629f5cbb576df6f9ba2587b4d199e0550cc751b109bbff9d0f9835f619d5197243cb0e986ed568bdb1151849945bb6f9613e0300aba86b2f56c58dda335ea76792d045d218a0267a4c9f6cbff857c607d682e7ce2053c5d9a60cf56ae720163ba917dcc02c5b52a47f977279e8f2d74e96daa55586156081afaf8f3df9052383269f8049473ccd31011873b1d699f2425bc9ed5114a76655a72d9a3c360d74e300b9ba88429584cc57856a6800a8a8f565e80a0c853bcb6102113b65366b81afb080420b7a7b437193bdaea33dd346f35b79cad423b09a38b15ae4ba3eae90bd18ec8e9049bbd7d870adf3868d582e35fde2d2c34c19395c0ea2292758c3a4295dc5020b9997ac9c676d4650a85769cd093f38e86f2f3f496ecaaf231d554b46de68328fe8d56783e3edd897c156a0c18b170aeb8a2f3efc680bec40ca1c0c71b1580c21a8ff6f380240900163591f43c97f6f4f418ebd162c5259fe405c266ba02f94dc7d9eca11f632c7f0ddbb876e61f8d3c407b09c00738ad43906d7edd59c9bbf717162ca769600ec35513537dc29e056700bf24da761c2da42e515bf9412aa7e7e78cdbfe6eeba67d65edd442bcbf0660dae7ac098373843afdb1a99b6e512f0ca2ce8be1d68b7498a0c3c69a85a8d603068b00f11b6e53369d32e64edc9e85935a206210e2382189be8d6c4e99d2d71267c498f068cbb67dd931c3051ea0269348e82d067177bfd37f334161fe7ff7a025ea67644f17096da44333357193b2616185b31276ddc2af3fb24a1964ae443547885ee66e60823c774f2d68a1d939c457eee44cb9f6ef714a1880c749aec848cae86f0d4044763c55d98d80a3b5165bc33fe18f6de6f356998e4983581f8b34c366c9c1d6e6597c3a6f762549deae3b6c34d12cbdce77b786696a79860af62a4ece7d222d7853291d04f9ba3249aebd0f950c3dd6a30b95f66c52dc3599d2666c7728b9cb1a76cda955e742dffbb5d99e0b721bb0e40a612302d68b3d51b767ce6a848aaf8fc1a1a30720ce17dede5b6c9bd3f812d855c810f49235758ab7082a2fbb2c204a61d439c62ba2263c879264b1dedd21d460e4152c4354b5b8a02152c063cceec0bf059379b352bf2ae6a4eb19c5bd6d9bc417b88c45ed21c8cdb132533c869d3c3cd872a6c7ddd6c8e678e30ed94c79c9d6b1ddb0a071cf0e9040c75a7dc6f932d1ce230378ab1a4aee795acd765166f266142b12056398fa26eb26ef242681fc09895431a2b3471387609f85930de5031dc373f05097e3b246d66af05b9d6127dc31eb156c816ded02b77824fd57f199ce11bf6de48043084a0211b0bcbe861f72e9fba4fabe9124c21c9feb986bfea84279b50186f6c896662a3eae7919799ef691c26e93241ce4824e49a25dbf651564dabea4d73b2e4b567fff18a9d2e3a6eefc197c8420c72faff35901b4c0a5e995b4c0ab07c74f68547073f902f0331cc6fd69688c7a4640ffb328344ef858042a2b851b4ddcad1daffb4c6584e3b8338e2da3caf0c8b29549a446be464c0c6ad0acd8fe36c459960d73f53135c1dad962a1ae8a0ea438f4f44c4e7ffd6deba58eb05d7aee485f90a99c1e304ca12e591af8577b4c39bc3fbfb44fbe344c7f5c80202db6ffb30ea9cd7093f1806ec566eeb8a9223e9e3ab1e7ace28e3159219afdead0b43128a83e82aa4402161e989a3128649234652ae1cd8f1c787e5cc93be94dcf9bba590a82746bd4413a9adca8b9da91c96924e427ff90e024f8e664ac60413b71a653eb4ed2d91c485a31087e611b4e459b67c55207070d9e08ce15891c32aa7bc385e2371c09ead92e7b89aad3ccc88d6b977b90875c703c4dad217c664d782ecbf62786e24fe97f6579ebf750399733f9e95a05b4cced576d386d402723de86c092464dc6a14da0569a3390e331d5f0283a66dfb3ef4a3ffe182a1c74a11b3e75e884162faceae04735632ee2fd1d186aa3437bf97a162bd77bbbe35e5fdb4cf29739d321d8b80b91c86e4dfc7d1d3d288cee859690eaf805c8f80cdef617a37d1733db58626328b43b0cba4520bee22ee0d3645b68008cceaad3ac1a222ece76ea0dcbca77f3efbf0cf2318349b329c1ccec59cd875940614dee3be9d7d0ff9b0c341b98e2ba6358fdadb821ba44607d36f7b4cd2734b27e83976998b4ed93eb48f4c921f992f5e9d6f66e6ffd14333dede6ea4538e231b1116bf288b7587e3dec34453b1a4bc53352b663622ce439c15c45d622eb89993199a65aa69aff590b5726ce20392e14bf25d39606f6fb3f35cd7dd9dbc7ca20763031f3485a0275d3ee92e870bb5059d1e26dfd90f8906ca260cd4e1ae806de17a349ae47b296dcc9d04a1b593ede6d22bb3ec0d668f1fe52593a63b0da093cc88c16772d6df9f47b75c6d049e51afd0f41a33c2b42b358b96276d2876d84e401f54321fb30be6d1911b15e2dec12a16353afe8ce55f2099b43edd977e2bc2833218cd8687a89d8044f8fef38a9d650faad0500f9e8423c844926d572f4637a1d5fac7e6c3af01e505657f476f354fd1d50bbedcd798bc7ae6b2a00879fdfd5c4b6b9be00005dc0be6055052fea2708a1b0744c5f1084e2a69f78925c1c2ab8db34f1833d65395a5c303b4e22d3151c515355c7e17b3cac407c30c9dc1162b1eb3fd09bac59655a4f67ac052df0f799decb881a85e45f33882bf0d9005c5478932c77781ff4b5fc9409b79b6c5f54382ff93fed5e7345fc22908d30aa39d7ace6e1151b0e87129d73161fc0904aaf28b7355c8a8323d053dd7790bb3f3c0db6ce8b0f259faca7c1510e47724b31fa5bc36832682c82b67144d88e5ee5859d88ac111535109f09908fe7b2b316415c79d22670329a15aeee3644e844f4018b0fc7c5073d463e1691b07f230724634a1d009dbe8fc394b1940ac422ff9bd3258e390c2c81a7fcf4e4abb998c766942022e08b60f6d75a4482893611051938331cf58fef2592b2362f658b62dde16f7fc4d0153fc936bc2ad5284cf1d33e55678303489cbb2b71e3215cbb36e377c01cbe0c9c568dd20e013d89419dd5425ddafbbeabf1d622af683da7528877740565dbc59e392dbddca62cb500c8f8803eead7a464eaeb7b7b54bfa5972beac3b8dfe0bcc18ad0487b37190933b55df5d85c8007f6f6b721adc27932ebf2e81ec6411ac0bc4853578c3be71f8b63af1af17c48f018e95b07fab1ad5bea399a9f96cfc3b3ff53e03cef6ba5778a3a909a9d57175eafff8ea5cdd3cecbe0a07cbd49238592c242a7ca92106d7f8942a87a37ed17f9c5f0f0f6470660a2ed1e471aa11c527b5d5e6236e5cdeadf9164bbe8d14483401c1fc80e7a0b1adc2dd2328048dd6fb5a22fabb50d6e1574c8df82cdaffc40e0e7e907c3d9a245da263dced7f0bee2cc71f78dc23fca7e1a85cf6a8ef8429c331555f8de50de585890c2aca41c9c1347b32612417468e143de7f6528374d39df2174a40596ca6d948a5e8d9da97b713b93a7488c86a4cdee9170eb38c45d70e439765d03ca8b299681ea785f62a0ac4932f61af298a810aafa4755fca6ae428d56a5648480ef9399fa3583e28218c3ac1dbd33f46b8ed28039170fc8204dcecf710fb7f0073a76aea7ba0e473372af5b69119aa457e1581aa8bfbd04cef0f6f9eeb420f9e5f2ebaf31d70ee689b76a01dfd9572b91d997f1a6ba01d7e4f9f623755117caabbb9d2a37c0d4449d8d59a074fe8f4c28b80b950a13636e47cc6e47d73a92a237c97a02815f6873e1646bc9a661f64f74df0ce1cae2d250cdd23ac7bf6afc08351473446360eae9afd0057a94654834567aa2fdac8d7e47e0909bcd3d30f3e0aa3e6497c8e342fa8fc104426aa4820bfb0a10b06b1649be17d1d4b51457559d2007bc4e7d514c7677697d2820cd9fcfb676c76e1f9581672a523170630753d622096b21f9c14fb64751f4e567359921b24c81d4186349c109a1a5c22ee0f44f871ff2eee7c1bc0624b236055b3240a11e61e526537201c7a4b075c81edc8d4c4e88d8b7b76609bd3f290e34cf549d64743990eb608aa2fa44df517cf46df6f72a48d3d7213438d1ea51aafdcc2ba328da2acad4f8902449879ed75f332e1627a4fcd9047e5ea05d53441b05c36e64bb1b009d713ad07d578aa52473df252f9ec9c8d9f949b9cb6e14d53c3d10b7fb1d44f0ed07807b07a35006e886df2f46c48bb0be02a28a13e4c756d7860272e2d71bed5799908c94b305aa32f9b6ba7213b86ad2655db7c201141febf7d37d4dfaea6f55f23e2a99ea91f8d30b5edf647d462194758a194e7a766ca5eea52bf709f18df5371882f52b00f72626bf56e535302fcc3ce832478dcea5040c269143052c5d4be54f04bd825ed353691fe51c510b10391b3f031e5d7f1a419e6b19975fa4e0735170999524000bbc239334e49d86ed415b322a988e4c85bf35b12d7aaf82a37090131fd556dd075e5f32a8fa6b0ebc17bc1db1fd56928e0ee2822dbcb54a94f43b267f3a473aa2f2c3f5275c0d93f7b03184a413cf1370c49475b53de78ee84a5ba9c5b32eedafbd5d7354dd953c2bd7c73abc6fecc87865b02a34beea0334976066da9690b426c534c5cecb65dc4c6f24af00d3fae951b5c265acea1ca80ce96ff37476678213f196b41847792ddf99838b97fc552b6b7bbc5fa6f25f3f3be8940a7639818ea70fb842536ced6325ef596bbd7831ae0a7b9a76e9f749c81fecd5fe06120c20993fc17f57057faa165d7955ea27efe86cb180eb918f353fe73645a83813177f7acb2970dfe469a073aa7cc28b0ac3aa2850a5cc032a851b321c4fe027b0eb9f1521a821ccb3c98c9b9718bc7c050a28e709b7410249d290c580b8348880e0c76bc4bb73641c9c5103b78edb61e4671531a92c27a40ddcebef9fddaca3e19bdd2a25596bb3ffd11ef25f595ec27c537323785d77b0af9f55d3e0558ca840e67a3564b628c49cfe368dc1c60164bad6cc5d3ee78804d1fc77b07b83421765422d8ee7e5a1d9c81debc3a114f3ff5ff3dca12ff6567739ef3064d9b84aa01e5b9aeec93a8a74156aed6a8cdd9ccbf8117a8ee31042b9d9697a53b07d4d5b767ddd79d949e486dd67549ee84dfb56eba1dfe113cf893b013269defd49dc26b6c4680863a988021c1d4df11d23cb2bd9035e369d57e9d4feb2c332573ba196a92b2c55792f95f6170eb1491ca5e0de4501d83ad1c193bc9c37346835036a64e8118e1181e597d98591a07cc0723e24ece8ae2f99b6d079f7bb339d685a3ba518decf0f803dcf49ade1787eeb982b5e959d0dffb9b001ee6959f123473d01436fb509672cd8d8968318aeaf47ede4a8b65174b2da7b4b9cdc671369c579d24aa7d7e9e99794f715b9c3565cb4ea464cca2d81adecf26d7a3af369888ec8d1e682ca2b2985f2584a4755b174483cab6c5ca576585b6b2596e9dc193ae9ee7c3ee1544051e7f5f7fd03daf4373b8ec3c48cb9384baaa9b00c40dc6628343f4080de80eaf990f2c56c50474af07202828c7e327b44c9e65d63519058b9b9e7b9ee6403ac007e1bf24aeb926e3a35770a7b6176214b1494a6098b0c3ba791a2b513bf3edeccba58108177fd27a06a8276ae3d98b4ff99e7cd60c90d50ef1aa1734a948555cfafbf97f1898d32df04520e520afa6708339a0440c674884e3c68c1ea87d99e369162c5637878e7a683e07d23e0e3a52bc855cc325e0589912cf1ea62856b21ee4862dfd2f03c1d000a099b42c343e5775850cce1db6a6f852c8397a61dad8b2a9218ab921f80523f882d75abdc22fec9621816f728cd5a175dcbdf55703a90893f140cb9f6d4378d8bd8559393261a87311317ae68483bcdb8c254799b4f9ce8847872a75ce7d1513d22f513c44ec99a84a29211811a23894ab4b166500f83f94ce42a7ecd8f3c7621b70615b9e33ffffbbc49c22c5c9acb515d79587081ac18e0a8af3154675d279f8ec23b042e2cb0489cd7f7ae8e221942f7c955c8e86b32065d107cc7ce5a18c764f9eebd220399c5faae5f15e723b25004b076f8473629c91d440d006b219b040ef8c45fbc4935de7dad8847a06d9020b1d6bb7eb6176140e5c174259a6aecf704facca7c915072ee143144ea31af4d9bcda177655be7eceaf6d2125cc8e7e04e4e094dd2769f2804c0eaa40b22d90c041d8aee858a81ffc523a41491b01d705e7f3585b5af0ec4089b3e4120effca6b081121146656268648acefa09832baef49996e36b983147ce7599bed9cf7eeda5ea19602d277dd25f16bdf5a425bf7c550cc0a9bacf270b09bc80834a991f74a15cb80114a91b137330518adbc181d5d5ff95ee3aa492da9b9875bc0e8e4ec47c97a1e45fbfde5d5cac4fd174419d41abd75195b196a4068eea1d2d38dadd38d99b4474a051d84ef50c0cbbda2c2a59a541bbb70e1491a9b7de6be5832a8568043b76fd487cdde5abcaea46295d107bced292e8a6ee0a169ee64e9d64a1a606fad4f61d31ccd5c8e4b6e6f84843a19fffcccc02202520064b0a45a5b468c4699f69b931b99941ad1b98908d6ee893e418425e1e1fcf4bc6ca33018ae9901ec1d7e1430f5e6b1316a45bb91596c21b903e894d6f0a47cfe168fbaddf2e50a7f038df1d04f87320f56404a08b735046930ac13e643be176079c4e3a41e88cf539d8a220fedf5d81d69a51bf96059be1d6fee12933a56e77cb0d77f3ffbea2cdfdc794b15ef91591c7b2a254a64d09030f94cc4eba542f0bb10f5323475001b2218db8d02932a7d499ade015f8459cd6ef10a24d6c9ecd44eff14fc4d12e3f63b9649e5dc5e09883c1ce05ba620c55492fb228d3494901d23a1d17e5e97b2b70bb9813ce1ee179a494877ebf64ecb77e2f7ad300102ded159d38bb7c04018975568db4f1c59c349c820790a7502f8bd3b2edc0cbbc8974c4c0a31e4fedccf8f0b780b64b25171dd6a0d68a53ccb4592acb89e4b610154ba52f21501f418c30c5a349ef7a5aa1730f51f4bc4c43e4835e6260ec02b5f9a12ffa87d0cfb72bc776d1b3689ad248c8b2db0c4d7870cc19fb389011c65ca36bf2d4def88a202730b64135397849f7e65b314fa61db31e684ef3d7a2e9932a46ae52c1bac51f7f5717a948ff1a29c3221d8615f45b37cd10d3ad9468c577abeeab4a731fab7ec3ebb7713e034a8cf2d9479c47a752ad5d4c418823f71d73e3a7188aff74fbd09a8a07fd1cbafc353fe084ca8d9d95f229a93fe2eed638cff581d7f11c31b3dc2a55d90cf3a9e617444f1e58c02037c679d7770c059b55f6e0ad98ebfaf2d8ea639194319b3b685b525d2d4d2549b8cedae0a64bbb902e3962910c9d7c5460940623c5f8d39a43c03a55cbc2726ae6fcd3eed68861ebf6cbb220920249fd3556f95b2fb4398e551c85cc10ab24759f7ed9aba66fa8cea5f023448a5614c969e4f5de335fd2a3ad656be3a2f5b6d4927a8496435c18648bcd9ae6630243b90778caece8d73be4ee18cb3de7a751b0295fee2fe5b410acc9381d5464bc2902eeb8b5f6e4defcc64f5b5f04b70274ca95cd69e35e712933fabd80142b790208953e1ffa10e4e68540c178d6144dd49d7837513a98637fc24f56a4c379fcc8bc7afde5e902a5699b5d473e498a85b396937af0d5a9c2b86d5f9ce0f6ac9e9b5681172ab85e0b5da727d56e5525473d5d9e8294c77648fac8829252271db09f3d0db3fbea1a848167b81da834ffc0bd0ed1935edcd7c44c98c257b019411b175dfb04cf3343e73a40e6a316e875736825ced94bb53027363c664d4d51600d6567983a8f051d13466c382307ee963cf2a6c4491f7698b6d2e09336ef719d7cc4e312ef42a2488bee545e06af068af232bd89d88a58380fc5cec0811c9f1167c44df05fdfb7df2fee907517360c00436b60afe51b001fdd47570e27e6481fee71a58f212a95820ac9e6eb8d408858c43e4d8c88192e1a22db108c5d3a101ea855f17832085f5cf1fafb60709f667067c6031af73105ded943faf0c7946c3235fa6e567d1f67f3d2fb40c4ad7d09fffd70f80ce859f8eef95db187d272eece2addef808ce7de0586543bb7f9e161ee0601904219a13d010e775b271c6ee6ab2a7e3b5a102a75e159dc5609d4b599ff450ca14c0f1f78990b2a3a00a4df89dcf93784c22ef90fc65a7805f56e2fb10ed31703859fc709c89cf1e46dfb2b19a8156b4d687d165dcfdc66facc33741c4ff36cc17e9870631e8bb5462b7eb2fa162d2c2557eafbf435a182205d03d836345639e661ce06b578c2cdc8cf6e41f8c1c1d514b38be4cab9b9ed481c75c5dc0fadb478c1e3acbda3b94b95d9f1b2a7768a12f687314b5a1b06c13051db00759bfbd4c332e5821da6988123117e968990bac38dae4a3c1e0f9d3f5594536b069fcd57fc2cf64cf4e75faf88eef18caa61e06c97903f2d45555fce01cd0736d10be6e956702caa4e254feee8c8f69979eda1ba189ffba41d6f77e684709044fc8095ff1982ce28498851809ee59fae92447729850e4e4a3f6683eac942ea4edbc053489047d4f686bcbf1ca2c6ff5c678bae2f5117397f707793c1e47e10bd7194bd7c97c9d91b8bd846ccdff2b32bb4c300368d1f6c7b6173df7d4b2fc141b83e0384044656b0a7248b21dd911b338224ba22ce9b8084db6653fcd205515a774b47fe91fbb4f35dc89f584a23ad11a8c4666910c2f6239cb41f8aa0023888b81df9538fbdcf8f71c993cb9ffd7c611cfc5f007973b4b201c2358b33ff6f971f540cb7ba082e5fd29c9859b9385e90c5ecb5aab6be51e6ac54b3792c8bf69d5fdd9ce565baa10e24ed3164236c1c4ce9c4c757b46fa004b2ee27e76f34c50b1565cba3648002e4ad05ed7fc7b6427e7accb457932abc9745ed53ebc31d09839a9115546c9010b617db0997e3ea32ba29f1897d9751eb28e7eb686fcc86fb011a34a0d58adaaded5529688858f0d2004bbae85b3ae8087f7712d4e46197347c74f7cae6eb0215bb5e90e305b03d16cd0f9ede1d715f64e80e4b3f758ae2cfcd7d631b7e188cea9369a0b19b2074ed674d7ac98dfb32b63b1d5a39ecaf84e5f4a708318ebebe144163e1e08ce0c0f906f3bb573dc371423c1e4bd7961ebfa956997524c727dca011c549ec548f1db3d3c5efd8ed37b140d242ff15c8b2521195fe15d00fbf4f53b1e9fe45825c7ad2a2afc05160e5545efbdfbe3f00015006285e1c03899057f7bd23187ae82ff97b5d7f15ba71ba82be8c82c1f198428e346fbd1f5a0bad843fff9e8e46b97107964ad0c2fec9fc7c7a5cb0b9e9483cc9afc18513d96853f2231b983fa5473007dc97d786a89d063db9ca981930b725f989a61be8e1fcab5c3b4324786069648349c2d3e317f12a8d925ae2a513cc1dce3fdb66879dffcf8b19ebaba78b5b007819edb6961877bffe4dfbc6456a0b06cf92d48145b825e8a9f0658be2246d9846d094f872ecfd5deecc9c2e0b176b32acd84eda419b8a8b9be1f3f261a6a924c0f256363cbe6e0c5dd7e8740d1d0da947f520d81ae8f65670835c1f0c13b309e034d7413f849a6afc8e6db29ea8fcacef58a0c4fc97b6ec0e793de9fb953d831b783af5a85f672870b6aa5b27efc6040d7153d85387dfa271f7e50e05a9a6378e385da98a47ece477fad5b1b53893c514fe53ce7adb403b535abbb184c7347f72b0254ec0ef611f137002783da6c7c47db991d7a838c1fac89b32cf76486ba771971a947c550a2d3cfda025606cf369bed622785ce3f1708df0e212c9368876f7581fab64e889b06a22b457e718d0d46a1d5ac363130c39f096c81b2261e3be373ef341183dbaaaeafb6d79ef5537bf9edfb61ad4201327db70b23916643cebc10df949d113c4882e494e3432a097fefc3699260a91fbe24f3c886fad9f1d603780f7c9cab6b8be273bb4ac8059a064791f70d588c089e69beda2fc26e74298292c401165b092c18cbda0ea9a8a49ee11ce113b63c058b53519845295078f584026557974c68d87f289f9ae687e6dff9aef5185af059c3ade7d35b522c217f1c0261f561ce67aa8e177e84777750292347a7561cb4fb89c5c554677f525e05e0e67873b165e9a314d980ddfe7e54c99d6f4b6b02b0f5dbe99eda413a80a38eeb874dc1594576e0d3f03a8f4a5bfef9dc3ca12447f42746d6c3e531d2ac390373bae23a58f5f24033954c31aa9e77c4e77ab0545b351aae36cbe343f367d407225c97e0c286e7f70f9aaa9cdbb5ea1e85d596abce6f472cbf43e7285d5621dcca811b3431b596afb869aa4384cbd64a092005b5f283b5ca83eff07a911336196b7f39759454ae1f829a3e277592618316ffff57cc2a4eb9dc9f2060241e42305d3f580365f3871ff000c102a275e5fa6890bc044b76d227421d1d4b20803ed7632d56c0e1f519ad122b8bee6a5e576e12282a30ac028945629974a910abc1a3a22624b5f49b522e0fa729d52d9df628781eb44c4974e39d5d514c13e5f60584ce3225b2544013d5abc745a69704ab8dcf4d5e08dec57ced0b39f25b42f3f986ef6c6a32599718036f381608c9a29a851a037171dad10be9bfac703e2d85cc84573b4368bf84edc52b181ad085db10e4785f54927254ba15a6d108234331acacd132ddd489cd98d7dd1d61ecc0461f7519790a0f8b61a6e8757fc353080a0ad959386986a3ddb9ce4efdd80e8becb105bd845d6bfcc68235c570d2e8a1397ca9afbf34159d145354f9834bbd262c477e8f98b4ffd8d3ca05ea86bfd603726dc4e223bf75511751dca6f96ee7d6776e974aefc125e30171144cbeee860159581259a1c1b819c337c17e6e65e256e152ad0a511155f3609cd8c16a380d859510053499017e9428db56af87f623d17a93608ced3262cabba122c239387c4a1a661f54de5f8895ecb76b1021eaa19327af369826277325d12b33e5f1eb6ed50c2669fced145a6483a11a0234803b0c7198ff7a1fc11e5bc5df87fa4f768eb2d09f9103171b6bc228ec7222579ce20cd1662bcd7e98bc41e5df491c5f88f6d257c220e500c4a578cca3b9bc7a0e6bf7685110b9fe49dc26f0c5f557424b4a275357fb0bd31338ab541b1c5786727dca6c9f4fc75d6bf07124f516fbf200e734f2b07e9f668c83f0e1be6578b0f2a4e4defe6951603c1c723f00e1270e5615ef8df371a6c5ab1777cca3bae6faeb1f9f9da9fbd5eaccb19196aeb022b844209695aef438981470b0970b44d50212ddc5a18c967ebbcecdbc65db3f0bee8222964a35abfba614ae7bcf6f71c63c09503791254642f8524959bd2ff42377ff2658b9d91356df796164052c5f1a7b21d725c202a920705856156c73c0e95905865f8e0918de68905407334bd24b08ed41aa429e934158cb46e31e6743fc0b6b71082ad43d5a8c425504dc9bbfb21334ea8db42fb4758f45f7c9d20e653f184ba619ec6e65f41feaf8c8cf67f758cfb38c146f32a4068f5cbea9e2385a2907a4b313e4f90f91430af05d3fae0c43087fafb4ae07a6fd052fc111aa7ec6022ee27bba7a1ccf9dfb9a0db6ac62bb9f485198482c968d56a03ce606e5998f74d5101f205a99c20b907a80af3f41253d842ffeaf213279934383e355a3745c5a0c5c9456568c94a469a77e6855fa312befd34502ff9a0127c6fc77ce22fc3c642232bf2889f6d3e5618eea37d88988fe16b0e168da52f2938b93e3f4d826e8a2273e3a49bfa15ca62814b4f7e2ea7cfbd639f7d803e53e00610650890cfe9c896b372bab8490c5e896635294131ef46e4ba9002a12e70eaa03caf09ff6d5a763bfd9fabc1abaa249d3b1b1bdcbaca6dac005a35cd620301a27041121a59275372a3b423b6d1d0147b32575647e106df0983d9a5b7f33d415749db5b164b902f2fab063c9abf8c1fff93d599957ad51f0c817e6a81dbfe0c80a1428ea12a9dc206b5ac2935f6a7e1a103e616846d3a2c3dd0442045171e93d9aefa7c6bacf974b6572b969bcc59053b987d04760e9afe88afde11d327804625764b7c27b88f637b8ebdccac4caac4d4dcb9d3c9082d8ce1103b8c3a45199d7da98e7dafd19cadbb1bafb2d0c77aa0b7b6d5bad26cad292482398827615ed5df4f9e1212e1aa0a9b088533a1cb2940cef0c52a8b373f093f4e8dfb72520917740eb83c73db11b40c4a014c484ae5a5415c1961682cccb8bfbe8cee8fb206da12c2090fdb36d865ee558135d5548002fda13ab92dfe33188ccd9a59368cb619c297d189a299c814bd39dfb712b6800656dba438d84b2e2fdcecc8060055187a1525e100bef4bdc53e2e29310cbb4468a6850c7cb97d8740c1097e52d365b3be4fdaab490b6f7f0edc36fe391bf29af51f030fa7bc90868c8da7e6271994fdee430f25afdaf39beb8cb37f99ab1645e2f7021de23f809c964722bdb982a8c3196154c381772015c5d96e31a2ae8d5faa23b9f15cebac1bb71a63a2d7ddf3272d61baab725b152380167718936f438286d08c6b777bc69fc20f49915f6118a24f1586aa8b44b4b2db699cd5ab6a58e1460099a9b2c35de84794f780d30885e65ce3bb19c90292f90549a93018f3a1d71c393ff8e6551cd4fe47d2a72d7099339472e28933a4b020f4ecfe47b0c52cf12d7d8ca1876a27f19cc50e0e04f2088b9f37d8e2a019a262b7811c280b8e090819344075b540caab1d708939d0950af7869025b988854d77bd337f0fb3634ab2118f89243aac40bfad521e7dbdc83c098b9769a741fb54b643fb203c0862c9ad847b6d72c1b039b1bebffbd6cd2d266b570f2bcf42f7f88058eee87e4aad69fa2ee08f40b58353f638efe81322247ae28ed21b64987f4bcef38b84a21fcbd77d1f59f421cdfacc9464e0bc0bdf518a8ba631d75c4053335a468ee2db11e913c363952fcd7288e9c6c8c255de80a317596ae85be451d49860ba64d886a4d3022a2810d78282e4add667fb064dc790169a55eae13dd95417796d4ece41a17d0583729529ec6345227f10991ee483b5450e14c8dff99dbbbe082251eca7024e966d4e183ed41d8fe50f4c7cf2698dd0719f3fb8f6674ca8d577e6297eafb124c2c543f97e5eb48fce050942f803f3a56e2e0fa695fbe192ba97aebf5aabdc6707644f8600f22261bdb25529b19d123ba7e66493450d135e227b3fa03fbca7af118dcf9b45a2de25ad08dfedf6b4ff5c8e0c2c8b0d68d4d3df3dd481733495ceed34e52252ad51e0eb3c36cb862d9bf8b58c4c323c74f21aa188e57d39708a63578492590263e59246c007926227a4f43300e24639fe2549b73ccffb323f2fe5d7735bcc8d8c17de95a3ed89ebaff0b8632269dcc518a461c876e46f15548b325e0c44d048e18c0cefa6a4886a3ceb4982805b28e949e56fc03a2d1ccf02ccdd515d0c9e68b6a8e13925c4f3e57adf881c0de62ce52e763c6986f9f919e2b7af6300be6e78c866eceb76fb04c6fd9f9c097fb5405a749c2ff7f0693c8037c32348c45a2dbb84bd1be4837679de179f381708ff605d8849a94f08013f3fcb64c47817f299159b2a6fb282a4776f6f697847fe574f41ce49f1bed5fa30f05914ac3b8bcf839270d6dd10edccfc629c6354bedc89857eaf34b6a246b19e801cbf3e715786620ee0f6177535326f94649d056053312d557e3696f57532a4f85da67ad0ef8d4215514ecb2b925f3161cdcb099c089dfd1379aa9d09c3e3d059b90e1878a6421b7f703697faa2e73837fc8c005e3c4f7ea6d84757ac0d3c63eca6825918260c6295fd4c5cb4c4ca65c7a3a22b6091378f38356a4e2abc0e15c39fcc019a6350ecd1e958595b958b4facbceaa5ad62ec563cb6a388e608ecb0396c250f1dffe105b96161ef3b9aff3c8b3c2377243d4dd1080ae27957984725f9fc47f493c8ce71144b1f85a85d9987117c482f8e43b83873a84e006b2b9060a129fdde16d4f92c74147bc520f8ecf0d8d0a36d46230c42c4a5cf115cd5cfe3b427ae62ef3a485975d45cb9cf3abd8a04c0f05571bdb552ce727a1665ba7247a9a52dcd748c8e6475289c6d38b8e0767b2129918d12dc564bd488655edd7fa4463bee06bdc7143865c2c8f3af9adde887883c85b67288762872133120bdba2fe447216d15cd35228f33f6b3cf123a887081b236b590be1b68a92871ef5968db6c338806474b433e82fc07f3de1adbb7ac547971ca9837776a460cf04fb3192ce64ae02c44da3b9f71044ebf2e7bf3e2c79622903f0c3d401e99d167a63e4083989154a510b2f8ec8fcb31ac9047a4886ab2058d9b703767abee8a21cfbaaec9f7d9a6395a282015c2e1fffaf2821000df46d9acf6fc9c8bb2f5a1865e9b9db396eeae572a472fe41631de4c165f35c66996b793d83563ce82e90b61026d68dbf5d6d9b435817e6c82d84b81f9fcdbb1d50d9bc8f2e4364461252c461c059b3f2f71b44e08d3f73455a9f1c020c0b7a4d6250fcebca9d5048577c9c2a629dc58c57cfd51af459b638a9f91a0b8779457345abd4e3916d7b269eff1af65325cb2944a42ec348969c011382246ccc740416eba34168e02b69e594b6d051ef8b6fb9e59a35eea3dac5af44ca55c666e51673dde0ae73cd48d48f517af229a7c16c2cac1f06d0809cc214a88437061b3cd55f191230a88e7a44a6977a95d52d208f59ada058bc6cc554d66c5a48a25773db0bba77e92e7a59c3ef6ad656c69fa5271424b84f932c09a8a303167fa388fae0dc66e4f411b5a593f23f7b26f835512a11c9858c41bdae1f3b83e1493750f916e8aba9d3ccfb54e6efcb7784f2b76cb7a30aa6a7a02fe226ee97c5989c3d97af3423c70dac9980d96a05f5f09d799e425a2019a787a8407c275a55a73c10e5029af0e06fa64650f0b6a8a107d0ceb810b40004885f8954d4d2ed64f62cf5904e6946499eb11ed57ff1518ca6d938f3a05b2f5ba833e075507296823a4e7a1fff90d9f3cce6f91f5b7eca748f347afc4a7c93da5574f5b3faf36a11eeb24b8aa6f109731ee2a406a2327f8c6401706f5fc8d944621f9c2b4df1e1b822d3720c4f562057b5f1cbdbf37f25e1541f61283cc52c211a73fc4d02b3d97c186e64c57ce6cecdbb2c580b974a0534c23438526bad7c9a71248f18f82649dfa843e610ed6599cb12a03f0b3633bef884a913f2069ff732ab1cdfad01405c01b590fac45e07086d4098a025c915f992a5798748ccf4938fb9a70ee2391a57a013a48e9ce368098682fb7778db7648e9a52c2da067aeb4c3595ca367d37e9196625352c540e8ef9c2957ffea80832f7cceb1d5a0214cef56e57ed421525b4d877caea4b705de1033495f07dd5c01847abc65b33ddcf5a1bc9acab733ebd91971632c0dd71a9fb758addf4fa139aa2006d20a76f232c4a81f24b22208148343cd396e57273616b10dfa18975ae2a993b2b6a0192bae48bc802896a9c6268b08fa96c53d8351b4a3796d8a78075729cf88bd2ca330e128f2ba41f28644f79d2467a8918817f85f2626404f2f83f774f508d3b4f9194053db52159a0363fbc2ed307ccc2732c970fe276904aa68574ce7df82ca3e1b89ac33e3831ce4bd46719ee9d5dc9659ffc4b7d0eff6c1489cf1da489b815904ab4e880d8a89a32db8c90e2155ac469771e5859548e1f430a6c9f4bc150c853f77db2fedc93ab8ac5f17ec6974fae1dd77076c616d5247c4f8ad218e52661ed9391810ddf3edbc464fd961e58da9bcabb71e9864344fad4934c1c7385d0c05e622487925b8aeb2a293df01393d8d8bf4dd15c9afc22811c6616f0b3a6ea215d1c799c92a61e132a2376841f1260131f372ed47667184ec84787806e8f441227d64269bfc2905fda21353826a49a0a522da906620a39acbfb98c140306256981e2e7e69887039f8c5eca992bfa33be05fc52333907be650c9a442587186354fad2300ba0d50208f240114196d8bbe4b51328ec59cba7581f135b5f101b4ac6a9fe071e0bfd1f706a7dde6357340d8e699b6529ed0c7eac04eb99bc7bf7ff533dbec59e01b65bdd5a848638dae7cb3a0e6296e8ed460b7cfddbefb73a8029e393c291af1e884e85ad0572a40d1d69f53a8de5600560071eb462fcb3567929f1716f717507fcbfab7206fc466b96f476fc6902df70ca20c460c41ec6bf7883e8b43789b6336995efd934b7db051fe0350298bebd283bba77f2753a4d9b4bb0be608dedabf6c4d3ddeb591e10217cc3e8b5e6f3a470ed3e69f4a48a60c8739cd2d44abf4c9b479682df02425b4ed63762af32cf28e29699333222b8fc2404223c9441627ea24ae9862f8b1b7d231f4da449b038ccfc4483358907969c275e25da9b86664063f5956dcd46b3f423348cc5532273047db5984932dce10c39fcfad6bb76cf2e163641a32c2719edb3313621c703027c10ee4ee51be9dbd0062982d2943091e30e752f5d4547c5fbe178d22587774e914513137329b14d9eb3d435769b2bcc92abccd24b75a0dfe0c419c78d127f8d0ac3c22752ea7d639b7684865ba06489f463668873da3b03a9a89240b10bddd77d4f82467fe3c060070428d3d9d906f508731bd0be7cb24e5d054332b622d1afb992031759701a4e1c8f57cd9d4978c1cb59146040539958a703d883d391248768be959f1a200c9cf4c78c85303d9d28a54fbdcdc0892cd2fd061b8246b435d9e3bd5967328c8749ccc0777692f41623a1f5a7732f7b28b46a57d9ba851d263f066c95e1f84344a7ffe3d20bd655df1ed52773dc2da71855856b41666f3058c35d1ec8e0e0bd8bbfb9f32b4363fef4f12e6fe0d95ad918211f6c65323907bcab99ebe0c0a274877d84521c40744e161486306ae7f94617641c1b3a60c6470f72ae3b0005b28ef82a12db0d2daf12a2ceb61234bd8a2e886171a5bb5a292f145aa669302f661054d70c34de3ec3135d30d80f2823ccad0f4f326059b059a00db1e855f9ce1c6cbe7c06a38df4c86dc1d338884386a7ce8ba6c34b0bc273aedf1ecfb6e9195e084e44ada3e8b3ff10c7adad4554e9e245ccb2cf2892a2ea727ad0283938e2a8fd374eb7a5ab6d4e3d7a763232aadbbfa521882adb2283474233f23a038656ee20e9eac2ca380a0bff9dfca46eee25b88d4934807a8a270ed5f945300a07e7d665f9cd930d21cc443af340c554fc2ad241b5ec0fb649c420d53a7de2de1215f42aba43ea2faa7042478686f62d3a60da80bddc5ab0071229a6120c1897a14eccf1e849a59ce674cb2134bbfa36e84195c8bbdaed1c6f452374d51fdf8a40d154f69650bc4ecc0ae370cd201eb492bc0adeb6eed70b4594ebdd68edc02bf400acfb567a00db065e71df26526fd79c976436cfd4dded7c034b824b04005081ca97357a99c00dfe0238c2952ea92f1a9215810ca07a5285950d903930aab8c953be25f58d7e4cba818cc710d539ded23369ca9f5d03402f2b61d3ebf2e734d86c306341f4a0605d00949d6b387bf563310f5bb7295cbfcc426d87ffbb61c2f0e05b6273ca5ea43c02d7182f15c7a20ee350809dbce072c6730cc9315a6e7721ba431b096af92f19526e9c9d9deaca4da44c0791ed5ecf753801181b209acd04b91f2a1efe1bd9c6971057c636399899934c4a41ed5bc73f9fe1c2322b2107179862259b0a32f59198570c3e46b124e397db86317138f675119ffc7b641cdc05d23371e76408e66f42389a61f4327432d9d2688facc5ffccbe46c20dd8bafdf53871d7679228141ce1ca697774a8e05854859116c1025b5922a3c866280c73362823e3d179a59693692d4237b87fc9719a603bc2b2256ccf2a164c045cbbd98f83842003cd07cf5c9d170fb4bb5b87c72e5323dca6c7e34a776220b6cc6df1599fcb27b5aa7bb03dda26e12c7516720376678a871f1309855a9948a6fb9bd415cb20769c6b96d26a49bd75a39718ed62e287b4f3194c8319ad6ff3d0726b71d19d34a4879233e4d177915930602c128499f7e0d573a71a102444fb0af2130cda9f11b18ed7d48a1ad1c2cb1d3fc21100dbae3d58467e0eb55f7b8eef77ae3105caf35924480e397458729616a260e7547d2d3583871f5bc51a2df61cde652bd89ccedf2c45883debb2ec1ddfc7e605f4d9134600afa2c77adf426917e3828635cc864a7220c88183cf21e8816b75eee9ebe9680eef1ac11025674e7621cf85c2c4cd76c3ccbbabdd56c963be10a767bc5793624498c2fd3807f06be5fdb92a5cc6d9844833a4c05c2a44404561f6e62576a4c1bec3b34dbb90d596406f7daec006190553d8ab715a57c69b68c6a5bda5fa8bb22cab88ee8bab1c8ee23d7e5045483a9fad350bf0d88d609faa97ab9ee1852af574cb593bbb30e6f9aeb1bb175b7424edd8e7100428ca0b86bf85aab22717817cda03eb63cfba25b79e7cabfcd05c39039bdbab0f2fc2d6d9fb17f76bf9cd2048049e6333603cf07c6b7d793fd51c1012688151a920e0eb1111ffaac6bb545dfbd5e7b0782178aae735d0ef18076172ee0e7aaf982dcd137629d7c4a9b6c18a47d80c6c7a557ce5f9080fd5fdeefcea00fade34c29c904b3a4f49a27e8b97ebbe6e36b8c9d69ff614443f6e0e731d19b103142001211ff0e6270e47aa781a75bc7a37896a57a8cca41d79d07338b3de56de5bbdbb8302c1ba1f2e6c594c311ecc515c5d523dcf35d795e0f12ec6ac668f2a828ace1c49fa9aa6a20075da24b1a6cd5bfd14c19fa0d7d3112db278650d64f11ab37c08b18954f16f4dfcfc21bb074314b00472fec40fc78aae279653839d6ca5b73b3b0bda970bcd2e123260a34abfc6a20186b8c16c0d57860501929f3601feb9f5bd6456544709fdf5b3e25fbd27883c7b036bf479adcc3da8975e8d9b850391fe186132e40b2b17bbc1303c2def931658290f47d4f2a122d4cec7e3c4148f0f4505f4172156a5a5c282a73202d78ca126ca3751da1b790be91d4eda221b375696124becc88f5972dd8527b369760258c7739d2c9ed9094776902056418045bcd0991ca8493f80c26ce6e4701ff5b80603bc8320b03453959130b0817a052c35a96a5bae6063d1df0a4f748eae030a10e18c8512e0a3f485b8d68b53b66e6de15953ac83ef8b18a7f8a5ebd6d66a7200f98e22395dc1fcdf218c936d3d57b953bb3df1720daedced8a7b6a04142ce7acbb678b9be48a627b0a567ca31fa6ddbb3fd2f031fd9cbd9856e7bcb489bf6ce0763142951fb2de9a943dc091da007af25ce5decde461d0230d8863fb579301ab0c8a4bcb6069a4aa985e100ccb29b9449c418101738c6b580d9af83bc6e69b837bf8e86671ff22c89187029a6e3e4d44e5b6ba5d7df2a16bd8513bcce5dea20b179a590df4503c22cb0a4f0e3701c529e13ea1cb707a7258390273e661babc40a9e912ba6e378b474f50d544b261d688377f22f60d380040bbb345ecd179fbee79804cc1c97a57f74aedd34e133b265cf7d473ac0b326a752637e9319cced11590d784979a7cecb45bddbc9ebf7c9dc5400a3aefc31a694ee7552cd2915a3d6cc4a2607c0367cf353a374bb001e689fd8e2a57b59d0237e06c145e38bfad1ae93bce25a82468884c22e8081df322414721753786310d2ef6848171d88c7dfdbbec68ff8ffae08f8ade525641c3ca1a04c518d6b05844b24b375925f0fe744e77e1ddbd4cadc5d7b03034bc9a2cd488483c604c133b1f493cd4e88037d322eaa9133212a35327c76aa977d0dc9e2223745659eacc5879896582b8654900cdb17a1f9d07b4d0d31e9c0564360301a853f472bb0d4f2684a228807d3b833d0f2f118cfc55582803c9c265de5041d57ba5e6a8951d4329bf293978f1be69271c8ae4dd15b06853f85f30660fb10a44a7ee9a3f6d2930873407abdd49d333ce0b251c269ddeacb3eabc639028aa9f1346033bd40a8a03b8f1f782e8e45561bc66c48aefb4312699ada2a8b782220a1237e4657737d7de6e799d830efbbf4500ca002ed7cbcb13095e14406e40d943b58bb976d56d5596b4afd15427cc88d8848f9ab1419a728d3e4f6cc0436d8f20f08728cb5f780eaefd89a17abbf153d1121c93cf38e2f8f820b22d1e0927e5db2731ff026e6c6eca64a0eacf643d53038303c25597683c37eb11cc4abe61369a09f9426e76643c7d342eb090bbc728e957bf951f932c19fd224da1cd8b1b61433ab262672d21e67bd11bd4c0f88f2aa25fb32fc17ac9738c19feefcc6c1452b1822dcc34ded70612126870c03f81117d37ca9f63e8f934c7a24cb213488337189aa8f7e4ef340cbbd2e4a74bae5d48d5de92a912ef24eb92685945e93e0990f62fa7557adf9ac7d78575d7216c6d01d1c727b9f692991d5218e3ad3390a53d84530c706901693693946299f7c8e6e0bd2d9da41ad3d8b6a13a4fab6a067879087b4d70af213d1b1613b977f417b907d9a52e3a985ab636f3aff9b6493deb1903a909645bf2c807ca4f367eb1d39339797aeb6640cd9424363ed36db70c2afaa13b1a1178a8d9dd01f8518c61059ddd169d4d83caaeba83df56066a51383f7a4dc3e8c73eb0187c4f7fe0bea5aed61951fdb7067e0b7054b6886b1fef9fa34fa0fe623c2b3ff64c26e8e929230c39a38793e403e7954ac1877de66b9ccc4e6bbcecdb4eb1e50dfe4497c7d858791c4eb10bbc7db3e13c2c734dff6819da6b5af99425e60dd5e505587a495c26408a5ab59ee8ade4b8ea8931eb3af761f5e95ad6dee3b7c1096c1ddef99fe79dfea57a9e6a88a8f8f4b90743f4d61d3bd42990f8c357ca01b80619da554b87b3bade370314d967d6f077960bb86ef926a6cec93cddab52f80599d7d5d643890f7588cb65c91b9f6441a25e9e5090f61af98cae1da46bf3d66cca6f1ee426f7e8ee4fcb720f2edda4e111768ec2dbc4c9ce2296d90037c74cdc61be4797a511089626935258b0e2cfa909aaf3c7a5338ecc315ded623b550587524dfa51848e61cec18082c74d1bbfe41a72d8c1803438a47fc8599982ee4ba67b50bef7c24544d6b9e1ab17308d8132e10fef79639ce7792331f78bb74b1600bc34d0fe2857c37f034efdd6130dd69d9e150a691921d84d29c4f994a34a769503eb14af6160f51aabcc536b3eaf8dc319cdefead3a1f9b99d0b915776f943eac7ae7bd117a58f150ae2bf0e5741260a18f2b375a8dfd235d8300a337cb904dc1789dd738f0c3d08b4e8600df3bc7f2c6d0a678ab476cfad2a7036428e651d39bf224f3cfced0da3626e71257844b0bc5bcdb54cb3c3d590dd3f62032e422f0c7344a6493cc9f4d1330b634cc186aecc23a16000061ec8c72f3a5f8c9cab9479b4bad77c09828ae3e0e055c427cecba707be0ae25fb1e77712453f088f9e06e72c8af09e532296e649fdd604a24878780e2d01c916b4e8c4f5a261bde7ece8d12381dc5c1b9b1be29c0efd4aeb4c79ee9769cd7012146bb119e12fe3cf4e4c8a65708778635612cc9914a7b77ec0ff4f0145a238d5607fd1ac6c384cfad7ba2b771c17e05f45c4d5f41b6cfb3ebd61578b61a2f80468571733dd54ccdd248a064e2cd4defac967668a1da6602940a346d7c185cb7e8858e2acaeeeb1a78f4d6200fd57af3087f03ede05a648cd99927caaaa4b25ea19f05ed29afe1daa1357196a99a77a998c08cf138e3164ab6abd4e60ba5d3bdea6335c81f183dd3bf0707cb836be964b551e0ad61b238c8f77138e0c6f9fba90cd2b267ec01d81fe6cf60e6043e193b21153038c74206d2d662041d9d67b27259e88404a9aff30105dcadab752ede1735e95a04ce935183e3deed5ca58881a5603c973394a0db8e86a67d07544764a1e9a081777fe94ad8e3e46cb6bcb9870c4d62bafbdc383af649d78520328a76207e6d9172f5e14a88cae9907ca67aa63f2e987edcfb580bc18c9d8f2b593b2bd7302f1edc5d01b80f2e5eadb46b0349994f94bff17b2a45191fbaf9b790b8468a77eb78df39a0630dc05a5ab35733d32ef7f66ef7928a1cd9e9f8c452b6c1c9d5fdac447419a10653af212be85d71130d29121a0b3add0e8a4cc5413df3cd0d15e20e73c6cd5ac9e31b1e2970f33bf7fa1aef4039dbafc88fd0318fb7d7025db551b087fe598b1d8c01a5df29385a6eb3b0c0e51a89fb3156f8c0104eb220418c9933b86a0f96d81fd34057794c456a088b30f1340adf3940396704925b0b09c7e1b055055925c90b81097482d83908ce5aff38701448dc9a7b25236c97610f39f5dea9c47ad31db8220d52f6e3f2737c44843fdab206d6ed12a7c2a4312b2eb59260e32732ef6dfeb4d98106c074f4a5cee409bf8fd28156a2a25827f24fdc9fa81032747f37d2332c393dd0e34ae292bc6fb01a34377b69564e7a510f4b351fd6ea7e8ffc5f09a67ca7fef92c75f90c18d4eb846c9cdd389963195b1446f8f60395856c39f27d5456759eccea8e421d372f202db6a3007d5e8add557b5be7be400c9b374e4b3c527b88ba2ec3def8a868dafcb502fd6c62d7a58946463210679fd861f02e13c8496a6439cddc2c0d89a67b56b383b5c016b73fc5b89c6edb6d0ddc84e35a1951c01ac66144fb79fed9eccb77ecbaef75a59a2c94884356059ab6950f48d37c43ca71c152c4f69b56c2b20b2c7dd4f973606929a42835664e1e4991004b90bfe3fbcb781cfa34d90e1b7b304afd12ecea0b519c7ba34ff02693a7238c1774c3b65baf61a4adf37675307a45784c6c584f316a824ddab719cd04b32c7d840405578edcee7e2027a79ff899b80c7a1f740964cab19645fe36191e22c739ab45bc2cf0acaf76bfd44368644b5601a1725724b173441ff178000d7be81e059b89e266df500ffd4f95d126a0bf0e3b33a48e03aedef21b6d3eceb0bcb9a9936eac60af2390ed04b1142a9185f3e4de6ee950c769af105f63d44c298d880086406462d1d86331dcc5ff10ff5decb25c73bd74758800a67f3aad33e0b3355331ab8fb4ff6b1f8d1c859ab2565f5e2b2fbfb24cd08e7b2fa39b958c3de4fd135f47ed40aa81308a8ded81b4f6818fcb6e0048630379aa36b2a201712ecdd25f02acfe79d58e42c1d57d629d244a7b054557a080ca1a47515436a9d01f4725d1a50115856c56665e4443976917be9a3f02f61cc326b50b9c42403bbae644c6f46106119d5a41c76c676c8099a0c65b6d074465b1424c94e93be9b37d72cd5a0191ee875683757627a2949522861a9f3aec1a29dc2815a61d82a5c657ce5dcd44de445f03afa7542e121a9a58669490b27ace687725b280550b75e4a9107c7ac4ce2e4a7b777c369ae898d89ab332316349d903ec7afb7e84e53e35c8553a7d6f8d7ac027109eaae9d6af7b098e794c5277d3125ebe601007ff02cedfb10e1ce498366e666d4c58628eed3e20446f1f9fca07786d99eeb47867eff6b00e46e5de637ef1f85f73e1d36eb65e6002db0bac21e957f795a09e0caf6327b911c4f5ec0c17ec01655b06daf8e5cf6c976f63cb258b856fd45b64625e01e4f2da5d3d7b213cf3eb0a6e410675a1785d02e9f64fb6d1c107979545199bcf058cf96074dbe3c2231a9ce1a4951db4da3133a2955a526b392423224aad22e7cdff1581ca8e6c1471e68bbfdc778c5a63b14efed3921ab29d3fedc25a52032928f77ab3377da94573a2f0e967d6f1083f8bcdeab4cfdebb04490c219a2db505dc815e5f108744b6d19807b8ebb8a5249d717709c00f9c9d9fd8a60300bd1dad7a741cef0e1b8d3e4a9e20bcdf281b722c7daa8a698d876065942d7767a28d31925b06190493a74873430cd5feb2323dc847bb18501b66872f4f17e4ad7aec74d2b25c80fb2670505949d6fc478574e4868f05301c5143c987c11bc55b6bfdd0ab3e01219b725f11dd3e3b50095f5accf819e2ba500bcba44efa8f398781be8b5e09ae23318d09b23b7cc8e3eca594a3e343089979ec10c31707e0912bf907384da639d20ae81c9bf59a0129b5596490b78fb0bd465cb3360eeab0f611bef8acfb50a1837b77702ea1fcf0566d2e8c73e69c75c929d48a85084b3f7fd47c53e19cdbf6fb2a1995ac9a6c2928a35b168535666fd830702d1952fd2f1efb0916201ba99923de89e7cf469a47ee51d741f8ae1b7321e579dcfd0be0860aee76493fa0be63c8dc0657e82016a42af22f705c484c7fba2470e654208623a90139b01fecfec9330af66e2ab52579ed735367cabd4e295d5032239e43db595d9706eb08a3cd24c2e43c1fb55d1c7817345482c81c08d806c26f7af15551cc9b4c41c553207d74013642b9a5d4a1b984dd68d209d475be9c980c95558da6b38829803afb0b43fc60806dc6ca15b09b522520fa03c5be5e3359659561ef8b8c33873ce1c6e43d6dc387145e0cb35bd826a2119894404a2e31dee5c1b2066b43e22b93c9b7b1b4c04dda31bb23ff4bd31ed4880331cc6172c17f52df981afedd8859b90ca769e1f49e07d6c679a492dc59cd919bf06ae213013146e781be8ddaacd6d25540957ab3bcca478269c407595c61cb6f8dbca258052c42bdf8cabea7ee8245ffd3c6834b4789dd64a60cf2b520cb8fcf3b78756078e71bc9322f2b5ff9a791fa36ddae65e59193354c8c2196b363e1f5b72403e9a2807ea4136f93a7c64e172af347c7603f919f07aea0450002273dfa9f7909ee62932f2a4913a8092d4054482d054178417713f75b3d841145e68ffcde103dd1606d3887d9dd74c91805b6f9dccb973c97a9c176e3709096cd75091fff1473a8ee36b66fbec5c1bcdef669fb5a6e88efb5e7f63bbf64c0364b4f8fff4abfd66326b7c745d6a8b45eec8f09b7c48e6ae8de5668fefbbca4c038690a1e082757bb4fee82917c14d9a85bf8ddc2de3ac9b1df01e2e42b1ae5e411abae93402171c13927b51d337444e953222b5defeb09835ae68abf67dafeb8fd5a5f4fe25c651110e076d9e121ad1be5a494fa6671d9482ac61b013738bcf8f36e54f8831cacd20a47ead2fe7955f93bf85794c85a818ab191dc1a0c68e48e55ea10cc2082d4d36f424fd4a89e71a13aa9c54ff93cc2d3eb075a6ba5fb019e83310af36637be06f530fa5493ceefa6ef368f89dda4649a924024c7615e993c2a412c9c97d7b8714b08c549e08926981e7588dfb13672a6673b5e269bb5bec2d3afb0d1f6cef744fe56ba6e63369e16195dbf555915678d42900ec3b7a356fdd21b3c8386fdc95c5fb905d6fa72ff33794fdf850a89d17ef8d475ed1c70b30ece11548c8868ca3a5638acba4e07afd869444bad96488b154ed575fc13fc8fee06b37cc999f2627623cd03d2013901a6f4ca9fb185ae41f1017dfaeee3b9618c116ebb39fb8fe8531b116efc2f92201c0b5f21c39cd920f573e657c734bda77005373e05a58cc2439ce2e40890d3354fc4074e9c4825d1d22bdb28a9624d2d290b5043883339b4064e0db6601166b63ef95f829ee142d1e4d9aaeb96af57dd26e16e653d6b78f289d328115d420ca6a12a7b66d3b3508ce1fc42d3ee6182949d47dd685cec2a5c35cab5c8fc2cf8078158bbc2a17ceb5542fd44043ba1119244078ddcf41a31350b23b19b2f502f58b795e9a2c8a3773e9d67b81fc61715d6f9d5dfaeed729dd58579c57d0825277518ca6583f527c49909b65aa13ec5ac20b3f0115784ecd72ad7559752a8e58a654874548064deff73188dccf2e53c905951ed44b8617694b42c9f0bd185f5f348eedaa0c618e16d782c178a5bbe75c675edb1110bfcddc94f433a2b901011edc2391ac6478bc72e8f4673935ba012686d826920e6ac72dab6ef2a8f5d5ce3bed20f7f32c1b5861644d4e49a51cf8f7db42ba8d55f1871ae75fcf1dd7e119506287df860d376036cc303a3b6bd933fa2cc58663972a3adc425c0f34500b71a1641d4c2a1cd561cc3442c35ac9c5acc0bf14faf8aab88411c53d8a712480989400d86e6c73c9064f01fa8f377feadb64cf657bfcfd89cbf2b251f7cc8fc97126a9a89ad2231d578af87250b1e455937a78eca2bb84949e40f290bf9e4a6379e6a12a6f1e106c0a465125dd130f8ddac7a8f815533381e9423d776118795950db9420cf0c79b6c7a0f4f0ca9ee4ec39fb75163a854e5d1c36ea2c59c24a39dc8a15f62d3454d8e3595259938602cf7c3029478fa1fbb633091885a2340845aebae1b5004e0e447d1b8d982501390ee9f604555eb54d09ba006596e22fc4038f328b05c415f7a2126433f30c810a609a9ad0f60fa3110a5febc772eef2035e6883dc6f9b01f133a3072a5457f29f34401a546c0d6b57b53d86dc28c797d9417c5216b2a10b04c9b5ce89e6d01c84ae009e1eb08ed179916ba396295a4e249b0173ebfddfce4c2ab98b785344977675050efbd554cd9557981720dd32e808d436f94d73fc8e828c02e9c47fdc37fd8b3db0008acf47268a6d5cd4740907b0b37fbd3f999cdea239e2262c24b6b762446a6d54d1f2fa197fd24392dc93bdc6c77d48e75aef41c824d2fa502aa0915f188f52807929bb57a17a9c6373784cf6c6f4a3a6f42f1a86c5407502829e9b15a44428cb8256bf004b40563c81034dba84ad403bdb17a44d5a65991d813700585c5a4d22e01571d28a2db8dd9777977e1024a0c8145c6dee73aee39c520d9ad015cd1a8eef1347ad2a800aecfd745dd2de6c182ad073e304caf6712c9851b71c060c282057c3fa17e8a75b08d9f22f7b8a127b424ae157434db675997cbe6d0e3783a255a8cfd456eae4be288af3c0d96507ab239b092ce1831be60c83f4100a80a6e9fd8d377a64df61fde09dcac3f5e3d21aaadf3442f9274835b01144ca14dec97186adde992b42ce56198e23873d44b7dddb31303a92ff4b5b80ebf47060cf97a9e576415bebfb2a60a49dbe77f5188e135880b576c050d4d1c9d5f003c1b9f447d604b400765da3d6d66881a08947158ac44a71d96d5fd391e15fe28fa38da1b8322b04638ecbd388daaac353d569437182c2b5efc6b6dca6b47595cc0c36cc7575a51493935abc93717dba991c39903ad7e22f964b7522d6db4cfecc613d3fbb7341cd40a6dbe324364f6579f0b3f0a03a8bb521edbdb78eb8af75b0e028ba802f4988d9b044ec8ccf64f68f05afd2d7aa2ba6dc6307de7890aece1ab105faec72b49afd44d21534fc77139f12974b56d4f9dc4fccfdab245afc588d04c4138b588bef2a66f4cfa8a806cfff59b3f87797457cca0ea5b4c778d63eb262ec3fc5be1b61e339fccd74d07488bfa734971614eace10a60a661946ba3e27dba927c7846c87dbabfc1f255cd71b6e5ea1e47c2d6195e5f1029c0ec3427a3ac679703e60cd0bcf4f6787846c2c9407dec08ba3d43b2a698db9acde313433cdcf39b4c0685363c152d50f6bbc98b8950faf8d4890e3ef889689802b1411fc2889fb8ce7289c73f0ec3478ae0ac6c4db1cdd368d00dbc27b80ff45b9f55ba9a5c4febc5bdf6f4c23ad1a8704fb1a26d85b833852255e433ae790575a7042fed23b6dfe46c68e253c1aafdedc5e526791c512bb0e13e3576483a2e9265d380a2ed7078e24ff89d6de08fe67421d41bdc8a278f7407c1f6adacefbcf93a17aa5f53b88422654c2a7ceed6661ad449957f472cfb3c30574ab96324620d127be99b53a0250f5c5c947ab67fb532a25b59344c13837970dfbaa553bafd5cfaf06ddb2e7482709c6e313d9ba5ef2a29f4dd16ddca87ecff3bd2efa2c0a991bccc7bb77ae5684488fe16b39fc9fc5b1d9b395440db609c791046481c753f80dfa5d4dc38412cff092dd58ab07afa52fe31b6590dac628b9f24f38ff0a206f7f827cb2886d91b1373c53d3a30fd2087251f091b29c9168f3ea91e251cd67efa65d1739a81a98c0b1d089407eded80742a28c5f9481e6144a9abce0d1ff0e9dec00cb1ef314dcaf4775af68c6ebe8c9c9c3094cdff7610cbb52b4e69a84671337087e9e5160b6fd802603f46ec3c3baedd6aa02b1b87108cd92c05a269556aaf64eed447caf49eb9d430aecb756e8d254dda53db22dc86f7983d0609090cc74e7e1cd892cd47779c325fa54a3ef0bce251596ffa2ce717ec0a0cece69732f71d00d2fb583b97ce871a27eee44aad6facf5ffbdb8f8c7d408f3696abc0a1a0aec85d448cd7659c6c9bf6f32497f1a3e6e85037c8415747b7d2f3e655270ee6417f5683fe426daf2790b393e95c8109df088ff0bce0d4e935de53ba25e214810b55aae9f92a82fa720835f8121bc6bbf8af85cccaed9a6c8d0907f61daa536710df80908a74176ae24a8409170fd3377185496ea11f236a773aa247c481346429f87cba2d5b3a65a5794b86ba629aff11ac4ccd99198e9b64816f60173607fd54a6ad47e0d754a819c593fc91f8472e00be38756b5357f66ea0a1e3d540becc86a8d1e857f61c0ccef68bc13043eaae7032fad4f000b7252cb23c55dae19653e8565898c5fd066c672c6b2dacf284d222c1b2e23f9780747e4205c6fdf63be0f5b8edd4aa9d4b2c9c4a92d16941b67d1a1c2230dcbd535655ed9d49b2155f9775fb7d852025e64c6876ba7549020358531be22423aec932e1391061af58b93e944ac789d294283a80dc299a373d3724e2adfef17eb00ccf1d136d1dd203c00f06cf6c035b09bdf3977f33e6572259ead92344f1d76701115cd04d916e93450b91031d5d835dda6d9b654d26d2e270d93eb5c0e1edfd029ebab055c9e196d797d1791c02b51eb033cd6f32a2522c2644ba41e450b1de73b98249460aab9eb3d32278b869f65ee234da73fc668e52a103a50f20de38958484c4bcf898d4c773934dd51890dc50f52c3b4c6b8ac2016968d98ee529990193efea73dd85361e934f2e72d67a233fa4e633ca1ce11ada072222f05b12f88ff23dda0838a06932d2ab5a802ab27753ab63779b07232e00d49a1813cf0e0a66bc82fe26ac4d98981af73f487481da277a531175898d326bf7f997809a0b0926ca80fdc09ce1a69e6e113a7e7a24014127a76b3af231f2ef06c22a1dfe3ff5337a9cf1f05ec9d41bb3877dd7df94332d721e94c051efa7f8aec7ca4e794c8af7e433991d00ddafc47f741c2a92ffe621d4f60897f9ee9a916b6ecd116f6eff6563404fbee119faf922c9b5fe7eb4bf7479a7e1127a3c816a9e29f4406af67c856f7c0a34d290ffb6cb037cfb540135a71b1c619961a20f1e9144968f67e84dc570bfaee8d23b338011fb176d3104817d29c22636f4c60502b0e82dae0e5f6315a1d88288ad6678b391f93f316a27b51550b454428375485e499ca827cdb4e8773c9884d9a8af9a103f17966e269c8b8894ab0cc607b03a2e774ba0b409d950b886a5b45ea569c1ab413a52ab6caabbdd5ecf6c601b1a6c0ec44620bc6dc0593f863a59fe9643399e3817d82cf3abfad6fc04c1159703217b94a1a4f7af57fd18e4d6777ab30459ca94028bde377c49bb8a7e1419082b91e60687f90a4d928f934046300227a803d269ebf25512e1fb5a0a71a8efcc3651ed49f6c2207589b9b77d0d922c0d733c3d3d72a021098bf0625e625513849dcad180bb0d649940cf1bad223809456df6b7f194ada687b4b43284bef10e43264675eb46fae54921739e942f89dcbbd87ec0a197a2ba9859f82dc61b1925cf06514bae2c1d6e73f5095693bd78aab8f2e56299a534b0d06eb073d2094331abbf25e940d5e3f751a56014d1ef2fc2e5b36c8c78f39d42a2c07b1794c50cc656b58a4ab0b0aea033c882b897142ed2ad2400a2530bda1a3051be351e54a0f0fd05e9fcf8961f7bfdceffa9bcbf2fec180cb3716df42bff39b07378f0a7709c9b910b8a76ede1aed1173e113696a6c470567fc706bb5939d9b98a27daafe4d1fb7b43cf72b7ebbd521c5a996fb8ba48455efe69c7a81a401ae702f4d8117b04be5cd8c7a3d16b9496a2c0266eff1d7ca6ed7a4a38682dd4b04aaad065de2c2d1cc6c6ddf544cfd0ae285880ff6052938b4e84c0352a045d326693846542727973c820207bce785eb073afe2d15e7cb2d58c84649e45f20e88d0ba3916782b50bce23b13c0fdbd321af61f54edbee4521ccf0922ae1787dd91d1f32f9410d805a2daba02ca69e7dbe7724a7c690dd4a9bf725ae883d3e716ac3f638a645c9071c648bf46ae762b490cf690857e75eb8eb637d7ff16ca87df52da80772140d41355f0dbc79e98f86cfc252d9a713a6b81d94818b5bf2887ae31c92e9ebe032fe8d710aab185c4190990333785a31e2dc41e5501861f6b58cab7f75d504f52d4a3f35a0750bb52ac0f44155ba18adca27e8a7611eb1db4b7489e498a3b92c14f23f3660750c00b46a24557ef331797cff01a36d7ed93ab5d3ba6a3dca8151c488bb386af7066ae7fc8fcf6267ad5c0775a6c7f1dacdc1aac04ecb36ffe4d95aba9b462b6ac021adf2638cc1a0cddfc5f3ccd27c28925026e7157fe644daad39d5399aed1544394f8662eacc6d0c15c47d12404738926b36c4e1ae66862f956dc5d3c38d216100331c018ae7923eb96d52b15f6f0e9997dad29624915478ba2904df349877f6d8ab462c472140c7791ac2ab191ffa50d961ce99a0fbecf3f23232077d224c7739a1915829b4e048750dee78751dab616d3d48dcc429e45590dc0d777a44434384a1abf8ead45fb6fd8696ccb8e1dd94b15fdb576ce29519b1b9217a1df74976f00ea23e1601905a4be847776ab3638605f148fb2d763c4de3e0d6a7216f614c92df23b3a8b7d7e551a62373cd1be9b2205fa1eff61efc0438646d24a635a562765d414374d2a4a0955757e75896d5b42b39a448edf88514d3e5066e57994a871e62f39a4de675f54294eddfe9e40b900a763498e7be79f79d29ad5e40fafd10d9ff8853cb2b17b89ef8ff2d6b4f53b0080a08219da18b19ce4ea61b00ffca78397fb069b44979609c805d518c765f417b0dffff88ad0f9eeb394ab27905b255b181f3ea086be981288737b7383c770eabd96b8106fec1fed808b10b7c5e4000772ab7adc41e5c1a26c1a3933d035bc8a13c2cfde539fd655a54e6b17968912fc0e53490e56048ec00d43f6ea9b91a805017eebd97c4b3f5c2722c3d61253194bf3ab8889584a35ab237ee0d03ff366314180f01fbbb1b63c7611f89daec1ce95bb3f7d9d25b93c8732ee977d3c4156f7a7effb0042a3cd37ef9c89c179a4957a9cd6b6ac485bbe443947dd6a160148bc2b274e59b10b39b10749510e14040766a944485f3415dffe00944f3d46eef7d361adaaa16f14bd42aeefd903c6b3d73714efd613d3046e39097670bb809ae9967b7978e354441ffc0bac2c65033ec02b8014270e9a5d3f75f69386ac1af7756170952eb3e599b585b3d01affa4a88d3a4d7be369e701e97833ecfe7b609b241c9c130d92e2e3d5598a0b6beb13468b190ccf20304361ee74fbc74d99d7b3701e6a5a5f60f8689d52bf3682126f75582e6e322c0d8a070dafb3019dae6a2208b6ec01061d848c03d1f157833b755e2af04212b422f953f0bc5e545c52ecb57719b0f60dd34fdfed48192fedd7e52b06f5914272c6d6e92dae2beaddff702a05e30defd7f4eefea04ff124f02bf7d93fc4c71ddcb6c86cab79a4845ef3bd1b26c47e9c14dfbfdfd0adf68f6ac868fa0a33b7901e003f6a61c7e68bd9f849fc9c447fe04ba06372ee35f444270a06daafc001ff3efb8926b47910128113138c7349d7a8bd7daba507fcd76f1d9d5dd549117886a2734505121e9eaf104b80d9d0286c4c2a2bdc3f1c8af8294c791a72eb0c89e2cd64119a63cb5a59acdfef18bb947fa9102a7a58089016901091b8f4cc25e01af21b48c79c269a2c76ede6b2aa94d161a80995883c13506ebf9766d80c2608077cf6668a30588e342f25683a627dec709f23a1f025fdfbd2b3cd6f9ac98baaa56c0649bd09257f91785639043a8db55f9fc672b2d914f79d4c33e1c7e69d7a952c7bbaec3fd7fc4e815ee338275b58060f996c654b989c224e7c8c2f888bd9aa22210ae9cac84f68c51e46a94c250a09059c1565db9b50f3bdb5eadde8b75ec90360a0b0ee7e2cd32c93a6e5bade49cc91b619cd5093b22a6e76c905da4955aabd994bf95af0a20ce5ac10b3ad0f6d41a26c54814746dfef85aca06f6f25380bd67048298c9facac15d4bc73227b2a3b7d15fa488dac0a3ee74e1f58d35480fc5a546cf9aa4722700b702d71fe8eaf4c3beb067ab508b98bbc3d49927faf2d2a5744d39f425ce358c1bcfd673a8fc63cfa41356621b89df3f1bf7b36846d838716a0ecc3de2df0b7803c58aa31892a82fd3e35bb87476ea8b2bc36342b2f4509d9069fea17a9e95977c8f36c5b77a20be6e24630dae2a7bfdef6e7f5585b1c2a4c63a8d131c7c7b46324c25f620199cbdf3ebcfbcd442b65c2ef522a440f6eb5f1daf929600737e39c42b4122fa25e182ed5875716ffcf30df5b73d88ac2e61ea10b703cbcba96d782758036dc73d2be762d06a4ae1dad0c6f2abf263c4a84898ba332317a3018c8544e5b9f13cdc76b056cc890fe38ab7ea58811cb5746c7ed3ebf535a04d37306559fc4092b032b24e44979103d7630dc29312bbd471d19e3976ba1988b10d724f14b9ad2b07d20f1906fa42c273b20f47d8125f44dc6f3fd6e4d56094d31e02f314470083f615c8fa1f3e254c49a888796cfba94ae59ce900b7ef1e4451b9545de86accc410869f83f08679261d54ba799ee3cf714e3b3eb1022ae5ec8237f2ac4265e898e4127c1eefdecb1487987ccc3b9fe62400d93675112be541e5f982d13ea1fe69b1f4949a030e65826c0a47c2e1b5eb008a9f2715ca04526e92c7275b78c55cdeb300621aed6936de5347ab85b8ceb1c8ff1164c422cc82a679a1cf30309f679ab7847ace5f9c2cf853b7c687a99f89f96f292dff58efa699a4e58ef5c90b5ae43b5c1964b3cd472e62bd3f3a3f831853cce52361c469150cc3d24043602a956c6b7afba6a13455c521fa4248cdddc59804dd5ea8b6ace85fc30d3f31edf2893658f4d99a74c5f69cf919486db4a7f684473310d7143d6721c8c87e96ef544b0461ba47ea220ffbdf10ba3adc000358848b989c8ba4d7149e2ac8211134e426c1fab22f8686fcf9f697826bc7943d706d828510d638361f615aca7b3214f84146300edc392304a96ce36918ef441e0ad1765559141362a50ba2fa7a26ed3dc6e06a444e17dd66f09deeac6e557b7780b3d81d03c383b825b69131a66f5f434eef3f6d9f443ad9c652d98672e37c3c1001945cf826a87aff8f6fede8fb5e5e219cb315e9806a73bae013aefc5424e6cc45ea309a3d4bc8368cc54d58704495b2ec6690d8179e4a5e07b7f6733e4cb4446893192ee18f1bd382860ddb2e04e6af24a3f4807f747b990183183eddbdae314386cb38d0c0b994950775c997dd2a3d63e756904468c239833d9082a15f8beaa195bdb3618a7e9a4616291c0a0ec4e1abd2e4474bd5dfa95f5195298a7c4143766b4f33c6c335394bbb0ea97ff849cad26107a6b405c73d217978287acb8c317996f4c1446f65a32c1bfdc5cce0dce3861a52ca5f2a99171232095a2420d8bb9f7c61c7b24cb602041d64136cc504b6756c49c03628cabd23cdcf262ade2b83024bed684d7754998739def4c59cde6463c2ac9390e53819373bdad5efd46ec9246b0d48fac2eef9588367053f1d510d2ead14c3213c953982dff5cceb36d7265f2aa6224ff16f6f005dcc390a1cc47ab769591aa39e88f4c3d278cfabcf21e588c8c396eeaa92f471750e2b46d6dc6f31f0c2d9a52f4c6e7b6d32b0c8ee824d613d5ded10d20be80113f3dd5fe108a1d50768a1240ef7a1346ada3e961557b0f06995e871eccc69cf70c3b6e7e215e65a9ab27756f9dce3352e56431bfdd3944eb10274a78aa776684e62eaa4b1e192d2179c2574ebd6bb78f0b37b7029c9733997ac64856a775f4bc7b0a4fcf1e50fea5640d11350c0161b705909de71e88e65304ed7d1338febcd036a9a40506006f3fa69f2c57cdf47913159655e78bcb59f876b14db636a7e40f3b2cf8df20565c704f6f5288a3dbab5c6f86ca3a1a8bfbb9b23ea00d84a0e1da3069b11407859dff685b5a4bfe6ba4d84988382fe4a5e30a28800baa822a059a8ab2ca0f937e12a4035555d2b31afb394fd2d35209539f61f26bbcd07193c4b63352b023e2e138ab6ac8b2a763c85f349bf0e93705fb2f9622c4e3204b1c5463db93a7e02e0f15c5565b958d32af5d3a6f67b7ff4888401b69a046deac271a15ebca5e5258013b25599264ed9b41cbd598b01b4b5d0ff763e065486a23820fab3ced6b4b5960d28e981a8207b19d18ecd74c9648038156697889726489b791a34d53fdfac12720f7a906d616e40acd039ba15a9332d19662d64bd6e51da5c95a30298fd627f298e69b2260d7372f1daab5bf923bde39eaf5bf2538087c76815c1c846346037e85a703774d96217ba96a71ba593253a557b46e591f8a8663920662340dfa41f5616f4776cfeb81dee65d77a9cf2f142f9af0c3feda057f9f06bce88a9925cd7c48653aaceeefbf528abc31cef538a4fb063bde4109df5a21d56ae08d26b428891c6cc85e5a445facd5e94bc063caaa2c3024614959d1ecd22443b99c08b7bb892b82bd1d0920d7e6107a78a4417c99fd249ec575f88bfb1d0ccfa4f0bf09bbad4bb460719101b60dbe07ee1fab11182c2b2d7431778fad220282c9e2d6a6bdbda0c4e4da1eacf64f868f58cd0f064eaceaee06923e60e7a006905a69a510f36b356181aa699b1f08bc8115f48b061f89e0611e8a478bc80e0b34055b43e0786751aba99e6700fc9144eb87ed686b244009950704fa9d6144c619c938552b5138a53c7cdca57827a2af4946680162bb7d4f8903088546b42130837adc9fe0af440e6e5b40ecfdb3e803c74605da01422067308c75260c4fec1b117cbc9145cf03df9bac42c51e4edd0640b1679cc48593a4754514038d4649dcf563c447c3df6e29a44ae5bf1ad77d01391dfdc30e3773cd4ae2193d28668905eb7868ef977c3e2ca0478af9abfa18c3930b46551b835581fca5bbb02cab2316f915ad653aa3d6299e323ea320635be1679b8e28e1fe5040d97fae26501ee7388c294f9cea1bf502528483913934100e0ad9fd0fb380d31deba13db9f2e26038793d68a76de466dabe45e93ae6a3d23abea13bae49da0ed82596105661814328e685a64e971b9f7dead6ecc4f6762934967af35547a3449922af1bfdea45ee8bb9f30e639b7c19da255a164e556085642a8deb3a37461cdf005c1a3fd16e631a2edca63ee1760b4ce7737ebdee6a07fcc3052dc42cbb395ff5e4121c5d232e7cccbeeea2767d5fe86cac105b4f895cf3c16911cbdb2c4ce2203814c40890a4a5e2e3a5e37a5024edf37261f6bc6c8e0e08920bd539d5742b8806c07ad2d73902db9e3fa89a56eed18aa5413e21db548b9f1a3c4e280075be95fe3a4ec16d8fe853ac4b47d8f20dba2ac1b3797068f88a9e2d5ebb48e3ca513002a995e60419f77d0b872b3967a8337b7c4b2c06ae3d7ed0e67b687274553ba8a44c253e3758acd5a642fcd2a7c62bd06ef6eea410d3516c571af154eff5b4c4acf48ceff4eb2bb6cb7c81d0767b012e8a36be4084d3d4c91ba98abd302dafb02987621ef398f65a80545c50cb7455805bad02dbffc01755d2499dd0fc1e0c32460cba6946005da8d4efa8a8e91686b1a5b74174231d5fb16298c59e9abf775e2cc699f26791d1ff9e861c9fdea39b10d1c19aca67ef9d48d6f51bd5a7b01b324074182d414d3ca684745ad05f69cbcaff9bd2dbb798c7b0049515086ca33a906069a68eb0b8da742d8070c105d721afe30e0dcc9d13157521704fc99136bf32c5cb7b3d388b8bc741842bfbc0cd0665d1d7cbf2a11bbda20c98ae1c176c5bf1ac55d0ffe344c0988e3c557098d72534bf44aeed3b3000404c5d4121825cf95a49aa1304d17e38a3a897fe71f47635e36603a7a25f6cf3899c88eef273a5cc85e1824fd5455a9246a9904548434db4c8091f3f83e292e689ad53581a05c217d9ede03e9102c047a3b3bf4c632dbae5bc7bee88e7ceef68f00c0b7216be5f32755c1fd35a6304bac2144648e16d586b18f3937018ae6a82ac9ddad183d5dce646efc975a80ddc7d5c9251bee61c67cec63fdc0a492e2454764293907142eea617db7c89fa28f4de1f5e70f514a1d51fea67f26e2ed0024818d97dc2f2cd3703aa886f6e0b8d34986f66d4661d02a415da085274391cf3db1b096655ea50e866e4581976e1cc60467b0b9d1aaaf53dd99087b23124cf794e83f26f148ed386ca4ec2c55ba7933baf213b04cc4f0b3cf6f3795218de5881aa7baccf62a782a9ac5401184ad63589010ce6e32348570bd3c67bc7781f3f2c553ba625bd6da65b32ce8f47995d048b3b9ead1145ea3dfd9620cdf8ba1ad902f5e5e6cced041d4757751744060a0047a672c60920d337d979b9afc4b704e2ce5d192d4349915e24ff5306ca412279ddca6021af3e564c1b8c839a9ca1edc3b941e3c9b094687a945351ab69deeb4439e63e1d93af5b5ed46e6f62826cd3ae5bf20a703abdfea951aa11b92edf5581ba21c5091a32cbdc829d5c748cc06a254fd064cc5748fe38dbcb055b0a475c8310c4fecc97b135e8ce27aa0b920f8f48346e5abf6df2634cb677a3a4e0ec9160d3ba09929d5ac4cf49a5a881321b0542766f58e76cfc421e7ddb1bb3568aabe6616017c1690300ddce2f855e91e9b96f8659175e0ee54ac131e1c1dbf8a606eaae3cfb368404ad11dc97ff04c538143ae99fb6206bdeed27236d3ba32633b2469a0586c95dcd7776f72d05f39e77a80e7a167c06e0306b6c72681ec601563fd6526e663420e0118fedd657135c5289dcbc4f53833439adb04ad66768925761e6fedc99842e2a81f511e4d26f33990878676d282f1a572cfa9e1d477db7f62da417935e37cae24155571773152f5343576ded85cec54eeef55763f17b57079178c462f1d9b660019adce6c70b113aed89fd5de16fa23159ff488ca8a277c2fb303ddff603c3284d3b2d029d5398bfb903983db6e8837eea284568d3bb7202eb8b1f89ddb77d0ed38b2b57075427f973ce4f6cb4427fc96d62a06a440e6bfd7da940aefff6d5d37b6d0310e28222a50766b5a842104d26370a60316e3796c899ac7833819e6d04efc97fc1c86b62c1267e62ac0026bcc692ae54ada9fa448f3e579f77fe79849c3c95e3352f12fe73bc07a9975d19fe78e02c1dcc845c875e33d5912b174947e6193b42df70eaf6fe3a9748f88c051a26cb543a4d3073ec2cd9264ad7a78bbbeecc3310f573cc0183ea83140e4d7a84ab6ce9d97996dfd4e7a4b2295cfd3d449fa0d83818ef09b10dfbd3c61e5acc768dc61f74e455ad4aaada48efb2b51d144265c70e05a9353e8f213ec21f307c12263f50f6527d6cb1db036bf7aea67525c7f4b5bc5f5e297419613544a0046bd5ab1da0463c37936a779ae18023f8037d9fdde7003e638aacc238eced535daa2f14bc2df9219ce142f09c926139ff7a56a34a104c877ea9292cfdd01e22e298856e9ae17ffbe82a26279543b2524d01420cb03fc8585cdf78906d877039f8eae3ea8dc3696c4c5fcd72f14478497a861ef181e30fe489242f68362465f8a177830b1e9e4d89ade520dfde7b8b87efa613ae4a454a57e7e4ea161ed6eabbb6564e2869d21493439e46a6d1c1f53dda312ab50c0a3cbf90a0928d2b42cf9e498b6262a2bf6ba3649e40aa6c7d846add132d455c912846d91a73737cb1097aa1f7ac67c218cc139bfe8f51506eae842688dd56059fcad56e3115d9a49351182c66c0fc0631f588895d697c76be1da10e16a8a292dc52bf9406084ac66e8904f244e3075d5a92e48b00c9a65c664539da4329db5c659acb57befb903782504e4b42e4a9d1700b6423ca45aef85dba102cfdea206cee42c1cb9ae15ce755e1fbd611b15822f99922db7d9916fa7e3860b8b8d9c9685a754669a527e538da004c1e2bfa971121c07ca16862d12fd0fb535fa60fd485b7af4ecaf122ac580fa819ed6b3e4cf979c0960aa4ad3c3bb3d4b62cd373c6454e00ee6e2dbcc7a4874dcb6890dd964a6ef5ace9406f549b0d6e8445044cb97ee2ec03ea1dc2017ecdd7238841b5108ac8d5778799a8398aa8d8a7f0ae27e4a2ab7564fedfeaf682b12595a8ba043f12f4489494a100dd0fc4925305dfa0edac5961a0ab7576665118551f5f409dc8edca0edcf68510cb121811a96179c6c80549d286c0c43ccbd962c583eebe1f7f6d5d880f505f14298d39abaedbc4dd34f2fdee9dfb989360be87d17c4a3ba86458b39b19345a07c5ce19bb070bbf7cd985915e67e72db5306d2431a4b48a2c299c3bde6d869c6e81c739169d4789580c482a9afa76f369d17660e414414e82d3dd575eef22cca293279982282f0b990337cd00eb1bf2856d87193f112a05dfa9a19ccada1c7c285ce3b91ced1f6f8a81ff96da9bfb8d74850431d82ac3e2c195220f470ef38659d17f330ed7e565fad346929c9b2364f269f384ea7fccdc1116cf389a240512b7e6c6923351a19562f775632ee539f611bc966583717dce2b0413c91985708108750a80284c50f844c385d3a6ee8ad3399090967017aa765d7a4e19456e1ce040e4d9cfbc2e175bdc6c25f400759c92068d7061e749675417cce7e08b85e2dfd90a5ee2763435405759f1e1ba6d726bd9f35ea4ac9e5599b4ccf22f16ab5a760673308a81b9e2f2dbb49c12806f11e5eb85c41eee08ad8baed8bad9476b8a4c1066ac1ee6a7331b49f625aca7e8afbe2c6ea2af56d7e71fba3a67bd31e85b10437ee6848662ea89a3c2cf509c0850fb66853da4265ed275fbc100558b6ad2f72881cc9d1980753ecda35b5005e7a93a3165bf671e581cb7ae9894130f8fe2813574eebb1534ecf5a49f808bb51aa00635492bf10cb49eba9378a786c0756bb523c031d974dedbcdac688231316952c48f39b519bd88806bbb2c1d3d9a7e16dd89b4a508fac16ff2d7cdebd1d4a182c5cbe56642f3683a64a15a7df8d52c0154dd9a6cc457d6eda552097d31fef84614e2dc6cd6be5fab25b7e4833e5f1185f5ef6d72f10344e57c317707e20156decbeb98f8ee64c944a816ca50cf834d5251bac4a09639085148238e94adfdb6e0bda454e6213ab941eabbc0133832404fbb1a9abb5e063f734f65d8246b9006d774b194f317d54faa3ae5d2d2b849d1b8c928c759f9ff3a4fd4d239e9b709ea1dca8d602d480493ac3c2e544619cfbbac52856f05d4d4c1f95a05f5db31422955b5b8ee678fd5b53f437451e2ca1c49fedee00b3fbce9d1c947f09a213bef4e591aab9629c046d8fb2f25b524cebc4ffc33a316157b2b0ba4a9f06d35f208bb6e0111af651e7a5db9dc067888a863c606d95962bab08e8b6c3f967ba80b12207e22ff6d8af0a23489ac09ed56e9e06a35228011f81d793fa4d55e88d90a834671e282e4db66d7ac7ced28b7fa9cd7a8126602c6189d803d0fdd9a2839d306461e31da976121c7ea108e468fd5dd0ea024ab4f22d90c696c6f08c158d2f65ca7e22fc171be94dae24f96dd988f2b267527e0d40839679e79c2e92ba8c4548b15694d585d40f131ba00b5c85a43f1c7c443fc1b08cad8bbfdd374505a3310992db578c61eb6c35a7ba4b070a0e821e5116f84d6a208988a045d6cd10a08c0d419e18ec42d2526fe3cc49db75c556ecf8336003b553e585935acc533cc06e45b061cf1c688d5d5935d06aa7807593fbc89b273e383261f51d00b565d99c266a6a8e71f0cf503b775b936c2e93ae5d2e5c60074785d722518a33318deeca0741d48f4e23b7af76b09f629db1647c9693fc21304c2a551b9847680015f64da7840a08211961e6180ae9cf601fa0fb99581ec0c4079f6e0eb81c9ffc19aeb005272e61daba67444a83f89aed3810731993803ee916de2285e22473f758a8003f81454619f8e5b41592e0aa42563b0027011bb045c6423be106def7b2900cf38dc004ea6ebab19300d0348408de26fe635304280e1d3846ae12e9a66cc251a9974447c56e7494927387d1e14c4c70cf00edbae615b79c4ad4f3e56c44f1d0e536ea0b2fbb71cc3ba366bfa62428030edccb287999b83da2ef503157c1c10b44f9e1f1b20fa4b1f5d027f0118240ab5497ac26decb0f15761a9e873b9820242763a992fb40dc6c2265ac3f8dcf57eec1d587b05e6b61ffbb6490925c7d3aff5a1152021c7f68903763ae1319a852e73e7a143433f3767ae22538da54b34359136bd4230ecb781382b9a4e5c4fe92592f381330614942527c6dceb282b33b3070f0cae7a60137fca986274fa37524b4ff34245fe8c2498a96f00c3668c88a353f3d63cf1dafe4ade6586feeb96d33e8f16264be5007f8367a29f59a0031310d97aaa68d7c56ddbc0de370d9940eaec02d0764c2b317ef8832050f02690d7d84047ae67ecd5fd5e7acc79bf7f3a80863598d690ce5002c3df7466bc14ccae51828a8539ed0f39370fd577f3dbb733120e2f7042a6f66ae8b057e9262b73aa0179d73fe2dd51aabde958124965b960619c2ffd22e2680dd7b2793b73a035fd04633ac5184f5c93d4d91b1012daeaa9bce6111a189c3682a555a1046d6a77040d411d8d946cdc521e08d00f6917dd7eedbc3b761a802fab83a58f5160028ab321471df5d24d7b0e554d22c96405bce4ee5432520583b92a1e2c7e5963bdd43460b851d0cb8ea19a9a3e5dcf6084c737391f6ab21e1feca8cc0a68240b79b6bb1cb9e287de416d5b32a8fb8c1719ad37aa72c1915bd19d67e79c95c41ca611585cfc94ab9b38f95b48162fd23b02206649b90fcbdd0f8457ae8bd9bb6e102fe3c5cbddbb2198fe30e702fc1fa8eaaa1250a0bb2e49513590340bd40ebed0ddafc5f08f21fdaffde7c2d5c3adabee343c960a94e941d97cc5cadaad37708a51dd59128bf103860cfa6580dd9e05445a958a38a783e271c368862cc95c453c25dcdc228ffbbf5b215806b3f112262e92addee89a57d6b1e0580bb363598d05cb7ba906eca2098f1b42dac7b6f7b727c41e30a88adea0881e341f77c31735e51e2a4c8d1c989e6a2590d8f9db503d5de210fa7ab6512fa0ba10ef235e7b4d59ed3b58ec20389504b615012d496bb61e6dfe051b18c37d595f3eb05dd39930eb287c5afeec0ab72b53148a2e50734262902b9ff0d9640f045074a4088027eb758049b1b4ecd31bed0e478824121490126adcaf79340cb2d58c118b6bface419893631a871cef67e7f714780e1409544f2bc07f058ddef00993003629f32e9b8c7657f8a75365b37ec0a3f4cf6e06fa1f31a8930cbc0b843277a14239a541ccc90d7f54423f70a45f03e5158f702bd7960e9dde6ba6b4c6478340713ea317639f7e26aa7c592d7d060a513605d603c9ae6f388163c684854964f59615f52560ed04f8849b1ab179ba31bcf720db1430714b78c6d361307d3eab99e50630c8a1b7503fbf2f6bb95ef1df71bc67dcecb4296563c8f004697cd14732febc0d980f0a873c87d60a26b6785d59a4403903260efb71af8ec184dcbe52cb30eb6ab5443f50f270c742e3b5a7d039ac660658c5a882b22b7e45013b3a768f5407627ccebc9345397e0914944861891c15b49a11ddde76a6d0d9ae6a086f9568e9419907a86d2d994f7287f14edcb6741c3a1c526d7c8c31bd0b23da3c2c76755108685e29d1605abc229495acf80f183f64046d8aa0d0d4f7516b7431a360078eeb0e5913a3c9011b27fc8b52a757e33ed6c7d3a4795e868511b7ddb25e695135277f866ff73f3ec71d5ce6290987ed2f9b391803bb2c0f3d8742b191adc0e5a71d09932e892261e19f0bc01d0ff565fd3efd7b39d83a3543d160c3f84857844f255b3d05dcf951fa4898dd5c0dcae66b87c43dfbdc25a0372f1ae36e944a99a3fbf74782be467af5d2c302f2f9931ce4b649d05374a6f86634a47bf74ae03adb1eba511967926835c745c460e2e5747d38cbed03d0ac5a2a8bd923b63c577f139bb105e244abd41bdc6ea370801c17f45396d3183252d35ca00cc28dde7bf759a3a159b11fa545b7960c5a8310d13f2760af495d6ff0dbf5858d93fd3f2314820bb4408dd947a14881c255e05f169a45825f97678837ed1196bb962df01a26fd99e5a95a2906f928a43c44f294db90918e017724e5f8ee8141a84c5f386045c1715db25560d88303c603530f3fc8e356f50c9a90d636145e72ecee5af29bc9c008b6c02cfe8d49ea0578d2f75d47a7d45bc7dde29eb14b4298dabba618b7ebc8d1b22c98b7e20da441b3cd82e85ca8b90a9fe2d90f71d11fd8494cb4b7971223ec6883b509a2472dee40e8b20e26fa719fe8979673a4e13d7cc886d10e107e4ef8db897ee71e7eb463e711a9ecdc3de53488ab23e0fe70e56eaa650fd651e83543bb4cf6db77d37ba6955e3a91d533fa15337c8d4518e291e30d1239236b1e8ca052014d38ad0e0b495f0f4127386c3aee8ac4f143ac96e8494878433695eb0d51a1c0bfedcfcbcb4544c45eb4b385660d7303f3d8f055eac452ec8deccc0cda95d0093f12b4149f399b88d67ee8e969c9bf7feb21e8415c58e377eb4e595faa159809f14aa593c27ec402b87747c004786d95d8451ca47f35269a69d6f6cdc439d040ecce2c537a3619396da47eaeb392a78b24f538d99902e6a913bdde92321c5532b60e8303cafff42950f7253ec65d64030ee586aa046ee8c863865ee5a966a526df627bc66a440d8dbfe0a49120042cc7c64b3ba58f39091c3ce8fc1ca882ad0936d6d7ba83874f0bb196751a50715f3ec6eb4ede4d2a08dc660504827878f8ceca42c40ffcddfaeb24c880f9838ecdb032c53222ded26ca6fb7d228d68e46410d1d5e6b7b1339793e74db755f3f576240be33dff09728d4659003ff5f21142dcfb025afdf9784138b6d96d7c0a64d9a1644c5428a365f7b4a1a09f60ea1d0e810a4ed7e01ce7a1d69505cf1247988d0c471650191cd0eda3838b682e6b1d3adc5dd9f1fa4c134a4f7347d5285c3fdb2903d5e9bbe1b034d64e60b18eb914b0ddbce4b3e4df30723b218335f4b5b58f719c8ccb3da035c3931323995fe3f8d794e71a79b8b39054dd63b9949dd16fdb642dc4c6a2f9de9b17ef0c62db2b00f10c8c05c3e73548e45e4a88c199cc9cdc980d65d99acf5a6046d6ba147d38acd67b7c1a533daef45a8338719670412c2c449aca3c7c19f9a17991c028407e9e9deda0e26e178ad4e3845cf4f5cd154a001079ae82d290d03f179426f209ee72598e23c0ad750f1bf5fd1d7fad4545dac5055348e7ade6391d9b0559d3b621bd7ae404d869951ceb356665e2452056a79b08d76f2c056ace76be2da266e3f1e61f1cbab999f6d66ef01154ba86365fa61a038374c8076e39575a00de2f6258165727e38195c3b2aa9ac1727a06e77f8fc661875e676b6b6ded014e489217d28841cfdc5a8965d22727adddc9531f26cc69f6cc92a45e33dcb2cbfda623a82696455146135f52c83fdef0a8cdad36eaf7c3c84b9e3804f5cce0aab44b31b3efe5560d92ac94054f5f84c270529bbeea44ce4734b4e843339c853dcade5937f2ef8f3defb7b07faf36d09c5d67f1eb116f6ed52e1bf89e103be4535eca5532f8e91fbf4fcc1da5c3fe80019c09ab8bb829987ec7e5290aa7acd9d15793c93ab0772079e250899aae51d18854904b3acf29a7ea5e36e1049a4d065a7ec5432a4740e3737d6ba976d9383eba57897d2d983cce4aa1a5953f4bc2dc98672d9926d359e2abcd4e8c29b75a66a5b01fb3b30d8da32d74f16c1641598e0f7baca9e7c14a168bbf960eef26249f050246ab3fae727ee825a22c99ad5ec9e5a3a51cd863194a37b4d68d361dca2c182dbf173f52007d2704570f8e6a640ccf8a2033fc3c619682427f036b9decd7d138fc8ca8e44293b3bf0d5942901005b08c7459d95212f023d22cdf82153211d77dcd65d5f2b733ac7cf2879945cfdf150ea4998c6c9a8b3f196608ae8c70cc963067aea805dc73f3c3311d859e2b5df3a9eb6b3bc100823507b9770750d197ebbee2b41f561192001019bf5d4ca50ea471bdd822528590e78b58888bcaeb9df15ca163881f6a3eaadf426fe19c14645ab63868632e3da002ca1f70c827d1f15683bcd70674218cb401a5974f806e2c40e1a7da79bcaa327d4ee7282ef3d973e0ac009eb3855396c59bae37aa43db530556615e59304bc2c60226228edf02029b4e3db9dcad3132c1386d1df08f4bfef7442e1fadc99856534f09a6d23e728dbb21085c5f0f8d9f7413dc83ea416e7934350f08405c4ff4fcea7f1e5e1a0b390416cae86a3b7e73ad91b5971b73d7401def9cd9d3d7034abe6739c99a03b6ec464396055a843306441c45b46c334fbf040b6c086be260fa03d232568d9b17fe39d0a4dacd4a0eeb51c2e735419306bf1ce4a75300d24b9fb0fceb4154f1c922d2f5bd3563ab9b59ce301850e289eae12b4868a35db4661e7dfafc2ededee13d500528d9b539404dcbda376975bfe1884534b5234004900961468c20014dc6a68b3a431b3252d6f6f98f3a7ce65874780891808d007fbb277cf5b31f54ceb6a3bb8e1faa67d931e8221aa853f4378a5c11503b71419a4ac7b5896be87e7c2cf2a82492233005d4041605c468f53ea824d2452acf67c39e31a284c5729838dd0c0518e5af595df8b81f2539a9ae90e1e0573c4e8fa395d4432b5e8667ac942c43f6ebfdb463814d4bf726d4b26b60b2c326566956c9ba1032b9055cc84d9c64f08d73f53366232bbe3ae8a07c19ce0611125c1ea51ff7dedc9e7ce83ab754cd8d89711e52b4e84e4bbd2ec3db84abe2acbe24b8c566c12f84c45122db47fad3db39961945f5b35e336334882ab8495ffc24e567f4adbcc5917376268ec1e44d33e6420018c7ad8d5fbccac7a7779d952648b7abfe6f1571e1e713ed373ea74c2c67bbd061b93c17fbdce70012f95d01c0bd14af3c298674335ca238aecc55144c72412c4d8e3845b094a03728c9056a0b36c955cf2e4316220186c1c6e685907bcaf6c022ed5b52cb842b096273ef3a08040861870c82a52b0383b5f94c6a5a2e1d58aa1f10ecb1764827622c6cba2e59dec904c73368c10320b6c2443101c0bfa87ad7fe9510dd747084a9aa79a449c2eae9af9e49ccca3790b65ce14fed5458b8efe16e9df2c5a6dadde20d5128a0c513fb4764f4068dc16ca2e23b9e6400b20259ca45ee27efa130dc36d5ee773f936d7eba17443590f875c515d8415cb41608cf9c9357e2822277afa720ed2e748376a7290c4ff47a61f37551d777466d390bb734e2a7b0b35c1dfbae181c4c59b5c9d161876fec180bca7871fbc7402958ea73b4000c9f47023053e79ac83d50294409f7460eb4b8dabdbb3a41d7eeac1808c5884f8c612e5df09df0b5a780693891ce601b5fadb85e9790b890a37cd8d674f903b33f0a52db54fb35797231aacbf99225cd8269b7f86fc03d330d2def5e614cefa0291a18d08c8bb744d8acb62eaabd56aef5c5e30fab73ca742123cfdf19aab2ef85e023642be5a50c66c153414ee7d1a926c93ee089887ff8a3c7bdec1b60ead7c3321a8b77f1b367529bcdbc7ed408c30064045358645ef036ca652a589e1bc4f3b693bd0d37eaaa0728e89fb926eac112441c40a44ac1ffa2988f8f0b2804dc116119744f94393e1ec38168021057b664d53860986c7fe34a0a0e918ba83ac3c5b39719118a6357f7053a4b863c9f9a8a536e66e77b516aa3cdcb2813c57d88b61aaf0952f53f5ed185ac94bc9afd5a12a19f5ed728d482b23543637c76e0090b300237f8b727b913e3e758e0e17cdd5088d2ebc23dab23da21dd9d9e7308a77e829bde1ee7ef839be81d8191ab5ada71d8ec529b81c346bfad54df0d5114c11f29428597e9eb9ad2986ca28c9f8dc872764708e329ffe1f64810e8fea648f20190611f6a4513673994478305162193960c8f2e63749dcbaa6e8c5754a7496a55234f6cf8b34d2d2625bf27663da4832c93314ed81444e28a42ad4d61ff0a01b9f7c3f4ab3c2f54779f6e34ce198458340e6b686b3e6671427c7153547e4e42e8bc1d4dc0a73fd050774024e987a01ed2a9f226fcb96d934df8966b2684a9603784dfc50c6a7989654c7760b55a98685b582087ae2c3efcc1bdb315d52abc5c66469cd7c54e56c60bf490cbdd89796bdda40c62601d636645ab19c222220e900526bdc1b59203d8feb85fef8bb3ce1d20b39ffb34407da98a37e5db66e81b0e7bd0cdb1d007031de5f7f5c0f6a7f1136fbd392af7a80db90246512c31297f24812c9da620dee5042355eb5183075e37b016fbf291038790f15003c48f7fca297d84dbcb393215eff041b30389f4f312b76a9ecd87375b5318950eb24ff10081daf2c55ea32a84ae26db591e6ad7e7c833b1beb313e3aac5bdbbc587cab4f8c1068131868a92711bc8bf45ae62f60dc8bd6daad071d5550a7de59339ef40a2c9ea032617d169dd28a2ffcb5d07c5cb6c038f4ae72fd0f789d8761b445725f3e904c23f65b5d475c77b241487adffad54d3275d55adb0e938cae344c604ca9083d6a0d6d9191d383d813eb35a496874d4d1022b164e7ed2129199cada1012057797f9bcde3247584a37509716b6652bfb235bb3ec4ec4994c5a93531200db582d9a32841805717f3d6bca10ff1bea99c23ce5bad958b961462d269c20d1444360470daebbc2a6f34a3552f3d1c4b8448822640bfcaf39691f39edd985872b59848b3140385336b70f4b57aead20f0a627ce37321af7f650bc2956d2729de7f9f3ce0178deba87a8d059033d77b79289359fb7503beb760aba431a79a080be90e8c399587fd9e15e8ab29617156e7cbcc6bb05c238f33bc8bb48b33f38b6f0fd135a82ad63f570384c9b29dda8e79e857e59217848f2412c526bcec18bbdbc4e71253695351cadaba44086f3cad23c31f252a2b32fc092c5f7226fc95559ecedd927f3e5d170828aa8677e4fd025b33af281fe358059d44915fc31e94e5735f32f7c5f283870c03f0da039b1d02e645b542c33497c5e5c699efa500b160413eefcc362760dc6c72c02776158538f5fc0f6e3b4b5bf2aa49eba5c10c8aa55a8dfd4a31ab71c8fc07375a04e6c9fbf14d86603889a136e1bb75a6df53f6fcaa364df42b7e6bd0239b0eb3c4d959ab3a2906c38fa4bba219660671444ab300bc07981ac2d5ef40d1cadef3618ea3e50f6f5f214c31e14d85f5a6b8e7ae7a2fad4df34d48f35c086e983504b16eeae0ed98f912b80f25546f1e79cde7ca1324a0984784d9b5fe078d35dd99052a5d46681d117b3ca03090b379a3b827a00efd6f0e808e7eca900d2d9ba7769082011284a241570175a70ee9f12873123587ec2c41faf9e6a72d1bdc264f1a3f7aa0ef43567aecdc49fee356e64cd13339b7c7e06e3fba8286e59f6660b0d303fee847210e5035a435d937f6a62771e5e8841aedca6b7a3f1ffcd740e9b2f034ed9b1df0d8c27043595abc1e5c1f455038d31418b19fd8038693295fee77e15271953dbaa2541406277875976c8d3d65abd835bf62d91c64223545b92638c2067c216ac953e3bf62b246b97f1334b5710aee0cc0b68939a40550deab840b10b1af702d1ca9e2732af8bdc24b0a0e76f72ac3c7c4bbed0d463573913e1a0783ea16eeac616c1618f5baecb7c8b7938741ab7c302ab1a5f2a66c0ae6fb9f0a085d7a1137e640e2dcb7256761c95a4627b9c5ade7e3ab4cbddbacbc26b55dc0ac10d030ced73dd736f1b85c0a0260bc22eafe9c4a7e830366e7082217d608d47bae8f91de77d6e9114ef141782ec595ad811d6a04d5b597e9f320b518e857aecaa903426e39483cd9bc4bf7dc639648d6d087c5e6bac56e4c1dccb0518a5e84dde34fbbd40f8b1827cd1185de1f0276cd91da88cb375cb2b792245ce2d68bc8968f49b7b83d3311266d0daf174d4eec9b841d1d6e5de6dfa7fcac4f2435a5345c5119978529438468a24bbebfe34c2db08a3cdeb949960d30bd72e5977070e775eb0678e7d78b37842fcbc90659725783665ee5b2244c0039a9344a32da5f76a4076afdc14b0a8d3f0c5a47602395f38570cf9b761e6f5242b9f4314d99a8af9913f48095e254c2d1ed1f6dbcd286599240b5cb8f6539083b6f5d812752e1bbb5b3e691afd7c91ccbfb729a85c3a4efe90025e17e7f8b962321c54473f7e4e076a8f96ba22180600234df19d69833d4a6337552b765a941158b849447e91cfe0fcc686f8058eead81a9f434be23c87ad9c68fe038dc74a48d8191091d9d729f1193c275afe2e6ce773d0f91c77167e4692eb3046fbb1698c6d749540fc3e7a85db88f7c831a5a85c6b76e389c6649e8518684704b375620ab2f7e6084c30a1853a4b3bc45b1b47c414e7cff1f7f66dc22ee555ccc5d62e42627525b970ce7ba1659f5f8f422bcb9c4eefaf4831431d924b6b3032f3b10a911dcd82a3dc0f993baa556e95dfeb6b3985fc39adea74def64fd5a7372f333d427d79cf7b483c842e8839f29ee37600f4694914e377f7264a547f59b8b4085fec7adf6d52af9320807024b3fe642ce459d6fdce4ed160d04e31999f3fba96f308eb0f013f6932f0fdb8c639c3e197dc3fcd18430e22fa498dc9cc29fe4193889e89baa92caa2664a8711b093a80504117e7f84ca1211d5de321968bfc65ecacd2be35e2a46af93d8d3b6d286d9692a0eb500cbb4e46526830e75edbd5bf18327ced75d434e42306726f219e60fa17fa09134fd1812239764ee2dcf6907f5f71516e7c0decd6bbd8c11723af50ae856860538000f1e0e79f3513283e2e301ea1ffac336d9b19aed0c9c02fbc5ebc1e82a7bc3fda18c6e4615c55e684bd072f33980ca673b189c0165aea1922f683ae6a122504852e4abca861b4762b010dbb694d99022287763630f11aefb94cde65c12a954422e1a277369a739b49d56b50cee1f7ff3ef0f82dc89ad236c8eed42a2dea39b150ec417f6a37b5aacb6f7727cbb184f18d0acbadffd4206347d555b5830543a7b6de503262a9852fbebaa0533f2fd9317b73af45c0114a7525ad2b3213941a244bbe56ac50afc1004b669371ce49101343e932dd1faaf3b5dbd7765151864c778d8c67d075d75abf48761db06c1763ca53aada16fde3625124ca33fdfe4d1677c6ada60fe48660303eabc27b09e96ecab026e145cedc5cff06c8a4736c76458a2dfa76a5cebf18650bf192bbcb29fd03b28c0b31aaff0d4f17c6621760914e3f12924f4278344f463314258eae5829e55862b07812531e937ff9c2ae25493e5ad74229ec5e1f9df5ea24eaa712a9e55fabc350666820c5b2d9a8c0bf5323bd1012355c967df6604df689d7b5887575ef4021cf732a2188b3881c3987616f80e15350091431a81a84a62c163929eb368e95d5fed4e8979a8b533d37ed097193067953434d74edd6050c5685a0cdd7f7453a6d05fb804b1d78fdd4df4cb92cfd2f7efcca3f34300fb642f9fc82e19bbbee02f27dec6a5bcefbcdfcf81bbe22cb81e4837e5d2e105058d6b0b05fedfe01eb848bba83f5a9e1fe0e87815028226fb1b5e9c1c2343987b73c0661d9ed563e9997b71fcc37b3d75397c22c5824e3c8d692c5204daef6b9108391dbb775d624c1c9023bfff4ee8b7ed66af0942452d58f2260b7b4a4c4628934542bcf9eb988dbb3424ab70de5438fcf3c05871436767f619d03cdd9babdef44c43285c1b967a0d152a6174df7ff3806a87acf4c604b2743386d949ee37e7d755b1ff0eec9c56470d0e11716ee1f4cdeced39ce8acc1efe1cec0f37863b81da5a6e1de4e91d3bd52bd45ccaced0fd34bdffcc709d96ecf1c928cc9da000d5fedce3d3b05c0e0eded4e33d744b78ffd88c93962371d175684c13d1ee2548e6dd0ad5f0643741605f862adefa1dca214f11ed6c428457c0a0290988a3298867bf4221b0562a8ef48c624bfe17186750c4cc3e57150d65155a16a0f829d28c21231cc7d95480e8e2b28921199de7aa74d098d51f8a695c8367fb661742c13edfd84d6454c3b9f9bc0f9e6bfdfe3785c6d19f9b674e1a47d74f8862e933fd1ce4cd117fece93cd6d8a819e6a052a5d5c4ddb986d826976f7d0732696d5cfb406bf4150986c8385464f319d8632779b5a920ee1c69388943add925ee4be586eac71ba22ffad21b0921dfc08053de8d933fb31df8eaea9f3bab3358042e2404923acc05045b698a19ed7e7db22ed0c26115be94685fa2549ca7fd8bcfd3ced46490b32e6f447feeeae12639cb6091c646beaadb05a71c9d13de20225b342f0254f3dcc2fbc6e1126698e0d935b8a8a29a13e02f2e9d9d9368d0a0a223293d23a3ba8076915600ae5d2122e882febc68e76918b7af95343e674c0a0d5df8ea33ef2e97a2f6f35273b2c97589f2527e83fd716505d3d4842e35e7e02fb319e462cf335d7d07f1c756d7d2f2486b14ad62f78d0101b71eba996ffd45d5fd4d77ce7afbb876b4d1da1232171774d4563b2401fcca294f4965f661d795980b6e9b0246970ddbc16d021acacfe1c86c00b5857e07bd6168bb6f245e708106d93f33abd52270d8d477d005cafb0d9b42e9013f03994879215fca36c4d35aff7139938fd845bebfe5b657c13f51e53dfedbe03b80211c213801c5ba8943bf36db2ad44d49e1c522c44615ee8afd9c0aa5de95b95654741cb02625155071f3faa5a563b16c01c970936c3d45a9460d142511cc06c8b4a6cbbeb3395a927a9f3156ee7ffd8628a05c3d7a19ee82dddc006ef25436bac2e0b80c7d2e7ff200c7a008c8c7ffa278e569dea779d8bb2f4d9c4b8e248e847b6da65537f02ac784988ec748d4675850c402bb81cd78776d6a874cf8c2975759e9836b246f3247a44472b94d62622bbc19838e9db5b43e05d3112c4063309cedc16512199d4b069cc05d05ea2ca0742c7852c82b08d2a1b696e041f7a2ba48bc20231cac79c3630e812293df4517ba0eb7c277b8564d39265c519ae697e0428d2e8b701ffbabdf8f7fb25ebb05abad05c87a4a863ddcd1d5fbca5ccb5f7aefc2a56f5f6fc2d23400269ddbc01c611a9877016ea31c3291bc6b1a79a47b41380021b3a345d2decf1c6f4418caf9baac31cb96f3a15944db03b2c54cec53963af2013010753b0e2e6ffeff7affaf0e1e7e6d2ee2e06eebd391b640adb0cd075614d2924fd2ab51012bdc382d7cbe2a2b1009f9849ee0c24736b4f70f5d473e8ffaf15d1303600f246139407c6e1554b8a43f1e33a1565a4061b3ee52c336535da4531fefc7b3e5a7c37ee6b00ac5b2fc85dfd361609e081ff9888e1218bd3fec259aae06c3071a6b0a92015469511bad3d42b407b9312716f55f1afef9854ce5c93af9e23e82f5dd256b4ab05687bbc77a98e0961d0a72eeaf6a0722a01efee7eb898a183a63b860535779c04f681144287c89b2728f62fa8cf4644cd2b405c3a9c43c39fd349348c54423a4f19e02bdfb49ffacc26a971bd7bfea2ef4eeb477e82562b8877931d9fe2e9d536d77a01d7dc189345e6bc27eb1b9cb447326c3271d41d870bc40e937d05a3fe45c8f78ce80cdffbc3125f06ea8585c0f843e8fdb90e6bce52d0ebab481c6cd6310a3867a02881c7658eaee996a455a2a0e77d1c6c2dc4c8b8a4e071a33c6c52a6ac41544b398e949308353cede473a7c04bfb64eedf9fb2b3792651b9d9a2471e45cfce2767f86bceb2db8ebdf0d6c5680bc983565125e3e3f02ff6b5c3f488abe2a2750712e99a5fbe1ffe0d09c98769fef6d7b14ddb2aeba95a03a8050c4b64c92b2b18490224b32825d6d8822e46f389a7d0d9648d7ead960aa31988dbeeece872cef5a1e8c6ebe8226fcb394b3b36b99bf9a35d899184bf094db5585e572e1049e03ccacee4ff00357b63253b435292d9ce82fe1e264079a4248c56dad279410243a1d89375e807689ae9e804366da308983f74fd68480bc6c78e0b0dd584979e4bb890b74bd43560c5c558028172d6ad1fcd45bee3f3618f95378159a8b3bb4aa29f119a73fa25df80788da0cf685c9db77222cf3aa62082405f0b28a2d98c7a74b14eefad645bbd7c2a657eb761e298c5c7a10c6f10508fe18681785bc6aaca318adc65145ceb90ad1e4d77cef0b044024c0c487a90ff61a98b3e787592667632ff57043455908ad81b5385b1ede2a2c71e28d0e407b07ba91ee8b809281865ddf460469da0b20af89997e81d90957ef2ba0ca8397e1dbe74094320dafe231da1578ee7ac2b7efa9128ee917ee423eb4ade6d02d5fad77a85095e2aa016f1bcef11b934691d6de7d4ddf4683a71ea83977e198dd67ec092d34129ea1f79055c815fb142a7c766aec1e524657bda998566f5c886d33fc157a68b71abfef3f136add71f83b4934ca8e0bf29468f2edaa966528d7afd0f207f7020f5d9a8f1ac5270b18779423e01e1a39b92c856339d646e90770862e6349031aed506fb5a85fb1a1f5cfa74328be2a10018c7c9d6a291ce397049eac1436f593ce1050f671398a1574f6ef04291c9cd4c2b23f6c0737244771bc5b772ecf8d7e45058567383b8b9c3c839e582180cb986bd0ccffbd59356c6df2090630440c38e225a5462e24ac486e189a6f0d7f3f10609ac20322fedcbb3f81f76d091d2dae73b08f0a1f3ee4cb28cf1a369bdf4b7ba8e88193ff5e8ca69302cb095f86a40869ac2ed0f2997de23b4bee53fcef9c6f4fe976bb7274ab637f115dee0ca2af83f62a830e797aedc6376a72214f98f5330785e49a92b422d03a6429d7a3712b34d1fc42c12b5816c712635f6d454d77d25ecd2f42c16b9b1163bab5ac534b540b0844ad3564473817b0a0e39bf86f9daa1254d7b6cb0dc629e3abfce2327a0a4db0e6b175375e89e8ebed9ac73700ff9fa7b48d3270894b8532cf70a95558afce5eb1929d87862d8123197139f6a32c62b2faa2408f81da7409d8285e0136ad396fc9a1ef48e95a1c95082bc6925ecdab58bd6942657bf86f168475e6d5693bc3fd3ae6a8297c5733e58e91c32a76ae57ac12141d30880b2976d2bf509b443dafb790b6cf7e7deb3b1d573c0f510e329740ab086cb8207374b04c73269a5f678374b1536e58bca45c50c8642182d0beed7830a7ab224c17308954024a8cfae2faf95a086ac46142c823a2203da7a5d0995d9f92f478611f2049a8cfd45d590dce7f9fd6ca61d7efd87a944ea22cc3387a109bc8af11768229c6f3486baf373fb0e383c937c03bf303b59c49e15b126c72f8baf55c654a07664ec319035f0cd056689880c3b88c41aaa3a90255b0ad120d3c2ebd174f90888192e6e4f01c4939b4ff3525592a63abb72d5a272beb901db4239063c4e23d7611119c3bb2378fe08f3a248c0d146302b9e06e4ffba846ce5a931a8e7392ce07588399efa87192af53e681d65ebe83d01b06f294e6e4ca602ac02f1ba294518df08795d7b37cb2db4be399e799c41979531d6d9d939243685ae5d5807fb985d2c586620f2add8af9fcc8102c5e58411a3ef9b002e7a6f3f980d5dd417866d15e6e1fb3892e65deb65ffac403ada505204ea90f2b390665ef2ae6b8ab4d560321d85fb5742a3e49df58c0a7b3016096f8415db0d80883498e37d1cc5f5d47f4cc15c53e99d60d83a5e8ec2906bdfafbdc75e2cba36f378aa0fbadb0e7a7eac9b62a681be07789040e346559cc702fbef6fb9b3655feff090c36a750bd7f729b8a0987d3b1a56eff46cfc2635f264b2fe28954acca262553c94fbf93ff176190375b9494032e60b9b472263a1fcb325a3695a5fd9ae933a59e471abcc8d65f9734d2318bf91d9a987c43e3d31dbbf4db1385e8d1de67ad9c03a6b4adbf0c8aa15e5d911d85fef2737c29995e935ae104bbb1c53c10113c633d6848de5357761336af2a521db9c9bca8de1e8bafe6b906d63cfcd41e03b78015ca7e5def108f631a09663559e919c748539498a1b5d50a7fc88a5a756b0fddcfb665020dfca61790df75cc28ce166be3b8e4c67f15fe9782e55c41628c186c163c8314f3c5a3ee1126edd3f2d3025318e55388bcca3950d2d03349f8de630b035b720f576115fab8a4e0e5053b96ebc3b5b623f79d6391ada52b529f9e68009c3785b6edb3e1d6b3fb125d78665991802363dabaac08b9fbfe4ab3150cebb7b236542aa75fe69c6dbe90ecc0fad2a3160a75e4630618ac937afa563d4b2d894ea3d37e021c71237e18af6742c4b6956ebe08a64d27fba9865bbd85cbd31695179fb3b29652bb5dc73194f387df3e8bb35d8669eb739209d0345825399c759786e526aa28079802c888175253e028b356aa5c192bdc4b7cb9a5f0998865773c3f4cb4c845b19525ba7d95902abe2f397e94e0b1070c0ee4bf8e26aa6ce364e7c247b6963dc7c1879d12bd54bfcf67c0a7e755ff702afd94516e8b6dc97f8f5fd03c315558bb0726816438f6b245c889b2478ea64ce59410d390a795428c31c2248d6703ed315e6e3d016b2fe2e4f225c974ad12209ae1902ac83f24a50aaac048ab34abebc665c05f018a8b82534076971caccd30b5c028420c224befbc9b1fe1285fa907811b552bbed540c81bcf157f17bc1942d81e52bc8ebcb0e33be627dd839fece69279ac532577bbaa593e060ec404a4ef81041b8734eb7e4f99bf79345bb1ab1a93514ddce2d7d13a64e6c84271564a674ec3e1dd611a32ff3fec014f42ef800228c4bf9e3cbeb15a92a2903bcebc5e16fc01255226068d07b13f50885ab40e718447d006e4ea826614089e5c2fe14c07d0a8a4506af75af5c37e01c4ab72eb2663713822605a546baf0430f0b58d6c01c4b3e45876b8704a208ad0617b46c3dc53b8ec81a2d09f1f0607c2227ffcaf9cbd8e9f6b27057bcd1ba3fd8e4029dc596e873876c2680c06878781edaedc2957ecaf02e04ee8c72b8f34a8a6459909c681d6b5e472ab879d1aed0fb8bb8ffbac5c5ab2ec94deedfbfc0aba05eddb0c0b10b5111e4905857187c2c3a91cc9c438cf9402a50e6e035fcefc64678d8770c21ab4e65dfbf5e9b6a71a1fe66a4b128a06fcaab97a85956205f8a113e371578695412bb5b030be3f0bcbfe0839ffa2067d9160faf55a931099e5fe8b33a495511cae0ed6d1a27e30451f2e0838678d82a10410389d15e7b8fb5ece35904c77626936c082e26490b1114e1e283a49a1757b8eb3a4be35959f5fe5cb2a6a216dc3e9eb90ec9f154b78ac8653036a08cd7051a786c8aefb9ef1237a97d7d2c0b80f8ed9a95c652a5e710bfcfab5474f9800ce8d23f99b20bddeb34acd0663d7a31812e4f5cde92aa3aa4700625641cd8a760e91c01dac78d21ca0604c7c12e1a59e6eeba605af61041efd71dc00eb46c6e7ac0417e03320cb4bc78798299a1432adbf0692c401271008f2d701fd4e21dac7fea8041dd3a101c486cee1989155fd600055078e489a5ec1a4c430ed7026b6183735768e2f1c55ad1650614ecf7545234f06a85ecd98e10c1ee5e9a0cb32eb5c3b4355493871e8b32a4ed32b2cfdc713d44d343eb293a9fc1c8d5d1e45538e5d55ebf8d6951ddd328ee14ef47e36f885b58bf9ecbf77c01a16b66b0572f43c34c70420cfaba4cb02b7565b85c0ac956ae22f8c2f6321c21f3fb870c3e3faf7e4ef462c57c121aa1ceb30fa32454e83a4369a3d9e5aae1c0ae05771b10e8a057e68555a18acab2a81e206389ed20a1a54f0b6b404dd097c888f10c7efb06d614aca4e44b2cc1e0fd458bbfb73441719e840b93c7cebdb5b09c25c36826c99b5834b59fb2c0e75f515b31a5e4f39bb1211db88f6f951e9ada3af0c417cd8130274f9da93b64d92b7fd6d6e72eb30ca4932c5df037166fd9409aba5621e7b7d8c94307d6ae7351dbd6ac92277db9f0704d82abe9b8209772db47b07b67638699b3a65f9f85230cd49e0dc7bef719fdeaa895238e7f7fcf1035532deb2999d78e4ddf87a0114bcbd238c2329f4a0ee8550cd7ba7a2354bbbd412ad184f0416c620e80e7825b27fbe6447400fde80798a8f33078831a829c85f46df4942838d94b5347f48722903afba41d1b6f28e344b9e81851d936f90a2b1af746bdc3eef8822a19d77d9d57d1f8af439e618e7e793866e30794aed9201d14494bd42b31a848d0a2c06c0c10a50b0d97fefb005594b5a038da0e0e235a6cd7892987d092abe7e2f637f02d4c271ccc14a66c483aaef85de1e82c208c07dc4835e83a82a65f68795a8f1f18e5dfd04896268329c289547c8bd1ba65964a5a98099da154974760d9cb1ab10ec6f6720237e23c130e3d942831d79c07910614b8321f9778783ffd8b672b558efffe58cbdaf1c57e6d97bb9da75df3b03ff95a42a0f92fef8db3fea977f0f5f448a59faad31db9825fed1e648d02ab419afa9858873719f5f21dc4e9dbffdf1fe6486de8b8baacf6c4a72a8a4b20d06f9351c78b233cb6328a956f8ba2316c91e3ea14edcf20481be762e2cec9baabdc2e17a85ccf9b37a57d6e99f720466fe89074c364eb29a4f8235773aebca85d85ebacb87ee8638b66afd0ca3f0235f116b10cd80048f4ef41ce92ec996ad2f50a06d042b53b54a988d4706b5af13700e32ec2d278c07b0bfe6751ae497a82cb8aa355f5bac645741fe79733945139b9ea015b684a45d5be56b896dff6c1312242403e5034a3e95a74fbd79642ed3b6eae95d11ee7fa7d48050dca27936a39e81577c82de25661c6871282d20e23797e56aa562e29ed99225e59a12b74018d52fb64d3fa8220686f7dbac54abbedf422c3be20ce02e9ecf14adb5b2fd83312ca935fcd54c456d1272ac1b25522c60c8b3162a7df1c050c829a12b03e00175001b64071d60872b20c7ed0e1cfe54e32e70dc889c2877ca2303f84220c06aaa5c9906bb21abf28c0edb1056021e90acaaa66821e318518c2162398b0f1bf03ec7408b37185cabc83f8f9c5562c14b518d3035d88f07b164f2ee6e3843d852f9dddec5cb1718dbb8fa728a953ccf6f2e6f97157dd4f64a9aac4b0f850e2db3fa678e14a08fab407e9c55e50fc18b56ebc2a82c9e2ffaf2400bd0a1a5be8bb57521f0aafe6c69631577245d8d05be1328214b7f72353e88266d73597381dbd67f469df4ef05ab246b49620b1e75bd68410d7c9ad34ef6960a8f2aa13424234e50a73e931ca9c4476909edf8b575ef2d1f4e8fd9c3be21282e5ee92e3df893bb3bd514fcc4b58030c390c7538b92122721d0307a20eb1df2386b82821495fe6305a3bb90e987b2c414432277c849bbb5c3f6c9811925726d9eac8bee705c5a879b4314a0de404d1fd68915fc5644b2561f4d57aa7b839e4996eef11c161132ed91143db70ddfa4f4069cdb5021d2e3bc56957f4c5181c2818df55f8f57f24c66f1e24b06d631caea6decd89cd47b856ef602fdeba9e0e3380819252cf9796d5227007fa16f6a162f6ab810fb5559b3aff9943c84063d2f89960cd5f85b4c644b9e075c2b39f3e7d3ff5c55380fe06000905a2835d5d40dfbefb01adf003b83d13a1a315cedffc69b8f07f9b6228a822821f6a0b56a349a8cb8886ebf89e3af375cd9f63fec7a673ee8b70fdb3bb458fce7d161f2ca683c71cf1b91a8219c86daee44d4449cc2f202e077f42a022dbcf85c9f80b6b6d73da1f7eca9623ab27e8ef598a3c50ec82d16982245f5f00cfb09958647f3e8fcd42f34b982c9bfe706a8c747361a4238fc3ffa37ab06c4db8132e8c9081ae92652ac3e634408f9b45f89bab3c979dedeb0d71cb5b40f720387f1af54a4ce4544571f3afc0cdeecd48695c5ff53d87c987c4be834ea54aef7ebeb93e1516996201b2315aad9675e1da7ef1ebed0eee76079eb06ed96a1cf6c1e5a4e5d3ca15b13bcae5a8ca783528792253bc1c1b3eb334eff2c6d09b56b37b38cf5cd8a6cf56a6ce51e82e4575739374d2739e2903b47a394e94314f7eedd86c69669d7e8b153986eea8f4111e59c1562d0e327ab779eec0afecde9e464b23dcd26cf328538e6a307c72d707cb37a95ca954bcea72ad3fcd8a90cd78795e95772fd8ae8393f12bd15793723cac487bda212615ed69e9a1168394df1701178a0a10a86e86f1027e459cf983581ac372f5685a8431ea21abfb1f54ac5d65328320ab483ef63c363335b58b1e4372798dd1492b18e6e3947c4779b65604871cfbb988b945092bbb60252d95f98be0a6d9cc4db4e12bcfb9f171a2247ea39ee79a4113338de262e57cbe84f6c5bddb0009243341c3ed42a41e75c313deff9a771b9706d16a3ce144d7ba7d29c14a41e9751c1b8d32831ca7906e946415bd14d9034ce048eac15723460fa15ac595acb10446b39a8cb61c0eeb1c83625356834aa913ec464236545bed50fe741c5f09477ef4ead653dd53450434bc8fa3c4c4e8ac98944e2fd1663791278dc1309db3d2eb0e18efb6c95474e9c4ebca8eeedb7a291893f94f0c9f1b49542cd7a1a24a586469a00e2f6bb73c628f13b5701acef67fb08cd718c124e40c6691d212eb42651daf478e658293a7b1e1e167b1117b6e0b2466a04fe316789208dc8fdd797e31a6f83b3b86901e052490a7cc4c6374ba865eba5e5b93be270edde5ee033a2c878135cffeaa06476369d3f0e533511dadb3a9d188f26de681881322215aa3ec7ab5a27a7c0936a5985f111c9837403352bbca4d3bd165626dc5f93dc21bb7e08746eff18ddd010b4b869780305f58059da44deba541e49f024a01b8207b01027f19c20340b9b60066738a55f658e8e6506983c14e758d159673c04904d89521ccd6ece3e22c65878d7422fa2a7b8cf7af07dcf8993792b5f41d2a0fbafded67eb7bd1b4b9456dc9fcbedd06cac312cc391d61fb4b7ac18caa479c3a1e6abcd06786c35a5f288f9244bca917e46b676ad16947c874b4af5781c5bec5864f29ad1e6378fab0c57de12784260ee87a964da50c51554dcaad8f8b84594f9d75312965dfadfe586018070e940d680ad2745c62b0c84a4c70e0ec6e90610d46eecacafb4be1e4040910cfdd5973659f44019e1dfa9a763918de6af9f1e5c46b82ba34a3361c4122c0c2e5bff18003054835867c86d3815d8a596a08c59324c83a12fbe80fefde4d8cc1020cba85aee04f954ee4cdb76af22ca0cc2ec191a69aeaafeebdc9b8dbd4d996c7c197e69f2cdd4bd28d2610e84a26680156682657917cca60487ca5fcdc83ffece35518c6c13ea5633b8d3d57c70729848a7f30254d510bcbacad8970588ab126e13621909a07fd162bc14207b31221e2ba06bdcea46d38ea484d321bb197c7de79825a1a990a40a987b1589cb2632690ce8e0fada4810fe2496a0913de9406313f0e835665abea638cd5ddb653287a2d6cc223b75436e5aab86ee8f731e84718dfd13c5aeea67f75e5c9bf4d8fcc81601752068190a87d055cbdd4a0463dbdb1c2f7200e13ccce3401856cc21a1bb36b263335c05d0c0138db76c125e6784d878f4b2e9f36872ec54426d3df2a8d1a36d51b4b7543feb47449792c85b5995af6bbcd823a09d4a1a8fea42e5b5601554684ff53d255394676b5586706d40fcd22eddd2627c39078ea522af62235ab7dba86f08a047efa93b5540f0e48f5df62820d4c7a274f13849e3f94a71ac141ee9a894d5fc183abefb5a61c5d0b2271a489cc00682f05dbbffb39b70726d8c8455b8a6655f4d6124f02a2c70360e05159f051073c580fe96c1c104c03b98675fed194fa56506be86c19c458c55c5d4871311c308379da3410a46e7714a5df3fa2c3fe6f2c6222f9cebd565015b04aecb531e89c0943ecf77dfb973cf441b084b5c34a83b18f088a2eb09cf8dcc8f0552767d3f499e2ee599e9b7f3f4159b756deceaa451d687e8628d37e7f602ad3fa6595265d8067eb7b4a4ace47ebcfcd0ea083b1b0e2733cafe6421490d09250acb6f3d25610b713a198060979b345f69bf6b42ad93bc90ae4438de64c68456f2c89a751c8fb5b37063c0cb3a916a9409b2297038e0ff9d1238b54f728113c5d6a208387b0a67accaabf00aa8bea7ae4f70482183972e28aebed2f6a0c436cb8de51df77cd10b5ad638290eb310bdede1026b74cafc9a58ff7e5bd674f7aad0d3e4ee6e95240e1dda5e932a57921600ba1ebdbccd4396951ac6a85d41173e14b2bec9878f90a69963a0fd543a3aa81d9e19355fe19bd15042b69f7af74028c109153cd5caaf4a4e85aef93dc419856b6e52bb64cb06e2fe52ab71d4922129b6567c833bd1d55608c917d24f47f13af7337e042976c7c4e24a49ae45eab46f3d146a563cc54e22ffa2eadc270f0a71fd17eb02cb57a05199781c55702c3590d4b33f19bbb2b72ea3272cc6f19a3485660e6c499df54088ed886dee972538ef154954d8f3269feb5b3f2a0a116143c1fda0c3da80a3fd9321c922e17a1fbe9747afa35f2e95179083458ed179c2a76f003d9aef6537ddfc2f77a31c595cf2779314968382d9ea265de43a080fcf0bc10ac6c6e17621e52bb0c3f1cf9890b7f5fc455ce01de1acc7b2160dc9d2eaf0fadf79e6fb09dc32f7a8455d075b96f5948df6765ff94dbfff3b54c3e5899713731a54cf2d0b29e53e6846f28c1e033215d7bc45c7c4a8c784b4f800db69c27f37ca79047e4bea4d1ca49b84e7404aaf40073043b43188e9b78fe10d2973facb632e9fbd562b143d6623c25da7dbcb6c9427d54ae063ed60349c2560b4874dcd4d363491dbdc6383fd84e069b0ab5eedc052611fe474754e1d149e67901d3ccf0c2a9d1919b04a8885a73cff1e7523a53ecfaf17ef8892f2ab63c94348e5e5514b91e4e107a7ac23e3ec20296a9308088db36f129a6d64b2e69a9b7e874c259efde51b0c0d7e16c5a5d8c5807291e72763d01e787cfc082ee49a7fab4d540222deeaba1382b47d0c6b6a8b7b0d9d1339ccc371a8e25eedd1ca1c99348338488b5b50628f47618eeac52a8886f9283f23fcac8a33bbea7456a2010b6520d15fc6b5885fb4818640e9749fa76a4a068a184a245392b184fbc4c125edd7053f7fdf8f790b169b1da62da0f614a5b8b3cd09fb87386ebfac36e941a9758c7f10af6865e3bc5a518ea2a625c2d82d25c4e8ff6e58de3895deb57b6b3c6d8adc138782554f6e0cff2ea3482fbed251e28acb5a22778d9a2560f5c3280c713fd66f918eccb0f59cfe3edc285e2812fea72a0185ebd65add131f585c42f01ac004fd181b906fd5a7ece0ef88af5c45fbeff2f37430b061d499ae850f4b7a4e06f36d82d0b14d8a6b8178a12deb8c74d706fe15c9e8c8089999a5ad7ad9b12746a362051376e2912f540846c3c88250ad9b22e5782299c41a6abd73acf1348b9c5bc413bdceda7dd11a1610f2f05ab8d760d3d8f76e0512be448d95156882b42f156a7bc6721cf310960ec36a4fef4a0e9d5eca2e3ab70cc075890e72efd2069394e0d91829ebd543eaaac2275fa2e1173bb064ee21c607c6cbcb70f9aee45d130bdc0eb3ed0e093636f2b6e0f7e42b30e33994ba6d7fd7a398db2a264835a12f0b0473bd92425c6b000ab0de750144828eeb2a5e68613c76adcf49e562c55f2ce3d4e0c53083c39141d1a218afe8abae5a346de3f08805ac941e5d7315a2923a54e02e14a095c93ae92e48801b89d14ee413832c06bd86b3da45ba3fa808e026b6b19045ce085c07c894272a573fe5e603bc0a273ada55f00d6fc2fd526777bc04eeb42d9f104b4e99975b9fd0c34b4bb43ae2464b88fd2c0bdaf63a5715d50f501c9c38b03bfaa51163111b3e8ea482cd77996634df35378b7b59773bf5db728a84a3c89221ec01db5f588dc235d627ecfce51fcf2e16019b5642ae6c2eb7edbbe4dffb086e26a44ce2279f9c253e3c443acbdfa4119edeb3422560cb238ea9a59dac6b77bdef0d94d64902eed0220e3a1ecdc4c67f6e7031b9ecad4f6e490b2f5f4e6efddcafe19bf0d8bb35e223ba2e138c14fd2fcf3a58240f1bc4ce97634c80aeb59a8c8a44f06cb34f7931c875d85293ef4d6af54291a7055ebac3fcc065409b827e119f94c6548a2b82fbd6c543703b1f9e10fc8637a6fdf7086c5e48a4a775ea3caffbf5089bbbeaace57146036c9367970c106640c7bef4b96d46f9ab9b11da2aebbc39b726c63561cabdebb88b1aa7eebf82f6d122b5ec1e831df1864b0eec0f752215b0ca60f87efdc84a0776f478ff446516b5dfd16c7c8ab15c518170b306e3892457d06e84e7464218b06cd47c2b4d959cfee1deec7dad601fd1e71c6f2782691b97a2e0a8101d569e164490b2eb605c0e3e795f3d08d6d32d52ade30c9e02555ff1a23cff95ad611a5ae68c06f266722fbaef361b9c43d72e86e81c75ccb2a521b47f4d3b7298009eb82b60ef5ba9df59f42fae269e1213f0789d2764e5c683547dddec978600cabeae273aff0849bff5b062453bb8bbb78f1c921dfe5510fae484aa110943a32cbb0cb688ef5d4cb6ec195d07748803749e4fcc6c8e7ad9313fbffccb12b6dc36420f3a7501a9f9d6240e83c079dfa671a8fc3546a6bfa5405a8ddde3080231d0439925616f3ced5018328e72a681aa7f6504dbe902bdb05085b886c166e80a4c483424c150edff77aaed33868de2a34e5fba6f7243df9ce9279866230afa66c5c74bd4db956ef1b92e766ccbdc3a1d15d0d3c899e5b4cc3def6113bd133dd427d0d92db6e961809568ca202d368fa3da189b0692c68f37606e1b8c98ac79553e289b4196913ad3628169454b038d7bff39d1fd16c554f2d8012bc8873d7d85e4b5b6e8440e8def65705ed38c60b1cf45599520a101a1e1bcddaf92a2ff9de98c43a96dfbcc2583e42218fc8531b5edb33ec48c2b1b631b464016debf9abbaeacf6c4cbaaf51aa32c8a11e5de27f0a2c76866f07c29c2a02e2081e38d318c0ae687196990c9dbc30fac8c7939bb59e1e3e7aed26eb239a8483fbbf7f8e7942019380ab6a67ee4816739a5b11cbb149c95f1e643f0795d9fa288cfa86d9f77aa3e16ba97c4a8860132d21f5c80c4bef267ae6a929b6366492adcb1a30b08bfff2712c608c7f45ae1639afe33c732dab16a183027c4ea6023ad380d18ea39db96c0e7e94f7f41fd76e03926f7b341e9a2221aa267ff22e0f7eb12c7a25d260f64ffff47fb1858183af1760e123e935cfc5a4cd33b593f2973f0175765154b5334433f131f410a378d078e075f2ffdb0ad28eeea14819def2ffe71a2189e0672b56475222fd9058e0163a2e9d7402408a9f8e2edc744ea45a96d59d6b0bf6710d74a468f6ed490f37507a1804ed5c217adcfd174cca8c5ed6e74023a2fdc1ff82a495d4e4fb288b77b8fa2b6db770181285dab52d44fd63cd3399c88ae3830b702618ccd010f45285bd8b92f91316011a10b8c7478dd8f6e5ece08122b9de13433795b42e43fcb56a1214de15dceec592d041ffaf8f0c28acd3f9bba3c151440ba59e944c6191357b2250bd2e731cbf2d137afea59d1ac15aa06c40bf622a95116948722f54930a2ebdacab2b57fab46554c7a92f406befd8a021a58afa9335bd603275b15dff8c80aa85459a9ee023412bf217daf1da50d952c9a9af9076581967cfbc456daa1038288ce2eed647625b4174864b63eb26b4c1b202d5e0fe72b6bb43aa510dc84389195771e297fbce49ba0e717f84346857ae5b851ecb486ef9757ef19ece30966d4300873ef041d8cc3a89b308a4d9796ced3abbbec098cab117904da3cfea8b3e19b91befa5f987e373684f6e6fca40ecb5aee129e089184768286ea8eb59afa1f36122fb52c244a2f5866875c6fa107e959ffeff93646a76eebe9647dc0402130e3a0d9bce3eba9ffebaac7e10e6d2d6ebcd3751523896a8b1c7d053299bf3240546a91b7032a4495de7cede397c6f7e949ba0eb39562625fa4709f0f1752ae13cd204ab9ec269d204846929dd35ba5f37be3485e251406eaa55f57145a84328dfd6662b792a77ead3d90537881aba520b002b5e80b16ce1826161e8f696141e0b4a8ce7ae687215e2d61bb25b0643db7871355a53c89f41fb7bc0d1ad85437406e25592f9fb1585c5fe28225b7ee1d5c788dcc7e8c77b70c7020648dd6d34d13fc086ebd3743d6e23736b7fc7caeaf28d387878e62fa1acb81f2e5601898be4f6c5bd5084e602a5750750ab02823bb4b9fc5b5039940ec7c005915784d0ba131398bc4b53c664746444f8da4a210f57e5eb00f3a748086e8c12a7b74644041a5e2f74ef71ac841ecd9869297816b5d13df0dd0888e8f222fcee6cb5626a63b4b1da0f3db5a4003b1ea784f76b5cdd84b39bdb363054ea56b0e83279ffd9ff95a18430a40a799d801bfbd9713379b20b2e451293b638394dbc3f910f55cb325f6af2680c9313e3dd5c96d44ff953d661f195c11176eeef43ff9d32f1bf0dba77f7cff3ef38aa3dfb63d8ef18bcdaf1affff3e550d32b4711a61eef228d582aaf840463236d374a3d463e3e45b96437a6ccab21173857d70e3c1e778ed0c8c830450518b80a171558abe304471f074b861dd3bd4ff64d3543351176c1a6ffc0444a1ddb8cc7c5e9c3acee739e4bad6cc0fbd0f31436b13885c4d372bb4a9599c30d063388654fbb4e148dd94b836961efb0a6487db62474e83cd8c1b66d0d8defd9091e57ba44231229662d6035d784805baecaf4375d5aeeef81181781d6ec71c7a35ef62582cddc630bed29ba46065440cc5fa767e972c401e12046285460e5689651124cbb493302a40524498047a9e8565930f51c05ca69061deb999898e186616b020d12c3bec0baa6ee20a438a942dfa5fd07cb6fa81db98c3de42c6a3aceb17959e4529aa4b1798acb87a300368e798f3d6060de388ddfa17b9ef76ca2f785010c182c54d5e8763db8aade83beec8556b981bee9242055075952d096c18a3ebe31080074425899be5b62792488666f8ea26ff4bac8a104febb5fd90d641630be5f2c5a0b8b014c8e034b48d056d102ebe070596fe31a41196d6b9341f25051e3ba06f6ad0826478ed191a7b80a6f1f16c062c54c4abbd634e340d852f285c1a8ad376468d24ae1fe84ed90e29bebcc1655241562fb20e96fc483323e80d2fbd1664fe84944aee833c99212251a84da428b6a15d2fabd10a81c1b109babd9b226d24822f2ad81b48e05dc6b27b1b519f75b8eb8775d7f8d607e5ac9a04079fa755b1c2567447113d4bd0417f12c17cdeaa659842ece5f7d33946af38e2e7aabdc6a9c906d7d9dc020a72dcf05b0b01a88fcf8ded4655de0e3c1edf9ea20df722d65837d2a050452988fa29250b80a1e254f87fc1c53e0f79244ecc35a653f8566616f8ff292042e28e41fe2dc35846e1ba2f9d29974fa7313a2d87f96bae1b5cacd085b4d0f4d9482728fc13c4508ae456e03dd78b7d7c4f63dfa70f7510045e64dc47512f70b3296c5e584f683fb235698efa7fd952d00e3f88012ac7fdcd3f5ca666af3f14c7929f282333d1e7f83b844e5ce423509c638fed573e1e88dcb4750e0d6a8347503707355dac9158a20dd2dca9ef1aaf5bb49033ee91f912f745bb252f104a8232d0c7aaf0fafeba50acbe13f95d0dbc12c6724d0105e56bb4bf3a1b61a3ef57c7f917424b19f7ff333ebf5b21c2d8eb877247f20f0d0e4a8789a5c4af14f8bda4967f1b1f5ffef0b3e50fdbf0d115068134ed23ef55a92c783c8e80e1535a764ac8e29d77a191a5488ee07e10769ad0aaee4ccef1c8ff2d5aa091691566413d3792a0acd79873bfc28faba70a6fb5921a56e35b5da20d25810cf6de8ca42a81ab82a9996a94df10a0c3b962e253b79af22e49ca4925e6b0b360c0d994180c915a6989c8233638ff6abcb67314236fb69fa2914739686057e14ac04609dfaef4deee39ae58db251b7cec2fb3191b9107b2d6857205eac9ba2e8ea9cbebb87be2fc04e89fa86a26c6d7b48bba4ae7e4c38c953ed534baed466eaa87f68707f0f7e2e324f8699a04419bf555dca647179a1f206b138fa8852bfa1166bd73e503a515f4425e725b8d91f3df56313ce7131a98d652ace96c4f5d085ccee1855caace597b3d34a51f952b12f8b0e846e6c5dfed5ee31d0337634cc720e18a7643edbacab1a58bdee2e4913e3805f6d78ba324fc37e6f727b97dc75ebc811a6ff28fd996bcd4bbe1a09129a5cac20fc96fcbc73cd1b547e9437f34f43479195fdd6806b4bf24026a408c47289afc794dd3cd958cb791cefdcce2ebc96e66f4bb0f26bde4b0233dcfd5ca62b45cc6a07a83ad8430bd46d3f26d86d7495593b7096ec08297b89f5429894b29380394260e78ce8ee40a42d44af9c5dd71ff9688c5ea37f1ee3c7d5e302d2f6932eba6a2120aef21737d12a033268025b476e895d0987a14c3f5d3e78a7077938a10936bae99b271219ff746180900e434c452618b7119dfce91c4279394993cb7d92bb97f04da0f8ecdde8fdbc4d8c8669bb253ac8c973a07e483866d7b5297389c5aa17fe55d525c6be1905098dd4abf5da8325771720d32f0d67f45d6b6422f5e338a2f43fe6e21206dd30116fa0d8fa7a04c147e0df13a3f24bc29904c8310ad605d2378a6b2c79d9cffff36558a26c92bc229ec68d38fce50bd70d5ff704d3e14c1fbc71d19ee18a6e0e478ee72052cc63a4b4b856162aaf9945c48a7f74be3875a177e75590e3a23069587709f15ff16fb99234ec2dcc8b59718738207ccde27356559a36ecbd16c6ab90299ffe10acde700e7b84c21490f22fc6cc4bcf579cbdc3003e7d8da56fde33b5dfa0b0f6d6c12a4ff5c8a49a63fc6abb5638794feee791ac27a561f002eaace70482afef283195f970509a410cca9ad37b8e6af11423e55df910b8672f047345e960a2bdaf015d94d5ec79e274825a00ed1cd0165705a701edeb6ededf6035cb43b39c1189bc6d33ab95aaa1170af235c4fc43f1ebadb0183355159a6e4c17786e3e51d8234b3024829c88f9df23122924f0323a05e745c4fb1c3241537de329d93073e244d023a09dd21eb1bf19afe8e63b8c379f44628dfe6cb22165180e1533447c7621994694a25e5a4d055c61910d25707d1eac9af9dfb5a089cc7ee7f892b0e729721865eebf177fdce7449adee5aec887cc3ba1b06bcdf634cf2e5d034f7ffe2bfe08ecdb590540ca589a29c538d777358ee82eb00c63756979cc2bb228aefd22d29fa1a190b5176588f0aa243f647718fa54392189a807927f985538f50d0d8828e0b23ed0c1418ca0a39ee4a3ce277d712394c87a2a56627e52e7aae9e3289ba0f137119d2524d229fbe79584023997f8098539dd041a843fb98040617930ae6790ae50595f148340c6d789b805f93b4da0e1718dbf74ffd89cd2ae74fe827d13d062fcdce7590d632ce37266fe2283554f40703f98bfd0d57cec34c63633919a3e1478b18d96dd01258dae935747864db5b89c31d66a60ebe7e78dd12bd3144e69ec88d089196a6f13a59a5b761314e566fa9e2a15aa1475a92a7e2c73006d5d26b0fedae1fa053350794a8ec6a71bd041a966fc73d3fe5efcfd9f2f45ee4e6f6f9ae886c5ebbf17cc3ad10bfd82681c1984501f674aa7c6bd51e7e7b0f08c5eb58db6f59da5070f12fe491c0dc950f72d35e12b708621a097e5ad419a03a7dd8d5ad0cefad02c42d1ffab295808d7a16d1c0a0192eb1ed7d17e1b0e9c6432bc1913c6918330556f15edf7612c8e32a736f12ad654564ecb302a50d44649ef5a00fac2ec35278d88478a9eff6724b0ab563543e5345b96caee6dc413d654a93ebe534670b9458dcb06bf0f6c2fa0fe099c17a59b7d1de9c3a018aa23d69ce12725cb90502a1d16fafcdf8609f8cd14f123857fe63e366d4f8f0380b83b944f47c2735acf45b3a57e5629f96355c98d4127a271086ade461ce6a0619e3a3ec82714585aadbf193fc926a92af49f45087daad67a638cddbf32beb7b45d994c597247e817d6d958e52c1f69eb3a22c66232a99a63d201b6d62008f47d61bff805b4b1d276501f42a1f0a147aaf844a5eb0b9bf07180b36d4cc48165f296f8143c14eaa77061d644e1247bb4a664bf22b436d7c34db8719386fff06987f2198d8b2e29209695c078149286791ac3ccfc7cd9d99e8a5c116064b25173706833bceac52d10547d27633ca5ca8acae5e900c8437cbf9951461ebee23531c472ddc5b7c2fcd9ff44b2ad13e39dbb0637a86836cb4c3b7cab33d9bba8bf4ad2b28330923c4f23535bc4088af77dccfc4679dec53bc8086489aab4441c9b104367378ca57b214e3f5d98ca2ac58e28cccddb143793f6e948fa62ec5abc395935ee1580f0770e1a19b8744a6954d34b8320df9376eacbc87addff76bdfde53c85bc1d70f906db6efa103e54bb9dacc3fd0fcf8500b3dcdee399ce9a1c8e854273eeec9b59d9014f51063da68c502e358234b2b2f92261b1276c8510084f707c486cea114a5c5a37854fbbe2e0de8299dfd2cb594eb270bacb5507d9888abdcbf21266ea2dd1a4d0bae5695db25f3572ff3c45b7ca7ad6872b1d609bd25beeb7f654cec9a2cfb5cda96ee41e7a6b197a94c26766a07abf856e20a256a21869ccb353c6e74ddf3ee203918f2e88b97f821066abf9cffdc56995c8e263092484682005fd478c29678ab0aec40ff78c8e760dbac3792836847e744f4b0ae202e88abbab5f36072e3937ece88f53a347bcf1c1c824c927ea8e896aa48a2cfdfad922f6b8d7d0acaee6bdd6103128de6b277dda8ad3c408ec97dedfd8b8cce87001180239bb8b8898384934616d072761b09ccd2686255f90feba1b035989484ba4aaa006e61e5db3ceec95384ab36c8eab7171ad9409db878dd124e855860e1b61d20b759668d90b8b1343e05e2ea768fa15ae3f7ad3bd993660bdf831900b0250366dbc95ae60358c1c6539d8b635f55dc94e8c7bc23af777a9d3ee7afce343cbf796dc76fc05a0bef882881bcf073ab926c636d7420c6c0f28e93d3527de56e1d11b466c369e0f6e0d5f350fb1c8bc226e3e9219ecca521b0d75c5420ea26832395236ba0f122f64fb7b6a3b8350b17613479c50d76e909ab85f197a2ec6ac1a55b3360855a51d113e32279ae7a6b861affbfc4dd70dacd4d8c5ce41953377f17ee6480bb7d8db9cca101f6404b6bb42f3b637205ff8776d87762a7e7ff044727ad84bea3be6259f0f220ac7721cf2a62ba8cfbf6382d5da815ef268fabc0a2068887f027d2f882a75f5b7c826f22d45089b57b167f8f6d4fe9a8cdc9833b164529292fabe16d7f0bdf09bcebd164aad8adbbc1653229f86568379c7c4bf7d8df58d5510f9b038c30e9cfcc742f0143934ba9687a67ac5aab98ac23acec550317a8881c1041543a1250b5376c417f68dc84a33de32fed56c9b61acdec6da23b0a65d6fe60bdb5c93fc28c21fa43f8d08bf66032a4c6b5b2ef7c2a04ac3ac6d7b2b961c04b564256d23e7b0a514d49e93216c6d8cc81bb4fce68f965ed558795f2aa4ab0fd0a997310f62b7157c9cdc407a6fa1a835a3894a0af2aefc0ce2527c5e8ecbcafbb4db9d68470fc27e889262676f0a7ae8c62600e8ca2cad95a4dc0ca8c84457fc9418e4515fbf9a6d7216738041f6c54c1d8573a732dd1a001b144e00365e151bec992b48a2d6472506d995749f7ceb92327f09506c00e034962554c181009b45d5e13f61e1b3e5f090c7bd46082a1a68dfcf0f051d4bd951e725e231c223c1b13971c5e688f8ebfa07f692e5945ffd021dc843f4647ab93fa830bd0501a5b4df24a43a9255e42022d6a8cd0ac5d491e0f3f38abd134246a0ed04e0218a152daa4dc4b1d5735c09c8a6171da85dcac69f069178a330570690f9168cbea80fb633e57361998ba1367da6b7ee2a5018e5bb97c7c24fbc2fd9c63674404d0512e7faf4f3018fc145ebdae1a03a6f5c1166f927e6f265118c3b0dd3e31125e5d03f5fd613f4519f499076cbf84ddfece526f1c0895be229eb57b183cb3cf4bfc817335e820ff11911e6da0243ef5b6735aebb0735a37784bd5afc6fe2c5afc9a2cf6508319838e4bc42ab83fd5b273077f021eb9a87617b9fe9fce4518216e385d0a0b28e6536d9f79228768f4c209813f04f646b6d1fd1ba9c134c124389f747774551c46d9aad31623eb8b59f2bf32fc114ac9031e77afe499f5cf592259b43202cab6841e4b19af64a7d634702e3f0731f4c56aef9e62f972cf4fcf5f435f2c2e6ae22e14750ef4ca606f0fe384c1d17f65a6dcb915117d2c4ff494c761ef94cb4a21d8bc7af45cf6aebaa0628725362df82a27934a62e48651a6d20f944f7e8fa24561de4ee8acdb9b1a9f234d65214c7938a8d9f9b198ddc0f13cd26adada9ec3751c62676a0b745f62d7bc9f5ae56cf54f543367b654b0d2ee044737ae84e144e197b33d38b497e82de575afeb13c4510c8b2419d16fa21dbf1222443777ea0e85664191cd97a4136377ecf9e2bca2e3df22c08b20fe60b272cb949bfd47fa85c1b057e42bdec81fe36d818d925deac72763011bf7765191ffe0a6f8bb129a676c520dec645e40995ecd63f8095181fa9be06449fa48e851f0caa4766ed3989ed1808daa30045977c444f46439041ee78a1108b683ed8f5273e606aa366b70720c1dcc57200af38807814da305fc9e64e98fa8f91c754475580cc0492872e77e5e211c6bd41f2aa05bfcf57ad9e65778af31844e1a955169178e974fa14bd66efea60ae4af859d9c1dddbd7ad4e480e20cd8ac562df2e5eaef4705db4e3793e3bedb409dec816e6e31f67d80905d219b00152ee7e2429b38b0edcd2408c4e9280e388b763ba762b8dec48d3952053a37c4b86e964195e481bf76a046b50e8498db6fdf6fd94800d1a1e8847c0d90f245a82eb6f17ff4a39d00c10a939fb6978d3e6c44ab94606781334b6f784248d76f455de449725892ae06ca5919efc4fd6643301b11b09a7bc371144030427a6a5ce21155e189be1f799fcef03faa32c81e6561f6517a46966bfd615a505270ce1c99bb16ff9e525f4b3d408349ebab425eb0ef59b2b988dc3c4af860c33e0dd87e32469d3ce854b452af07f87a2415d8af80065e606653243260efad0bf4d5a9125a71bfc82c65fdff344ab4a0c96f1735bada11d654e5574ff18401ac3102775a0b220cc17dcaf57a55fce0b70071a4635e49c6267ace26fc66120aa21b53ff995c04373d924019d3cda7ab032afa1172b226102c54a45ee91549933b3c4570fa4b253025d7789823c8fb541c9e0c3622ecacd903cc1c3abb2c3e0a6aa1956cdcf8109d96dc908d8b665fdb1ea1ddb2c55206aa082f2f2b559abd4354a78e016afe5b2d6a31c14f9509268cc44dd4f47b3ffc0c9345802d705a835a763e3f42ca358c1c07f4875f26c4ade233d4a1ba96e9706e99270adc7c81eb1a6e48458abbcecc4cd53a9d8a775ae20993a4553f5ce5df7aa1f5f821235d5dee39344e93ac719cdfc5a678b5650c47308cf178040e45fa6cfe08370a9bbcbed3bf2c8532be6c87f212dceb41c4489e9af1cc3dc4bb9e144e3f5662ec2ddb3fcfa2a0e1f5c69a76a12a1040c4f68322d6e33d221855457a90f8a0a0e325e7ffd62ae71f96b7495304684efa801b15e3f8f795fc577672a194d9468742de8c133f2604cbcff2dcb55d5faa3f1ed2c89b173e528c2cf330634f70d3114e73c7bdd8a02f844058b8c1aa972c515d21150669aa0bf0c36024f1a0b63fedf38dc3e23a28d4ec2a9664b1d6e73be8f19f9544af771d000a7037321c99a4e2d0bd25d775af5b6c8ed9f07576a6ea015aaea1606f5b308ae6a92e5b0ab6a252cfa55052511c643b387dabe7edabbb5e25dba2a42b361d8acdd1a1a7d9a8a7618cba42ccd39d6f8a1875319d03d936b8555b7b85e0e16f7120a518126cfe42e7b4f4a9fe4374a8615bc2e0d7c37e14f56d34b24979bbad9677fbed04a92806f8dedad791d22d34c3b5f62a5ecf9429b3db15640cc8898033fc17701a5c51ad6af94a6580bdfc8cfcb7ba3399aa47bbec88dd74eb274651343ceb2b8f7fa509f8c36d5c2e10e86e8d2b9d2584dc1309105c061c021cc41843cf674f68ebfd3845a9cd65cb5ad532c9ea97c33c5ee691f3ac395371d5d27044cb4b43a6da27b9e1b761ec66e39413f4e0cbd79e589744671bbdb88303f3e6e615f218f1c19ddead2fa3ec610a4dbe00c504f1954e110b5f91026d49c47f524a95d08ed2fdd2ebcafecce5bc919104f0c6f17e6b221eb652562662ddd082bcac96eca4faa4bbbade1690cefc24fb7f70971894e89f384937b8cb117a69f592bed3bb00d3a2c32dccf1c9317551f536539cfbcf9aed5931acaed2ab09e3f14fd0238675f5b41de29e5c9df14b6583c9a7230a532fd93e9f02fe90a27c5a7ddf907454bdb27abedae2a6d91b13b5d9380fb8548160befb35f7f5e959b281c8287f3d6f66aa2098fd56234789bcb750ea965f9796d3a3ae6727ba84a77611824a2c9951c851f057f0a08ca3b2ec0fcfbd4eda9d44f76e9b82507039fd580492979d51e10109b4841efbb29caf2925a6b9c76dcfa3733323ac2d3d97b484b311e270f006d5aabe516fe90148aa5f7dd4a1a2928177e29f1db4d426219533f8d4b15c17de8e19be96df46e10fd7c9f94ed39b34b902103af2b94d24725479c213618f102fba2720bad22ac1c7d8d74592dd45184a13d6bd45f13a255c0187d095d1b92b9e3464d2d9b190970421a81d32d33a0e18b37b70f94370ed5610619bf704eacec95eba09cf1d850a673db29d90bb58c3bb499f28fd8ae16cbae5521c9f0e3805d78c9479b05eccc49133682ac347414149c56105f721642af1fba4147b29741cb12ab15284ee40851ee263cb435dbd37e81ba0c1eb6954bd9125239842961c58c2bd03a182e90674cf0a1f0f2185dbc612bf630c6086fe22c9bdbc0e2a0fbd14969cf51dff47d555c4be247ed2b0cc23b7aa40e3afd7c898e3255f1e2b00c346a3e90ac313a72d80a27a7433a4e760b280685d5672ab34b2db406252a123c93220d6138beebfb173fcd67cc7e953eda112e387b76ed654a5d4ece46c74dd9bb768f1cd070860248b0620b686890a60766cab736fdf6e1ca7c6dfec21cfc20eaf0abb9d7a4942ef5110f57321abe41d6841e3f3845df2b8ee9a01b87dc2f329d275b22c4defa3f6a14c04e58bdcaa17b037e5e75a10cb70c9a9a973827580641d8763d8ef92e92e0f45aa07a3ea9b2c70a5764cd382349c0e3c5e9287a6e8aa3f6865378714952d6770f90a668465c691fd4a2225ac3780481b56d5b4cdbc0e16b52dce028c15b6412b55548fefabe7e6cf44e72f27160046f9098bb59cb410f5309c96282fe98c90a97a7bc31b60108b997ca8497d0790a1c19547702871865096a8a8bd85b70b2bb2a1d8833d85738c0121697a74543ae8b3f215a162c46f10ee544c160c8f3a57960a86fe7860055d59af177b6fa475ac4c348d7e26aaf43f826d424d54951baf6d1fb84772fb92deae516b230da838ac454ab3f4fed132261c3ca9fd7da932603490e04ac68e462109b8c288c546b8cbf095e7eb5c879f738fb9a1923c025154da3616209f69f4718e5d35f88b5c7da59e8ce6f3b0a29383bfc788b613804b762105042e9ff5df8c21a40635980462ae18482c0ba2bf7b713df6c7db5422c1570a9e3d01a27c18e72f3d72828e93733fd5bc9ce9fbca29927b0f5b1caa97bc142b5ac2e838afd96a9a731244df65f127f4d118268f800accad75e2c1b2d4922fc38e4103a145c3173117925ed0c3699787aa943df2d5833bc9b1f81e4d7360b2db66f4af3b61e7d8d220eb6dfaff6768c5ab828ff8310b4a2e27b75f6ca047279b1dc095b5b9948eadae8b8fc5a8bfa5be4d7883697c5d37a8055d9f16c604ce145023b64e401eb2d23c4423d09d9ef397dab2531c9a14522a547fdfe343eb0325fca78be583db45c483f52893aab5c62a206deacba4f9a98b2b265072edbb57acd119fd633b5a95b0a7291293bd4593dfe49f9eff4a296e237144ed1e9edd81b26aeb0b239863855f487c136758a5e13b42fe05d1fae6ab9d2e59e44f5b6f2f91d8a2cc40b5b0c295e03089f324fedfc462e9c5c2709a0ef8ec8d35abba471e03519149a105bd96f387b9636993cc0c501705959352118ddf4a2db8a982f2b58c9f8452907595aefc625e71cadb425d2254ec574a936c0e4f7db6d72d57def92f2e3120078adb31775aca50c54a0cbf7030ff40b238a76da2a04114d2f0ba57fbbfebbc962d6649eabe53ef22e441876e1bcfcbd76ab489e8134909227fca57fcd3f72204974d377ea46c98a808173a4a629817315420b786a6e704e37ad8cacd26d970bca479737e735be4d95fb8c3a0b0f069c29c945bc9ba279390b1029d83173fa468b091724773056566648da96abeefc16348e507ebd7734a1b0876d473e050aa3992900b7ddb0699cb49b0977a588298d8aa7b78252466cba8f878ab187b39bd6cef90c79e2b3cb2727b338bf98575b516b43b8ebe829c7260ba828eb2188d2faea0b62fc1ed47e4f9ce75c34047205ae10a46580d78c781a0852866e1f1cb9bac71942a0efb2e30ea838e37ee896dd14136df1b3ff61220179d8977fd7371a754e39716326d5ffcd3d30ea9a383731fa229bcc93b04d197c37d3194b4c0482e9f597002b6f7c475e5d966e86ed881db3201851cb784cb3633f9decd2d878f753d64826be24a1e1820c5f863b777ffa1664bc5d4ceb9b9dd62d071d24f45b8fb38bff0f18d8b4f198a778bce866045f79b4de6233fbeea99c2b5f49eb12a927b486afe5487e547f9cfa44c8bebb37db20ba947a95c97fbc95132d194572f225bb6cb723d948bde2bdd955ef9bb2de1f622703ec8467736cb9751447d583d9b827e72583ef72415138567ec0848d4994040603fd8a7a812f48b755ef2b750f4031c392a53297c1c0d2dded7cf73111e835f28506d0b6a502d10a2d457f4e9fac9e710bb1436c916bcb4757146152690784804d67554589cad2c27917aac8b6be47ca024ca40723e4ec27079fc477427b4bd375288da4f1c0fc5b50fa20793fef17fbbbf4333dfea1770d239b66b72a42e42a5961f220ace91445dac4c03988257731a7077002105e6e84a91eede0f8becb3a9805fb1b9ebf57a52e12440b4adceb9fc009028429ba7d09a59c21eb6274fab59013cef127aa6884c40a5a7ca7c1078b13fef9457469f0fc7ab373a285906bb26df777ae08079fa8089c9f774a7e5931cbc7e6b969f9fa487f234b53a29254a0c255b1346597e5e50cfa9d111230001a3ae7e1d0d743afdc51e9e8556015c369c6cddfb5171979eb4cef35ee49f7211216d9d1dc44133f9aba7c3506c6971e3dfa62020d8f3fee843d652d149cb23b8a3f78b026f0eec1eda3eacd77ff9ff2402ddbf795b821940ca6268875f0a34f052913c4053552dd31b4db989d74058ade75f915542c40be7e331242773faf50b29a4f3e0d057ca076a03025a615934baf0d20804241a0371baf87c6bb196d7159a7cc25b6d76eb7cf1e434d02f8e6163fbaed6cbe81736250c3edda6855a1cbee4b2dfb9b79b0e2d061bd7e5f662e8a6b6abf02d8863c610ecd2d2e44915cd0cc5b15c169e54c42b345af67ea9657d3748804c8cdc767bc55d443e677b6db000ace64d80510e10efe684a34372bbd0ee6bece1f44798611c8c3cfd2d42314956d257d2030d74a40bd3be1e562b370f02f86d3a39c41b24339ef77096897fd5317deab6cfbde6d8db588ee4a7be869a0cc668d132999f16b3a6564a248c09c8a12ccf8ad3c62ea642865852aaa49f16eced3e42526fcc108247cc6db01cdbe45d8b42c0981dfc3e5dc088d2b8b4277f75b48748e65b467836a4bb1628bfb880abea08a0718c968bad6dc55da75c8c8f72f3642813b876a25ab981cffedd37f5b907cc5040c886b77128966463f82304c3e2f51408ff9795dbf442ddc47075ae1d33d77ea5fc2e47c50e13d8da2a5e984a2396cb5a8db866581404480252f6a7ba47f0a58c7cf6310bb36858ce67b305be2b72693e12c166a707df1ce81ae2f142cea1be98c56a2839f2f0dd01e7b799c23de93b002db9cb1e1692ee3c07a04ff728f540c3ce34770c5d1bd8405e476aa6699c8a97f4b7886b62a36a99548a98a61fa69af2d35dd2252dd5fe5235cf7a3cc42290530eba2ecab5e455ff4873128f1e5f91da3fce813fd02fdca5c928f3464a510c3b9d2a8af78fd5da03c4da2e0d6dc9858b132df6f70e050abc4aa247e9ad4ca20abc9c94710ee2a24704fdb2c58f2f41fca73f07247e6941527b5ac03b6109a2f79594713effa467991e0a8a1fef3c20aabaef58c59134ee07932594d31020cb0c6b22060a769a31f4b8847f40a6a3a51b601b1421c2ae0b47d4acb5a5b6c51bbdecc11d7efb93a32e5fd03b6ce9f14a8eda595e012f1776272b30c6d7c6a8fd66e615f6c1c914c558705f700dd48176eeac67b27ea1c7192e1024efaa1bce87f5bd5ec9dd97ba173c8284e618b6abce03fa7fb36b286007e102995b13fb59b4d7197a79dd6d534b7eab96542d219ca7c47c4497dbf260ac3f5d17b5affb356e364a3bd016f26abadfa2a10835f3215d11f03e586caf86a2eb19b1238f7d13ecfa7b5c8e115c60a0fd17c0de0c94b25d04978bd44a97a187a0689d86e4d14f344fe168af94d9683de9835afaaad77febc595e2ca4873b09ab83c2d9f01e40b8ed4806cb26718d52dbe5e64227129a334c507a6e80124966faf0b5151a8cb2f5403ab0d1cebba723bd4711f7c612219a681698a69ac4285330887c13c1186dcb18df3ccc45cdac23c31f4bed2a84d8c0e7404de41e8a8ccf12737685b2314e6f3d5a9a0a58fadcc3b6132513f25708a8854e5d7c12cba1e0c48706c7f27b038d4be64ae501c2a8c293242460bab0d914a162d9d38bc0adaad14baf623529841fc700fea3d134b2c6086dafaf04fa8531f51f2dd6230512342213fdf5c18d684545c61f9cc673a604746d0762a37aa95b6489fa7ceec1cf46f020886338071696e2c36df5975dd1771e62dd3f627ff67ac6b3a344d829ac082cef54268e756188c2aeaaea935569216beb9e1b7ba340210d4deccd64910f6237cd14b0c1585f7701d53bd403e278685501fde0d81ff177a1a5e2854574f908c95003594222005484b294450c1501746b171c201e98909f7a3a2fb150b7a3233154bb43851d41a7fe117dc14ec30b7f25660fd836c93bcdbeeb1a06a9c1526fc5cb9b08625e4da4a4a9d6ff4b431888ea34f00b683960f992bc7734d399b2f3f2e45ecbfd0f9d0e6f04458af12ae7420547953628769b37ec599c9d5d8b170db53ab6e92d26f290dba0c1c7f7c673d11a371473fbd4666b11178aee070430b05db6136c3b272440b54cd19cd4dcf04bcb9cbeb6bde3c36a85e47c8526a418eee6fa21e5d7f60bf1dd38204e2b5e2de42238b9f6197a8524907fe282d68a5005dc4acc860789d2c83b2b2dcf854abadf446fccc70e93a9a67eb5215ec03b18986307899c5db1a32121f1f0db77c962f1bcf2c9944b90d923f122705baf50250bd4c86f2be6c31dd92ee426654626fa79eeccb001dc87283c2969405fe1e1e4da6b70e46764b022cfa8f5d8ebd5ab93f8cdf0af3d6d65faece77766d7326ec3edc9b4654a60489845ac3e7513f352f5d77848bc804ab744dfa19ace891312917d6cc5a8b212bcc7da750a9359716a50984014d1248bffb410cb651ff269f419e7d56f32f4e632287de8a031e092f6b2466779968875fe39f9f0249d6509607b6539b13a652a840d783575bc7091ee0ed669f79b712538eb6979abd278a70a9bf72ea682472320f631ca9c95887223cc0cd1757fcba4dc3a932e887ba0e684ab284bd8045d786b994d82e508d4570d9681806eef662527ba590cbfed5cae857a321ea7445283d8cd6f086a790411c24f62a11f388e2489f1bcc83d571869cb3fca8f520143f3b47b467550b312997cef3079032516b56c750a31d580dc39ddde53f6a4a3fe30e41fb14c6f0c86d417dd918074f15db1eb626b1cc8829780b7d92a63499038765295224825a3c0d938a2ad9301df89bc5f188f605b1ed6d8567e314e280e1a7e2c43805cc444623f97f5bbcd2f461bbdf43fc43644ab47a84983f667aa287b089db7bb4832421d067403f3815f4b243f2f7b39b72f6acaf3200201afa132640688850ee8e7de93baf004c5812f97b56c985c293632c3d4f78c22ad30f7bac79b531eb92e7afc90ee8efaf412c8c3100f5aa407a2ae60836a3a325e723a824ea9b378e51329373fc48362c57a2d1c2b2b412ef1bc6e1281055ab300cb6f169cd6969e0a5b5931f5dfef94b7f4c164740de080bf29fbe3c9a98cd7b6689d2b83d333b8a37c69bbd7f3499b7428b9c507fc4e858c9ebe00f61653ca6ebf72babf1c2234860334784a12704bda33ec726091f6b0c10f6a90f212ca0692172e80737aa32f52991c81b9a90fdd5c11c6b76e91c387fce8d2eafe3fc849eecb00cefbf22de4b1b491f45490437286c57762918f15d866956878650d173b72ba37b4c3f7e3420abee582fe897ac0e98871ab43b1bb6794d543b31970da2715368d6672016a1ca10e477f46a3ff32801d6f4cb4e4a081a57129d770d3197841fbbc2d93218f1e47e72209ed82f4c39f781e501a1a1a442357de16cc96cd00a5cfd423d51077f1e07e4810adb8111e4be9939dc9025de9738236c26e274e520e40f65331042ca14e2afadcbe26710fff591952bea159db8bb7dd48cddecec24249a85b4822d39befccf0b3f510c12c08c6c1259b1c82a71a21cd95f999af0b544745de46a4f33069b62e246cf45b6167a7af93794c1adc98d36d07a0aef3479aaed3e585c9b9e4da6a258718a2bf007d6fca78279d6e9df9d5427699968b476a3074bef1add579300d7fc76d8bd78ba8e5fa7854fa245d65f3d257ad860e7a1f40f01a4aa8c9334e64ed247f3fb66f697d3d03c4bb12de586184eecd9ca57f7543f8c1dc1a95fbe84bcf4e28a4fad773450f8527a874fea33aa1f8c69f7440a6e75ebe6235e2440465b22d21ea9ccbf7f14656ca982a99424106710d377b97f6af2d34813a4722aca598ced0ed5fc3724a0580c16e5eb4712d0426a6294b57dcf95fedbbac775a1c20e21ff0e4f8fd83859bcaffa4e3282b2843fc641d34f0fef4fad9276e34f819448918d3d401d7a5f35301e1149de17bb1a3d0198ddff6bd7191565d0596129b14ea48a07c14ac5e420f8b5fed96f53809c0b47a552908dbd4708ac2d2c443caec8b769abbca3e459ed58945a930098131635a6a519e6d584577b86b076190bd36fb9f527bb45a4a896f0a899c22f3f1347a6c04f34c3717a6de00d6949ee1e1bae51fe38f862193029e4a638c5004b13607e15ea5e3ab9350e6f0f5bb4c3b10f18b85f7f1d101ebbfef3425aba7b50afe40aa948cdc2e14908fbc3d7faba79cf9f1937fe2a44ef61a3656078fd8964ffc9fa58c7c0dd979d416d4cd3c1d2c42beb6cd7c68c164a42b05709034bc548512ff4227088be31a34eef0095152f935b993a0fe5ae6b1a6c5da14f0e17f025eb53c68a66271b8e0d5fc35934afc144274a84b26dd58d88aa5e577b4c54a39732cf8622f2a9b147c62c487ea8255af912ee36c7efa59dec6146f460ef74394ef8bfdaa9d393430288d4537bd3fff329646a0168a1009511fe74953324b8fcaaa1d3e89939ec20f0caf06857f1216442e8af06d038cf6b5b4b5b7ed94bb56e835a9e1cd52a8a029ceed89d7e43ef32c1336d6ca16c1e2ac89af1950dc75c4460c779c5899acb15515a674de7e5027652e2ab10d97cce783716fb6b66f4655e64c8d26eda94e349abf69fe1537df356c83accaf7c94c78bcf81d0b7df7fd603d28f53f793895590e399bfa5d755a2ef40ef4732b0aa5559c3980bc327bae8476f3976c790f07e211403e07087b58d64c95eb61908d7240a24210f10c39c03fe95b0533e2915d97fe96e4814b78fe002343d4526828abb376cb46f0088ff07d86616f7e48f82e30df689ddddc503845c95545d4067f15ce0dec2e6e21d8d25789aac6eeb3d635382da9e21c7b364505974c83c2da9c176aa6fc1fd046abc738eb53338e5f2014fcc44fa08400535f945e8e01d1cdd46862d701134a09ff50d99c2ed93d982000c4e60bc1bdc412a468fc4ed4ed18e7119644e889cd06c37f18a1069c5405948fa835fb99fceac193532b4bda5d9b66628d52a00c6e5d4f57091e6dd9611da39e7a86febd6ac4b08acc56956ee60419e650e6c264f40d896da9b67e58db53f985497097ec64d75f9fdbc08d2ee0730cdfc214231c20cc1a28cf6edc207d8f9fbd171c77af686f5f06f2f600c0ac3b132d31e14dae3d687a8150300399a80e83946249b020f620e459690ce3ce14bb4ba2d982e5636f4a82af5219d2862bbb311a19d2818607844b891eeb00d5382cf1d6224d959bbd93075de55f6f3a354e633483872e1e69afad05013356c83df484c73072ecab9ba950070dd6040926faffe63c64c0e0489367a74a35e2e2f0d953516da3653fb6e78f697bdbc3d6badfe4168b11eec5aff3cd6da424bc6efcc94f0818bfff870af7fc54c4fc24294cd4192e14bee3f1e03eecf63687073d448c799111b2eb982b4ff70ac629839de369e85b4f39b15a477227b419ab9c43fc3fd9e20fe0a35298fb491e7c378cc5c8c801a86ec45b5384bf11f868fe86a562aa4a78b9043e9ee6e30fdf39ce31aae67ea051577b544dc50aef15a95cfeebec55f060cb7bd6c93a437b89f0a4c1aa2164c8eb0ad78b2b43dcd2214e1c926c919585a2d4d6b43043c800869bf4a97d00021b65a9237d4593a2e403bf34e456315f32ea90cc2c72702ca363a21fe2096fa6bb0aa7fdf7209981d1e98e3384a4a73c56a4ca0f6709a2583c185d9f78d394ec90265fb2c7a10d40dc23519f15070e6103bb7bf3ed3d889e8d0037b50c90811cff84d9f1edcb507f2755474d2ae80d9ede297e5104f18e953bf30ed8d4d532b4c6277a054a27377b61066d3bf435c348fae3bb3d65a889af1cecc5386e0d0469129d4a549a2ee57b2e6e25506fdf3a906bd6e6846248fda1f657a8d449144f3074696ca6aed19cfca85d8c8d37aa000508379f75add5710b97fad14a7a9f8c41d10bda13f073684333ec221b99c8073c118d30cc51c9415843669bd390d5b9ca6ba05c6132e7afcfb9cd64643874fef998d909c5ca41286c1f2da4ad9b4baf0f2e859a5354dba9ec2dc4965323543690efd5c2dbfb1cb87503ece3757d8e19adebfa290937892ddaf234af60110dc37d25dfd4573e5e654881c1d34eee65960140254db046eeb86d0eb2d6a4b18e30f61c13032666ed88915a42538b36009c329a2342475fe06596968d207966562788ffd7f66a9116e335c3dcd706c4891d94346956da538691819df70550077bfab46e3d748ef7ce1177cefbf5f3ea5699d05a9f5c64bc0379cf867d941b0eac951fad8bb1ed06cdd9f1dcb550bdb4e0e4a2bd221287d47068ce3636efec2a299daacab3c0c6391242f8203d9c16bed074436d7da516fe94fb97d374f39f24f313be922db540033a439e89320470dccecc769b7ceaf39d7f09324a436b9774ab247281c9ff5354ebd695b10c0b20215987e9324e6425fc8dc6d57e04dc75279815bddeb56c0501d659b7319ba72495aab65ad050de6bd3a3f18d9db049315e74c21ddb01d9407baf8c247bf748a43c71d563d899d769ac6a3b602f68e9a14b37919043f11bc03bfa63614bfe63643cc31102dc84b02d7c9b0a08d2ff291e59958ad1ec83e5d877b801347770042451e18702c63dd36e7a7652167ce53f33bac9501a4172d350d98c6015cf193ec76733f46571819655c5f36590f2f98f0de78de46f5fa036e0b1d2e2023cc051e9b0a6890e066c6fdd36108c46ad29eefdc9e2b6f5579a3700f540b8bcfce008cc9b6636dd5d390522bb0eb9ade71817238b1266d8e5d173e8559229ac3dfaddecfd8028dfbc0301cc27a7219c98d2e6248fdcf2bd43f6769057a769b093382b81b92d967a971e60cca8bd61249201465f24be8e00aca07f2fb8c463aa088c9c74f104b0fef0651a3b07867ef8dc2eac26d0e62371ba1a48e50eaa0e3c58719e46ddbe1f6d6c2594ea8d970577de7292389d1db0305bbadcadc10a9c43fed0e142dcd173706ba5026c53ffb289155658fffe81de221bd2d309035f9e5597835155105df1cf33f6c673901a8b3a98e1a365cf3bdc22219a43d2af6afc4cd25e3dc49d1e31e5a21e9be540dc7a4e4d497c5182e54531c7066060f4a26916ed7ff521b28a361ed87755a687f7bd56c4bae95853e62f2306db46b4be7bc8b943c0e42dfc224f3932d819f28b2c567c82ca124995866048572753ce78c3ccc39fd57439de36fe85e51ff5895bbc00100cd023dbff9182ed3d371444d58cb39af4817db398dc3a8075063343f1a9f19074ae6ea55efb5194b5f912c45754250355df347d32172a6eeac2af0c103daedbf91dfab319dd005be741d3ab8315bc0ec7048150203868c585695328849ee2e1841a9758f7a644afbb2a9c04b6d7f92fc005acec94c00ba2b1cfd7072c0c0cc72acacd0a4bdeb9e1d3d2bb064f7e47966897fed3f22b90171a4f9e059019cad2d584a8a0f33f7a2fe311608fa2d52de3e4b38c199716da0a3acd90cf26d759cdcf9305f6950b1eabc30e0188666ae47f17fbc1468053231d8a0b6d52c18cd2297b86f4cd36d60cd972a2aeb3bbe9f159009c358e01f3b6d200eddc0e578e2eecf8c6e219889b8ce040376a599fae9c9d4365837c7820bf66d1e231e48753ee61e1ebcd4c2664c2439b71a98cd2c01dea07a6a51cf896bf4d2a826b22b688067b5fc841e87f64dd0b8cd779589e0b08d3fb852a497922209c99d6ea3d68b0c5ca5b9cbc50a5691781ccf16227f28afec0b48aaad115bda08809347ff7dab09e67445685525b6e803152ab2dd23ccea45c6cc817b8267c663ca63b1884922fedf97e5797a37a2bd34084836af3f10a751b6720536727ecb81654260f60f6271bdcd4d01e36376dbfac78706de2b1555b1fbbe38e7105d052fd9fdc0ee1ebb6570c7e187c9fa0003e88199eea4e129f39ec4fe03d8f5e7934b9c056b16a677874e3f68af2ffdc690a4881ecbe209f82cd234d1ecf82041acecf38823ecc68f116b5c9b529fee81d83645d2500b44b6c23fa9fd2b0eda40934401c5824adf7b48a83b3a06a9bbe8aac4db9917fd9b5212f75d477d423299d1d30d42ea2183cd31745c540d9a43e6398d4c2b910b2dd4a9f2898041fc17e61f9efd86c10b57d33cf2d0b639e7866cfd0b3f574bd2e744740ad87a6ec739584fa449bf7f200d0a082936f7e06981e03f2808f6a4cb82c36a75a3a8c33c4a2a382d40db47dbf2232a6eef158fe18c9429a78b7a7a46464dfab44a88e7afc7702e32bc94b558feeadaac2b7bf5e68756809dd8e4c68c085aa05ce0b610ae7fb0bca7e0b511f7e772f6b432e491904d997919fa09ad6a82e3319dc2e3ea9bc2650410b0f04c0f16d9b078a18230c8df6ed9f2ff5b7bd47af2836e52df2f53c0e95b69b0fcc90e49043cacf83d76664c5fef49d44eb87d2b72c2af4f6b9fd7dc80e6c242251d837148290e7da13581122802578350d1021d0776c424a7cef3f308c411ff83027b5d417eebc7b55e517e4fcccaa4ccb0db8ca15adb451504ac160c27919adbfa4255dd2370612df47153f5c23e0b92fbda1bdc2c017e9193f563328168beaca180d05b477d0554cc95c7d01b7c0bfd54cc65052de96f99ed136aee313b4e06b9507bc048e82da67dfdff1023ee0f8fafc737667c7138f89814c60febf2245712f2e56107ce1953287e10926ca4126fc8a1d06ad4687a619d398d5bd7af4ff1288f3c52c003b1bc683fa7a679a22fb22e86dc875202ecfe30bc3f54a7a7f32493c967659f0af43760fb8ed182a5ddc7b15b0b1b2deb5f977542c950a6dcdf6c33d25438061c4f5c0dcd8429b04dbbac9334c1b0785c1f7c5d75eb5075ccdf27b053265cd6df6480860a1b048965b1c5d04530c7296c4f81d7d5f7829fffa8df2276c66789ffe97b75d001a75f83a002eb9c05058a8b37429fd9a0fca63b957019105066601c8562f51aa6ad7bc4f40b92a04212c1c8ae957b26cc2783f2e8a22aa35902e87974c3c96374f036c16cdf1c4792ee4c10afc7576601a22a118e8398cc9e1e69ff38e516bbe91a3b0441f1ccf3e2b309e5ccb3dad28807a110d9563fe9c2b4377fa121715aecfd905d50e30834098fae68074323d02a4d313fee26f36cab4bd1cf6f33d9322ea69935fb9f5a5add238c80c05285fc21da7be00c0c2c122d65d2d4139acff932be439ccfdb3d4fbdf1524f081c647aa47e719cf7209b278c0e39825f2b263ba7a4386fb6432f6af90b0595dbc47265bb93c5bcaca40fe0be9e01ee75256e1f5a73f898e1151e049f87c8336b942d68cbf939779d3f0af0b358cdcfc6997a1c0b027c44f770cdfad8043274ad4edb8b83f1f0b929120492024f95eb926db040b8a0f7221ced5508f35ce5fc997c2fb8221a993a7ba2a8049bfc1b8cd847d6a23f38834c77e468a5e7fe51b3d077cc84b26d39a355496ff4b7523e76a936d4ab543eabb0342818ecb52e1ea208eef1a91d3914c94d0e715f43dd252337fbe4ed641cb8dc8a2a2b36220895b4cd3f9bfe18b4cf6ec401e3431d4e4292f667975c67246dc3dc1ecf4df449bdcd55881fcf0cc77e14d18fc0f4dda99add59438ae0389e17e330231027ca77965a25f8f436f8969a4195fce788dbf60d5c5a9f76016e016e6447f88afeccd6ae1d541b3fbf9669552303b79226c724dea1f7fb0b1d643047f84e8ee6aa02c6265811d4b732a9bc44ac6d3d04575dc9d72938a51500e3a2e36cda7710b1e2dd0f76d2f617a6bf0927485e64e976fbe8c43612e8cff0ec33c522747d582a6f549ee24cfe839ba045f8442e2ed293e33f758c33b7cfcb9bcd4d796c61a49102f93af33b8d9ed2b1e2b98d7bc5e60259e19ae090f9e7e5837677a2fccdae2cd9f59100e1aefe0bd4c75dfa28384c2a4a778d91bb6ab90ba077022e14105d57c7fed64c7ebe720195833a2b5733e1a5d75ddda21033b5bafef3fa8eaebd30c771c6b55646f31b6d6c802c9faccccb985fd161f1a10c2c342fbef8b5efe05cce88e918ceff4a9d398bca7f90ddd307037c6a0d25ed880aa7c7c96edd40557cfc156c2ca40af00c5b4301bc6f6cc948eeed33bd75c7c308bc3805b96e957e0c74c774aeef3fa41d17cac5b2eb79d4926a678d2533281493128b9d7855f17a9cd93f6ba1bbd092db06e33ee13ae856760302ee83820dfc2768e2d510d2b7612b6d6d67ff56219feaeeecd7ddcd21415f8c4f0c413a64b916481db4acfab7044969ff0bda042468f63e90aabf359872cefc71c37f07f995e9f6187d1f587da7cb8e258c646eb9ee03b156d895b4133d3d8ccda2b910940883bd231456b53e6e20e3dcced0193b95729c4826944d53ff4cbdf0bd40490bfb95cdb3fc0257f197cf366c4c73557f34a67f3ddfbf493f761f9109305ae81c3daa3a04460028493494265f49984eccaf4c061766a4ecd42e1ddef612ff2765f63e41e8a0134d2366a8e34fb272c5c884c6bab13f5fbcf8811168ee5494d0d5e3fc40c60a3ff39c1e4c8801e3800f4752650ee6ef41e5bff78cb23791cdd3ec0aa60df6fb6b847d8f895a386faaaf6f8f404fcaebec2ba0337dbe35eed95e9e9d4c3fb8aa6c20fe262bd8fffc5807182e1dce75c3397cf1da7c2e034f9f2bbf737f8d1c7756f78926aee95552b269672d8ca5d463494f95aae269cb0ea8c52eac292ff20a80ab123d0156a70b2e18aa30373314541636cda910a311dee81a914a5bea0ba39a026099f87826ad43513d3de5261c16bbf411dd1b1b3071a5d6a8a9fbf1d0aa27fd135ce881f3e10a09ee4ca08dade70d494fc0b85bac6a8362a7b04039d955377946bb446bcdbf1df037d64954627a7043f5603d93b9ba9b81900b738dc5f1812f13f2329a4aea5643ec13445853229c36741a15afebb2f57303ae6032b0f6aafd3c96b3c62c6486aaf78d34a420a76e17e76e0b58627b977f377fb350d74fc6131dd166c551e54e6cbf72f75e66f4d40b1597db4045cf41cfec3dd4aaf780aa6657b9e744d8010334266f5483992e8ea7c9fb1112dbaa97b3cb6736b8a920900c3f4609055629b032a2683c5c8588fcd2bd85646bbd16ac2e0e13764d574f68d212c7eca7d27ac80772321885ad0ee850715815adc39f9201ec62ddbada336c3e635a137c3a646fb02bcb75c7b4a844184e7686b04a764a0d7af42f87b641174ed5654f93c8afc0b5f7ddf70baf3fc3de17ff837b334d04925cd5fd541d30bd1bcb8aee3c52b506a5f61fcb79e91a0ab6c87616d414ad6044b40cf0754c9fec70cf5f79b5f3655e31827c6d5cc779ae2437aac750ed1cbade5f980e8a3d25874a2fe3df5a0c3f3299c1aee98c5173e4114fcf0aecf3b5c39677663034db255042eba1f2996ffacb252fc3440e58ba27c5a315ec9f56ba48e302ecd28de8cc0d73af0f1aedc53fcbb9130968b471f5e2b9c32da0a706c728c212231ccf71fa61eb09a81b380ef388828aa78b19a645b93e76308127eeaff73325751df66d154b292672d13afcaf7bd94859f1456af90c620e30710b0d8e5d85776db5add3f54c9f7fa481591a10b1687b055fbaa1e9f130fbf3f8548f9687e9e25b42a6fe9560143610e000caaa7ce5abebfa53aedc80597fc436047debf052b96dc9ee07096824f965a466d04c5447216adf2735e27547ede018769c96f1b7df1986e2ef1ccce8962c24d6b554c4df4625f99e1873d7d9c5bc79dd92bbc76be036c4cebb0a7dbe0386138d7760c0c440803ba2ab66379cacba3d4740ef7750331f386a54d176dabd4f4fec4bfc100432b0198663b92790dd7f8fb62020f788e0b14f59f142ba026b3cf12a71c1bd3084dfebca819857a42970647c7a9efc085a51ab7c419a3ff8630e4892164db2af82cc9d02cfe160d4d1eab9143efea1af1a7590ceaaa4549d99516da913fdeae107065a0d4667e06e0bdee7af9cdf342cf3dbaf83ec97c448e2c079a54406e5bcf208a4abf283e0dc0d55ca9949820d1ab456c9f27eacf1c55969f3d8c9769a93e5e77858a6c12eced4e4b308d30bbc09a1f3e70e7bd9bf26d8611d4cb15b8ea8078695acd4255704ddbb8ff0da181caa09aba09acbe95b9a4b2e2e2765ce39e1d4b6569a730b0161738937e326e4c2314e125a21cca1a467cceb388eb993cd209dff3bed722612fef96817dc109e340b70e9dce05d88ae1e0e06b0fb4d0f66f7bc1ea03d028cf63d5dcccc6fd4ca662f2775d3366af66b8e03c51a00b8cc63c0e4b1ceeb8514c961cbe4759ec8fda4199affe1add48af01f26bec557038941b7b8e677fbb1e0824de5fa32828ad38128c219c2cf2ae054a38f575e5653e7c0678e72d7da2d29ab653f7f43f231b9a27929a68853395bf589fb20795b94b9f85309b54ae565daf469fdf02f802eb23040277ca9c8777e142d0af1b6932771e3875a8eb3c7b6dd23fd626fa58f7a01953e59ebcf821927add215688d1864059270514bbe6c08484fd5608650362be0dc14345455cb61663fa9b258000082af49534421fd1e288692c9310997b9d7477e471fa61fe98b45494cf08d97cf12ecd99dae2b04d031016e2ba6a5433dc7f003e3dbe7065c7248c1f30bcbc4ff7f4502f68a15e0fa2486222ee7a7ddc622e9b91c8c340bf0630774de75e0ec83b3cfb404f3d998b1f1d03b6a137266703d7fd8c690b1e5c319819b71f7dc98fe757063b31825f3732731423534106872ce8e60f2fd77e2e9d54f2f16885aafcf8528d620ad866d24a39935ee172b06a99a530933e8d31c1434c2b056d9e16d1b87fe1dc6535583056d9ad0d92389ff55ca30e692e4a7eeaf78c5e51c082e2e48bfc059a9a0dc96fd44e70e124c4dcd57e3502a8fd4ad2f5e2dbc079143c05026723fa4fbe0182c866abb403bd95ad8adb4737fb8607a4ec602df29fe66c2530d383eef147e60aedd9b3b505614cd82b2c70c69fc5e5218c06dd84f7aa2329c0a1bbf60a8bdc0701576d4f996ad4cb9dc992aa9f3cf8488f47194133e062e409183dedbc89d1105547a7c2e0aa1dfec81946da205396b9f1d472363b8e0a247340112da9eda97461f84cb8a2774a6500cc9fe93538ef584571b6d7aa18625f83c2394a55b343cd4f79ce89704b2482f8902633fef052906c852d0d7d12e3dfb65894db6ef4c29c10d59fda733f7533436e117607562bec8f4ee94973c201ae662a5469b99d221d388b9b340929cebd0c4e714216a2ed7e4e5a149f715ec87935949feda4ccf3edd7f09619fa200748aa6c29267122d5887fc0632b28ea3321c299f876fbf519221df9f5155f34afcbf53e40ff418df882bafa7c9a109730fe734cd27de4215c22c11fab34d80b11fd71ba8a56aa3f84515d2fc00d03a1906fbc3f92af55f3411bfa32434eaebbb89a9facfbadaadb0429a6b1c194be0fe86c427202b6402e53e16f8e60f780739d626be7fcb1fc7f6409a3032444758072d82627bd04c9c63791d9c545e2ef6656d6ef225fddff6d2b4ec8109552a585b330a54c0a69db87c1bed12370a9239e218f946637dba64ed7b48f7bf7cefbd9f2dbefb0698603c359b45345198012adff612ca6bee0756b2bfa255f1dd89977080f634a50f5c850c3528795fa93590c47645863663e3653ead4b16cdf82a91e60a0effee0df3be8c49fcab01abc3807cd5ee31558de9a2bc23862c41258d64601d32b014f10dcc0d1201ecfd11c084ff3678d67bc21f230a994426ad6f989d4d841648995d0f4b571a7e050d352373415a5af83aa28184d2dd65ebea6bd69d7307e381ba8cd076f81c03579c286b0419d07f94499cd1b5add06e08bf1fcc3a45f4d3deeb79a0a8ccf80bfd5e68cd5f918e452c14a8f793453d11356e0812b3f5f5ce5b2106bbea8c4fb1db6140e520625b006e8a2c44220afdab2ccc30b272fe196bc515b5ee7fd06cf2de4b7d2e34a45744ac1697f9ff054a0df7a1b535392a6ca39ba18b370beb3f29096a675cac99bb7a16eb70d9ba1e90d1fd6e155130f39f68a32448e2bf84f1a721c2bac3b184d7f26dd01507e1f0325394d3b1feddf2870cd419f3573776bc34073554d580845e4662fbc923818e6b292e6848f86003a2c9cf4595862b7be5e2293177771d7f3af5151be7082583bee2e5a5efd4e3f587a0b1a97a069efee3d3e3541ab30b99b9378f9588b1678b967c7488d1926bc76bcaf3134de6707fb339fabd6b0964436ad5bbef81210c662549a0606dd395800064225d1eeab641fff2173290a225d3b1c234f5a52259db7fc2eacfd7753e06defb49efb997eaaa865c35e14fa68afb26843c1352920dbb87668c6119026c09435c73834c53f0c7d02d02a29aefa65ce81c13dd9486ffb027515979dddc2a6e738fbadf5dce8e3ae35defcca08cde3e10e6f7511b1fb03326dc4cebca3939c6d90079b7871e365d7e08245805e9d1aa68516849520797319a07f22b5bcc306e9b4cc0e142336a14ee4ddc02f1b6d0446c68368059fb39c9691ef48d7211bac215fd1333bd676e7e0c8e7df9ab7147c811cb90c16a0def3a315c6aa2d268e73f776a65e9d5698286483ea4e75d03c8fa34f5eb989d12d0071557fba18452dbda1ea7ef7903dfe990025024b691773e2605f28704636c2b0b86992cc222931c7d4b78ac7811507b64685eabe00c78b1d66de5a764eda1c185dcb327b2d2c464a0d94f922e1fee933562d8cf1704bc67da142e8ee3953b5fcfd239b011b8282a869c8d6f1b43f2aa6352a0b88ca6f273abaebfd71e8c0e0339ca3d6560a85729ccc32bfee9fe92afcda548a5a5b3cacdadd4a191c0d66d8db326c923ee59cb04d2e9a3893f3f0c8e9e9fb0ed545baf6832b0479de36707f1e496182346677a85ba18d9207a5702c1e6feb84da5c65e9d03d214517c0aa59b5acae7ed79cc1a86242ee30bc4459815bdaf85c93e933241f5122a269bc130af063a80c9cd02daf786a8788b3a8fd833ada153070709e9c625b22312eecfb459392fa6c719138590c2f3e229589ad69a143dd698357fe90e6c6b6502652ba46e26b89d5fa7d856a3eeb1920a9334f69077cd0a4f3b75809ba51def0c10b929b2e974fd90aee4e58836ed1b2a90f41f52130da4a9e5d717b16fe7a4d0c87398e6720f981c0f378b9858d6ee26ff5228550b8a4fe27b4661507b7137fd0a317c52b0b0b7986a28d86529b383b8a9c1a59466b5a53b2c72b9ff3c164a969b510a809ef7be9906d1d6f5487420b80c7d2fe08470817b574653b8152d84e02485a16b7479b344859b8e21708eab4d2316529bfdfafbaee71ddbd6103bb79c6f2448f615baf2c021841a6850456def49f8c0c371f8c40a51f3baadd2bb991248028c8ca1507bafef8117cdfa2a0c5c12a6e73cd325dbd77120bae807fe23a9cefca71b879ca26785ea7bed74091e289f54ab9fde08dcc58cb866144f3465575d11c950b8dadbfb8066680388bc9ac78943670ec7b1d8828098c2facee281ea671eadf490264b1b87c7bce4dca1697455f7aeef01470eb86f74dc8e57276e5d616f17d3e3a87bce384c8cb89039453efca47e42f045d6c8d8a7ebc1d54b1a9fdc100754ff61733de7f669be60da89603d2bf7dd4dfe039720e861bcf64cb52133c7b95b1dbcd6467176379a0b0d4f93b897e76b66318d13b5fbe0b178fceea424fe8ef89468c37ddf8620eddb3a189e7bf85fefb59d05a0e244a7d58604651a74eeac020c365648fdbf81d76af98177bf99214c23d8900f212cba963bcbd2881f073fecd43baa4612c1c077c6cd54df96ac10f55288b655cbfb6a058d96506449eb50665545f7b519adbe4ba06258e8996c284d3f9bf03b455ea0bae93f85a26e0d525c4459f89582f7c7aa2ac82d1626b56f02e7d0243da837cbfb8dca012b23d8dbf694bb79f62459b9f1c3a615b5370bb75e4a0fcb2f2fa4372d4842ad6375ec6064526a6765eebac6cc53bb7f0beb212692c0f24d1a601e80064e76f5b3d38999530dc9ea40e2de6a3119b8a8fc5bf31774c164038e64d0ecb524ef4cff9f5f9f13cc728b66120081ad0ddcd94e3b8ec855c4fd7bf6091a2b97f8ca0e94659787098be10ba088e2e0e4a11624915211c989cff4da017d88447d106b2548c6428fdff1ada5e081fddbeab60b0d6a3e7d94bdff8e1d24a7ac4ac06dcaa0011524ed66533fc7d647e73c779c8f18b19a264feff10e18a2b61e942172973de7c9094048f4152b825499faae612b7743d0de95a2a99cdec6e24f3bbe57802e4544c2a1b978ac5b86b857b7063f30adbca26c908ccc4a930dc3b01685ea1d8b80faf1d3f028887261e4d09b33e8e436597ee8f610d64bbff4a8266f3352e68e4ece7aee5ced47384bdaab9fdd0b337d3f45b452a6a5d0761b9a0a4840b4cdc6006a9c306c268f3b96608889e03995fd8670bf2006bdfa3dfaea2cc4b9a87f91bf44d36ad02156d9f2057f292f92793f4319848ada6779efb96f7bb3628edc7866918d06955a8d6dec980253243ec4fba8b521ab6d25447055f103bfcff76373856312b25b84b86bf0e49917148eeb3f9e9d7d36d28378c958b7ac19f43b2c28f93a3298c4d5866a06765d9450379570ab7ef5c16fc0eead040b905d656d8b7bf9bb8b81ae47641f4b99ff684a00c304ae4d4673ff865b50dcfdd0de30719773a03993a124933a0d98636a71048bed781b70fd9df0b2fdda24d631f38e6f7bdc05628b93190df052afe9037f160714dc167e348fcac083dc4198ab4a4267d8e45d58f07b0386ac4c9174a6f813c6f1f60241e3bf7daee2a338b3e0c2e8c5639869cabafe4acde55a93ceee744dcf918bb8c58b019aa0c368f6a921b40096ae656e54c866dc25b910c270be76121d122efc0c7f505257908b7b7876109fbd4c97bd62a9b46e337d25e610bf4cc6e1f49e994fa2f71224476b25f5f7a04b5c262603671f2fcedb8d29f6931db40b6e3da7d57ef44b44acbb3e8490d44941cecde3ff92c9a54e0dc88432e4736b3eeef2b754489616b34063b032b1da7b4d035418168887bcd2d2c73bb8ca82b8f89526dd5120be399699ce61dec267e1b8f0ec2537176376b614b64003410591a0e6f225ca663387842165e0976d971442848db743a2ecf4d86f9d95ec91f1fe27b169a9b2988181d7ea7730802e19021e7c90429d9b6ca5f74d69e2283d202c8593ba437623be34e6019907b2b5b0195a4f9ea7f084a816ac6123ffb76fc021192c6b2e222132df62734e5a70148d3171b4c2e2c4f784b8413ef5dde3a1f964623be67d9a8426ad9acf98b6546ce24f1d9c50eb4532850deae8ab1a0a15cdbb83c7c74414fdb0d5fb6ff1cfaf2ecd37d6554d7e3bd604ddae35db895e2ee8da8c23b846dc1916e8412f0019fff53cb8a3a4e05749832a7222aecc5da9016708aed455b1eddda0671214c9645d7d7682687779b71513f2d72f0316b768b79f4a5712a32db9394b775f444a404c2fdc2783850e23eae343a3a6fd908f4a4713d78260ba3ed29f1536e56618a83faf5294270390cff1223650db7cca633479d00cbd08a2de4e1401a9155cff6584ee8d532a3dec0b48973e6a8d85666b1f3035055e844dda20fd6762aee88c07135dcba67e23bbf703d7f1df83332791c18fcfc1ec66ec900327931fb7fe600d0e902371d79a58d7640b5ce576b63b41e6fc0efd64204500ef21da963da7ff84ecf6ef3ddb06304a02914e8e13a755c7ee2af1d9ab293daed86eb81cf42c4739d5403a05a02ce8106f2025da7ccd220a66f0f07ac567be70ca7ae74d5bbffb4261fbeb74b015d01e7ae4c8cf0c46ab4df9403c5ce52c488bed71ddd95a5ae0b26763cece2d7bc2f466a4f1a660df264efa8e990cf06028d257385049ed0238674918886492292278671aa03c1d8649b06dfcf27695608b823336d9a3014a1d11996195849c8cef0a336cd3b8c5c61c45f2f079f592fbf414e4d326dead91e59eecc09abdf62dd5f31cda88e3c9fd29c0e3d3351932de72a70fd1139a6a523f78f13de0b8fe2298cca6d2641bec196d4623ba62e34a1b46c68005d6fe2d22c747ba5b4517221a71ae562a9083052ccc0bda2856d94e577b4e9013a832f266bb13696157aa39bf92c5a2f28cf9c7e48c178fee1ce31be24c121fac5dc640c2a894e725b70b8e960040a53784ac53fec34440c57e0d1c81be0acded444ba17781f2224b6b1daf67d50be1df052df69aaf910829f60342a8a87fd5036f3d251cbf207a307b599237d21bc6f7af784a22a0c2a7f7eef0da69bf1124225daf396678b6d04b6f003bf724e5a42f00dd265e9075687d5cc38c2283df76d7c50c0f92dfc764b224689f141d98be30ed5d28e43859641e3f166931d13eb68563b822e2a6c7d7c3396755702f582de42519e66b8553dfa5a6c63c66d1359bbb9789ccbbd86a00b99207d61277439bc3a2d5423fae86f13fc8402db7778e62b49e13a3c59610facb62a7e784f4656dd903ae4e674452aa8023a5614a1f6ee8e700f42eb5ff9ae09400bc105139cdb169c6ae2501166107d24196745cee316dc7a43e01c17672ec4d9b0e8d437c1ed19973efae202c719f50c8b8daa08b04e549114357ab8f4a441c72e6de5adc3144b59ff211cbd2388f35cd1bfea6b155b2a7fd5c11d42dd8db54ecd8ca08e505e475cf401fa579a891abe62f2d5f7cdd6702f2dcc6f4e326e510aca130445b427bc7a84ca995cc1d85e1d1cb0e7315d74a3875d78bdfd28176828d7c86f83e7084f26b4e67c64389e79d888edcb5b9e704bcb1763daecd146be032dcb5aeb2c69c701420c5eb1f3786268983379af11985e08d1fb67301af02c109782f71f37dcd99ff5e81c009423e8246eeca90640f1e9583a726f964ef1bcbfe2ad2108a4c143a26634e0d42421934c7d2dc4337fff9c8532b4171a16c39119575aae2c336236e2ee79d2e21a5195092e7d70efc4e44a308f959dc334e469f7caaf0c6fa1832baa49f3fd8385fdede0f4904f2b0f342cb43afdc46992edbc64950425665d0c81b216a6acd3d3fcde4261866538e2ef4279d347cb13c6e4341181aec77673a1946f04cfeedea4a36b5b2fa8fd050b48bf4f864c8938ede5d4abacb7d2c4fe7871d1b7f4af9f0d086b832bc647f457ec71c3e6f32b366cf89d2939768310f8299e385795ba952f493364c2321e152b8e1f00d95e9edd41537543ed37e40d30bdb8405bb3a8cfbfebdd748605ea32408ae6592164a936d3d0b259394e526b91fbcf65785037f92d423ea5cb6b598ba51bdef4f4bbc27b93e3ccbd97b2833bef8f2348424a71cb06e880658933d900ba7b839838f3c71a96924b4779a0fa61d88ffa361108c55b4f6500adbbe454cd870fc2e4e02be19aa174cf9d6acef7dbb5cd13596495f6857d26cfa7ab51ac0f232a0ad0ad556bb1aa6553e3e1be92d63d1ce2380752bf325db9a02b091febbe130a7c89e847d2713c99fc9636ce962025be6ded5c65fbc2ee2abadbaf58a870ba71b08c5502ca50686d8caf80ea42681694120bc7569e13c77b036c3bb52d7c7e90cebd3af7975973f4a0b42810bb90f409349ad01ec2ab8e7f5466f511450d2cbda461393fccdaa5c7f13023696f45dc0a1fd9edba93272e4fd03f4bfbc752e71c2f52c29865b418a38b5cbccd07eddd8838c25f2e87d195c8130ba302c50ee1aaf71f328a3484a1c6a05dae2850b6b3301dd3ec1ee0b02a271cd85c6d4d2f6b35469b2512da6885f08482640c723bf924b47885e911c49bacbacd6429a0d7f9f3349759b8433e3232b6dd2cc3e671b25a1b2d355bcc2b3654d32006a61afb43423041453648d206ad738380af0a2b658ecaae964610832950e7583f301b463f2b69307630056914c9788d01b1f30b168c33994317a0dc9a533203206462e585a3f874fdf61d9e65751d0a794ac15c622b1bd84bcd28b4814471fa636581fb72323dc58f0492e67028b4ff99f003d2da2bd8db1432a1f6901ed14a41fc07ef9be983fc9fe4a7fac3a52966b22df7c04a909d71274a82ba183e4a32fe9654c3abec75b35fe20cb9d41a861e6c9caf4f759308b0dbcd75277b1104377128be1561393bc3be9298869f6e0bd454b8b14983c4ee1197fc89e46273233b31ed17d028a9f101157ea425378406c3f85e326688b11d07accbb155c7b3cb2fbd54a66418180c7f135659b1e9a9f19ee48d5b3b0c6f438258e904c9b0cc72eb100b483c43d623f853f25e164e06c3cafc86f331fdf75b0898c30a70fd736f84b50c8eac74a2ee182af82523fb7be9b1e1e7ad49387e9cf48835a4e42da68b308d2bd38a462508b4e1aede1e39f5034d13b1bdd4902d2e3712d2321e54aa8b49159d70eb7659b4f45b85a952fe22cc816c9e17124beaf00691e4772494505d352423a3c4ce9a18d8456def05bb6787a038270118af43c95f3af7c14622f0951978eb000a92101ba49d78b903387bd9e7b80426d090c87be5fb59d06fe150afd5793f26b82bed27a4ef3d79f8f9f56c53cb7343cac580ac18ac9466d6f8492435403edc32d32a00d78d03c0413d13477a11733515777e8447c3d03b9e5850bff1a9f9a13ce56328d0af06db82913a1059a44019affffb67cf160557ffdb7042717ea3b32e89f359fec78680ad74f8a062c7fa90ab14a899f16fecd70b1afc016a4fb5d736f616898b8e53c248a96098ee2b544e9eaef2a415f644b2da89a793622c182f4021c7713999bd61e63c219d94b5d53e1da2ac0ee6adccb70afcdb2207f8bfec46e41a4e2029d57f68d7dd96b0631ec0e9fb84730c33656f7c67faf526adbeff1ace1f80f048598cbea61889f33fdcaefa6e948b9e0bc4908223d81b04e17a6615d4ad84c9bad10f786a8017bd05daa4f85d38d6dbfea0d3faeb4e09686df97a8429fc71147379670c4cd34c2d275418838061f93774f0262a6e13b63677ece58136440a18a4cf5d3b6539a2d1400cb3e16d61eaefc50aff93b7e724b6ca379de2b37ec0615407ff580023160f54a0fbb48d16105b362f25a395f66f2c434694a98a4effdbbd52f0bdd92d4c6cff915e8f310550e6da929aa9896221da525d528684a974b7a375a61e2c9d7ba408f260eaa389d1e14a0d4587648081f86887232089d0b6cf3892fbe3ea8404dfcd95fee7d77842a9c5f63b5cf5140fc1a7a5fe99637c2a6bb1e517c386fbf85ef8d3d5cade73ab0d1137e5616b94eac6190f5dfafd47f3888d3c53724be5a47b339a9076642185dc6de922a5a05defcf804041bcea81ee58c48bfed614663186e6045f94ebd79f1e3ba255682e2f7b84ce9a3040abc6ffec1e5106d7011a42e11ece6297ebf0ced5fcb64747e82ad3dcb294636a05675e93d6121002adacd96b356a0a207dd5acea83afe9a6ca7ba3aa30dbad43351d7d8be17c343f143fc9cf064363aec085a27a69b05f8aca0ced2399271d7fbc5ac5ef9d70717e3febe3867da9ea2e0156d1d88c89a00d3a34ceb6b967f1842d40168dca114aa2b7c6d1b4af47b78d039559bff4bd7e23bdac4bf902f155103bb9db0e397fa19625aeff3de691bf685c59506fa5cb3acc8eee7541277c9716ea615a1d6042ee6b29ab650edd593819df8c37af992e94a45cd2b7750cccdac64ffb06ef3f0e7ee03da8f3364837317666f3120cc970b8bf7f6a899f12669ea526171081bc33b279e421eccf23ee82095eaea6fac43bb33f08412e5af1eaac825173d444d4eeaf5f59d4c34f4eb2cd21707295933fd6efe9f81c4ec7717ab463af03bcb718d5a7a796cf83ebd958c90c709eeca4e8e831b157cf6cab0bb8432424e5b821408139098993d7c2cea6e63348b442c71d6f6d27b56e70a018cdcb34358ce3551f1c75f738de886d13458728139cfa7806a8fac8cb466270fbb0136b516b28f8d22fff24be15492952e0d9c56a078cd50391ce2a4cc0f59630e0af6467a81ff27991c66d50304df38439ffb6ad30dcef8809226287d0ed58022cd1405788922707ff363b7ae52890aa547d9685af22f9b4a827274b9c5fe22f6ffd2353236bee47bd3e578b5a02d46b8a15ce46581787df3b59770d04a11186fa6158c3f219091fe3cdf29819cc6f48b40c8fcfa6bfb256f36cb3961f2c5874454974378e32691a3f62cc865118785458e958f3188a473d84c29683727d53bac8112c0483961b2db8eae925192f22786b6dbc80f518843f3509ae391d3928ca5b50de0265a8aab439dd881885f7ff1ac861a486ee23d8aba086252eb7ef4ac0ace9a42462444538876343e1da986de9ea2b99813c903429e33e88bccb451b4c235ec622c55dd2bcc6ef6a94490152024c4831192d7bc863675a08775f3395e3b002d5ed7dbfeff3efc0b03e153c5050d55bcd93b78f67d95697c29281313b7ba71035897480cb1de73bd125d615185f2252dff05550a6f6f7980d9c3675b311fbcd38266ef20506e41408c24702a3ecb0420610de1112d87e025752f81afdfa0d7d0ed1a47fa8995865da9cd548631e0a8d6aec57c536296038173f764678f847ec6f5b74091c03066178ca5de3a7e8fd7d9b9bf1d5c1307d29429dbf51cb9962f01f20356cc0fafb7c7754059f5deb6cae3ec6ef9b20ea7c68f1148b944e81423298215341ad17312b2e1b90f1a7792aa31a8da961556d103db89d86876704eaed01f50f307302ab61e9788dade87b83c975934e271fa5e784441d8dfbefbd97dba67168dba3a64ce190803d8f16e28951d655d6a1eff21f184cf4139d25152f36bca360f33f64201f64d602b44194f408b34a82b17db9a2b690c990319a07f52fb205416b380d00186f3043a1e60a12d507169605525429032b51a49e76c5aa6bc898a81464f84e4dbf3fa02fb74e035cfaf256b0a11c96d9e4b35e140d27ddbfc7db841f3642707073e24af5f043b5612efccff1460607459e281be04d7875e8e80a7a95fa3825582025fea400cf37138138f8809080b5ba1f8aa84bd39331d831d8445c469f88c90265a1c622b02cd2e751bea45cefc5287658865ad9442310972e745de4a71d681d15fd5cdc7c714f8533e556aa521d0cfdc6ebe72216df7ab69207ecad8ba96da53a7600f66940a75fa777c3bcd619e22f7df3914b2949507d4f4d7fa671f1b0a25b9431323e225a52b3878cafcae300fa49d20db57e337fd42267077aef403b4d63a4a520c93b4874218c7732f7e5535bdac9bce3411cca4d30614626393ed56a072b21452649029ffd5a2908b99d88336c32b5c8435654cdec6131f3a514e65206b12547706ffa156bc196b1b3e2e9b833867a444d12973a3cbe4fceed0cfc2692eda2a033effe9e329c9ed264ac61c250bf35a70dc63b42dbe7190ece34f6c92bd8ebafaae139b8cd40e1acff6c1c094eb93e6c0be6190864ab9a6f1d663b878b7f14d01f31a0b923d4e84348e1f9b00df642a9bf77c6afae16c066d62b60665f3bd0684be6a3cbcf0876fabd1aa2f723431f05ff3cf14d58ae38473389261024c893a8913ada4e6b3a8d9e7df070c1af0674949afe1825df8ef0b21385e4b50243b6e5f50a49eb6c8256eb8fe4fbc720308ba11a4507d25c92aafa32d83fdf3f8f22e81aecffe4d77a9c45533422e81477254fd51bfa40c229e3153f2fe229eef35995d5af6edd33daf3f05f4ba76d7c423ed6546624b8753197ca03347124c1590367c7884a76fd95f402fb395ae68a26ea14ae704517f790701364aa12f53492a5a68c4c7617340c6b82c13c09f575f720643dd7ae6cfc2696d791540805f4a29caaa745b2a99554dc8bed1aa6e8b33dd6fde13ba6f7e824f66ae5fa0dc0b7390e5f2a771027eb1654d18e710ccd2e96485e5924583bffa29fc5fda90741a3bb9e0ea09878a286ff305181d5fdad0df0a29c8878a1c8fb071129326108e7947f3f9e7734db8e0c4af13f522e096f0871716ffec8fed10c1761c8fe94a4856229cf055335a3d466e0d7519a603568112c5951b9bb33b42edc94818a6be9b93c3c294d7bcb6efb5524c9ebcd872123a0c75b393e3223a4649fbebb703077f39e87e03f1d42b6f356025ebd2f4ba4b1039990dac8589bbf0161235492530da1172e4594c004a2c721310eec170c4acd639d0e6c6ecfa369e3ebb6efb059fa17159ae01f07cb14586538ff2b2291d6c36b6f5c8d83b111a8b81b6c1ed5bcc46072ab740850c3931e6652b26426be7786dba24db05375731496c71492953b363fd94e3500c35d516c0d35fd93d3a661c6d6ecf2cd498729c578beab35f4afbae225ecce99643eacf13c5871065da3e352d227f33e717b887f68dd876eadb21d29572631f686560c408055c876db7ad7148a27f4153761db31b468597d4ed5daf7a8f06b3efd269f55cd21d93adc84e0ce0eae614d050f178c4aa75775ffc94ecc5c41e3bd3b9f82ac505a3acd7a877b65376942e207f08e3348b4c543937a6032ec84373c5b588d6cde5f378b332a51d21fb249a53933f49f1d542f3f63a2c978bb21bbf728dbc641f6b2fcb8b5505aa7227104f43148cbfacd85a4ac1d283bd5bafe2ae90704953b4c20f84e5b0b8d1f23190dba9175d7dde6616f7ca66d51d3c0d92df9f77675d72a5d356cff7479cf01a4de5a0f097ba476db2c2635111b5fb9920a91ece61067b93c2cf73b48571197fdbf58750e3c081c5d24da97787fbe9274b0bac16e3a296bd0c43f682b65554daca432d16c959b4b3c47ec3f2f9cbfecf2a37fbc089198af1b8d91bdb22171c8081f1bc4d8d4137c19c9be183e498c41eea09c3a3f43f90e9521543040f340612dde6e56e1212dd1b5a9325df9063d9b6a93e4a5222a3fb53cd93007db44a02e25fd358c7dbd76d3a5f8b9c0573aa06e5242330cf43581935ac6c706fdc9affd3e412b1ccbc0d780eb3e383d86e59d3de7cccefbe954533669337b0f6e629651467e74f60d94a066fac09e23a518d5ca27f354def9159d7d41bde9539e77bca61526bd246d0c63035eff918f46f8d5c1b456c1bc0f21285cc5b395cb78be774078e3b5fbd4ff01c005b31e74cb2d9d6b81b279261e9463108ce43cf7e80f2ea68f5e4e2934b204e2444434005de0ed07ee45cc5fa5881545eadf222343a0958024a8956cb82119b05276567ca4bc21dec9e7219fcd939a22b5b253207a38a2da48020a63ec19e6a492519d9063f6f8e3814fb14b7bce20cc8330c26f2343c89128a84ae918daef5e3dd1643dbe08cfccb0f1265251e0c29ec8aeadd55de717747164c68061fbe030cfae06479e5195751e7993d752690badc86cacff8fddc44a9dd85bafdd2fb5ed08935b61c28499ae662bdd08c6418da3459e3be5079a9af7a0e733d30b6dbf4ce0267cfa71775d584c9a3441915b623779c0aad1acace3df24585c2b7489c4548950c088041a99bb807f039b6ece7de2d21b129d9499ab484957c33de0bbb48293d171f7e400648df3db22e5ad05cf797071efe9368993e17b36db2b7b5c685be4ce8c24cc6e9c2df786070294237d3d157979c2fa99bf4d6ed1370e48d075e1411978ee957d52db4bdc5a892c3f0d677b563283b3575791904850e1c6ee289456e5d637a48b3235699ac689cc3c32b81454a5ffb92e5bd36cf779859f12227c3ab50bdb73ed75ca41ffe0e84456857e0429ffa800d7a7384d30762fdeaf34b78733ac82c3376bc5509bd0c80f6b2f962ed6517caa2911c57bf356d7d5f5e378a1da3a975c33eab5024d17de98241674df6946f788da815b589a547b8b21d17e3ed9d636bc9a98032b568547388634dcbf68b96592a3abe0fcceb408f3a5d5fdde0233ae6964948f4d7179f577ebf5b7c16cbc5720d9fab161818c2877b555e27efe67940ff57983177348caf617457783403cb14cf5c3a6c4bde9094f33c13e8ff77f227e86ac79bb6ed7076999a54cec107f33b90afa497bd34c510b1dd93ee0495597ff4999b66df508fb6415c303324c5cab6763cb7599be8546b17dab5c7e5e3f4064b2b22ee943394bcd8c5015c12ac86a4cb891e28e807d32d6f755880a03c096769c9951d15ace5e2855ff725ad03fbc98a8560ad67eff2f08cdabcfbfedf56e30b107b602f745659c0762729f263737b1e2e37a9dfc09239bef552330ad0af6b855a65213fc63550fcb991640bc7ea6dcb1da735d9b7657d922914e7ad5b171f4020e41dd88a3fe0db8d553c81508f1338ddcb573677b022ee91e25e89784c217024c20a1e2e2ca8ae05cf2f54ea7266cf7164ff50e9068847870ee72313c12ee91d74719ef1a6fc946477605c1a028e82acf08608cac01b3cee24ffe118fb2706a2187f60a18e117d9d08ac9618479b07c0968f5fb1c3b906f5d5be4fab99569f147ecc263364f6893faea6354841f6cfe368c633a033b4365f77543c34ae05943ea99154f41a3c6c93e6191c90da7627021c9e3d339ed716f6ce1f91a734fdc316033e72c6a6bbbad1ced3a1776c1036013d914e73c6bd44024591f20f8c3b1be0f786be8b674cb6a66aeb3cb60a8aaf0b4c09218d39f7acc74ac8acf6364efbfa54e911164775903f1802174a0219e22e1185b1fff18a3ce4bc44ef0a539c700c08864063905870456d7ba060b1eaa43c557d9cf9086c776ab87df3093cab8397188d6ef50114e249587d701d2133d2902e235ea152a9126529f9f454d100bf015f01836939c883d8e227e27f48994377b23883798d6656e353ffb7e97552e8b52c8be1f0ef5d115c3aeb01ee9abea60393e93db57c57be02ba4fe0d13ae785c72911b713cfc588466efc6b41698d646bffaad6c90032260cca23d445906d7901db8a10de90cb3f2e92a16a2a330faa05544634a89f5c8c9cf5b1fae7b92819fcbe0fdaa5aac45115c2c99be7f2714626f1d3ca36f71a663ecde74683909ccc46132292b7555cdbaed2bf0a81b3936820161de8ea2c4da320831ea762740950b8d30a965f836deffe36a8a40f0679cd1f7c65897407a70a108eb6596d6a9f5cfc7120de2ce060514755b11232d805f70629a1daaccfa5670c8bcfa69f1202579febf0a7cee5340e3a56ae4b923473be6ee2f1439f2728a8a2820525cfb24922336ff7d61c7d2790a47008c5ee7c3098dabaaf495aeb036a3ad8623df32647cf27576444dd0de448913b75a5ec5cd3c7bc9b83c0cccffa23bca59db9cbe71caa8b60178b630dcc1d36a334c769c99e88269da009cce387b2ae2d351acedaf16b1fa4fe98d5d31812ab5ecc7f62ddbfe3c27051040be6c8f2f89cae3128bf39c5c6f45cf11a6952b61b8522c0909ebfd3f1047f8493a433b448881181ce44a61f91b324ce8cfa09dede90ce087aebb10fc9eb35558711ce682908fdb150ea37f79e859a6ff0c06f53aa48437d19bb198914387e75b12f792182f594c6d411d9303aa18c8615c4a68cdd3ed23a0056a3aecd75b35995c60629652485ac2892da358327399a298c72e8ac678a4035ddfb584b91b42794a37d1f2fe4ed95b4fd4e2cd5cd2287738b10f54248fb31f440281b951ec3f55f627a8d2943fff5f03d239fb3cef0a3d5c76e9995d5e91af6d33703b34ed700eba32a7c3274da036a198682a23f05f91dfdaf7be53c27a9318c6666b4bb07b12f1ee24376336fb16609d8d3de463127c2973083f9c83b79d8a803bb6152382388aabe6ed710aba8dca2b484a024143f5bb699937078e7e4e519f6b00a9747d7cbd03bb7252053e1f4ec4ac2dcb7df6966f3bb46e23d79e9b5575dd7d3948a775f7be1f939b7119f956113bd80db1616f36ead73c1a509221410f9840ba47c054cabed7c3ce90f10dd42bda36310c32ccfeece1e91a0fefdb2cc27bb9546b3128f596d2707738cf0d53099e26c8e00315f4fa703c74095471ed306cfd32c911ec1f91387d00acb90d291fe920a2a23db32c5bf8c6a3dce6864158537ab0b74ce73f87fb789202b071667ab3d2921866657619ed83ca80cf4e24034d2c4794a74952d04276b2fffbc635da04e8782265edc9ac100d87e4d6a57444da9d89dbb4952a2bb3ac35c31fd6764633bf1861b5b33e1f7ec96cccfbc3c0fb16ba9e9ff0dec3b5f5bb852823f4139ab968b1dec04e49f7913384e88920b2d8a40e2de498a1fe3dbfe07a2afbe4113eba07e122508f01b42da4a2b0c7a2860ab516061311d722369b133f695e1b65971606924e07223fa3a8cff8746b5d16fa8f3e640b5c4af8c9950d451fd3c99002999a862ac5bd2b8e21c4a0a157655bdc4f16c444c498eff28f03e4fcaf844878952a02604de384096eb7ec5ff0e68b877db5d55981b3e1121df0c7b3666a617855a0d85c405173c2a51d9c97a67cb8168e358f1ffcf70f17fbfeb424e5ecead215f90edcbb4eeb51cc18a808b91abb91df9f03fe42f514958d124a52bfa3ddf04e5334a84a83e3ccda0fc5773e3354e6e5dc0d66162ffe91d596ec6c20d9f1ee01f5cf8487e7e6b5e4e24e8b4253596c181f59a3b686949de6cdfad31f7594bc3aed67642771c4daf2aa9cb5ed164cb86ad14b69a87c4c1dabe4ad4fa3b06253cf9720f3e5e12d78fa085035f7a3a38be991bfcb885716dcad9f27b8703111cea4d01574d825fa6e4b80d5c57a638ba01a1183836c0b0de32be0db45a8b7043580b51080e1854e76e06cd3f52e5456bcf06c1f03bd458f69bfca31d85867914497ac491c6c7058b9aaae583676636f5f02d780f4d16d4c40bd88b54d13ba420ec910a8fcbf8fc6d2f569623a2be3000a1c818314c4d396c843af69c87cab32fbd33fdba2acf896e0fdd5b8cac24bcf1a30ddbf6823bd894abf29125374423eaacaf1262dc98e0e33fb8351fdecfc07c284ad659be58869eba0d65fafaecabd6479885611073da76b377e0585aed4ea8044393e6e6fae39d12b2bcf904ec4e508fd6fe4e4fbc9de783dda84be20b8520fc908bea95d34c7e9ed9f72dd5c3eb46e66f3a8f92207f866d2029a8b5c966789b7c567aeb6918257e5ee3447d3cadb43b8a442ae1a7fb5e0c8f3b4b7ed70a9ea19096c406d787bd9d8a888ea263dd1afa0793bcd59241c81d02153d7376224380298b81ef5a2ee94ff932c20a6a17d2125785c50ce490ea00f758a0e7b553ad5120ab9657313aba5832a364ae387026b876c676f6f8fe25bc2d02d7c7379a00a86b71c283a7a8b6bfeb61fe3f04679c8c24eba885ad08cc4357966dc1c4699eab81f08b159eb09356257cf5a5cdfe72b36c54846cc59403770833825dc7dc50ad05e27e265fe9263a67ae5c1e314565256f1eba9b8a52c94ed1c2d004d8be71a40c8463f835c9df13bc053ed374002de350c3979634367e90ea69d9be0bb02fd86d08dd0dd41e6c69b235a2aefa16939013c725b20c6b2b02be640c03491eabc3cd93557b174d85a91ad1670e85ed118b53e14c4f8ac6b1aa3ce701cb697dc3010403812e6b28a9fb66975273a8f151bab27c23311a9be21711031f1551f3186c16a1c35354ab64c00c0550b27bf93cc754694eb2fedf83ed816f873757bce13acc02cac062b8a23d9ba4b9229628326a190cb59d43af1c8a9861588cf4d8da8df904d7cf033adb17c9844784acfdfee4552289ad2fcca9a4747afcd1173195dd5ec25892932519ba8ea843efdadb70fafa837962ace826bf9a40b7a524e4ab4488bcb7fc1b6ab809fdfa42dee00d238711c9874fe36e307003960450651daffd2c4b194b86856b88b3b43a15df9cd156026fdb8ae81139f843dd61065e30cd548a4587f3dda954c3b574cdb433eae793c60354d3be982bd1ef3ff5267eb060476d8eb877bd7c40605d48e52313b97caa6046a7cdf10f61da4e0b92b20c88dc652212fdd0a173eb7e818cd524b2ec437c9f32d331a3cc6244cf89789a5fdb6ca9994259a4d65cf672550ff10baa3885b658265483e4970fe5d240942a72849f975692114a6c908c636efc9ec849cf08a83f75289416efb86a7ad4bbb769eb43db2254775488a32ee6f1216fc980f5ad90bb04201a8f11056b4322bdcbfa5da240c7212b212d6fbfee9307a2613eca0ee73695289ee9e0c200113b6a4eaaf86a3b7f67941448bbf2629784678a48ccaaae4340239ca2a39140279a6af2983d9a6702812abb88a7a3af9d899978aa47456f1e657f3dca9623eb1cdc58ece5d5738a4b3584a2c457e1c30b9a666d8118963ff6050619975c278165c9a19745bde20b3eef5bd97069f012cf63f216434aaa26e692349e2cf34be769a531813bfac71f73143a3a7faa25eeeec34b0358435cc540fb1d12131abddca037474f8f77318051a7a810e2c2e5ee42c4bce2f86250fd2d4c02b6cc04c52dfd3c7ba9d23dc22a6bb98c0822ba73a50cecca33524dd61a07c76167c598f8e1c0ab07ab66d89c2b76bd061c3a9dabf237584cdf080eebb20db2553d4d8ddd9e27c7441a04726a6f24733e3b8994da06406851cf07a6a1c7409cb5d7092d6b3035fc8903ac72e5feb0018652f64969b5b7b8ab05ed8816806804032048bd7c138e3a5b0465bd12119bc435b28084907bec7f38e329a593cb31edd53cd0d218a0e78af5260bd43f82742a62577f888ad1587d25d0bb201b9b440c36e1fc5244f5e9fa2750d18b2ae366c93101742d689dc12545b643df9ae937acdc43f5699329b8b121e72f5a683644079d3f777feecb9fc808d3b4bd21b2fa128570aeb3b49a0faa83227a1ea3bc25e1db4e1c66c82a5af208a5fec79663cc6da24d0d80e6215b19367e62487f04fed316179a2930b472730d682fe6f6e414861a8e101ad5aa19408331c7d2f004e7882bc6b112513d05b49a60f21173e023914b295a7ed4d8321d65cec9945482bb37ee8a5ffb1b99eb5021bf3eef619b5e23be2651a48f6d9f58ee04670fb9ac6ae149344d21b9bb297526e59aee34174d816995873e0525bb11de7f175d967b10bb2d415346c9b287a0035c8d787369953f538385e6b72f04e58219c999199999950f01561894986ca36f3993fcea42a9d0dcc85017603a8d26a4390064ebd2b679de55c7515e11f573a0f56f4a8487bd4c8a9a9ac6e834c9efad2842fe90d907a702b2d3da3cf3f98f551029fde81ab32d836185cbf8ccda24782ee289554570e1265f42def6ceb5a4f5e457a5b47b3517cbcda12a7d004d396076e111165e93d1a0046798caf0b50bb15e19095ab795a96bd499ac11deb353ac1a57cfb30d2b3fa73479528de04069f7430ce8a151e637cd5acf5d2dac982d009060fd82c596c33e560192f52355cd03ecf38274c66c4a4b7e973d5bff6de2091d0f232027f9277e191f822edc3c880c1503cbb2396234e95d300d874dc2a88a89fb96b313d2e0bb1e8ced9c2cde770ff7eb996901b5a24d4d5377b3dda0d6fed9249b1efb212e4a217b3679c5da1397185f95de4fe1ca38e34d3f884480fcbd7e81104a512726ca83b2075b5e7b95a530be143ac854c237c683ff758c672b1d4db47b3bc6ae718af6d9d6b8867333695230451933898445145624a86fac1c328e7b2921a04be63fcfb42e4c8a2cb5c81d13f18eaff8836d3ce8f3720abcb696f01a1785a9ee30187324ee35cc19506ddc1ccb4bdef8436d02c90129f7d8b6b30e8a3b0443bfc0f8f5fc245ffa2c314f2b7e06d69f90f40fd428abb237fb9269b5b2b259bb65821306a3c287f5b83ab2b94976f17b59e188a751b33e4459916af5fa835075a885c351da6be27110ca688ef5b70df583269b49abced391bff5a3a8a0142a6d8925ba2263d635d6bb968159c23a7cee2a28953530284ca3b529d9ca38235d1e53aeb16ae05bae256d41da6c812b78d23e01c986665ccc92d6cc6222d534911c1911bfa586f4f480488014ddbad3ff2152fa9e3f6854d0c6203c6b74f2886b73a161463b4643d1fa8affc3cb5b29bb3dca6fafcbb0c9d07e75c5c9e28dacb23d1da17a5580b2774333f287caaf318ef790f830f97953eeb04e4da2a8b46fbfd088ff28f704480526560f2f65d70dc4780390458930d64260dfa59d9df29fc5c2cc8aa3998e28790dba30f17c243ecb51012a92012cfc25f23ba98ac9f54c484513d493c91fc26845622ca0b50ed2cdc651ef0e30605bcadc602b8ff3a08b2ebcd8b9237854439c56b8987754b233c42b1af2ed3aea5c875af9d80c0150b36f5de1b29670b8502fffa0bec3704e7c8d8806363e9efe86986f5dbc9bf2d9e71722d5b8e0fc9db044df167d84964746768ec9d32f2921b766930a3169e0b330f3a52dc2f05449059d859a67127b94aae699d53a2264d4ef4da750e0d330014057b3943c14482d964585562d46108cdf3ea73b7197fb6ff60a39da6db8119afd4cbda6519f950b983140287c838a82a5fc55d6b0e6aaf565720ba9097a47fc64744eba455b7929a0d0d91e7da53ca602fabddc4c7c67a25189293ba3ed932d521f344244f015069c0e6e295f5cdaeb13c59f730c1b4bf5edecdde96b15b3f2eb0583f49570dc87ef7a5026b1897821ddbbbfb8ea0a85fa926c7c4c3827f63a5217fda69ff13fbdc8fe14e498106713d5d06024e923a5c031b6f61dfba3b1ceb138dbf9e86e78a2010deb544fb93a3ff6df1075c86b425338e626e8dd2d80bf1aeed72d32863c13942050e841d92f99dbe7b789d21b9f55ab1727f64fc21e797b223adabf13d2ecb2efbcf336cf68bbab6cbaa216c627df86fbb22542f6f0fb4bb4462688ee85334ca32214e923348f769a987c22f9b58eecb9d3d62b6f87664cc6eff5c957acba9be9eccb1068687dd2ad9c1d290b6f7453c30a9aa5dc056ed8a6f3154556fbdb09df477c014901c9991a57e3b2a74529755e2985fbcd2d4accc0aad3ea6b508e739089890774edb99868f9d53749a6225e8b06ce45f294421ec6266a5289de1798df152f079443178a97443bdff2cb2af1d2b76e5d34dc7a22239140a4c6866edbc4daea46777b432302509a9159b19fae7cd04fb2007478f77bb319047a8733712e05f87661ca41c1e3ccc8f8e7f73fa48bd146fa16170852b0732550121e4ccc5da2a7be03916df8f26ad04295e68e15978458b963ad33a01b051306f064638299eac6586115b1a3765dcea9309e9606604d504d460107b32a9245af245492105f32cd3ba4f2e59f92539ccaf23a9efbefebb9c383ca5fa3332f6dec5f8b2e22199b5450e71b1bdda2ed230cb8e639f28a61e71ff0deda27d6c1b22146984f9bc77039570563a670d84608edd4c6f6acc0ede51a8b801251add325796bf859eae052deb583db81ef38b5a6b565322aab577801888c02ee7252321b53efbe69fabbd0fd31362004b664c49debfecbeba37d1e3dba5849d8f783ab069cc2b789f17d569eb604a42827774b0582cb98971de84899876a33ab145ceafb8782450de08858cabb9776b2ed16bcdaae67b06cf0b70475dfe4f3734b0bf23ede7c7e86b9429043146358491f1e72c844c9566f43fdc6dc7ebad2c6d140f5f09adfa17ab4ea4ba53d3a12718a703abd5994c1e5a7b1fe0ffde61ef697a630bd35559afd9f0011406429cc2ae93782f541fac14127af20096160a7f8fe6438fe34837a0afb7993e3817b34b12ce978688e551d51256cde50c7795f3a228b7fa516115d8eea1383d2a4e6ef4e8f0ed9ed47a20eb425e3d049e4cd89d9758194a95ed337fd1ea4b32e1eeea32b4f5ceecd4462d8ca405e9d83cd34b2fd84e40c1a7a0d1b400d11cad7490327340146193065f208a15c97381a020c156fa498d247fa4da591dd0c40b0f6a8767b40f2a1226529b2feaf46de88d28e4ea119d45eb029fea2f1a948912a5d5bec100edbebc1af791756baf1cc138119412b20679f027c88a75e1c0f7671eb1b01cd474041590135f56a8ba43e4eaa776414837b7f4eb9fe9a4d8c0d2a3cdaeec7b45f4f45af13770845c66ccad719bd93777808b8c206dac8f98afb39081fbcfa1e492c24f495d294deef9c274399d54c06a970a2f45f2f1744e834faf96f36b4de02b614cd164dda7b506cd73e5a895f43848ee7e42051c00ca42dc8a6b718182d9cb24184ae74158ddbc6069d6399f87d1b7948437af0a22c80ea55a13863462157a949fabfe2499cc13c4e8ac3dd4ba4fcccfee6745f0f5a47ea3fe45ef274c8a506819d2919948eccb15af6544167d84663a68dbea7c74205d8258dd878aecfefe3ecf450411ea68ddf300d7e06e4b194bdae725c0b9fd6855e0c0c1d56df2cc8f0ae04f81b53b21c03e759d20c6603127a1d0d1c7c495eb3bdb01559603816dd735a483fe86998ad7b1b25fc698ac09785eddfa6aeeea47526a7225e8180309ad3c30aca6b11dab00d3c2227b6aff31164feea1e9a7ae27451bbd5a3da5954844cb0d93968ed87ed51983359e40326dafc83d1585f463022b131671fab20ef10ceeb81706a09c3bc444983586203ad2077ee80281b9b29b1c840344fa08df8f276a0324a6917b2fe721f0387d7e318ac344d4e5885e86bd8ea310d31f13c7a28c809efef4a0a5a6cb3c9b20be6bfe91bf6e2d62fc4cb7813fcd470915adb7e34f813caa81b69c4ff51124d3228d6924191fcd2225b5ef84fae6e3a3c5f415e824a3c7ed2ee7b7c12d4a42753c03cb204801a7c3e0243f90b7c289708f11772fdd748e6141db2ee4832af185d145bbbdca90af819bdec62ad30dfef41d8eed69ce287c9562aad857f02d8e3cc1c707bb03409042c23015fde2efcbd398d4c38a1b8dfdb204862957e84dc1758f62007146ea736f069f4e9cb245808aa09f574cf5571037d43fd99184f1c71b9bd9cd82d0dee1ef0fafe1acddebd8e8f251b29fc08a3c7b2ff0d42b1d3b1ec8b564544a289a1b3b0498c1c9d899fa733827875203eceb1e12ea256b43c362d973fbef543400ce7e64bc1cbda01864473e086b72a7f8d6056e1a0cd26b11ea6f1d6581cd737fdaf02f5b4043bfc19cc76a18b97d568a513a0cc3d0eabb183ded33fa3c60c06d7dd7ccc7f0fad1216e2e69956e276538df839b8f2f6c4a21573aa46216c1f6674b3350397cfe0b4c8d16fd57b29f164949792fa5da8145e076c496531dd52f8f3a577e496bb49f640d0612ea6987fd64ed2cae296723379e600c29aeb18fd8882ecdd7efa7de3460e602c64af0d768208684995d922daac9243b7a95059160a6fb98d24a1e5f53433c79ddeaa7810a1c1d7067e0dabd049f8ef67df1afe720fd2d7caa17d63a6a85a71aad24d174015100b2fdddc445c5770cfe523d3e4b1adbaca45abf940e926e52679c585c87db9e84813dbf0e67f9c9a0399c736f2043bff01fdc5edee2a974a1af51297442247ce07923a67cc064d5d314bede198345067102f13a536ade38f9eaf5bccee5dfede2304490dbe3de46a7ea4163f965bcdb1f1cd37b719a74f9d1a728bc48c4c398511c81003ccf7db3800aa616f9dae1a2515234ef9d03f416e83ded65af22ff750b941ae9c98c68c1871e569f46c7750f1561facb9c58192d54871d82a1dc6c04172601e34bc2abc12ad772e4fabe05ca546046073a441984c6f781d6919163d108495df5f35bbf97fd8051e3418239599514bee13b11b7d2d2778cf08e682238ca91ebe9b4f5936b38404f0ba8e956952c0063e2edc4c1db46bac1603190d23594eebc8f4bfd466481bd9c27defbf75f7e56f7626d1f56c2a26f144f5b3d9bcfa5c8dcfcf14943bce118175587222366e9cde8688f374dafa386a863eb74a8b019f795c57fb1a3f838b97804a34d0a89e18d9e3551223d9b5a636b80a9cdfc533085ce8b1c031a0a9708fc64523e1e10477e34619f1ebb2e4bdb29d9a69d9263e49b6f74ccbfc468eaaf4864a6a8019f4f06616322865c1cf47a70d8ec3af564e2dd210e857576b21b5f8fb4bebfdedac846febda99d89f64afd783da120b2ecce8ee4b0b9756965b896624568215d6826bf37e5cf3ae2d17b217bac6eda7bc7227c9ba2cdf463c24ddae046f7fd019847ef09c565ea6ed815298a982193d35a6a4a2beaac2ea417db7b4b45c9e70fbe64883b4994c391f5bed93f0e4103ca200fb189bb67831307264911de29e9c2956df961a1a7d5678238f1564f24f5b24505eafef26c6f7bf23993d456e4de652c82d5d6cb01f32096e63f59ea93a50835051f1bd6cc37e7c8d4dc915f9968e143f97f590a5e139c6d490dbf48e506dade1d4592a2f3eae94991539f7e47667888175affafee720360eb66754da4a77d9943433d7a196c03a147fb7893bb6a27a9498c4005566ef73af97526aeabfeed5a42c2e78f823bbcc13f5c06e6e4316088ffa3521b60945c041f30cf1f41550df03d51868a0baaf03f74b38e08801fba83b0aa7dc6c50a4bfa16b567de1a5cd37e88d4cf95e0764a32c9a941b8d325d9af763dd2e8e38c79fb22c8bf4d8b8f0f5f7b8476f5784a501e5c500343f43c97a929e4a814b592d00a78311103ff8ba51cd1c4d5962b664f2ed15f44bfb9ecb1a06b965d577159afae6f3d5b626f0643f57b0f2f0e99f1ecf6b4f04660f39574d509803a44ce41a406f62c204bd92a578350aa416d0accec81ed3ed9d817b940fec65ce36687794edb96266ec4c74172738ab7d8a13d5cab947d09cfc0654318a26ac00a07e39f943ca5b0856d95264b320495b6c95aee2039f37f7dfb2b0c0293586dd52e0bbd5142ea2f2dcc49598db1978ace2836e3716535aaa41845ecb788aa4ecd8126a0325094215a41598ac3509944b6fcaf9d0f4c99e281cfe249ab6ecf9fddcde21c4149189bf26280110590562b5d5dbe3568d4aa3cea2cf4a79652ec9b9d9a0c9e9300b55622f82a14b5e2376e44a1d0360345504bf8e9ebff018065ca7bc29479e9938a59ce94113a52f196b62bb2a0774cfd2b0e10f3108418e0ac427fe41b68f0af8cf630ae091fb4b396e51eb7e25be4df22b6b3655372f3e1769eb04b32a83f36778df4910e0de08fa65b743280d2f6bce35a834aee2fff3e224a89849a3095e2550939c69fbc9d2e98d8336b95f71527edc012d12161d933b591748e803ea20cd0d0fc9fb7f3c8d05b5c3a58b630b34a80b8579c8bc5d477a5a2ad0e9122ae6557fd1318096c9ac5f118c318178f8d5f1c7eebc2995847e7c89e5401bd275b0b69c9aa60a7b020e35e8255151f5beb67c4815de29b558c3c16502533455aa4597d3b8fd96c6af2f2cfcac9f2c39701b2bed034cc48f0624d32eb3ac8cd8562e574b4a4d4ca236b1451c1f985355b05e827c4ce5ce10b43158f3e25040d9e37fa565513499030524232ec2013b3bc087102e30425cd3b2eff669664fadcfb097309c3dbd6f87cec688931240aa355b4ab27a73055d2e9ac0a6dfbe8514d60d111c04117453ca8f8faa66ab7d5a16a91369769230cca1f012fd5511622cec72794735c55fc4c418c6667806a5912f3f6d5e3de09f420c10a4357acbae8cd2277416ffbcbbed6e423af281e90fabeb73b4a82b448f5d13f40b6d612413d74ef78caa95ed34f80e5b36defda11c1054f2a99ac047b5f49d4b758e0c049811c87997b836d06779733c0022c348a1100a03361e089075554c7751f98f6cd2a1808214df1a867d81300fe3651696b09a5bef7408457bad62fa36474a3adaf73338114165bc5fedf0594e3f412f1d8850448859b62332781768bbcd84a98504c39e3998bd148b4b1fc45922d952fdae05e5923a56484dd4e1caab50be9d9a9a6b0e83f90d1cea6291896a6caa70a0b8b51cc162786f6db3df46aa1bea42005ae81b0612774079f2bd343d8342016d3d80d673bc8274646b13d7fd40a4c8a4362b4b2871df95e11035bc48df2c4991b37191be4407645d4e7cb4d1babe4eff8cfef5546ed5e9636ee8efdaa8eb0a302c368fa17eeb8c17993175373404bab7a14da02405a288368c838689032e65544d07c5ddb2925e2257d6fca7411e3b1c8693ed711c2202dc4b750a0b262e49c393a2ad9c47c91cb90e80fb45c53bdc5720fd70fbe17822ad7b9dd7c896f188e2d40226fc885e1e801fa28b13d5646c78259c9a79aa292d59a83f40cc3da9d9cd632fbf913c0612fec3f8707540cbe80283e926f12bf29185d3d36ece101aa443e8bc75496bd270ddcdd65ed63e86bbed20a2a65264d70ca702dfe7176f2a0d09367680c8b2c87229e05ddd505917059f1dd017a2fa33c0cda61cca7dae1d6079bc077bba666057631956d0e9f95ab41cdc227007736e83c46d4aae28647c0b46b8870827a74924b147b363726a08af45ede04e183d26880e769a7c2b058ed0260c6d37b54c2b89e89706b65bab8edd5912dfef02d0ae6ed20cd3131ef3d0b6ddc6914a21434e7cf32773dbdcbf75068929765a823cac4f44a5da0faddc43602dbbb172a2873091e892075ddf99ba709d64e47abc456e923eed1b986580086ff1ef2df26228632da131ed57f662ef30b2d5a822883a044a78099f0ad856c5a42581baf7e8ab2db16828038d5eb2cd2eea57dc63caddcd86ad532cff82743e32d81224890fc86790229896333e46a2603baaa62d04d035df8a5f2530a0dadf46b47de6ec34e25ce2bafdee1ca14b6c5d4c007c7e6940df38386f474dc9475e037d01607f8a7de40b182a8ea6450a5f0cd793ee326ea0dd1b81df9a69e05f98a4fb5b5afdc04c505b70d887ee884e340df5c7ee98bcf4a5459be35b73e3994238f89359b35f37222fccdb4ea7cf2d95da419f736042214912d69cd1464bea65795b9d5803c4f55609d216aac984cb4922cd74882d7f697eda9cdc64710920aaaf5ffceb65b7761d79202dece1e313d64676326927d584f80c25a23a656c3afbf87e0896399bf09344c6c8b5da878ffc552e2eb4e47bd8d05de20eee2952ac5761d7bbfc14377dac6905ee3fbe33d4473728492b3848ca2dbb0e3f6d8320ce0375bcbe0a377edb09316e00f50dc83cf44b8960e76571b679da2c60ce99068e611c8b595609a78eef7dfd580876e6916b206c811f756a8a73d08ecc8312bbc7cc655767e556a512cfc8f4016218f041b68cf9c7f1a67e61ba4423d82755c61348330f380a3cfd15d9c7eb9b9266930983c4c7fd815f031d124746b3ea6a358c550e1f03b9b02658a0f33060666d8faf8d2987f6703020e49ce73c8ade297eee3c05732d3ca3480385e5253fbe0b13a872f598114a1a8fd2b7f770441c39389c517d150f4466b1da7afc1085748c01572a776cc44bbd4128b87fc5d94f0b67884a3d77b1a22610692ce776e94dba494a26d9fbea1e1ac741aca51e09e1585186e976b721678a9eb31dd611b5163c2041f857450ee298b1c2eec3db6ccfaae46fe26825d56e590bed765c0efaadf83f80846fa0b12fe70a3f783fc58127c1b93fb2c09cfca2ebd4fc38be1e94f250466cb093aea03edca9695f2e4dba556b56702f424adbe2c8c454104f33e9048b72d69e44012ff6e2590bd3009f29dbc52e9fae6fad1efe85a7e6ab702e72baf237413fde4474a5736b1b4713cb8fd8ffc65ca64668ec5e5157d30a1af1cbff203cfaaaf92de7da5f1442b6425f000bdea099525895486f2c6502eac0ec6265ad883c3697d3c918e5344a39673fc84ba757247b6faa33f31da8bd3f55d7aa09858ab9f913808dd785a0176af70dd15596376a75367988c553d27cbfdedc8ba69c61291ba8ecef809b2d41e09a04e7249640b03f118da039ffbd28700231bfbe5a157bfc0a0d2e0b77ecf5258ad805811e78d2586b9c6fe89cd2aacceda5a77aa39ba055d2c52d465dcee91879d12f9c8354b7625fd7d711738e163177bcfbb62d6d48e47992746b97e3455e84c829156e87e5a0992a50b32ec2ebd9597492244706d1eb27010c79c0f0841ac2e08f7d11c25171bcab7a9bae9f18dc1b0dd0071d827f61a38d3704c315dfb4de425929d2f10f76106b86821e8f9f10c59da69d4b545854ccd5caaf9d58004c4971a38683fe8da4e9c69ebc03f5e5e434149113b6e37539ea7c54a48c79c5f61334b11b4f0d8e5a295f32963fb1e3cdd1a1d1cef290460aff2bfb4d33642815c965971c656292516722dd18d0df835fd1a82f6e556090a30ca8e1e2a03b7760dcc77d122588aeb906c92074139928e8e940fa8801380e8432d13f6a689ae540a7e7d62460ee83d9774185e342f590ebbc5ddb5122c116ec5e68e1c2cad46e988b30a5c03ed06a50316a607953c249ae32ede6842a8001188159ab33db5825ef0fb6bf3e043665d1703eca4f0d97649aae3ae8a82db51bcc1589d9eec6cf2136bc1f2f4a26bec224eee0d96516479f5b6d28c147d13c07eab80c2987f4548111dc5c23a1a9cf8b64ccc87b224a1f7d2353f792731a92881c038fbb4e76dbf84f27e6c470149cc7db1189b4b0931628e27e73b6e1c46de1371e0a2dea5fc282fa3d6bad562e88800cc64c6003baf253f9de028eacb03e9860a8a514ef4e2fd5edb7d6f2ed8eb8d58f81cd1f6ef05b706e22856fc29b550973b9377e31314bb36eafad66146cca4ce39ad9f971a1954e08be464e6a525be21775b6b988069d3e2e31fa9b7cc2b77040558078784814577f7bda4a76985b1d759334c4768d93e1946040a3f41563fbacdd8f6ce3ff427fed432fb67f21ff3fd10a5954ab8d4fc7d90203f9fbb1f1296f84028f46ef31fdbab50ae996685b5b82d37d055b02d81bed02cd5dbd5a9875f9de160f89f4c07604fbdab1032ed96cace0a8008980f871a967e76b2bb57f263c73563988c5350809aac967531b94f6abe6277863b29b83078b40bde72b287c106e67c94fed74516da982ec628a8a320ed7757dde1c3d986a43dc051cf1127c4066987613c465c3367e40399a693c1753d37f286f42e25f9a51629e5179770c6d29c8cbe832c383a2ae058be92f016b0ffd67a0fadef93c13a6770ca50855370e783bb763f70628904631aa1120ad7d72d8770cecfabf3f306e5425dc1914e85a4505afaa4130c28fe275f33152fc263c3c65cf7a8915f4e7597f4afc1263ee72ec8fe0f3a71fd8311594cbdc61067a6bf66e8069569d3ab15e088e59b629a4be2f96959722014a0c80a6d5963a4f2409bdac0cc964fb5b0406cc0c8bed3001a22a467f9f774eb99892887780dcfaa485c6c49cb4ecc4e57d580990f8e45cc6693c2fe3b0c48d5c8c7c0b750bcb549ffecc86a0785a1a06608c6da78fc5ce9e110394f8c96796b4f4077fb3a0b8f31f343afeaf133c19501ded94c67a35dcafa64bcb42f90bc7c7789a2adae4306ecada4b7893ed1445e70b44887020a946cadd37d449cb6dc30c1a304d75d01711c509dd557d9f8c4aee177663959b2a2b35f53d07c0401e67b43c65ea6d48f52b8d0a4cccf258aad90d80f5c77d62dc5f5b859b12d094a485ab606ef048e7420f6cd2652a58a1ac78643ed8dcc244ae8ee20335cf6dda3a01cedaec40d1468cdb9b05205c6622267ffd612ca6f484e4670061f55c6416dd7fddd560e8fe3fabe2317829db058e946c53fe99aec284818e4d07b327c207f664be378a9a14a7985583305959b2cbdb359642946d7b816f439f20d27262494e3f16acba57eba33e24bd3df2d90b26b22c1b14f8abe1b57a3a889339a0c36b477777a7835051b198d777c4b54dc21cad2e64ff6ee45dfab02e281c2f3e7d56f71240fc9d6fd991c89f207ccd6d6ee99352181c93e2a4180854839bb77a5239db2d826269763abf2e982d4ab3ea3aebe75b3ca955e582c3a4e200516a935fcc2cc9e6e0ee49c1ded1d6468062902bfdec61a1e9bd2364843e9e1f61a7b7d1f9b0906d3a73616cfd1106b6e4a80e6c4609a9c1f4dc50f60fe623569673bd7e2072b124f58e38ba8a8a9b07ed7ec2b601d328f941752083731d0e3a154a8282cdbd16425e262b3888011843f1b8c12ec4979de433b73462025a4e7e48afc7a90ab03e7bb4733bccaf534793b0f4a1954b1e528ec1cfdc809576f1ea6d419f6eb4e62fad178176bfc1709a9ebe28d8f0261ff749790dff76217676f466cbb041ca3a55eb7398c0d78915909aa6e6e8674a40f48653e80389cca6915d4195a62c69a4af64b4a5543746fe6ab68f5c63676f807d4888c6456ca3550f767086c318203d2b60fc62fb6d1672bb46551e952614d410b6387e35575be3e3544121302d6676a13f58b9578f576d53bce4697bccaf5aaf47eedb3498900c2a60d3bb25afd2cd5cb4e59dde9ce40f3bdd5e219d70344c9ab7751542058f7dad1679bbea7f3e528d8adae7aa5c18826d54adfc57a2c19cf7848619ec80d398a957292087ce92fde9cd0d9c91010a3a9159ea03ef5544b884cc146d3fc86facb8725ad554edd4a517900b8db4b26f8b48ebfccc3a3d547e0b5541512e5f8925518c6b2b162ee1f39178b15aba0b72513df41fec83eadc18f391326aaa886326440fbafa9a3858cd2716340bde923f59561f3f38ceee5b8891f63816449a22e405c9a6f4fbb6a1fae5791f4707796f58c7635666b72e0d926c1ef9acff989ac5e2fa61399f02490e72f6c67df0b569a49ab9529e88962ac5e304c47819ef9c7d6d92cc460be72c9b074c2dde547f672164a8fd36ccdc9f3d3aba24123840411e32d26b871aa801aaea54388376d87b3434c97c3638c68e0c726674d526a9053c3f090aa6849ae8cf0ff2adec3550422048248ba0c567bd5e59eb2c9db756f97ae984c40b9b44b72c30740b947f08ebd733eb61b6fef96ff8014b3a0daf0905223ce1b17785ed85e2fcb8dd0c3afd9041b716253e231b84db80266748497433256dc19958ad8747cd9ddf365df8557bf704fa185e4b6a0d43ea0de808d55b93a70ed77129bd19922a3cc6c872a2e7ff423b0f051c7a30b6f5b1465b9462fbd1b926a9c8e555f260720e6763de49dea667808a6b89fed7be7b983f1d9779bdc923f97a998838dfb9ca63066b75489e3b0d5718ebd9d786512f3b37700b99e36665c4d855867e9f41a653d983024c3f3fc0d3b02acbe35691f2bc6cb0609c332b7c7eaaa2ccf4e56179e40817d25803a8e24d028b1040fb17105c531c2085989db395d7805e6194ec3de65f01494dbfac2ccee441a510568a4853d2c6fce49a969a9ad6fc3a4db87155b0893bcf9b9c4e28fd9ba83c32e705c28ac5e7d92b35d2c21c39f60a20171040c4dabbea9ae66b4d4929b25108cf0d4777bb42793045f6ef4db6717377b8b8d439359d6d5a70ea69996c6e6eb5b653c67c181dad29e9b30e606af25199e4089e9b8002763d69a98d92eb6370de1e3e5a8c43c597e78a75512a37ec6c411f9efccba55e103f2fad79f1d8eb4ed367f08a91d29ce6919156e3b7656115e1b66f6ace9cb951918d5b42c4b87b3e8be20509db3560e5d252b148464cd047ce9acaf1a3609a27a33d46c07254bfcd45bafe635902ce6b3ccf94d9476b175363f1b1137be2f18a651ba02b53074784e4799b2eef06ca6778b871e8ee4af822f17285fbc1f0f409fe9b7aae767940201faa3a8acc88337b972bec61fd8aafd6f2ae92410c42a6f8847855d439ac004f064c35fa850c0c5f0a14862dfb7cb27af2584ec2d215e65ffa8702f5dabc9aa7a46b49f8173d0348d4a989406c16ae904f131e8ff1e34327df85019f9021a4f4844e8b02477f9d0e557a9caf6e03fc957801210e4a10edb9da2d3d1e7efd49afa1c22a5c024c24e3d03d16c24a2391a05e32e76a033b4e663504949cad6c986b7f5cc057cc6ef6de751cd65f9907585fccf50197bd415c0dd625c58abce6f7ea4693886208672893357621d003fc6574127fb47b952b27f581e1aaacafc315bffb618fa2a24683ce4a13ef0b3283b52d9b03913f81f94f11d1a34fa3f1adc41e072c796eb3882a5b6a7d7f9baeb647ebad577b8d9f44d6f7d38fadde40fe45c05be2b22c07a26ae37778594c0cc96ecc167dfc96f7dcbde5c144e418d5aef363928c0d9c01fcc5749859a3143481f1202aa94d23e51c9939e703450551e3d8ead460e903c2fe0e542ab92c69c01f4404f74a6787704da8aa85c93e48c5d2e88b91fec6dd8c118136f786a589efda1a132a0ef41d5fa0f4e62c0040c7036eda809da6f76b16fd29bfea2d9a75dd8cd63f91e6a76058c6088fed8607efa40b24382d7f91673f1e6e0dbe2b25f11748431efca76a89da2e721d226a78a5460bf5ba14b57d7879a4a126e49c14ae094fde6f9c0a306f422034ed826b7cd8fce2c45fbc9257786f1a41f09578e3502bd44db1f48d99dfeeb387cfd12a5d57ab2dc7e9750f7db1ee7abf9fb73774814138449abe535513fca6fddd318786387fd43439905ffdc06080765ca7cb61021d191d358b78ae191abbd2c6c0908e75d1a5c9fcc363bb54d26da02b7c6420cad8592eac78e2d203d94f48f99d1d455383ec0f6b24f3ff5c0bb02373cd7687c13362270d547ef6e54fc27f31345888289c9a554fd6acea6be7d91ce731b8131af6ecddf79af6d476f933c47831660ded3a0fb481ab15bd9f074d570f4aa90985ef33df000bc51816804c02947c28225b860024f2c455a0267bb57036d5394d6501646d02268b7931038d19da00a1490e1af40a2601170343bc5a8fbbe3be670b19f4e10bf102252759186d1a40aaf64daf5ce82b909dc7713ce040423207eca2829d7f3c755addea3c89e6006a969fe49013cb7257ce546af1e5e40dec578d6ccd6ab8c5233c3b31f47058a71c0c8360f4e4f4190f984cb6f3b7cab1553d0d721d2c9938e7fc73fa170e3b60fa913f52c1bcaac9702af9d8d05f3327e1c5dbc794ddafacd7e117c44923370a01a59b5c1f3a86911b2a6848b227258177e4eb583ffbfa21c971e9aee14de127e5b822cefade8b41174ebc234cc5149a675085f8f7d14673ac5de9119416b6c53b6dec6ad9ba40e6f9051b2b4b5de3a2200c739b7512efc8c6e17dbe983ba337eec0c9f6b162486c8d7ee7e3f080c1c25fac960e765e5218b0c0c73e3d4617b7dd18aeab6bbac03e3c0689410a792f244548d4cada4c12f712d56eacd00cffd81304806e3a7897ed2f9f56b4b86d996f44c57974d2228bccf2566613df4d43091622b4b0bd9c633f5c709d20dd385ac28274ff77b01d1b83bffcfbb7ff7d3a2cd9cf6bc31a1bb0f62136603f798b28754316bbdef93cd6f7b3776d86e9bea0baa2ce51798558c8954f02a9b2c629e32c4cb5ff0ef1d2f2a067d05be252292d39967ac1e0a615e578cc0065f508c4c0200435cdc246384d848a6c4136b5eb89f3b31bb81f2aa3a5804cb5b51a9f01e05db735d35159dce4170634236a519fbacb6fc090805b4f5541af7e7d6aa5380a781d1e487075616adb81797cc115370608832754009824c3b53ad78e2b3dfa5494a8d62b13bda9b56daccf9d677ff8431a127301c60ee3a31cde4ce2b4c07b2568c257d589b17025e704bbca6a6ac449099b05ae85350dd97703738d538e90f64a277e4229fb056b8bb5026177a3d4fa2c256455d8f73900dfcd060088105eec220da325b78bddb8858a5695a111db7316f8d99070972e6f458df3d8bf570ea1e6e2d938c82da776cd9d9aa0e9a7dd033e6a15b7ea7ce891e780e65e5e96b54b535019a6de574d78cbc7a2cb3b7addbf2a1ed621126e6ec41281b84c51bcaac1ac8f3c329d07ed0934997d0ac935a5bcdc24e21cf67314cbc3a4f3b3d9e396d8d299e4fcd198415909f41d3e3c564e97c645ba37d76d8f6a50b96ea400a89414e82b9531cab740266488b07ed9b44b0fcc4f9dfd6b4dab9de1390d26ef2706a9c3d6ef818bb581f64e9ded7041e0063bcc821fd247ebdd4275aa6c3dde22105e9b45af83a8209f6156ad9fae5d23d63ecc77cd4b8842080d6a7137e8f1172351d9be97afba3140248785538391e341bb75423dc7af4ca5f7157c0143f30995bab472fc033527d7cfb6d7699c6d2f7bb623662d6163295eb208817f0c1ac7de259df1f427066fd1c1adb30672902f2ebe522f49f8eed5fbdbe2beef9a9ef1bba0ce524b8180663039b27b7b07fcf956132b5af36b806dc676e92c0fde91e6d9c5abaf0457ffde2de2985d5e294c43ae399cd5e435e98eb21695355bb47b99b5c78abdd24a7b26b46c771a1e53c0cea3f454a8399cd8b5d9af1a2efba6366dfb84837cb7912327fb2cd0a7039a8976afc54ce871dc993a6a6ff5f2cbf06c74fb96971ea588b721966cb1a52314684da7268bbfd52d3fbad1b23a375727cfe4d1556696c4402541bc57b5ee69230c6084f82f4a0fc378521a620429e6f9ac4f64884b992fd57d5e0751d77d9d8b96d106b7f7683842b5c967fb239444cbe05e5b8c65b8cd5f10ca0665b078972d0c03bd216e6f6b3faa7ff71716319ccc3119c446073cca2585d214dd8e8d46c7492fbb7988851272291febeda8b88dda9d758aa26af656947dcb1a2b7e255368aa51d108560e2a96fcf4e4271569486390dde8a0411509c60a40cc72a4bf5268c40e68d472e4c51775372ad1fb80418a100d475174e2ff8bd26ddbbb54b294d5621030eb3da38f31ba6f34170d6deaebef486b41e9c1870e34f2350e72b46e637b763defe31afec4bc91cf4c06f2ef78aecb94d4dbbe6219091bdb08fb89cbcc233fa3483ea77efb4a1e0ec069f0722b8cb01c9540c167a4315ab45732d01a45323d83d07d0afcbed3186ce677655b0d50d364fc06899936a702978df7013982717c7b0832946d45402255b6dc64bc8d55502157864bc8b329adb6dd90126c6fa92e769530f89b52a1eadd490c1e32db2a9eb4c1f4d7e3aceca40de50ab6fb256828f98c52bfee0170a65500412858164c0f53f96abc66b9077efe912ec07d17365741bb63921afe82bf502289ae1eab47b180b8e6928d6c57427688c45a68440f23b177be4b094f5d49fa62dd6682478915c5907cbe4349e11dec92e66510e021214de2a4453a419e792af63a81da37fd0517863f5531e7a03b08859de13133d527d8d07476daecf1a66a6eda76b5213d96e661befd7cc8f29c418c8fda82d45a4b6076ea2a3b5e2a96769c21c7912f0d56d369f1c3033109444d55e472839cedb6dc82d43795dac04594a5a949a26359aac5a67fae9254d6c99223899918c8bdefb19486af22d6891398f513a24b159c7f7e5227a3051e62695ef2f619287719f069045f882c7b0c318129a4ff5bd8e304bd9d5d148eb395c99d2cf70d5beb8c4d2555b74fdad35873b197d08eb81fa54ddcd41d2680dab1b8d3490c00585637f61e52f4f9c904b6903368c618447654f5f80f45ea52fb3e34a22f9a498cb39df46aa57e99cc6726d1faa08d921be4a64399ec0d3574b83dfab49f2903e45322b14398668a163d6a3b7c9e15325fbc24dc77d56b8c579a4fceae92e82ff13357f767518cfde4dc1e746dab5784c30e860d242588d1587e3a2aaac9453737ee6fa5994d1991261881da52f1538d587d8f239f56b7a98bed54c84d3b3c8058f1d3b2cd76249092d61665ad152301c2fa7ff5df6ebbbb3e04ac206048c95e352e82f3fbe34ac234da0124a1c3a59da58257f992db8897a3f9f016c7415ad6b3dd1f4f00be3be79bbf3c0d0e4c419ce0c431621c0d13f384965171b1cb6b18191c1a2788b9efa06660b574147955430f47dd401b5a3b984d3a97646c55c9eb28999f8653b3aeb0669930e1c952d69109ecdce69fd382cd641dfe724740b2287be15200189df727888ad4402f9a2f16d48e6b3f47e27fe93776650991332ee9c1e4390a9cea4e1c021b1fc072db1583fcdf50347432499586a4620256b7a845205521498b6cbc8afaae41099e37b450a529c6cf40238a5a659706aafb8ee6d9ccd7068f8cd3697a9d9cbaa9d29b85849c57bc27e6955cb7bba2850f3f9b907c5f5f754309ce5fb50a991586a791282d8dc9db914cd523fd12ce422281fe72290ddd1d766f5ffe2453daaec36a0931f1ec9514545e239d728e713997694ebb919ac64bc7c364139663821f4644725118ac38c5e31f8953e06bf94bc1229f865c276ad927e6de6d7e32909bf8657cd9d700cb024c976edd11bb7510fe306106212f4a4e6d22de0d6e8a44c8a94c49935756db73e8fbfec5bb5e4b3da34c1dc49f456404f84d0d6478eb766df521099f3fd0e46110c97d950082e9252af50348fb1c6b4e74b19aa6417a4f31af8279676d3aa87782b51ac55fb554fac5774d88b9dddecaf0d3831bbb7a903b40335632e459cdf7fac8499b0dfdf6f0aae3ea7c56ec4f6079d348d5419cd710a1a790774be8cb493900b317067584abefe71016dcfd765a79570011a25d3a2c29768ac8a9564e90fecd31a5bcf136e2845db32bbe57f3f7f8367dcb10d8dc3283bda0ee7a532babe96e2b72641c39c8824df0005988a382c1df2666724b510878e2d1b075d9a41855d7beeaa2206c053e8a83fa363599f501205dc6248a48bdbb3359f9153e785d87c28bde663ffd8fe612ed7dfd7c6b4438058372aecfaaeacb8327eead20250c87e5e9813ccb01a7f165161b8c06b2b99edd3af78582dde89587475547dd2f6ce288f171f1d3ee40003a4fe2a993ea90afa27d2369827e5ccf1d3f4bd109e14403d055bc38a0e72c7e3d9d6848798a51a109560f71430521b73c28390f66508c8eca87242bc57812859a8f08ce0a396051a1c15e1fe74fdefe5a9bbc92181302605749022e77973766d21f8b857211d6220209d2e6b60536aab9ecd030433fe5b6ecb79e3e62f8cdefd8dbe08dcdea7886e0a20a776155d9cb0b015d534cf94a050bfe9c888dc63f9e7ffa97eefe586b8ce77dfe6eca0db216991633125564ad11a0771219f0b6d77819f4cd4ced26eee3c5f7561fa56ee60daa5176f863eb713bf57fc27dcdd33463b01efd96fcb31b808d42dd69aebf3aa73120401becf4a2dd3d1a6c4b62b00d6039dc6055aab0e5c53258a9fb381201165b6fa37c13b4b6b10e8e2d9853287815e8bece7239217f77bb8776357656f85f4191dc08e943b6f513c20ed262c0ababb9af973d63ec0903b7535ec7732becf0bee76eaff302342dbc2e8e6171e58a16cf4ba038d97962244a520e79484881db93b87d0a06bac19fed5984a06b9c9e7ed534593280ebb8f71c7ebc6bb007b7b14af95c99ab20c941b2dcfa167b0776fe7385cac51c28e81e311d5ffa54b4dc36d0a02b25f6faf6d4895f07b6230c542ae458fcf3a74baa4d2e166e9d85fb9e4cca244efd56f01f445f3b8a4930796cc9457240198c4157eca10813f5878cc2f09a30b4a1e890d3cf4a2f8d7296c46bb93064befbba08f5572778a594645baef27871b25a5e7eb5e7dd4d13ccee05b6956551c6bdb1317e5bb992f44cd77d7b5e4fdc8374fabe0c3208f741ffb24eb26d421050774b3ed9768366cd59aaf2e85d80f55939011d2966e76c697c6e1900697b7aa17504fe508e6d960b7a6865a0edcf83d1b1de216afafb2faeac8b4e1885567e4c4ef5125ae88daf3c943fb0305507d9f5305f101c90f53b2ccd0e29c2e8c64adb83546d90e353514fc8d3eca714aa13d2fa45815a6970908e0002768eb43f8a048d3b5b59081226c435c75f33916b7da34497ba34bffea9e91aaef672d71cb62216375da1746092cceb96b90ba8b6dabdd58ffa8cfd89086187d3cd36b75359ffb1d44eccc68757e0e961353d4b24e25e06a8ddcdc285ad4dfb00c3a6e92e00dd8bb12788f3cc649d913a8e085d5fb7e5d8cfb456223416bec41651dd19e280b1d68be557a134aae4053092ef964d552e51f304474fc5d10dba9d97f39dec8b5c3f278fc2f416c7ebcc3e23ea78bf2e159a18a18bd3cb292d7c71285f91cc02b9d47f60e0a0a2bdcc1d58c9c7899052ad52faeaf23d0ded271dfdc0ca95b6ae28df38ad80b88524c61475c8feaf4576f1dc618fe37a5f269293c07b5ebb7141eeed6d4c0c03e05d8e09fdd1a4cf6340c04cf75558959b4c192d538b5a853db4ad623694a119c9408fa5dc7dcec5f3f292f4aeac2ee7727f2d9d502013a5bf52334c6b6175fe30958bd51d7e40393b1d09cba058e5b5d751805b2e0a3a15ebce9636a441fd6858c096542db0624a67d5853dc7f0195a92c305553c92d31131c7a129b40ce4fa78295c4937da56dc2bd8cd236cb929f22fbf026e3f842e908f0c8290e956d2debb0e92ec3be4b95c16dc98bf33b34fcaba41033a0de8134aa9daf4469b9a57186cc030b895d7386ae9d4287713974630afdfe0a98dd8f610226c6cee2e95e672bb33f68ee5ea928b913f0fb9537a4ce2fbb5e353bcfce86b4f36f69d1d5fc525c1f057fdd544e5acc97e053daf44d8eb1f74051b002a4a865e885441a6de23d8542e6c523fc988deccc6388aae54deb773b0ae685cc3755c30f323855313b3e6c24b22b7fbc6e63894d80142634369fa2cfa1d151766ca222fb488cd520b7cfa7caa69bc804b3d62cdd40ca63102049684a66261f30ed22a1789cdcc7daf979946105e8376d0afde38ce3e29af5c4b32b5dc34944b8b0964adfeb4bab1886892402af6c67612071f067c5f58987b64deb60a5c5f1a1c1ec58b137c7ecae0189cdb8a2e662c45a678d8344f63be810d18f74893dd120e6850fddce869849db87afe0e080a30186729bc816241da1f0162e08707691bd8adc4ad223b2b1b6b51b232482c4e8cb91bd04ac5b1c11ee43030c301554a53f0666bb74956955d32e07e1e065ad17fea8d614959469b6445757c0f3f6af524fc3f3ffdf3d85ad97760c00a8435546b5df5b281c14283a6b229a902a0d5d43846b11fdc90ae7974abf910b803587de9bde2066597f2941648ad90bde2026d5cd582daa984922f72aa743c4db64a3badb784930ce064ca8d0db773f91a1b0b2107aa8ac09c6d99f76c56bb144f6e8ef9c2382ab702c2b368e6915dcb7e2df5795d25a97343e835e4c19ed64a22448172b8dfbf093f637b590c92e9680b240c6ef0cd43f97a94ea4f4926d1bcea6bac32f68f058f9b84bf83b91b250df60045ed8755291631b1c0b8aa8142e8bf72d1f003e13a8e545cecb86d02985034223d1accd50c6c62c648d11a155f63d6b6d26288ca8b263cd7f8c19952232752ad787f2d1c2e00d38ad9d673ba1365bb0ce7743c19d810a34a22f960cc035b5138d53df38cb2cdd3419d2fdf5e8e6944845d734ea202ba07e0f8ae7b43cf01f3a839f7c7a46c922b86964e3b3211da78c476c2e1df6e8fceb880b574dbfce318f97df76a7c869994a19f0de408d47a8a9c6677c620f06c9d44e970852c87aa73d82fc02293e542ed62b96152badf4f83ed2a7aa0790ae675951d3dea79255756ede23e01d8ec6e7ff1d39dbf124f42374c7b714b99a96674a1c3802e4a22b343fae61b32cc7ee12bc86bd790427e90b86bfba5e28b2b5505168c12a1ced17aadb8474eab56dea8eb7f6829ef1e95ed727c10b02270904c3260df7f3af7b8294cf5981057c3b4d608e65b9b8468284f958605f1b2a6bba600cfbd0bd949b819e206ed3f1a9aa2d2112a1cc3a7e95aa0b439e9dc6483043dce46f99680562f3c8b65615f4c1b4aba96dd0b000e2a95bb5aa1409c625051ac43de98b685167047554caf8595b2c7b202570b3dd916176526cbcf109cc6f5c959d0c00ec1000fb82ed0fdad1494d963a73a2601106d02fdfd08f95d2534f6311d1442abdb97c1aa3534c883104066ddf8a2c2bfbb6ed6b6e9513efb862c571654b8786b71f06a06984331652d4dfd8d58d81406db18839a84d81d8205adca4f134b79fe8eceb2b8c055a16ba7620532e5532114ca5aeb82bede820eabd29c55615fa86e2a34e87c0a75d708900c119f0a1592e4e093f4595542ad93c66353d76942bf5e4302938aeb8384f4194af64fbb59900d61ae58eddc0ae5c56f5c7b7f06e24f18c537bccfcb67889c9130dba4c638444ca2cfd9112fc79fbea54189bbfdb2a23d197b56bd6c43ecf98c0c48af46bed625d797e941cdfb332dd374978542a7c552be278c72e7737c9a7ce9ab94b2e340b1b0e8007513c26897128d8019ee3c832a38775c745c7dd412786e5f5bbff6ebd43e5fcd88f5387dcbc61aaca1090cb3fb773255048ac7e398bfbff15397ce4969e10e8f7215cc54d2dbee4baca5f1c9dac90ba83eef4ca5cbe32f19884317d10ec635a3786c1ecfd8220facf163d0d69f902d757bec111df593fd4f24512dac1a359e140a463bac3ae740c42a59ec82e46f3752a276a3675457a9bed22254ea1fbd4314d54be810b6f244d3894d97baea6c798ee71a2b4ee61daa49459fef2fb325f92f9646645ba9c6e4adb676cf6b3797073f012a708d5e44eb7140903c90c1d29ba3925f0345401f844acdc45af283028c7a1b3d62f7ccd1e93e9e465b798d5ab283fbe67f7c048fc2bd22b2b6037d57f743184f5e3ebfc4c457c52334e163239fdd412d5be86bfcc2cf20ae1dd86a906ad090dd37521e9540547939273171e72aa78699ec719bd5e37e2d8417865827a1a76b3f80c44cb5f0e10bfb14ef55ca85011eef035d9ad95b4bdef1d861ab184ebbd7e6732811fa413be29e335e68825aeb485457ec1db5caabac5b9772a68f261f314fc44655c5a45bfe6198e9968288700b44260334aa12bfa6810b7ef108185f6d9410ab9e7adcd592f07af3fdd30405613a8976ae739d6470e0e7ce92c804b38e0b47df69716c030cef802caf2a197329df98645956a4b7c2e5a43598cf624f0e28afec50b0a29371c4beef01d7e4d2b7ece027f79b93a8ad03a0251adf484a87eef86bdc7b0348085d23a283d6cc820cce132069d2d0a94a7db7d5b38d1db37f0a0f9f0f9ce5018168f39ab184b4dc900471b62ba5e237dc50e3b49f61fa5cedfc9faa5e1c87606c694835145bd24f3c48f06ff4a414e4ecefdeede39cdb878866f3dca8f53da36e7d2889d5110bd6b4943fb93f54e626f866a44010614d2950e7aa77b6f71571d2509efa8097ec5e385f64b3137c29701f3d845c594a229d9d02287f6de6a5a0c9e9efff1ac467d4df9d166fae0071aaa3d94c5924615f9daf7c13342faa1e50ab54934394e61c0e45ef145c9dfbb665f1b8237b52409b3d7485088f9c015519e8253f21f8fb2242f2d7cfefe7a6e3437d522b60bfc308ad6ae351a9e57e53b7f9d2e3675f1bb1931f89c3436df5a4b73bc36fcdf0eb50c863b57a7cd9b1eb90dd367c5dec6c68833bcc3acff7e060a1a51236e3bde814d229544a3bd9eb169024d2cc195bbec6f3fc16cd420b829f80634332c184d90856b9efb09f64a788a0333be74097b4f68ec843a86724ff0f38eafb3d08e72fbbaa411451f97e1a87eec1e68434cbef61b4aac7f0d86b24361ef0fafaea5e32b6618336ef5e25480287b35901d1ed75dc34bfe0590f7fde24edba3aef1c796e95ac3453c88b8652c2df8889de8c6d6744b41f87e498ccaf2741a9c0311793d4097180611d9eed84748574ecd9a5c00ab26ef58331b4cbc9af504c34a700be44393e365540b3bdf8e552867cfb5abf8417b13509daebe758c24e24704565d16e87ef2553853c50df1ff1298a9200d4ac82806dccf337949badf601b4fcafb8b29b4563358484d130e2c61f4f9db6c1ecb5e4eedcd97ab262b1ef5fd36beb541b7ba81a8d25440b5acee82290502ef80730fba48b098921cb7f9d3690373c02ac86cde55261ceb18c8060904d0b9312aa508f0adea7bb988c06eae60d199794fdb0e2ccc3685e8d0f5d1311c88288bb79fd75aee9a692d74681bd0274e2cebeeea7aeb64bcdbde038c2495a151471da6c57e495fac6f7302842a8f6f67c5b95061542fe01f4c8d4c78f5586ed59f9be294ac77dcbe409eb024d3af7510bb709d5314a4e3e717d587d5b6613151e9988dc89b410c35a5e38cc8a2f51ef78472618c126cbc6339006eb11a797eba75c08763c4054933f6880e6fe07a91f05b39fd0bb7573146005f5c6aca0fb49f1f19cc8683705cf0b969328dc2cd8d7881d17e66a288f85b0328e5bf12cd71c4d822eb29d87428ad382e42e8f744ea2c588a827d45268a0755e23417982ae1b031d816d36cabdf4028bfb99f027e803ebb47e6d4bafb712ddd3179cbb2e42165ebc044396494ae4645a05c28e738cff53cce87a69ea7ce0e15b10f9c24b6a2c6865e90b509ce89d10a1df14e50a85fca3ea539f1c47c819c57d05419da7c19591cf0f0955aef0b6688e77b42583e3ff58e7d1ce325f7d366550ddaae70694528cc9dff677ada84cdfc6b20eb86dff84916273ed2c198d3721fb88a8d4953bd6eec3e4ff8c4f7b29f6b29c554244c137b045ff04ec013b1550ec10c5a835ad083f025ba216f6998a0f9bc26dae907bd92d91f456a18a312fe56cbeddb52eaa9f1b2bf694fb2556746ce367dc8c03d7a12bd55ad9cd98b3546fd6aae3499bb5ef058cdf940c1b08c169f0c6eef9c6a1685f386a8af9fcb7a72dead4b80c004e3aebc0165b03af80e154f5838263eb464fe4b6e398202e91c22fb9b2488f0e1d8abca992fb8ed7410d1c1738660b3e00c67c7a0e5b7a9b597c4b213ade305e3709050c1f0c3360905c742f09c596e1c867a883193a34b3af9cdb96a2110ab3022901c744e6ad803248ec27f941c2db698ff12132058757c3bd80a9405640a79d01a2d0d44728a58cdca71b48ae3396026060effde9b2752ba71f8104a0fc0719d154883a0e485a30ac07f63cefb1c2adb05341cce720209eb5c68b3b9966f243efe5982e5757033339a055a82f18eadf12069a2c833a1519f3a5b5ccb679603bb42293c8e6d5c582c018cb6cacf44566c042526e684c0c1efced5d8b8129b7d6e99b60c83a22ce8381e343b532559fc42f1fb73ad7a4c463e061a7fa247fdc873adffb649961bbaaf612b2cf2843ede7882e925f8316b144bdff70f40c20cfb70aa27d4c1db9a57aeecf9ae9a946142e8fd71c345c1b18a9e2d37b6af2ad4efacb382ec30ab6d82a70b6e4f64d0639e5dacf7c7124af0b94d53af1f5dee1090daf216d5ed544fcf4a367b984bb35f5cd8fb6d92c5db95abfc5e7952997f7639e935b31ea79bdada36e362185a65f9e0a0671768500f89141cbb23b9c8f9318f83edb07a99930892e9119e75e5fe1687ab3507f40d39127662d479acba1cc268b153b257f81ca499b467d5ccb8d416bf9ad9cce7605ecb81bb798014ebc21b5302309c3f1548761f2fc6ea5366f397200695733026b9c2e7678be1503a3504c65287509cbe3b0a2b1bef8f3d9a2c55ee5835b6391a76d21c50e525e9d4b2116c7c8ea800a47c210229af5d925e3349d78befc8fe558635302250289f05691d3bdd930f0522bc4a9f4d3225955ea9e2bd17f2da083fc88147b9743dd771a07efd84870c4b6145cfcb977b7a25acf85818cf22054d97aba7dae91881ff0da6afb8c2d1b40f82cea7fd507fd8a664a4f245ed1696c7df9e445e20069e749e5cbd707dc399f697d5332369d1b4163e42672d5b1ead50e8a64a08888d157d7a1c7e7d316e9deaca5f516650d28e5d6cda0185987b94f1fd5f378ed1da86394dd40ef625f78a71ba220f9d94cf52e9a0fde8c5225d33c9bce69c5eb99b5b1c07b3bdc816c69983f01e27088e76f028934ad6482418b76bf0f878d3e18b2defa14e44fc9ed5dd7084974af55eb0805c29acc52a355c2a6a6598e5528a8f5d59445bc76cbfa5fd0cbc830cd5098fcf7f21cb425fe9017908f015a12963fc4d4fc1b9b2db78a582b6c5bdc8d8f47318745b47e2e49deccc83f76b45d12a0dfa318829791033774b319411fc65c76402de1e3e17f93412dd76f47989d7791284490d587a596d0c85251fe3837cf9508d8b2ab8df342053e52954baaa3754a4e0f17e6ef73e75a5c273b0d1069409fd8c9232095cd7ca02432320c391e684a186b47c29ab1470d8e00ac71a453f7cc5ad805e744bca36ecf4b33eef0bfa9b9f24a5c870829e3531def5e9459ad4431e4062938b994ed188da13f0f53b8d792dbbddedd3368bd50144a09849f3906872eabbe6ac7b873e64ccc0ad15bfa2e5f7a25dab2d3637012403374e0713ecaa34220c2a64ec0c8cb5e966e75ad7712ed3451513c01693af126f1920f11df085f068df3f149315f4ed92bee1003c938656f2f6a5ecb119ce8185e7bec147f8c97fb7d4232b21481a121c59496e5664eeaca8366e74736d1f637b1602efd37c2503480514a8faaf1598b858ac153d547a32a198fb2cf1fd55ce4cc7cbdb19a20782361ea5ebe41b1fc2dae3ebfe8c11f209c76ef95af62eba84532ef9dca17e3b5d7d89cc9799759a13d6bab50d332567f1d7776d3dfd5978f7c05b342b864b8f7c587eb36831aedfcf42b8d922dca7e3773b14bc7de69bf4253b3bf590358fa0e11d89048d443c27c99377a39a09d96a7b93dbe4e6c1e9aad4872824d7ee42803337352ecba34cf65d6dd8f5f0231254df6df94fa5206bff723136f660ff00c06eb0259614f1b93adb280d1cdfb04e44164e2d5a98863bfc35879067a93c408a600f788d7bab476bde4f60b1c9428dd0969367a913796c445c41624528aee531dad838884af898d1ca8a19e7bf045cc9b506b1df06eabd9a852744d5229a61e04d7414d9a82c70e85fb3f05129eafd3bf9b81aec0a8ec027ba9a3c75e2e336fe6a25064379d7320ec83b391785e119c0190b40207a087abf485be42787d64c811ba2a4fec6a19eda598ac133f06592cd23726c25211fd377ac7e386e4d83bed903f8870b8a388f51ce3b6cb188473e90c0effb1a16e766d899a403d4d98ce8d515e1cc4e3eede4563c982f1e3acc006ee09a7bd1abad101e1bd81614f541535e42c78924cec2f95b43cc5dfc89de017d9c99820439051c1f85ad49b330ed8435085116f9ffb5320299d223a5f1261f12713fa8d0bd2d5ab40e773f090df8ee008a0a366b3903b342ccf86a1fe2f441b7a828090e0844341b2e03a1b404b05fb3a87c76d1bfca356ef9f216b051f08fd0382bd011d5d5d9cacc2b9f1cb787b3849caf7c2b521593e3600eb4c2f9111974e2be4fe08fc4286f5a33bc72d2d2583dcf9e1b63da0c3ffbb5776d8cdeec6729fe305a30c4f52a15e5269d9fbee4063ec3cd56450cc47d01eb53777c180212851fc4bc1685715d6e1ce3df15d77493dfbbb8c5000fed71a3f1482451d23df10c67daf201dad7b40078e51260294dae1376019ac260dcd88f849cde7f43b74b76a9565f46ee361957133ab34eabcd45b13094c7406006236a0d90be40b8b4e35d45fd3089e6c5f470863cab4c843f605d7340860fa3942a0eb719d2ba207743e2fc4f29b237e6dbe72677ab8f3e0a79bdf473aa9fd609a870e084e6ac09ee92a1dc36650b0291d7b0cf856b9ea6c7682bd0f49f3017e4652bdad366a57ccdf3fd99b84fd80a623a22330ba86bf093b82e023168f7a3ce77227e8935e9df07ff4ea083ae9eaba3bb2499c8eced1a3458c8bddc397d9e5fb35276d54cda3d39a37df7c6420fd9cdcae8a71577da4db42228a241b1109b4d8c424a6c3ac34092c251dc92ecd95e492fcac81996031f11e56ad2401f51b16a7893e99eaa215a0b717069045a7445ff6a16e7a61a8977124d675ea1bdcb7063e4af9bbcd07e6bdf6b716e3f514e699e9af772f78290f544fee031a3c9456ff7e9d2c47d30f96d56a6d2f0b3528723b95f4f8d0da5e7ccefa0f342a7ad4d558adeda741a7e06f950c21b816a8e7a566696ec753661895fe90bf10794d42dfcc874e9a9a2a89a098444d744a2f015d061805888c0bfc36191a40eeae7ae35e9ef98aef5ef3b8df3ab97a8dddf0b7a9a90d9485bf1dda925d883b4531537edc7be38c4b95780cb182074fd05fd09f24829774969579fae4cdc7f4e655a6c98b621f89cde7939c87b7e1bbcd887017e7d97b5f8d07708f2303274ef5f8b88e735bef38f1ac33bed73d3d492d9404b813f4c40f1888c6f9de4c80fbb1caf05d213bc9f85161ccff352df46196837018064e57aa7d84ddeaede28ac3457d139c58a7173982d0add6121eef46407bbc7f32e730b860fe00d65d074b5e8e4ac6f9cfab3d0b1c19783e752b5418180134410f0cf1a93ad1b96d9b326180bf9ddaf60b28ec65867eb141016e816ad081974505410b14f1063b02f5b297aa7e01226d8c704ed13e96d2a3f4d083efb6983d9796c362a594138b7a9203a5166de016e640bd101b19587213e58755004d2aa8782d45747bb6d313a56eb1d230439d94d627b30dedc6da14779a4273feb31462d1761241e966493a8443f728497a8132c2197308ae158882fd8d08797030515582858c6af052b20662b4f1e38671a986fd8dff824b0c904830638a8b2e0b941c07d4aec121d2c5fcd4c5ab5a2cc52426b3ae373b0b96d784cabd0de1741770abca0b1e475dbf6dae8d98fdf2de04826a0678e37b3a9fa5344ff564419f573fe9806dab2ebb819d59a36f91d2dd505d91b2d0537b8cc01526bfde2f664bcc6eb11177655e6a253213167c59e32b00c90a6ff4fc08aa9966abad6ba2f3c60a252a8809d757d3e6ff5ead0d068f6e4b9f013697c22845360e9d57d6b19df210b9f896ca4eb8d2cb19821bad83a91cc0eec6ffbc4c49e6289e866aeff5a476d51833cd68a0235995892a31b16ce4a286b20dc65c18ee32df97a2557dbdd8e11a2d21b200803cef707986248b2f1068005709bfd5706e3f2b0baacf8a5cc2d200e5d9a26b34e9f4a4e87c1771802a29cbc4bf7d8f2781bfdc26799c817690bcfe24b65caac9bada0d689a9ca599d72688c0f25b22bdb06178c6305acac22f0bee32675f7448b1b5cb41986e6675b256ca830f0a59cf9dfed015b9fac9c7abd46550429b51c70610beb792dbaf44cfc63ade98ac4fa97fba21c3247831f50e11b73cb87791a982db5f610ec733721e261a46f70140e6df6b83ebc00620aa3dcc0bc06aba841cab3a34865af95933063c1ee08554a76bd11288ed197407a621feb736c85444f398d25c5acf40a62f2a69c04f6082b85718bc82527a4b988ce0d6effc54c4611e2858d90b2e7251bc9483ac877d7d0227d3ed32bb85ec7552e4c58e2a71e5f96fca921527743862f7f9595517c82f6ff0c4fe35400389e78e159bf44e7adcaa919728c8ba6412694aa4a46819a57d653d580581043636f3f368ccaaf99d311346cabb0be8146d58633193f7963427e2fdb5f3fbf3317bb6cab59d80ce3ad893a6e7eeb700919678d1e9f7a39a088c3a9a1089debae85f85be336dd073d4a9529afc035a3130d369bd3f330814e7afab4c3bc45584c087362731093c9e2b81e4066c197aa12f866fff1048b5122fc176e1a22a8cc348fcc281a55ac4f3752f9b07556038f89b70afc2b5a7cccf8198f0f9919fe9d56fbf8bf0bfad83e85f3000afed616b51bf00d9e482b82b05459d6730d4dfe8a46edcde2deb125019bb3427f061953d383abb5baa0ce34d5ec9201fa7d81b9a4f51f8e08e948fedcd0de49db8ac60cc695b94595da97433e947be0a68dc629f5e0443da7e0d3db484e165f9439739d366a08cd15c8701a78e141d793a22eb07af69e3353dc5450cb7e70bb3a924c07c6417e2ca56422017599c31bf4aa97e66d2035841473d1763544ddd89a3cde6d7177e4b60a0a034c10ed03dbde8dfed626406cb48c3a62d19635d5bc9ec9dc818bcd44cfaabd21cdfd1d6c2840139db5dbaf1e25596651067e22aacf48c602530e0d07c095a436945ed9c452a75c7d50e87883a9327ac05955b2b006430a2314d0e5e4cc9b004041902e68fddc645cdbe7b0d387cbe62e42e75cfd17eea439b94e6e2ca6d75849ec580acced8993f1f54b8a51bec8321877cd6eefee7f60e2ac092b626f9b1392fd224a4efb80cb219aa1ff41dddba0082b328e55b6618c1f295e99bd81a55db74d3960236056b54423ff8f06e9afa02849245c5a3dd87aee2acec7c33817510e8d6ca5b2be29f6e5265a1e1a357240e763e5b634ac73ffda711f69eafdff9e00dbde2be82a397b856218a1524c31e11c57278a10a090bc01a251a8f1603a060f21c69359a9d717552e6ca2917c72962bac333a67061bf3cc4887a37cc7b0cddd5b10afa70216d12828189bd060016287d1652fb8ea110289d347a5e13d43a83900ff745dc0847c76e8e751e579213cfa275d1ac868386cc3aae4901d440dbb1c9ba39381e66926f9e0665e9afddff202420af75179295e9f61ee3c8b291532ea5b5be80fb25892633374bcc27042282f8eeac430d0329be0a95630eb7e201ebc97d98f3662a5ddc6eda2598b19eebf66c3c5be4a40857c3fa1131e6dd3d0e38aa16ea427ec5964f44916967fb5089a2ee4c110472cca545eb1cf1acec26d4115ef111294e95801a7eec86a6982207d3345fe27972c3e9362d6fb1402f78012c43314a197beec41bf697149a6f722a257f49c467447f5a6de9edac38de0c2de01424f01b61927fa1f80d6f0cf5c525df8e9f5090fb157faeb12199e12d4fc24e057f06e142a7502aa4f31c8856fa23dad30cf908ea9300bf4400e8a36afe58e42843abd10b090f2115bd5c558e174becb4e3316ed973ac8237056f3f097aed805c7478cacf8ca8b660e985adf894f252671824db5f5c2b973c9ed45e84a355e7e765bd114f9a28d6428d35f6a6ef226297fe4ee71fadb2d5c8e5ec612a498d5a645d38e61054aa427f695ba424061be24f13c4c2c38ae4ceb7de0a8708994093accbc0f4643b99b2c43aeaae7c096c66f766d7b97f27ae266a77062fa901c2c8cc63f1dab2363a321dc5acc16dcf87af15bbefeb5d572ed7d571a1e7451d01f84cc463be7b5a0ad20e355d976a6645fe531b82b64a071428423e949a0bd48eaae808cd82eed3a5394cb43900c686366f65d5a4cda4248d9cd495e6927065caff13c0112451432accdab330a72daf7b279f6405aa958d8c9ca0704485cd37b0342579584fd609d2f86b1ea6172cfd8632a1dfd14c7f976fe2f9f3bdf7ddcf2fafa8bbfd27fdd1e5765d85a435c7d4d322939c10a7a5f33200a3019e852b3ad8409f54c56b6ec573ab1e5a28db4d2859353be09b1d5e1dc5828ac1b386813f3ee7bb9ca645778533fc10a55f7567b570067895a46f25bbdd2dffc347177d70405000170bc151c6e7a66dedbf2d6ce85bb1b0e3463591ff70c296e451ccafce7fa055c4f6020f2d334503df0a75428a432c8ddb17d5722ee68e799acd38a32cc06baa0dc56edd4de117fcb07a71bd3041750c263b6df58d9c60ff00e9bed398d3bad1644510700efef1c9dd0085028b93dffdeb9c5d5ef68ff73933c322c082d31586da6a7662e328b29be477d833795561ee768bbd185e1badb03c2689fe470f836a264ae0b2f134543d1b1ae05c158bd33dc98742019a47b612e209669bcb330b13bf402b133dbaf5d7393ad004d70d830f919e9e4c9adb1e22315625d1fbbfd24d443da6b5edf837c25dd2c2338ca68391ca645f2daf4c1bcb128290ba8e65b6a889d10cf3f0c8639e9d58a33a77a44f54c317f78ecb5f4011d8a11d3801ada9e1df6ed08eb9a702e2d6b8c6b57d7df5bb1e1bb4e0ea3f0c68ab2ceb257f6f6c3e7fe2c1da1462ec6f095b2f134004279bddc6996dd77f752a78900559a9aea3c9049ea16e6372c86b170699eb1d597e0ae42535e3e137b3ebcae9a3d5549a4dc116c3b33297bbeecf8b22b9f05f9cd6bb03c45734d17c85cb89812b81c4779c98942b3f4e9d9436767b6e248c846ccc781d3465bc25271741fdd6a525b9aaa89a7ceada2a0c9c7156da5bdf4dc1ed20a980ff3683519eb50b9ab12c1214fc05288792dc6938f4aabcce60e54674acafb83fae05246bd6fdeccd2f0bd0e64851442228b241837ed20e6d9501a295956e3cb141087b6b0b7f31784607f3a521f216ba8e71740973b7d2d0377c0da7f98e2b91ed6251354bcc137668663353eee4ebc31abce110605bae8f7f483f459e5cc3dfad57c721c5416755f941a3326486f4a17e7f3cad2194573176829fd4648e7a373695a123a2811c1c247648ca9ac00e5a109cb3710df328fedff8a83143c88f740136209b2ba935bc87799badd7a62b0696d1e8eac78fff3ace0fcf7a25c7aa08295a1cfc8bd84e9897e61e9a727f3156143e2f64fc201ad0a2b4f1cea43cb4d5dafed8d43b2dd69df91853aed6ba92b79e85cca6cc798ac9c052f3511eae39d25931e1cf907aaa6b0f5047003f139fa6894dcc41db395dee8a627501c5297fd14c514b159ad28c5e921ad2c16c48c7add856572b727f25502b07f6f2c617cf542a7f243875331557f3f55f5e978eb2d6152e2188041b062225ea555939b93fdd5d62ff4351e4f5b84f6baeb0e9a4e6bf57e3e99f6334d880696de009b43d7cf529bad763fcee7ca023630b84ab7cecd36b59a9468a07a46596191871d85a9406c228aa9415171b890b606eeff1ac2e4c3dd1659e900c63c0024da296d8b66e4dafef675eb85a26a9328bb2f0bedfca3b44cec49b28c0b3c127c85793fa3b51d2b653664142684b92c2fd569bf8de916970baba14a5ae1a0f03450d3f5b5c643558baca35e7576ee68041713128e9de51287c4794c7031cbbf71e42bd351bd49d8f73227c0c8cbeae456a507d0c1ecbeb77bdd99635d8ffa571f99c1621eabee7e39ed83b6433567d9ae08eb2c1af40e6768eda053ef988def0c8fa646d00961836c9130b4d6696d1e6bf307964a9cb053d09c9d5ca9baee9976ae93d170414bbe7701171e92723bc517649722a8c6446f0f54ac482efd1877f2512278252ad79f036aa259598e735d58bcc97d4294248ee464759e94b3242f542c7a608a92ed64456ada89e08e77552f3e3f7a2016fda7566c2ab97ef93e3f667c0819a70b4991d75918d5652210d1a321df1e77f05c04b94fb6a3fd2ff3838a8d69bb855f6f0822781769b77ea6e4be5c0dec8433b6f22e0842a618020405ba85bacc87b3b0efb13522e5e8cc2616edc099539ea98fd0100193f33605af32528a0dcde0584ca10039e07e4227e74693375a3b4bec43d529dd410bb387aa3e797d1676ba702870e7d9946fa48681a5c7238a5abc2a36bcaab959a089be8ee9fcfb99f383163e31928f674759a945575bf1ade3217b19d4350d26e25e053a4bac27708e838992411281ba192ed13d71dc92a2fc12ff74c26e8fe0a088a46a4faa0bb1f060b25309208de5523db5298980605a6783ae511f1423e9132330073455e7ec0ea6673a452d65dd92ef40ff7f054161e8635e7670905252f0bb6bf4363643133dadfb85221023312108750596ca9a5e6011b6ef1aaefa29a598325d32fb2ca2c63fc10ebe0ba7f8f4728c63bd7dfb2072a38c294e4fddd0f15197044ef4ac7ecd953cf63ce77e68e0aa4056ee01f9a768031474a9953bcbdb150bb2de50d24a04d5f78e6b92db3664dbae77138006a70bdd66dca0015a069c10ae4b9bb770fd259579bcfb9cb088d6359171098849ba020ffd3460d3ec06fa0aa27c35038591506f2a73c4d60d7bd3f3210f1e8f59446e33723e14fa18735f9e054ef59cdf0b6ebb9134aaa0561e81d670872e64cb949b73e48bb23688e9dd9db854444ede04f3e08cf99306fe000de892b4a43facbf49dffd94dc79082c20d05179484373705a3ea360aabc7f535e51269ecba37be77e1f306586f90ee51c2addcd185a4bc70c3b89f3c68ec314f2fcfe9244b44741574b41d357fbe7e6e1350713275d01a7ef75cdfcaad2764796a8c8a4f57130c023778db0d39b0ee8cd4942c56d40d17292f9effc2246a7360b848f2d9600ad7804153473ba37a951f9177500346823c687b4c782a16b490ab0e69fd7ffd3fd22c857b362754453e36a42ced9d9f7fe0c3432380e05cff542fafd6f7c0bf3fa10a149585d8909dbff6b7dfa5017dfcf0c5f093b014692dfcfb9705ee72d2d31d517533f69b8fff47058e559e84a6a11187ed74aec6be15cfa47b2555e06cea938129bbcfa37150e864cb83a3b9b5afe57c8904c30f39c2439e2467720e09d6fe1ea79ef25271267b972c89141a60ebdc5ab099c07f06ef6b6c65a48ff9a14a8c1db71efd459932347d0a03e02fc7958cebd33a6ca55836fbd033ac4c05101094d536d967ff0d599de9145894f58155a249697c094e2ebd1dd41a085714dc6a596b75326deee57169f6106aa1ce87c35badfac7cdf721a77af11db18725748f92464bb18103bc3dcfef484552e989eca1dc9ea1149ea1d13520d69f73bdd8f12f5c0188604d43b38db617a0630987a0acd0c4830f0ed087212098c327a7f55b1750b3c5542c1443cb8c4ad0e6247459c763af42476dc540f3dd9fe38bfe0d033ec80aa81cfeed472132af17ec5fe1210b722f1fbb119a55f2e9fa0f33073468db94333168e98ad4fcde41dfd9008b164d697859a6d3ce43508e9f91391e2e8d8ac8abbd901b8b2c878c1e56fb5d7a3113425cf66b8569d7fede8c1a82260e99545bc1bfecf667782fa12f7a4ddeab221e68e4629e37cd1a9fddb83742d113750005bf7b8d2dc72ae61aab39c0eda84fa67b297748c55273db45ca9bc8d2640a260309968ceee8ce88e4727cd4f5b055deb43343d21d9f9bb188eed6cfd5448b2d836a766985e752aba28fe35b2dc17a61b0208b6838e85b4645914b30a71051dd3ebb16396c11f81e0790c7a8aec8d1131a3003d25ce519531aa21244a1664e169732103c7438bcdbbb8f1ce613c38d39eadc06a610666662874a3a5ed5b3cc1ba5bf9525351591cd6b9d6a016f141070ab98aad1905671abf11cd0e2eccadd0b6d78b9096b20b4ede9fae380e8949299a4afab03f453f0217cc1d3ab794e3b02be1d6303d6feae0985505365b25110083e82201e8671de5f6eaefe85271b9855ec23c3156040939bb934fef708205986b6ad38e2fc0f32d4bf7b0b981470436f176019720093a3fbd876424b61a82785b8af78d8e7801600319360d5ba1955847556014aee728e124b4aa9ba64aca8fc7b1003742fb73aaac2d0aafa01c6523aa44057a9ec35fd3885a688ca96efde61456df8531415b0e60000b18cab00abd9634f60095691d2b6dfe5e9c58276b9bfce6e7a6616bb7be71a19298ace0da25a371c143b404782380afb85b8205405f1600699205935a94dd3c63bf51c3f81e93dcfcf645c8afdf52ec0149e382e309e7644437d95e8bcd285c4ef34d76226ff64ff023c974fc7c9e025d9e5dc6a1a389c61701eb3248b663d665ebbe09c573cd46aa480afaa7484285c9342edff43f571f723c9dac0c49e4c447b1b35a33e7278568ce82e161f98adc13992335f3bf6d2b9688f82ff1f5079bf3cf2fd0b5195fe2ceabb5d21beb6c2901dde863906ba2d9f2a66fa0938d2edb8e218be54d951b35c84fd081f45f26333a98b229f502ebe1d383852ed1f33187570bd4df2d832cbfc8136ccb10e52a50594b0dc17b90f0a2da3e410a3c2974826a43e30261240a5ae86f1a19946aa821b92f6e62a37e424272649d0de275e81b6410ccef85fa71236166d3b30149756fa2c5af9aba7bc73e73713312dbdce79b084138ddb06ff561acc4df8e277e4b353e2d5900c241a8c5606e3446e549283402b69263837be4280bcffb60d7d7f102b8f8860429378e36fac0eb03631369ec330c5d91db4aad9f8eb7433d6fb23760e1b27fcce28240e109e3b8abcdb6c6fc13e95811fd33aa328aea2265b478feb3315df71bb162d1598fbfa3f5d482f47f00896eebe07816807ca17f7dedef580ca762ba9c92a7149ad0abb75f9a23c509293e7ff0b6731fa5a5a8934da97721f20cd8e795483c5539c69eac98d71363ad3ee4ade2311b04d8be5e11301fe7a19ebe8d4c0fceee4c80a0979c5e7fa1cb12233968b00a90bb7af36dd56aa9acdcb16d8138f5b90912b72abead1c7607f4c6969a2d25a77cde71dd78d66ba49e5bcdb031c557bf9e9ad817ce74924d782f281c54ed386291cf77014634315a83e323bfcc52113f8ee7814cf3ab0f6cc55a4b31f504153d4a2ae3d633dcc87ed3d8e87d8f21c51cedbe95c2bde66061011b79e8234bb1863c65ac4b86544371a8be917f7bbe1e0c3d3f37605f1563cc0130b46b1268b6546dea59c65291712127cbd9fa51efea291d4ffdd7bd0e75c402b0cf6e36ba7eec28cff63d961d504dea1e2409c0fdd973ccd0847adb2514d6abb41abed1057824b435ca48d0fe1e86c394cec6537af16305d7c3e4082193b467bad2ee9111b7cc64ecc6cab995140e8b3ddba564467b77ce21b66090dcf80067586b48c433fc241953d930f93d9f4cac458aa3f26f526d6fb3131dcea14a9872cf14f0936741a79c39dfb88a3015d2d976cb3645c97a8b4c9b177c9d3d98779fc09299f60ac787eb75cd6bd364f8f7486b3a418c524ff58675fee03393be82b18aee2cfb0daa82749182a228d494723bd34599140d64152a14e19920ed9a5e65b82f8e123938ebfdb43c3595719f2a9f9ccbd7584a348ab39783b80d00b2f586426a99428241d1de56cf0ec04a4af8bb35fc12ea17ec929ff80b1c32cd07e56c0fb285621196c8eda23dd968405bef8acaea553a199748ab196f0561f58ff9d37b43cc11fd5c0931af48941c969cd650b3644008390f4523b8a2bf2fe3b218e635bc00f4e973220cfcf47e97930aa340225f586e33274a4a4b1699f1dbbccd4e46e5df14120f7f6d3b3d5385424dab1a2c30085b361079c9417ec98d8fd9e62fbdca9b5aeb10880dc54332155d07ac6056143fc1278cb9d4d13c92801967ce60b1818f45fe4766fece4c860c162d69900365972d9102615dd4ae5e3fe85961a0dd9e3c049fc512c8e54281f305c075697518d4b244db9955a2f01ec21ae08de3c19de28d162c15ffda6ed18748ef2496971ef7f4c7f49af770521ef2dc51c333e362842581cb1af7de73b1c7674fc7c4c890e489ec08b9dfb02528f68d32c30c718c2d96294bdee89af3e391a34344092bdcac72ea741b563597dba96af2bf0f7b43a4d2e68bf8b0eefd04407350da500304c31b3f5a8b91cea9e5cfb180463fb9d7e1591f06a527ecce068685ce9c59526bd28fb51c58fe14488fb292134c0ca5c62b3e00d38527bec6831591ddea9845d6a5f2f3faeed2ee29f47f1064676222e6b85cb312135480c63b4c01934bd3f1a0db513828bd82f5d2d641a50791abfb2c7f5695a5698287b0ff600faefe09fe0b0c593749719e8c5ed732212da7bfe9ee36a9030b5504ffc9146b658534998dfa1f129d978d98f38a2aeb31452ef9bd75af056562846b1f4596d492fda392bb3107db4784350300c48f899cdb26462e67ada715121e6e437e430d99ea95acb97d38b8d8642228e5dd501e01f6f6a99ba5696bc3576f587d500c00942863c99c6df4fd7801275e47f25820374d4518bad2a671c739965e339fadb30f9f1b5a61d4f5a2606cb52fe3d73dcc24bb2efec7f5e146e52f4d5f6f9eae5627a84cc2a1b4e5fe46b3825913236a123c0546899555ff1496fba343770c33c41f15571afa117f82b22ba43067e7729910b9f147935ac308ad4b940c43d59f58cd4de5c8ca19157a3de64a65860ea59669d19f2b2d6c620c8fff134e5d8d10053c3c62f749eb647b36f835da805c7dc2afc39a91bdd677a033310424187b499283e2afd896c6fce7eb4d3ace1c63bdc524657d043c3899e70e29351eea36b8f1effc4a315dad983bd7f10ad3246b3ae5d513557d5106b3717f674f075ebbc3f69c17b949cba8991bd4557cd93972a4b52710bc8bc1b6e142da0ecec3dc65a86a6b52f8a3ecc92eb9d1afb23cbd699809e6e7582175691e76f976990e5957b5b52b7e960d93d6c3e925359bce2a881217323482e721a62aced841d8f14962dc4e3ab98ae0b3c19ba420aeb9255b3c616254b6602e51101578d5db16ef73daea749ca6fefc26a4938f3fd386e922d94e8b8ebf8fabeedf592f7771de56941862497c7e63120a20b674d8e58ea7d6ed59079e5e498e097b7d118ae418927e644e71979cfdc7d1ec1ca72ffab733ef6884e147c8321303cf8094e3bebc27dcf0587153d6354ea7f19580c55c6f35df3db3c0681903a5cbdefb8753970156893bce5603d3ec7c939a7162d8ecd9e48dce336949ce5a73960bfa0035e6da6b3b2768d8ef7e784ea0678aad1bf6ecb501f536014b90d892075c23619769e66df05e040e893d110171ab0d9460bd1567a61253c9da31e5278e37c4604ca2aafe8cdff891f949bda829beedfc2bce94a4cbcc0bd6bc876db3f0685da0d2d1de6b0a8a5acd0f2c453b4e06a8ce18b7f1bf5508ef9298fd2e5f0c7e380df869137ad30eca65863800514218beb731c038eaedcbcf3da942cc24d74f08a531a6ed7945297a8176e04d61d315e800136aa1dc7c2307dd60c674fa5bb14119c96bdf4aabebb7ee8cc68e0a20a692eb9b007c812e7b0b9484916c82f276056833483a797b9a79a0517a0036db7c972b7e4c2e98ca82b2cf28f02b7f9dd6fc0cba399cf08a9dc922d0a2770150f4e3a2416be90f110e7a96a94f8c59a6909f3efa574c0cfed22b7364f23f30ec93325e5834cb9068d715e0c36f4ee0e66312b647e5d44cc9ecef8f74b509cfa10e864dd1966fccc5110962411d64479736ff6c1a25435338bdc91c24eee87ef998961577deb36c8aabca826c9ecbcbb5dc69cc6a6e799e1d09271e53c76e0c129dae2ac63662307ba5100c28c09fa2d4633082caae76407e165cf6bd596647aa11bf09b45157bfb70358e3898e77ba05f0f50a9de6bdb45120d1299e64b34aee5615554f00feba2220d4e2d09072515728f7f7aca7fa52e1c2dda006e2cab4efa7e22233e78a0b5ab9b186856e87a3c4d83eba05508d33017d5423ef8451425f65449a1fad3943683bd30bdab902129d1908db8423d7bfd83f66fea258a4100a97a7b96957734bb23082e640f00b4f3c73906210389b66390466b2839af9d63924867e32f05ec86a7de73dbfa4a92645c8316f9276098d32fff4e7fabaf9658eadd1a750555bfe581eab69a6cbb2976ac07d0472b6f96299b1c95dde7b3e4bcfc9ef22fe7a57048a76ac038e78e4ae98e1518dd621ae0bd15e059e0f9649ee84882a9719cf667e5ae0598b021d283198eb247812ca13d0ea885a8dec30a226deb8253ccef12c97e6aa1ae62e5e60701bcc1b4825afb5b97f0b5d6911a693198bcbf584aa3d56e635b2a633d1c5a39cf31fa2c68ef5a60f19ce07e7a96d4b49c0fbab62ed916bf759e447a5707f7ce4097a6c1b10ad5363a35361eb5bbc86ad99db6edcef25f0df7f01b826b5d2ed1c689b7836d7af4a2dfb471630094eadd5c7486028820c13f9911ce1252238b724554b89d786c991dc930b333dc4e39d95c0b7427850bfe9644514929bf2c7812e9b17232c1aebb41bb2abc534c8fe30d415c743f347ace35dae5ed0a7980ec751d35602b74066f4f119bf60649468949c4678266168a96bf82c35453a5e86259ca0c639a17888c82d196d2d69db1b5df6c6719b3285f1a6645dcbd092893a6492644a36f5af419f584aff893b80f98b4ff7415fabb1183cdab365001fc19b89df16b677f6589c7e703ca2a54f5f6d3ac2904d05c384be0461978a2f6d0ae7a9a0d808957b7eaa41f516ceaca5924beafb49f792a2752f3819f0d41646166795aee5371ecabc0dae7d4f5ff82496f39b9959ce6be3ccd9fa10b8014bc922d5f0b1785fca0fac65fc01e7d91256ef5b482319b9a8f7237d7e98d356581ef95c57e74ea835c157e7d1ccbdc21170f2dd36f8bf89d6450c4a93c40262437dceda88789480a2c64e2b21e8446568c17402c0d17684e70dcdd36a489b9348c4206beee3abd7a23514f5f94717ef93638349636643edc04ca46461c255841f2b19e7a416506e2cf5aa564da7e73da195f6abdeb7b43625e417b1509f98217b66e727b57e8ffefc40439cc0e29eeed03aff6429cf968f1926cb1f2edba46c5e74f4bfa76a3621c37e446164cd173956fcbdf31ce980930f85eec4f6d46f10a2e9925e8f929d5901687e39ad731e600d05065439600a9e301ebb296431e69dae3d0111d720583430801c3b9f58c03993e5134694912d1310ff27800c7ad4b56dbfe397a1538ef8d44a92f8b40d587ae26ba02167f657dd9d5f20c42e857492a8e1abd243b07d03044e575b574622632683e1649423c8d084712189dd84d8a06f2f3a8bfa27bf7a7c1750ecff1e15f1c3812337eaae01eab261462f4a70019bdaaf28036a13c7207d3b302ae3dd958a46a5b81856a47c1e7e48d59a317425e22b9320238135a0e5df396a308387314622453971e07dd835698124063852604e866748a4ae6da9f9b29c67fdc24fa936b6ceef992b52e7999f84fb0d65e38878a0085dfa204a584e2e62a62e350a28fb3b584765882c0f66995fb76055b8a2b9e271fd4ff2ea8f65244e4e930010f6253830bfd9bc4cfc7da8eec0babbeeb3378ac4d0a743c02aa09cd0cf0c18edbb5c33d13dd37427ba5ad146168aa30f270199dfcebbe6dd502311f03713db90141de444b5bdf35e52602b419545da6458158759b2da089e0119deda11fcee759616051c1b5a3bb7d9082b3c9b737690d714132d0dd8bbccb9aed83b5bdc41d46ca25b598b55d641b8b6e6ea6d7a79225b9ced61b4c94299ac40a797b4ede1c55e54c1c5a55705b0ab1abb748ea8ba98487de599aee565bbd55538f263746448b7d3c3a6be986e77f8ab025654109363bb9b2a825ec225f968b4e5ec40aa471dfae31f14550c5c63ee627d0db7f683457f7cc583c5f9fed17e5218bd8c043a58daa1c5abf6a5d221567571a22fb3ec32733284b247d3df5c1bff029c2db804304e63cf83712509fa292ecec5a53898de4ac360022b7d15d32354a76e9641eacd61dccf0918e9766e5132d446b0579b8270fac976f323d439fffd3d04d819c2d5f5a7f937ea0381b69cce16c2207c7c6fa0ce7c6831fce1d5601484cc9ad6b23b2d4bc6a2d61f254d4ca6582ba2d4e01eb0fd6c572e28f9763da400b69f0cb46d2b681b297cb3a5d3c1682b2b36319f97e199a11e32538f3d5d09e7d70eac6e8aa942bf32ab0a141f49d6598698601b101a02d6da99f3f510a08810e6c9016a91671ea5956aa70c32841fd7c9f3552da05837d0d66fac4e35bc54d311775480c9927aa06d97766618700d28119cc5e814d636fce2c504bbabe2333c2d3e5b6ecc974b23cb37554d00f7a996f1b919e59bddd105261c4f045a6d69be860462f8a75fcfa5845b2538d8bd90286d999d35d5284002b998df9e2a4614da62d57ea5e590ec7a5f5020642110bf4458c295a5426d298ca835773eb9b6e76ef448eb85eb49ec6b0c67db7d43fe41e76cc9f61893045fb4e43ea91922ac2efe901d09b0b83c87a9626e90b6c236d5865592eb9c0016d0dbb3d56c1fbe3c7c5dd4b882bdcc489f5dbf004e3ef9335472e0a0633682cad79210a1f3c03f6fa7a201920cb6d0823d2a288d209b6bdfa6d8ea1760198abf83945eee1a205ef7a90636d148f71662af245a4f61e220940bb52aa47e1e1d31e083439c7b3b5a790b2fa1462602c75fefea9d39b951e9fd4799e207a1b3931560637bcefd895df078e6839db935210e2f7f3f15f25c46c5483430039b9a259e124bc3515ae2392a8d06e24faed4988d30c7ee8f82467055cebabf7da98960a70fce1de7d1248b958527ebc485baebce114aa63658e5df0eea0528573b41f255ce7d1f5fe70716fa812d292feb6f70bf486d5e78b5298d23491408f58f04470bcc160e21c12eb07cca12dd1540f3560b37b61f94377cb6add70110a2f28ed6fd3760aeeb1a50b42f17abf6d16b5424b58c4564eca109effef35610e0f96a6ebdbc2cff8d889a69cd19047f97656da16f679184d144d77f177b3ca1564769278cf873b9e77b5b3ba6d8e6a26827454b4962d9c7a6af2b1b1c2b073b2aca23cda2245f3f8f06848eb10b3e5865251624fc709f412508b6be69eb8853cc04289d06f256fe2f910f256fb8bbe1bf2124f3c3fc2523527b1c92356c6086dfa49ea6fd9c4b3bac2a61d01808985f01c428cea52c8f5a3c5ab074f63674bd19883d3a54640c78adcb3297224d395148e28840c95af714ac202540316594f8598316ef593a70cd2d02b9355927a67ac833ac8b2bf2839759ed2816ea831d593cc94466395e0005b5696a960d6efc34bd6328074332b88427e580d0018af6d618cc471807a262f8db1f0119ef857032c87eae9b49afb6f5411662a7bbae41aab7b5d0c08c49021162535429230306979d8d9c5982e1984bb6dccbd13a3d786e59c8a441204215edbb145b1856c676af26c63ff9adc746747db1760e020857f08e883b3b42144a8f6b3a33740804ad70ea8e088bf15727193eee18f2ea82d7a00ed706759a9714c50e5d62d93a959a75534c1c9559e91e5838d909fa47d93f8b3d8d3b5f042d1021f653e8639da8238fb4803ae485f03c9fbffc9b75dae2eec50f76dd38e33cba5e69f89781d7822a634047ad712f59be268564a4873c338aea2fea126c36bd9f461b8aab4d7d27aa3b3386b5e374b7272215ec280612170f964c75a006238f71e651616c131ae7c919cc119fa1a2bbe7e7ce016298d1fa78880795e3c620d5c7dba515a5fbd7db045ce58896ce6e737eca19555b30f535165786c3f7e0d409f40da09db5b92d1f916bbc343bc9aa6925afe193ebc6dee686a6e7c97cbea90a5908b18f75dfb8051032aa9b929d875ef014d52a746f7e134e70a595d65ef425fcfa54cfef4dfac9a9e1cb7255bf5ff94d9f071e15acba39482cefd4c91212752f3872fbbba64284ca2dd52352a223f286bf23513a9b9efc1e7eae1c50b53afd171cc5da177cb4aee1e6c8bf57e189f50d583f3f130558afe0fbf595140ba364deaae1aacd3607a60558df7b336ce7d8f95968da2aa48c231307df83d40e7ea3d56db1171ccaf598a332ab6ed745736a4ddd84c8d0508eff1c6579deb96398de90f30770ec438b25896a4e32572d226e2e6d2fd763b143c9137f90ca4dd8f17a048d1db9fc199425f00a53ac7d4761b9c1ed04f3e74f6a19590836e14cd225eaf00c7c0324b19aa46558bd211d5c292304a0d69a56ebbc61fab27271cf0b18101e03f60bc50cf48371c94a5b46bf9758f229439854438af47a11a3841b917e1083dd01de396a8b371e010fa4014e976d07df48dda41c5fdfb0b2ec5bc8527fd9f115b61d32bc25fda95b332f84cc93e989cea5f1af86adbfad756b820a517fa10676c414980f23c39ba4fd64aed2508a436b0057b89c0f3649941ea81e23626fd4edbbb1bd9a3bd3f6fb4d961f894e9bfa35e9a5d8ad000b96c6b167af49d39c2b5d7bae8ef647d59fdcf10b7c02965a0c8a31ffe4f794d49839c5ec2b14a4e1f79ed066cf6508e9eba4a52a94123232fff53eea3aacedcb8dee25281728fab99f6901de9fcfec9821c648ec0636ece581556f82169c30ed8469dbb12537fa7c3d08bcc65fb8d1ae79abb4a74682bce7d553769f5166aadae1ec934dc7a3d3eae0e4d5adea31ff2e2c652536a0905994c876e2ea52a1485a699ba318750a906086b8162def7b2c9f73824d0b1068e99239a685d18153315f8b4df988431ecdd9ecd46bc291f56fa46a81008d0471268d1d5e08b3813b88b4a968c7478fdd5a3c15b3b0b73ff0283ebe4bcae80a521fe483765402e55b49762571cb7aa6e3f0ec8aa0454798c6c9853439e50e01d4fa931d34046a0c6bad52dfe806af414800da0423d14412a58a581b64b37c6cb2ef6963ee07a93990173451e13099c3db761a6be597da4afb12c3dbe30c1b55dbd9a63f2d90415898ee762d0812e2c8aeee80ba2313760ca906735295e38c3e1a4a489e09edea4c7fed3ac192b92eeb2886590fe0728c1e53569939ec6a772ece763b75926f43f762026b35e1feb3ef4c5905db4df572132951895dc192f26c8f247fca5f3d12f8fcf4a5e4b7889782732910f39dbadbb90d6ac1cd6d5c82de8adc0b5ae2a19db63dad4d74f091f831c245b956443c8eb917307d4e5e6293cc501a63257988cf7e85a619eaa7dac19fce56602dd347b79ddc51fea1166db2d23456bdba577bc482b2c1d3b01e600fe730ed8b6d6c2ab72179df13d6e33db848f32c57e6c5e95efe216becfdfd38d60317e2bf7a7eebb0440510dd3f08ab8e96b0c5695211747a79a73946dea48c3a4deccf1c86296f291c388a3e7d310fc07d93664d27693296185de2d41de93b30eb1f17a08afc644518250e74aebee5949612c2498ffe5a5abfe9c7a84d88a576485312ed699bac7efccfe99c964131855d350bf7ff3af5a3fb4bc34d073ab4057716c3547e3ea0347fe923966fe7998da1fb66d2585964bf74449d8156fcd45f68bda756c38b98f4340fbf74fc2656104d901e38ab6412696e4647ea2f904548f4d0f258c544a106d6f19282f253878d5a0c21542274c3da6297ec6405eeff68c60bd852c9faeaf44f7ecb0f23af453da80e1d9183345bfc0b37c3d7419eaa84565dd795692614d18cb2b4fa46072a1d1e3441d55fc471faae4a32c06ece9725321d7842d68a02aea379150015f02fe04ff52b87a265062ef25240d26fad476ab7495865edbe1a8051951813cf483746749fb4b206e835012c6d0a1991a6ca3f7d59f21f4eac8f1c748d263d2f9d2a704c2cf9136e638f084fda162b80a2a42389273cacb6230cb7096dd7f045cf52ceb9fccf1851a721043181eee9ee8dc70293f0e572e118f39f7a44d0440814e4e4f7697f24fa79d53f953eb61a8c7eefc3697aacc93c367033285494d7c142d94d3c746d524ac3324b559add509802fe25f169ad029d3935ebf99e84f0843f928b78b0eb1c55bac7dcc81d519565aee8721cf36f27174c613c5e28d4868fe62ea4a68fb373f533ac8bccb7447323c948d317b789c0cc975521bede48ae9271870705406cc3a1412c5aa5a02a4d73321d98d93d5ef5f01d56b3df07c5dc206409ff798b7606896e9dc45d851d6c0375cf13622a016563044d2f26481ce29193cb703f51c09a33c249aed024056ed48cb1596a8aa65bfbcae19f0b3e47fd3e735e59e3955557feea6868ec8a95b3020422bee301a5df2c14f430eb3ebff00ef05810d37b50b988fbbd1392a932168ad49efde27171716cb157abd0ef82b7dfeb193ad0e496bf8ff2d4db33497b9c135ee3f05fc87828cad6423c1494c8030d06b98263e062325fb19a1115252a588bb0974d630859e2004d428a1a74022c6bc62c532348abe87ef467c325a3b756250e8195db8fd68fd633796ddff9b81932ed44eaa22f497440bd4c47a32fcc230e3584928230ccff8abf35d0d5b7d9a0e72cc6120cf7cece9dfd121767a2d4376903e7c3231d8051f8650ea4d877c6fffb7574ebbe4c3462bf95c239d1b655a75843ffbdbe92e9328a3789558c89a6b7f61b473a4c192b26ec3b37dab5e4987cdac6ef42167963a785b924acd50a7093250f68d5ed53ee4157d1b8d67bba791edc11a8a6f145d0f2165810d265d9187854b383ab6eda16641958513c796e37558d4cbdc2be2193a0d39fe093ffe7d7fa53c63f37200cf1f4373ba98a1eff3d67df1cd343d2f6ce89d2675bd0548703e15edf5b1a0f11d9ff363f45088eed5dbe34644ec2799d15fa662b1b045714212e54495386b01a9b7a720c5f72ffb44104e9c5b9e9493b38fce365e4c611178e0a4397d4eba820c5c4c072290ea4ad5ce22981da4962f2918e7407c462763166b0b5cb0257dda7660d349c2e583c96adc6e57c0c6bfebfd2971ccc8b16f714c784d67e4685ef7d4affb5326bafe39c532a3d17698447ea7e3cca8483f9746ea140c6c2ddda183738b7985faafdc3daea9d224396d3eeef136dbe19fd2f6742cce762e7c3e22b3beec55dc43632b21805896ed95c0457060a8b6351da2cd8ebcf513977c65246dd2db4836e2791235dc2de0196e8e74453d8aaba84cda733e4e399a4a16cfc520bb8da6b813956c87c0239f3c2792dbb79bad66588ac06020b7586f373db117811d1808f3f19fe2b12124c7db5cec89a9e450018d0cd1eb82506533e64917e726cb32a7c47a3200b2f09d2ae41a4a3aa7c5a480585c31aaf2120c1a1efceabf30f14484369e83981c987c1bfe49e6fdb9b47b55613df9565bde9279c87186a28e319536231e7ec3b1e6900c963a0b84cd62ff6731932a9ee62469f1facc524562cbeddaaafe1fedc385bb8d475b09ca44fd9f9f5667cc7feb676db2b1fe02c10fafde1966d14bb2df7a881294aa2cbd0f234829bb62c2fb72733e753b0ff7daf03cd075306ea8da662c79d2b70e0114bfde3ed11363f33e57d3ad265ef6c2f9afbe74f839282f6ee063555497864512eb50301262446839d24d24de2f5e9531f115f22985082bcbc6475b08e3d08c6ebefbe7c98e6f79cd36ed6fc710c58dc701830a95e123ebee46dc15b243b5ae3f3b52141eb61f6c7f0b714605ec7b4422e0e058aef036c3b439f8c20e9abdaca15a3cac3d6156e879ca8ea93ab7f76c717fddbd0809538baf34441933b203f998c386ab6372248ce0ae87213ceb41a0dd5968b01ae917d6dda7c5576e7e13197214b4e715dec909008b3fc4bfffd80fb7e4f5b15dcc40cc915571871cd1dfd056a0cfa58e17c704056cf5fdbbb6a848dcddd22d1806f97a49e66b0f4b2ae4905e7d624a0a59078785c3a62ace931ff8693b3575d85bccbc64a4ba78e8975c608749b51ae211d66a9de17f087909763b973cbf5d55cc1f6233db8172ff0ddb56e010b30fdab19417c24ffde36d288559d12f8f9c2ec4453c954baeb42a3a03561ab4d53d891883cba6c984526d0ef2a551e13821f8f8d6fa2cecda81d0070ef1cedabc9942afb58d4495ab9b47b24320cbed0afd65cfc809dc37b17e9872f52db87d8a074498c0e3c339694768473c0cbb89984161eff89b8251c853a180398745747043ad495feb047e7400181dd0f7e0ca45945ce22a4ac20fb4e18aa00b3d6cf52085d3405c85a37d489e1bde5c649cec26bfa3be16423989e61a0de3641cc1cc887f06bbf6558f287821d74eadfe44bff2d9fddb28834adeadc84e9dd88c9768726d475a315069dff9bfd2eebe103f4b04490b6952550400ec0eeada94e0192bc0dece477ba6e9efe03bd90e283013210cd8ccb753af187995a7c5ba6ec9deee9bf4a5cd1b6d87409960d68fa7359002c0213622182df5702dabe165ebd9562d08f3d769ba3d395d971fd1b68476ec1aae35f91c1d3825ee50b9bd360f9c28d556fda2445fff29d97bb9fd3d1d7d3443975fc37efe39ba3003bf13372295c126d29408b7a33561ae56cd04cc93a50abb202cdf5e497994b30ae1d25a35a05a7542dfcbd005e504c8d17da38d0e4ff88c44b302e65afe3beb20b573fe91fd812dbb3ee256c7ff49df3410125198f835fbd4a9ab4f5a82a96498b2529fca9b6bf8edfab6f4892c82713684ee72d100aadf6c9c0e41659c04391c34c291f7ab94ab6f357c32366d4cedd31f067dbe7a92258c315674eb39704fe9041fe0f0358d8c69a48835febb21dd3706e18911320c4b87b15160b6f42aebc56fcf6ef41123378ebebf753b0899875a29aa50ea2abcd1d795a0422e4e0b948748e295459a33c3e3334a14b9e2c5d3f0757f2ad9b4979a37bd72025f77448f1f72ed550c8ae8b457101fa6444101d88244e11d118640c16d062316189293b7051fec16976404348065ea70e8fdfe970027a2c974cb4a29cae6d2be1eed0692cee56f4c020a3c6600f702ae116fa3d6df8cd297d64b420e946657e3a4cd2204e77a73085030fb62a2871b5a635c2f143eca85900681595d10f27a988e7cb331abb0b16a2e145db2df0a3151c7141082eeba43f94d8618cc4b1d85cacc5a5c68bea48504f1a91727edd80d63a46ae4efefb7dd0b797faf150e2bb739a66c53b23e177b75419cf30940c6d7f4ffe58050ce506497e8c6edd7da6b0d114cb14b2a297a693010d122fe0f8e794a693405f9c3e98c6cc0184d25311a2b93000737d41cbce831e9469f3cc139ea767dbb15e48bfec9a1d2d4a6a5398b43ee4c16c958347ccfc7348f3d0a8fbab214bc39ad075e950e73a6e8775f825eda5f62adaa0a530707086ff3e46acad2caefb665c7b1bd3919420af005641f1a309446d66aea23a3f4f60327d3568aefd868482ea333366eaa0ce34aabd2c0aa8fe348d30654e750907fd3a6c489a82ab1041a1d9175dcc8eb46c26669f87a01c8e1219ea07e3eca7d816c908dd3fa8f0c3af47e9b208351ad1a536c6a4d5a00250eb7dfdd8e6c128b874e9051349bfeb0aeadad2275d339b03cf3733179c6ef9dc5b1de6e8e194e6bcc08a7294ddd6db1262b79066e2c88eb949ad1d0608425a17fd96427632d1d1212b5fcf3313902cae40467745384d1225851484359f2177b91cc32b38e9260684c45c9a60437cdee90ef71291ec187207c0a222ac0adacec54563b609f13e45e1b713ac169df79c2f3a12d6ba1b6ad232525b223a9a8d7faaae82623fe5e1699f67edd78cb5494972457a5c798e70c3eb1f4c403696ac82494c1ff7596bc11c9b0f4e6688648816fc7aa7829dd84d1728a58897127eb369575c3c29b60733fdf91136c7d6cdddf16ae24694703d001b7bda5a2305ea196e4dc0dc9e69864660136def02296e57141e97057b703111a4f245e7da546cfbb1161442af90002e8d4842befcba975a7c0d7d69088c78e96e088f2b682825b6b702634471cabc649a86f499244d411e7e517ca2e2cce8be8f3325e1034284eee8fc5e6cc327de101f5b9ddb877e52c32d6ddb3e862aa2f4a32c67e71e55f8d01c05e259cab433a0f70c06ae8fd708d8da5161a270c711a1debc016e197387af3b62edc301d7c2537c17bdda3f0af65ba2ecbf2f2d4b994320e19981ef0e5e37a35d32d11acb25abf6b9cc210df4d0b65de2d8ffb6a4cdfe43f49805d9f27d35b33df79cdf79185bd54e904d536a7e5f78c6be06201950490daada3c5d8886c85721dba6435db0c2e56d4807c3e21f853b514332d5343fcf9a14afc24cc3a0162b4dab41ed5cae334744af950c5f7e35e3ce83300403025bac5f32a06662bee549558fac37c8a34a3115bfc2f0cac65f47e107cc5025797ee638e504b123fc279a9b5895e366de578fe67d005078a2e12cf5b6bb3f8e45b4aa5767bb90cb2360546be19086d59e57e251e5167df5a3229a818e9aea82fcf0792dca9bf0eff03eff00ab7159c11120d8fbae1c35261b4a0f0921a79b0b941cf94fce3d115ea2c7dc946c3819c30bee3d22de9b9a4f3d403da7087033c12ab2d84ce105a00b51f6164f953ac7ff564fe72d318573d63dc0f4325d02bb2d8acd5aa1473a13e28c6709f58a69d03bc6b7fa526b157252bae3fadb4c6fe9bd2d8faafe146fb763ccf8e88f285df389ce48d27df3512341c2ccd3d52e8146ea83770cb889c68b91a1e1b742246191687ff911e3b3784f9fb6f48d9ce9ad952b30892f5e7e8cd52a8a6ece7e116d3c1491932cc43ffdf314c1b1feba7d7f307901b5f4fc5872bb238e055f08bb069ca8a1e5b01f4c4b4dacbfc6f5351af7b0f13479e84cf00ef273a70b713e8cb08d3b1ab5ba8ff49cf7ec0954c0bbbb6e23c821153eeb25b3e8c2318fa2fe05625c9c125095ac46fb5aba03edf0653ec998bee2d40288189f6c941d9bff45794d80bc94352530618f4650f72b6cd50c9a0902de7ae9b5d6c874dde818c467f5863431659cd7e391ac67b12bea51c3b2921d835ba4df726ae1be6183d24a543043d866417d9813de9059f8e230f032148885486b486f46125c183ef224271871610fc8be60e1f95b2b66a87997d4be5eb071c386db8ee469247bc81d4a04fd858512f24b8919d69fa2f80f8ca1c651d2adcac6434699c8dd3df195d442583ac33990d9db2090122ed9bd6b03a2375f788026727cbcb82a2795b0d9c455990058ebfbec6aeb12cea31f55ed9fb2251918f01bbb3a2597311b89f43946eb940fac79797be8ea0cfb69dd80d21e73d75841dd61af4f16178faab0d26349f339c882e85c440f5d6b64074d8a453ba5a0b36f72f4b1d31b5effc271c1e745e3e2af836e38c38cb32e01acfc1826f17f59de61943c1d5cba6bb950be096b45baff7d909b3171dccc85d17bebe53bac9fef401c4c9f2e3aecc54d35329f7ad425e4fb019a59af25799931adfff25f1c1029e187304f737a5019c000124d401411cde01d93860401eb0211d62f87c6e1c8fe8b8524fa78728e956c2016976aea5b0d28f27d3f147b76c95f852bfa8f18f82e0ebc5609825cddb1cff3e82b3096c1de506c55e6b732dc97db91a984be762b98ce50c76da824962055a4366913bc86708781ad583c83bedfe9642010e99f721163c7830da368ae163f522c6fb5fbd744522f59d01b88e3e5c569cc689a1c9e2b3700305332bfa6f9f794d79d5712ccb6fd6fa1d72534ad6cb2417466acc0c807e5e55419e4ef403a6bd63eb70320b09489bdbd66dfe2831edf51842709dd365f1bb6771342440a513024b0ad5cdcaa440aa0f1b6b2c247e46e8f16cd41cab269ac44086dfda2ff61328dc6be9f46730bf55adc32442c3b4fdb9e02f620250000b9516985293d7f6628b7c62e1770d2662304746c793559f0b819c188d09dbe53b6bebc85b5c010e4fd79bfb22be4471964ec8c8ed1c703102991f5c6f353f8455293d9160b25ece70f603a9fc049a363568a0531b064d73a0a01c69c1552ba418721742faa5b30c69dbce4e0f9f75720e7e057ab9e8e543f2177773bca3a81a66119680a6d28f673a887fe3eb078b62370cea7a267c12008c027d8a5fbcf3a28f1a84b0f12c45f3d4429a9da89b4f8c932605ccbddb88127705a0771ffdb27df39b572da8de6e610a25329116e5d79c7885353cc599a31d4201c81e7f373a54f51eb06502a9250b202096eb8963e6d119e182147fa307a026f63af1b2297ee90cf3280489f304acb09125a6a9380b7c4e34ba18998cefd670ee1743c63c8e4e013eb9d3c30a2495fc292bf701aec0ed68b3d0b489ff02e152f16b0cd1df5b85c1290122d5ac0748f5fb057313c88ac60106a08931d626dda180ff9a0dc543f226f4e0fc49b7de05d730141ead24eb2a38191c2a9cf3cc48d84b305edc1a95e083d8963c23739cb7a97e14f2bdbbb3149f37d504ecb963daad7028ad97e840749c1ee119f0c16d200a9fcbc5d6f3d94de325e159e3223ef09d5a3f327519294be5d6492b2c6ba9a767cf791c59c49a70ee38aec27c0220ca6e793b45f15e0c4b58ad912aac0b53a71c9c3ee241e8ec97fd5d56c5c3d9b55d9ef71131c520a613a215d8d2f899426104e4bfdaf303231c973210352f32cb85374107f234faf49253723e85ae0877e52322049e839578571d0c4ea5ef0769178254f3d5eedd5a513a328e6081a94590574fedbc39029a9b11d991353f86faac003c48ab89a501c2be875e7bd4e7f22350823a6372cdd01c5f62336e9ac39f153caf9e1f5cc733843b8aa8eda068d2c8a19f4832cf52d20e2618da0999e94452b69c74353bb92c1386e0c261578a8c2ad8d04e64475ad0642ee02873074e85d63870d45d36161fade3f2d3af78190fa77b51745c02b9e4d053903b3294dd31c293217b6998f0cc5e4c309989c79d20aa19803311a10d1ef32413baa004dd43e3777e6f96138b637bfa77eebcc6c5b42a32211c1d6b0d65039fa7255b89ef09f7041f6537fbad59c508e14053b69d674b465efc2ceb94a0abb20e2144ef7fc4f8f3af8448e6335738ab80898aa7c688dcacbe5bca1a71c9dd76626df48d507f2815c3202107192d5782c898921ca6416b67eef356328ce00e277fb5e810058df4a72ed1fb5f5c1f76a91a5ded6faf6020ab5dc040f76f8009cfb4d7ae376ca1b7ea4eb80623e9257aba9a387e7065d0f6ecf0d6131cf6353726c34990292b8160ed72d3e8e248ecc9b03a6717df53caea3e456132b739e5aaea19663a1bf1e562daef936e952c83ba4fc69dac9059f4daaf6b959f888394c9a9608fef58a3d8d87a26a410ab563ca9380b18f72149fe55c15967a908d5d30c9b43b3ab07678b8b520362c3c258e7188e1171e04e10aa289ec75e0b80cce1f722bf76d1521bf1198790649c4e1b2cf11af6c296d0c33ea8b2cb4542a23165238b2146d15fdc9a90094e92c4f3b911eeedbc330aadfbacd55750659d7e315e8d3e3bf8db4f69f4f6711a9473c6226c1abdf415b4cc134edc206be6d07198754077d9fb55bafd62cbe561f1f1e9b54a3a9b594b23b53f4a9d29182b23f46d2c9a01966c4421349b1164708b2b273590da395063109d26215b3694562776e935da8dcbde2660139542f6b841a94ce5da4cbff619d7953ccf642cc9a13d3f9d606b1ab36c2f5027db48ca4b26dc060b09dc3f4ca24c31011b6fd48d057aa677b17508278aae73d07adf9a62f64dd12780a9f13dbc761f8d80ab30bbb6e7450777655044938951918d893ee32e071df554913add993c2cd77de5a9a41e5e28da4d1ef34ec3f6e51aacb5f5254de8701a5264427a970c5a9f2b2a9bce4f1bc4e132684ff4dbc93f40cd615b42d0e42fab7a19c8bff139b3c90d692cc1a1471b273e11268b091c7bdc8af5a7d43e535afc854adedf5f5a55c616494f74e91cebf6b288251c73b924fb26d5ba5109e6946abdaf2bdf3e0dc5e9e92314e06c47872682bf7ac1af8cdbb70fc51aaceefc8ad2dc2cd7bcb89d5ec5032551c4f2db66756ae3d0b69c3fa571372f9fbd9b57c06d2ec5332608775cf7011ca4e88b725c73dae9c21b726565946eeb015dc67bc33b1399b9206c531eb74015f16dcf20ffc5794af4365e75e45a7aa42af4256e03add874f6ca2007db5a31ad91bc22707a3b16fab577f8df19e9f2f24bce39155f65694191e4bb1e3af9cb9c6ef740ac76c80e7f847ba7a5c08fdbf65f6b8c3cd2186625e0d38c8637e765684ce12f750c98d3aefe6dbf371764c5bb9bf307bf7483e378308b74c81a812acf943c8fb2ae9762b0b686ea47c87f21802c1f47a2dfa7610aae7c7fb4e464c7be483dd2bcc052d092d5395d68cf72228b72154659259ab8c5c763fa8a7ca48c92d6e7fb31ddb45cd624478041d0676d508ae3e1609d5177a22bc3c41cc956cc7138956c44e4e370b08e97864b3148d913ea65a380e314d09771edc25e596a461ec0bd0970c07d73b7bd0434fbb0b9d8094a85f718cdc1e793c2735cbe66c26f72e82ff2b5fad9c0043a2b6c06803e6f844ef3c2d60b1ecbefc11425b33e4ec694eca169d09acf8cdd357c50c66ef665464384ffd9b2bb076caca0c55063284e94efb6f61d086ac9ff8b31e2c843389a282edd58f2471601057fc05ba4bebcebab851fa4662c111e65c4917ab54d58f259d0878d04ef171293e03c218aad3c9a31172a86d83da0f635139cdb4f46ae67703f578a035b3797426eb5eda75fef157f4414532e1f981d53208635e43b6f424a41b86146d5f816701ae6d332d7d5739d8d7c81557dd7d08e0849684686022e9809f63b816426786e2725296f29879ae43f2162226ddd201332b384e1ceb0db55d7b2ce9d987ca9a65731f534a0c09b9e409ea67fb3afc379632891e919709382982037a5f4a0bdd579452c9cd9f75e34a96c335cb1b9b167d419a3ca7b10f323cd5a65c4c389d84dbf50e1048980a8458568053d8b6942b8215f023218f30a8795e2bb76f8f911000a265f5023e08e893a47539b3a3ad84ee66f733dac6e00e02c4d7a1faa4c16323ad36a8b4bacb6d7a4650d005188e8692c1f9d6a3dfbf330d42f05c95e0912c6bcbb3b970c0b55aa9f4f7e48593baacb44d240da81958c0f095bdbe7a6463828e82803f0cf6a95819dfbaf7d912d66ca803e344a2f22bc44afc9feefd80fdd7b028549daff8a3b226cc168544681fe14100b46236a71f2b5615530416ea3372efdbe58e79d9567d563e2929bb5e100cc6e826ecc3d3b80d8b25e9b9108e3d2e83846212a3432f6e4419dadd87ddec8f1c022dcc2c95fff5404ae35291e136f2189dd09ddcff3e6f6044044355f156910c17668310a5e962b53e3f36a2ded5c0587ed6cc66e547e6fb53ea8c0ca7f99017cb155e7aee6a1e2a47b8b6f556fc8ab1a1bf5cbfadcc986c8a13027972104e4adc37fadd15978983426e36c936c87676e019560f6f46a92b32b7460f1432e2f23f74dab5b00814b28bdffee66e2e6c4789e29f2236fee195331516307b39d0fd213c5f08c39fc19802ac4391c4030c866ec4bfc14859335278b8ed5c33f54a1edcd4f639c922816a91a8709467d3b92fedff1c7598a8478da3e7fb27bb25aefc48890e53ae5605a01c06a973b5140d11305b59963c3994b89a529414867a6c98292dccd6c781bc554b23fc2e68211e5ca419c8d7090b69355413e000cf3264538dfd1c90a928aa3bd696a39a08939532679598f64ba1a2fd03e3aab4bae97b30c754c3767ee199261655edb874827b7142c7f6fcfea055670b34dd36dc13ef9c71c2565d616e9b3e28f47932a01cf66b7a27bbb0464851f31fb0369aa842c8c7ecc3d14dd8b5e861212378c7950f93889fd14bbd6b5ea9bdf431ca7d36b56229d9e7fcd39e8a9f87a94fcd9909cf6fef2623058eef506bc7299adba6ba321d447400616a7929d717bde7f416d914933a884db746eb054fdc238dbe3cc27e387e6faf6006744cb95d6f4778aecdb699d945fede330892dbffe62eefd9959f12307692acb0b9529f94f1065503d7b0560e02447dc7c1b06460e17d7d368bd9e5029e13010c0aca6fe12930e76820230035e654dbb99ea1023e5ce7b0bcd8c279e579943047fe9696b045e2f9b54276c22c1ef905db3f1eaaa6f16bf0da651c3805ee0685bf983a4f4eda9d0ecef88b85607b6f68cfba5383d2ad2bff65dce0b8fe957cbb0f9fa1a246b896a841578aabddebe274857c5a38801a36c51cbc78f38c5818c2cead65894dbc47237a22b94aa2c59cc588128dbd112d5637c3040d6b1d26bbbf1c36103107de73608568e35cdf7e23656a4c1f62f037a6adf0e6d97612137f90443dfceb8aca3219846bba5dca9cb4a37242652854eae9c66212f972a30fbd6cd02bd9b7e28723ef347abb23a986eb3911f06ebdb6d44972d47a9843d63e37b61e99c1bc6e0502bd37922045e18a5c8cbb5d49b2dd2383cffc065ffd1cbb7cdb1ee6846f71d4cd69b185e44b750aacff9185fd341102b050ed2f86508af5f53ad10de89a868513611f6f4076755c9c14937034841b97a53ebe70837e119395472446f95ebc1af09636b953d3bbcf734f3a836d251aef18dfaf8e1f3688db68b56d2f7337093a0b46e73f636b7fbf48d2c12025d64779722810c7770f7b0f6ce5038bb7126af8739002d9a8efe85713dddf35aaae6a5bac297c2ebd1b6bbc8c21d0175c4c01eaaf2b87c5ce3f035d6002f1aa57b3c80365e43c65318995a1e445fae07595b0a991ab3e888c5bd6e9200bca4460b200746d62319b5e825b57836058ee33038ea14757553865f2dd1580b3e8d43074148e448f63748ea409e7cd7b4c095e97c585d93b3ba0e5b8391b5f7367f9adadb76ba1180d761645342cb12ae898e5775d0faec403601b48c6a7cbb1c583648a10dc2d1a7cb6d30405c2f3c5a290857835b996818d674375802da7de6a9143598b2839691fb2c7219b816f1aab7a57f0a99ca9def8ccc92f7f0f61455704d3a10f2967bb90038f25f046122b5ec3f4bac5ace908c59077a925fc38841854477e7bcbb76fad46a49d0f460fba24a7f4596d8da5d18a19febf4e5954b211de745d10677d2f4b8e2f7081f2d50ed011220517f08ba31cb3a518707101eae634b362abdecdc16dc854d6653afa7a355332231aa84632c5bf767c07fa1e9c7b87fde85c06095c1dab4016ae0400aab01b612f0fcf862234567ad88230a426991ff4344d50af11ca8318343ffd496304183c066d0e34e81ec20f336859d0348a28cc267e3767abea3a713354543c7d0ab5460556ad66098e87814e989ee70e836b62f3caa1d000ef29fc493b9959f26ce71f372dcb1be6c4d6208c8a079972e71c2a0aba430d207b94ca6d88496360b9237600e4bda09506c2967cc279e9d01b4f066fbb478bd865556d11f47974aff36af9cde095c6a8fb4ab1d4a584ccdf1463427113443bcf05776c4ed0ed66f8ec2d2cab004e1b3e206ff0eb12a9095a4ab6125eabeea889671525d653febdb6e772bc7f7643151cb622314f411ca46ffc934a4d5c432e8f5e204624609fdbc613c26d6cbd3b6df42d42a2a1a43608013a5948ad839ac75b4838f7ee52d71eb211a035053c7f576f563fb1f79d1ebdfde75bec7adb11ca70a8fb2ec2daf76650c617c2fe2a06a204cb5b2397e6cedcf69242c5d878023e1cfff6779a1f1da43f9943b7a9d3d63443b06fd8232651cc7d076d3a9541b0d62a8ebad5236478af140e9ab33ed8adf38106a000ecdd7fc6237ffc034f7aef8e9b14716fc41ec64685ab78ff4fb40264e9aa08bdc4dbbeb638ee24ada05122677df629c714faef1db850a3697e190d0414b6fe10f4b039de54a8112ddb94da1eebc401d271c5c6ece2d89b56161acee5816bf51cbc89804657952a664f98a05e36e5ead708545617a4ad1d5bb6977452493018e5d8567e6e7d53fc447a82512c42a03c140a815080944df16b8079c59816308c0143fe0a114de98fe356f606d6ddb2d535038da26495eefb89bac6bf6468fa86bbc594a24355c3c90b615536f4d080fd5bb154cf1a4ff4f1571169acf0ee8a1a8f6b26e9f1c33a0032a5d0666d27d982f403e38865399ee0e1551fc669b63ffa42cf5e1bde6bff870f91802ff7cd969e0c01aa63eb46cd5004b6609c807b1e7ad0bed1ee71d3414ee1866da675cbb6957985dd699ea4dc97b6be1428dd7aeeeed77deb2d408b1b45c5fabea965ac3d83808397a9f4706b7ba8b62f0a2ba2e4d95ce802a43f4bf79d5be9c187ac62c30c62977d0f3918293c06f47bfca030ca434acad6efe9621fb1925e9b52848374752c1cae137cb19414268f9d32356f44a96174de7718fab6548604d8507ec1cc9690820176b5b6e94f6ebe47876a74bcaf0d7dff090695e74a6c6499c0120a101f7ce52d0095aa0836a09e24655665ec23d5e57312922b023c4e5d8eaa68659a8fede8250d083aa1c948aaebf92c70756584287f8d8aa96a048f22aaa733bc617c23a69d057cc5076629ef2f56b819aa6f32e63fe85658b9ffd6c837af312ccf711de3f898adc5fc5ec7657cad9edfe1a2820bba30a82f87bf6931fe4511939d310e62f47ecaa8162f0abe53c96b2ca515ce579242322d227f9ebbba9c5b74b50d6a8188f8a88a22913bc14057fe67f2df22cab2f190efc16df5d02db6782608fe9708b146044946c392b08bacabc9e06bae4fd028ddabba23fe62160a759d0f4668bd05697574de6a2177c7ed6474a0837e33d21301abf2e2092189f8a700165ee7892e049adb9e8c46406a0b8f1de824e85622cf7a6a43bd0013755a3da7e83831a8909272ef48e31c2ab567c0b04818cb02d97558368dbc73b2aae558deea8f599ce7750a156cc7d93358c6f5ca0859e303afd742097ff2c32081fae532e58a9aee9a4613016986a800efc582e943c78cbea021ce1e3a5a1790cc511866c102618f359aa292eb6a4626f31cd702baae9fa6656ed49f74376806cac4b32b668832a09c277147a9686f99eb1c0dc2b4e14ae9ae4a75c1f1b6c5d2236d13e6814198ee9c482b535237213a772f485e9e4f7a17eec8922b1becbd9ca12a56102890ed78b893fb0f740fe77f6bf170567089a68182b1e0164918585bfce49bc3506c7ff520eedfba32bba58a564acd8beeff123be2e85ea24b8cb4135a67ac9afcf255b5113ef2515e4a4c78365267339a697fe41efe2bdeaf002d31bbee93f559817a47d250b29a408ef8f54a9c11a3f7dc07ce6f0185790beac69cf0ee4d44f89eba2a0caffa6afa64536d58b2de77e5da6fc5b4dec984c0a814b92bdbe50d5da0c783f9c2610e35854b750068fee7dfd7ad7aba262df34c0e4089b82c454cda8c89f8efe398de0638658e9a2be807bd284e3cc06666a68665e80aecd7449aa79d7ef0edca79ee708958019bd39c38b260c4b45fc1010e11064e9ab5fa63f1c803d9df19411d52abdb6c623a3302b97b58106db3a6a68185c5c9fd65e42d57b48900744a32c073e494161c993fe69183867755298c78a8ec0d1bdc9724c68ecbc259df9755377901fefb9042e97d167c8bffc484231bb9d8b843f92869c5f60a119024d173f6fe3adf045f43b1fc6cec7cb8811970e562fcdb9d16def80bc77e28ec18a3f134d9d6e4ec61ff2bbbf67cc7567ceda929e3a94fbf50007d9e6fe09f7072fa5ee28c0a1698408ca95cc66eb954b0442468c23029d681e27111aa53a3c95252049a397a5be5e613a1b308151c27b5dfc10bfaab51e87c21c8d4dcb5374f8da45227f67038bcd47723735718b57f34cf793d2266f4aa6edfb7aba237435aed4e380f00f0509eb3159e46314eadf613a01c286357d68d744d76b4cff6a6633a7f7fbfe35b96ec71e6167c71f7b75ae41729935a02a4bc46ff994599cdfa0ccefe0362fda93d37b35fdc7c34ccd6b241fa6bebceb64647f2560f315de069ebdc5175a28dc35ee44f80e1a3c7d1967749760090d83873ebd0bb744d13cb0889e6948d43d9ede9cc7bf54296996db061ea5f62a3477a741ae8c89dfbf7054a22397571262850f1b5275a33370d6eaea2a995c878ed8bbc07389a9f753c6d0c61e8666eea5d27a121310bae004bb192f2d3d27aa24551854aeb9e12d0dee9a560844f422d6b85b2c17d847efd14c3a7002f3d151bf84a49acf10a7603c0fc3334431d91859843d3599406edebbcf0ac6b652e3818f6fc241834c8d6a69eebadc6c5b11bb2e56ef835041d1b2225668720962b4b66f739c3cb860f099a83220caba30258f4645ba78e5b323a9cc9ecdcff9bff7089c3874619362df78069df82c6b686fb51dfb45f0af1fa2e67d8df75c8bc13a587500f9699b400379f62d08409814e01f07969c669c7d7c230eff4685b02ca2598292efc0b49cffd8cd360f0161e3c2ab4a956eb731891cc57eac59d7a5331961426142ed211d153078f8cb990f03e4cd58c584eb54bde278a3cecb8a6bce44a688d220f50ae3ad438a45f8ba24959cff6dc5bd16a76c77aebd64f92861bf6d3a24507e1b20a5f191605d02d9a34d74da3da8df2be9501840d048dbe45c8a2e2a2676acc2d891122b0858bd765a2c7ee546bc15dfa707931e04d2c6481575d12b21bc91930777bd3ce3aa9a9a71f44ef0578240b2a888c77c267372c96cc71b46827b17614d6bc1a7c1fb61bd1046a5a88cc80eae28563e0baa2a6df9210b036ddade9f3f2ee7dbeb1c0abdab1e1ead2a2c29ec491b96852b4a8702ab8f35c65b5b1ff0c1f6e3f4a9860801e8cf7e13434afc48ea2e01e181a5b043a255f00a23dcca8081563ea00f95bb181760aba9b52eedfed7a30d1230708d450ae71b8ef9d0f19d08a94bd016dc9747a4f072599cee8426236fb573ce9886c615c83adec2823d57b893972d465432a41f2c4498850c8d17fec18e3b25fa18ccc2c66570841ca39404e249610767f677406a209f43cc9af80a20fa5d96e16e91e47488dea26c4320669a9a11b59906ae96ae9d1151cde67cdc57aac13ca4dd85aa9744b3f06e7fd9517853af338df831bd90a44911cffb0e4028f848642065fb2817c48726bac4c0b486b1201fd6e51d3b240055340332cd623cbb03b8e8aae72c1ff125ad960d3e550d082feaf1a51a6ae433f511d32333304b5a2d031601f34719402036ac220ab32c3f1c17df7f93207b1b985b1d1cb97da11f88755a8428f3fe959f8353139e0479769476ac6ba4bb2dc2c758419e5cb3c31e24d46805721b5beeec8067a8d9573001f4fbe04eaec7ec570d524632e762359f0bc92d8d88e031f015c19a3237a6d29003b1cb544229ab3a65f7c03934bd2b620d5130d5d5a2e7477a3795c05f19f823e51b097b9d64366af701bb7b5564fc4dbe1afe2cb6af9d1091ac572189dd2a177af1855e41273307856a48f52ad49bc597ee07bf83fd98bf95f104dcf31c69b8c765a8593beff1bc7b051addcab106e3ca27632323c80125cf6aa53fb5bc4cb191e2d9baf6b6d7d21005ccceabbaad408220d29f29e8efd11fcdec7c662ca447045813296bc2ff8b6f9b2d19e098312d6f7dc5a50fa56d21f32fec38f458b0e184ec1e2bdf1e0c01762e507574cbf71cf48f725c42c3f24a4457c73ae56263830207fdb8145068fc67d29c57668bbc051170293e149f16b681d4e1b85052647cb5f136c60a471c5c25f3ae67a3117a6296d9587607f5bf7e836235d8349229662dd7f49cab7fca350d1dfa00fcca0bbb74d3ccfc58aa970d4acfcda1a3d4867c3113b1824a65fb7df0f2b1b718ac7fe939d3d2ab972ef645c29dced584d1f01556ba2779cb6ebe301baffcdeab37ec2085fe648efb2a3425e3e1f6128a852ce3d6d942d53d38e58c81b4aa8afa011a8c1a279dba44ee483b2f02acfa76ca72a99bdb45af5a05667e491e19de11967391e089191fd1f891a863051ef9d951a60b9c993affa4cc888237a85577226fdbe6576ee4aacf12cb82f6d4d1361ae785e798854860e9b8ac6472600133226771b0b4234c31190e87e5bf191b378a1cff3a303524ee52002d4b752e89a8d1bdf9d4acfb4594afddbb712196797d8ab97be35b51b80a72f0daa9b647fe54134cb3772f4745eb2b952ade27acb8903b9d503c2e03cfd8f8a083b1b3ec20f1a261b073353cbb04b69023c4175a44b1973f69b1d44ae3aaa609e44169a74e6649ff7ec857c0a05cfe077c88405fb75120400fc33be8b0cf6cd11149cd398c6357178da749ac5f7ff4a963f9b56661b33024e9df7d31057e5d045af56d3d939274c54e20463e21b2ae0283617633ba3115258b3f5d3129a9b44da3dbdbb630e3e78d04e4d0678efe1a9028746e66cd4b300238101845e5f9241bf151590944ed89fc49e79823e440a5cb43b9d872af72ac2305adcb39e84e81b8d7bc85625a5503991da137d846e06f2ffd8cbe33c803afa6c98449a203d68e8cfebe7dc0b64e3b0c155351d7a8632311440bf9a87e77a45ef269032098137642e84f4a0ee462b1955e1fac90d885d33630365f18cc368233269feb2e8342eb554075076df6ef12cea9e5abaa98989c6d14368876e05a4a9c8c293c944770972ce910d9cc7709b80704e79b7cb6bac2bb2463088e14978740c2bae3df55ee7671fb31a306b77de93861ae33e79d80fcdd9c853ce889765cc9be22010e467e3af55449b6f80c1d76a392b1d9885c83b5a5abc139159b18dcefacd5217f965b7932a2422e47d824cea13af195c8d4da59be4519de1c39cd95440e738a3be9d3bd74a9742703a6c77c42ff75e5a976d301fb75c1e6a2685207e0784edc7355f2d473e2b7ca66064796591c749b265fde0dc3c884643e154eb0df6128c2366cb6f0c2e7a2e96976accc3c534034633b0ca4a5354990fe58bbe1365560bb9fb35595a715271eac71779a592d2a6ed0712d0e4592c50569b38070ac5e83a775337883290ea6bce9037d02b6192affdabfb0d9bddc960f3c827f0aadf208d25c89b83d04d9b0a23188363cbf43d5b6beba589a4df3cc4615d93745d10220de3c53afec7d4f522181d6e73e0103717bfe5508f908e9aeae564aa2b722c60af91a028d0d032efba729319aeb9037b3959911d218b73301c8607e340324f93bcaf6718a96e09ff44ba6829b3181882b4e59c4f2f5c4e655380f6c3c20b5234de3cf3ac86fd5b4d18a47e1d3ea5a3085de5a4ba8bbefa96d7b8e5c3296ac35a3a2eb3a31f348520be4960448e672f11ce2dd15074970d12c8fcfd94443933c5c8173b0e6e8c3b6907e8615f7575dc39982d90b30f940b451c2a79298d893b9f767677ce2b9f1fc282759773930afd943eda7af7bdc918b92b4fc4bf7145da449a9fc7bda3d70e4e9a45418b833aae34a9a4cb310d4d9ecf1066a27e834c423ac194094928792e575c5dc7c6e595681ee3dd94ef43240ac9358deab0ac495810db074d76e91194cb22c1646fb02ef7c7aaf42e944609e2b09a8035ec51c6e52fdb0b303a820be31aef1824420da8192b4148817e1a8987a07635d2080d7e46f50ff797a14766555d2b7cab9fc4be6d619cb956b60353e945c29be4bbd431c44d2cd983b7c4bbf45bc5396b51d03e636428a226c1c3a67e6834c4ccb69271ae3eae8e4cf4951ea1f0c34f36214e7af7539ffc2f7a07e263976022e14a777ca2c25b2abb5f2c4c7deb2f0cc92ef5633494b4af53afbbdf57fb2f4a125383c5c337bf99f3ee97f8a288b2ec336d9f291c9afb3f37d41833f1593dd251b7b23542aaa77ca89dc667b9554711b5a89cb57a663c811a5d6a0ec7ea7762f2289b2b02c2fa0457992346a2f84c805a295d265868a597a088df8ef64e0bef2a88dfa4d3b8fbd3cecdac2f199265c9f3706b436691510bf411b65d21a8d32d4321d26887930e94c200d2969d0a1e05ddf9680473e62404d5f3ba39432e2e66d9ff0d3f181915626e8141b99cf30087d187d2b66069037193b70cd4869beece9cd2097025bb181ce4be21555f9ffe8abf5c556ade84c79779bd218120e327b88847d9448a7d3531d01804b5e267e4e9f5006a00665823534a84cefaa3b5cf489bc7584e66f5e9f125149ba2672af15fa09be794f53ce2f277a46b14d71a2bcf5ef4f1db5dd48f74099f0fd7eb5b909b439ada9345465bad42bfebba2eec08c6762cf4aa7371c05356783c8bce7b98acca54ed56def4512161c1dd334d24f4f388dd093bc8633f919f28a6fe84fc30a7cdf3627fa3dcf89dc6325e23ac6391de0153bb1cf108855c72bf47e31fa99b9efe761987649335172c181cb4f313235561fe310ac2b4b368f7bb9bebd010301c6529cae28e413e898ff8d259334492b8d4f3fb769014e266bd6bca16c21e4588c1e579f913f288005c0b65d95677b117d8c611d6fb57692781a6f1349f4b4770d3b8c58d3dd7c393e98606bf12b1ae34cd110093fad3437ef1156f38425c7243f83f5bbd74d6eca22373ad827b220f6159af180f7663b8e3e9c410813c4a21a4c0200a0fe9b6c650dc1f575c2b84e1b223508e8f83bd95decf8a0ff5d1b468d8806578677b22b3878bdcbaf7452025a1c3dc8dda834aac0ea493c8470721786f683203b449ff2f64ff4b8c1761c3b9ced8240135fe95ddc918ac46ffdae585a1fe8902600901d084273862babc26b9e2e26857b711049e381d118615cff4ab6499cc4972e74f74263e836aaf2ac0e969e9161b845d9e42f085a501682c7420d53ef139f32acd5e99ccd7916eaa34ea9514b7decc35b66d3ff65306cf0ace13dcaed62ce43a6afbceabe1a55ce203eaeaccdb65bb96e7120323db1c941b3a4f45d23eef454fa6d328ce26a072b8713bbacaaabf2a59226ce49f9a8d563b6ff623ade086f7290820fd8f3095cd01be208451aba97ca2cf520b302e6d3256dc572e6c69429f04bbf59047633b06e97f00f7852450b3a80624221d5dd18aaf3779f12e98ac9263fd1734fa95cf28656edee468e4dcfed1df69a2c7800820e6156d55372b6aef0e7d12e7fc8a7ee41708dd356ee31407e69b35b2ea932050a7a1e17d6686984615bc197d7da09b3d63bfa102978f4b3e444539740eedd223f6dff147971800a6b94b8314ce8282a4cc4658317ff8a4ef6e51ac993ae419006f9a80ac565d2d7f194a2d0c26cca10a7c58c9eab029b9bf8a7c9af23dbc9813da102665318474993a53df27c06ad4b25a20fcdab0ae5c982631dbdb1fca5f71046c2dd94a03729253553cc2083225bb24fc46746d04ef7b0b294471de35c4f0603d8915a6e86fac4ca6e43af86e748f08b3f61937cf7b0866e83aff4de521236c929bd57f1948983c576041ba5a4dd9c79f976c4b92e9397ca4aab3af1ef2905a9dab0a9d127558446bcef5cf2b34879c79b61c72e85ee6e2841a8fd640daee2deff65f74e9c73645d568c9d4b40993ff1abedbd90f521cfe00481625c25774fb9ddb88b7f6cd28781a412e84bab48a8d98278f4a9845c48fc7a7380a67b9ed5dccd0842fffff0eb7410832bc034771702a894c3a04b36090dd7e540d63fee342fb6ca35e864b1b7e94f4382fc342fc6b43289f0c43e4c29300db5aab973c2eaeb23293cbd4e69e7729c944f28c6e89638bd19031b9d33eea22fd53e058020a31d72b601141a7b3b703d23f8e5e7aac3179bfedb159d71dcbfd9e39269abf2903a3beb1012c0dc180554937aa2be162fe90fef14996b08c4b3b1c2dd98832b33862c1d675e305af6fa2936dfe8110bea0c65d00b7a3e0df6dd13ddaeda1078ce7a6dad985715965c3976a1af7d38f6995519fa683a891ae7d4f76bd95c4fc58a9aee8e15dea41c64e0f1ae4f39db69f5a3e65a5774e5b2885e609ca69d8523017fec3d19418efcbfb1b172180f317eb6e2411d36b744836680e107099bc2e90bf1bd475331d0ace7f69058cf73ca9bd466956b9dfa814e1725835bb837c69be912d3a493aa9effb73f5413fdf64046d84287991e3495fcfc8bb9b61286ac47d76e9a4e5be9c15f2e76ffbc1c618761b491dc0896c4f6e683c4da750f2a6e4287afbf20641f18972c400949084057f534de45a4d683c1dfdda11b127c78fdb07d2709edfbe9d84da9148af4dc5e53fbc85844db867a1b35ac26b9840ba4ddfbcf2f8676d132d899a4c6f12b0889e9ca4b015a23114fcf2a4ae93933966e88e259beed8d6708b79c7337c82180169d26315ff12406b5892beed39c9a8e995b1182c09238fbea7e3d6eab075968ea2ce1cf212757bb8f80669066a323c991b7fa8bafa5b11befa45a5b2a8eded85c1a8e14c885e67fdadec396549fc5523fd62b67fcf22360289d98f5531f5b60765f3f24b93ca64c80c63352d7050b1743d89fc8496dab5f86f844ebea0e30b8a15611dbee1229370065532a2d9c76c18cf5bbe91dd78eb460040d660587de186b24a83cb86a5c79b220d8492a5b93d0901f04dc9b574168db018a6a184410354d6b0b5388b5c2e866d3dad936055e8c2088a503193b90f3cab44e46c0079d93c014d91bb64d30b5deca77574da9062a76273b7b3fd87d50403c07481e49624b6a765ee4e7434fd518c414779bbbce4377cff54957e8d579eb01693663691dc6b634ec77d102f51b11544e6a69d7388cbff08067fe20bad807f1a0475ed4ba36f0ccbb38bc2ad580bea592bedc38bd61018b0f4d6750ebceda653886db1fe7d4e893535cc1430fb194c76dbef5779b5bd29baea0f1d77d088dcf86051129773f5b368c4ea32eaf55ec9355890e88f1b1d3486214102d424afb6b03d3629d523ec58477442df2ab27464a3e7beb0305563a48dce8c7f49eeacb48e95166d57281739bb510618d1d348b5f357c2968a47b7580aa72c1beca5d582753dc5d7b727573c3dceadfcf15ce19810fe64dd8cfcc2566bab3057e3e858326ef6c88eca96c73419182ce5e550605553e9aabd0cf6dfef0ded3162e6850296d911f0ed8973e8caefc93828106a47530798cdc55d147a0225f9ff30b782645b7985249aff239814de22ee0c0d5925278f53b1fbc79bfcbf126328fce82cb8833734a4f1d347ab486764bef8d8beba7a19981bd3fc9cf80c85c8686a27c40248925a794f32bb5b37c5738e26f8bd9857a64dab3de38a9e8006ce15044839f6cb9f6193c142d350b671dc9dcb5a2b9a5c171957b282f476329cc16fd134efc26f1cf6012ba5a336471048539a84f2df1ca5c0144c89cc0577161ad7831d858dff5fdb0e90ec2f75da689d548edc6997956578f411d73cb5b145075220dafacaac8123fbdec3f4bc5a1c3063705456f15b12998c479d3ea0fe2e8c26d58202042adc7056cdeaa5bb8d1ed08b7f381fe88017c72dfd7409dd910dba1dacda872892c050a26504143b12b7d4bb04fe262cd6367e84f5f7d55894ea68750376521917da794b6be923142fe61cccfb00efb18859716385d8cf2b122992255e3a6f480d771d80e238ee83865b5e8df1f2bf73cac8ad3ef869c910d66cb5febfa194700768ef1bad571f1cfccf2e42b3132dbdad7c08bf9304b9f3d8139a7c630b3e0504944153a420e74b0bce82d755d94678d8e5c9ea3067f05d8c2391c6c9ce0177bba05310ecba03a6b649fdd7c86a0b9f0dee9f45e0b9e0c3781dc4bc10313f93fbccb219831f4dc4080d1e625564e532be0b7fcc28abe6f402d938b646601d61c438d2e6753e2d0e5a7c3492e050b0edcd991b7c7e1476508eadb1f82f37a3e224ae22169b59cd34c1a651c8e869791ffee91eb32a2a54ab7381081118f74ea6ba56c5c515b36ec3547dd6dfb98ae1ce76602601dcf2b68e66cd00128a731d79e411fbd5dc75bfce2f6206c3918e84a808cfdddd4b492d7889fbb792068535d6b6ccad26b484d593bffe4b2f7b2b5d15044c75c4d88bc346e5bdf2040e74f555cfd18ba0a3fb0b9866006fa18c5f46c55aa0127bcd1215332479770b486486396b46c3ff2865e8cdf54d9d52b3e4087c0127750a352223a007906b0e24bc18b25067ed8ee49a5e306007351d88749b49d94686dbd17f58079b342921ef5f8454d99a2683ffd8889de223484f3f73710dde1cccc251b19fc54f265b056ce089c1aa6933067b7b81a8bddbcfb5c616d8ecab4ceb5347dcca973149d096ca5fd4d424c768fd1c340a8f49b58ca67199a22de222b12545b11d502e78b8e1bc152d3a144ff46aeb2f42343a963ca84cac98f959cfdcd04e27e3c14b1dca867dda3a3f8425aa370485f2216fa849dccc9335e0120e96006b3b9892f5662f3c7151e9aa56aade445365820365dcd48ed06023c41e0bed6a38c404e39c40fabb7990b01dc38ae213b17e3232d874d3cca612542538e040361fbb3eb8db7b81ba70bc5f220c8e19c77abc707659f9005e5e506e96efcb2829a72d931a0746a17090abf0803ca71cbf5bf0b8032374f2c9b4fcf9d82c483845faef62535d3c51506c4f8e3ab3d87589f3c9d244e8a539e4200823747e511e98ac3650e45be4e5f1dba9455c0f197ffac89b92349b1b16937b76e6fedb48ec3a2e100e518beff72a39d2d2ed51962ff690bcd988bdb84e53f2f6feedf035545c005723230da1349cbbe6e61704b182bdf8219cd8f0e72be1f9823e54700e9f3ba4a2fae5e5112466cb84c9f1770dee01dbdcf20680fc360f3ebdcd2af127303a94be0fd49dfd03dc1a8e210bae480e8f570113f6ff8e1488fd53729b04f8cc1287a3c7d34f5bc8cf624796c8a7fe1555380e56d3156844c3e4f0acb0df88919ecd07fe54ed465dcdfeb868487eb66c0c32d0cc125c3c17835f53c999f52bbc83186b343915d27380d6fda3ee8f9ba612e43ea66d61c81b8160bd4b8c6e64032dd899b9f594ee86ff3841743ce0d1dfdbded3027f11dec1359c26c3b94d03fed4f8274f7096db1b5faffd304965af54e25a37c2dd43fffc2caba0281e50afeac19f0f2fb81648af547cf1d5159c8a7b5f7a43d8451ecf9b3697ee6b009d84dc5ed309d004a679ce4f7364c072ea63c33d7c7ef2dceb4eca41728dc4d6a511657a47386ae72ccba3601b446820ce6a68c04d40f3b8c8fd1d89c33eedc97e493e674d2d2820d513d82484652b929c63d93c8cf36ae8a39bf20cc05a26361ed2c29d27aff992967c27d2b0f948c7902baa1f4269cea7cda1e9626f9e6e5a19df1d5081bd318cabe8f9e3bf97ac0cf5776d936018413ed740f716a7a4b2750a984485b9642981aa6210884b1bd211c8071c76fdc9bfc52fcdddf7ccf5f3d47af56d88fb1c5a7eb5062bee8eb95ff895bd9826c03d7b2fe50f5d70aa736883413f69647a11ec554d449b12b131e8cdb984c5470b233cc4fd0b284734274189c190aaefcf5f713792b34710c365d82c1baef5c59472ea13d79000f9743ec6d2d54b16205a66a7a0c1ef55b5f29c763ed4a0e74be26d842b7bfe25091461cce113da34f1f626a3baa71422aaf8cb2f367927d8bbe938bdfab0f2838ea4f51866e42606579565c9a4dcdf1ac4b71fde2dd6fccd11854c393286fdee2e40479031e5507968ca5812e461be2013c85ac813c5e03afa038aa282a2168c234c959b71b821d07c0a7d951990068cc315e508d3f20369e0f244fa9f1aa99f8236794fc52bb6dbdd097964192db393a4bb309c939ba470b2799fbcd2020084375e02a63040db2420603d8e9f94fea8dd7b49e063586536f49399e4f21cb197599055958cb7dac93ec13394e0645ed9059f3b23171505e2dce510f2ae4a175b4a5e7429f1b469ca6b40fe0cace127a1ca10d18abe7d3bc375d847572755845f12957282c38409403547e1e5ca2e448b2e0a30759499386123f8486256eb30fa72012e927cb24504e4f88cbce6d4b56f9b23f61dda492a633ebdc56848f490e85c2c686f016a9399327edefde12f35dadc9ce5ecb733450a62568ca48348811eb88082a152e9224a0657761ed6e500973661fa5394475a26e44aef0305577350a1f1bbd8975492d46986597ad009c380c63c36f070434364d01bb71571e538175d3120e842d900893d4f426039a46446ba2f5c50ca8e9ee3b0c2bbded3d513ae6cc40aeb918e490262ab94e6acf8ad10a8ed732009e0b0d272b3871b571443cedd54d6ab8248ab4ebd38a8afecca4892c106ebae9942786be145ddb3040f61ec7aca4741f8c7a6745927316eb1694dcd59219c1f11a866cb2c835a73b1e29a5ae9819019fa780b0bfc203c2d25c46d0c78e08ca0f2cb42538d0a07b555bb7aabf362d59808df6d351016f469b85517acd1054a671762afd33a5d41b0a4d5374f2918794473e48a20c67655712f7702745e0e98267f37767c5f26c0485ec58e177f419bbb0ea4046c07cca4c0770bd9e183f64bdf0371f07ba32565ef5daf43a092381707da29c030a2a6a2c53db9b7948db1d7e6409e90c26d59f243b6da22fbbebc90d0dffa91fb3fa2e94433c23102166f5b0d5fa0a769b5d05351cce8b1f167faef6b01226d5373896aaa242adb0e63e20b322bebeb7088b460334921bbddb7135329ad827cfe33621746b1462fb465590044adb1f6f6f9e4d12083167f18899b935da25fd435b9212c0c49e224ad35515b3ff137f1f7586fada3c432cab1cf03b0250f1cca9c73a333d9c1a34bf72206a7ac38a83e4a917b766c96d96c86a02210ef731a8f23ac819e03e9b0d47b4e0c842f476dad02c2c5e9dae727809582d3bbd8ed9f5a3db75927c01e023c814a558b30f9324726cda7398bf347019065aa9b6d59e46c7c3cb1bb03f5827d877fa3b53738116a83cdf13e3c2dfee943a83852db6555c834a3611d1ba159718c844bfbb4d1f39a1a71921b99eb7f75ab90c7387849fe68d71bdcffe6028caa1a7a2499c75ecfcc3c1f6e89dc644933ff7fe764dafdf71065a7242317d3571d95b19151fba7fed936dc3949f40f687c2e24493f64aacda29fec5e6f3b738f8cb10583c9f83a72be26ea1290f42372c921045a344a4846af01411508589a15f97bf0c70af896efe6930670a423f142ec11522803d73efaf1222a753aa9162482589834977332ca3116829d124dd3d0870c846114ec8d7c44a841006d44cf84597d704d1b2799561ec0a48e557d3c3bd40bea358dd87b11d05985588a7fe9f06eaa271b5a4fcc7cc72505716f6a9f3be080ba77fc2edfd9abfb907a462c43ebb5f24e74df5f653e24d7fba79d254039e5a571c1a7b9bfe772e12ef95c7d5c2a5b9964d50c250f9b3378405352b02926accf2d38a47a7cfc4091426b2458915bb63a83d0a80d72a2e4cddffed8e4f35352859e9ca8de4f3e2ef0eeee8dc3703f8e3ddd8bc8415aace8f67d79374fb709720d63ff857918e1b35053aa5f3d9c88a98fa445afb22339c224b4bdf914fbab6df058c89ba7960756f110328b9a8befd9d7f6afc2f429d22ffdd9b0ab84eec30ac3e10b6eff57b3b1aa73b318913ba67fe53354c4bba2c41617925545593e5df1e796459b6adef0bdfe8d02078f2853ed5d189fc130a6979706937b5b1c768d2c2b2b7b702baf58554469e15157fafa393c7c3646b26a930442d9dd129c3bf410e64b2266d3166754400ffbf98144a280825f1a50dc187fb5129f2dbc32b6dc9a4ecdcf3cdaa5e2d121fad9451c2c806a17e9710588fb304cd3148405d981609ce2197edb33dcb54554aa668a7c57741dea24fbf0a32d1713351ada62b55533411d6b8175cfe1c5dcd1dfd6ba4de5e94087a00e6abbc9940f719e3f7a2641e87b84648f67c835310bc5d7aa3f0215e8068e444bb476f28be0f21a1d21dc91c86cc2c8a473fa89294de99c9f5544f684350c30ef99fb60c2c1398c18b0b27f8025bd4fc655ce3fed377d2ca69ab744fd15dbf24d37ac07379db5b03a16ed8f4b039d5d5ba85221754a6adaaf9224c3197488b284090c2cf0ee2e3ce15fabae0646335cf40f9ab45624716cb73eb46762cc3053a81ce2631dd5891bf08ae5485ab9be19253bd17ad8655068d4c5764e1949b6f8951c639814f0dd7d9474f5d778739831c1998120a1cebbd2e31cb6752124a06c407d33fc2c311e513e9e96c1f9ca8a4913e1b42101933a53a86923592c17cc7da00975698cb183107518a6b18fdf0499ed0b59b53fd5bde21065b7339ff300e1ede76842ea52a6306a6ebb9dc3d2a1578fadc3ac4bfdeab9c551a911a80d85760e2c6811e7bbbac5df0047d840b582221ca09dd6d739abf9806908d5c7be2aa921d4f431488d9e7d9509e6b4cd0583a60cb9ca9f7cb7c1aa77da7a378089bfcca4c93625e3041b71c09686de93a39f47644c2dfcc26c8090ee75b17b3ac9a249d16d502f6bea92c4a4ff43850a34e1770bf95bc9a0cfeadd7e09871616377ab4cdbfea922cadacef8c9d227d4a3f8713eedcefb6c828d5d5cedb96b54c535050dfc08bdd7cfc993b406afb4ec7348c83593a87c8ac11be3219301b007ba85f2d2fee39a20994714544eeef172083c0d0972b318253e1c4da627921cff79fb46c2dcdb9fb34a8d2f86fd8291968d62498679e3c870bb3cea2621e3507f6fb8fd4e17956c938f2056fd9e7d29ec4a0aec27d51a93c72121003128d672956b8785c1e7824a93dc8f80b461cfdd71e01e1206b4f683d7bb7f9c5e8bd931a02ca64b6915edb3289848a6b9827c109e4969221484bd92aa184c657be7e4171a5887779c952759b7c6e4a87eb8fbdfca3ab4ab291c6af0c1f0dbecfb5e92d16c478541aa702410bc8f095a9e7d0e9babcf42dbf1e20dae1d0551cc522ee6b78724876948278a49d162261732ea33668687b50532114ed72a9e77ffd0a05de45d10ee8b4b5951c8b53ac85507d3a75a62fda11fde07750cc7b60874d77809803dc09aac74572be3a9574f1c37234eb76e466a2472ade990f46a3ddca91af0a063b99f448b1a9ae4770785254c5ef16eba8716dd8f7f366f5449611d987333123f5570e00dc531c48032bbf855b08857e097b65783912850200d3b8e46d0ab667977a7775c5bee899409fd52287167da58220e1144e540d03995ae6ef8b21e00bbd1c538e09982b7e49692ded41599f5eea3a369c18ebb916efd7d8780a24be92a87c808d2d55d304548ac9fa863404316f1c9f8889712c2d20549a36bb18b679001ea7d9ebad0e73953ade5e12f0d0d61b040fc39c84729cf3dc6373fb240c1aebac71e136a0fb08d5d872e177b8d750d3fd50c7f0fa74561f16623fa741816ad64683cacc1b18d1c282ad30a019b1c56c8a693ea87838fb43c252d7ad21553376b2784df81bd469fc8cf09361b97fd263e7de0cb33b3ca0227f8a142a1ed91f35e7145814e05f6303cd46f698ce5cae4342d570c665f4b7c973d8499ad32ed08b0f3945fadc2add0c23212c6fcc50739f05a12be4f26be3ce8860d85e0858a3767a5d5f5514ee28fd958870789f92762199e64d4686379e5a7d4c9f64e35ec46968860d6b811a11fbee4a767bf80e89a2891a6c943b34b077f634dfc58ba029f50d6c75326abc167d9a53c6e41889bc1efe983fe5e06a1df2d04a50ced3ec81e230aaaa219df3fe252535e68040e272fba3702eb67252d0232f18a927ab347232f1f13cf4438468f800b718ee93cda8f32c336d4aad8a12e4cdc980e311fc68f3244037a2096ff13b2a4f2cc3c240a5810adc2b80f7efa333f2567d5e51da5c0b431a9f86c976aab37df595e8b2988a73faf22815114ae127d87241da0316d92a75555b5aef93f1c5a0a3f9e32a72fde2e1d27b3d21dff851966bf95305964857082ef55ef7955123b5ac7defe842ba71aaf88b5efe146fd171ba5277bcb570fa45e1ce87a6b2e34ff2a3ac777d4c7602f29b6ce6edc6ad02bb5327f0b0d294a61de72b14679a1c7cd2ae20bbfe1491cefd1c0b83ed9d70eda3a30b29fce68f346e28ca6842255b5b2be2a748a66f6f83a1ca8390ac30e4def19960e6d8b809ddcf4243613795158dd065c4781daeb9fa6790ecda5dfcffc49df0add1a44d29b13150ed64a3262ec36962a99c65999f8ed9bd0110d04b97977c44a4b64557aa51040b422a73e8216cb14c77bb244a0d2fe9a9b6ab862178308c75699e469319cf6af26a6dcc1542777fd4df8773f8bb4dcbff38e62e07a14016bf24e9db90349b36f65f261c42cf9f9cce0bfdb0af7c803534da8018c4433fff2b8ff41a56e735fc9d76f3cd08a2006f9e70e8482cac861bae80a497372e5a615d207c24c2548a2249bb1da85df606dafeb508ccb7c150413df6d61120a924e0f8df2a03c1a9f36eec4e01c67cbe2970b8cca117a2f3d90e891ccf9d4e419a41b6b532ee6affcb726b9c4a5858345c525accb00ac603f9c0b373e1dcef81d2ba99950607e3e53831070bcf5abcb3f4e0929276061af52795063e36ef44d34727b8bd381286b28b6930dd8c843222e26057ac37581c113b826feab7d842772243d97a7b888296264b3460c41aab528f95c1646939c2895dd3cda33eb79debe8dfbf7ef92f2299795d9d8264ff7af3c0441c8ccf87125b0fa8b21e159baef6d040a344c8d6a6995a6c12159058c182c7ce734bdd170f796c5fbf2218eaa7b4dd36b2de05160b190f9a031b61a2e3008be53df2a02ae316b247d12f5eff467c6f54cd3daa4c4803e37f27a523d28def8a246d7372c824dfdf6bd11ce76ce7b3d66d829ce2fc7c255233dbbe6b8a1bc6f00aba22324cc0d99f520164474869eed30ad06582ac29782a561c31e71dd037cee0d9330f3121ab82b9a28b49bedd56424fb76318cb9eeb0a02e45acee579e21f34e3466250bc033e0ceb0e6576ca38639f7ffeab38d5e1325afa1793eb447b15d2b59897438104edf589b9edabdf4b413a9ccbc80227933040ee71d82bf02fd3d1e15baac05e1a0f36f39458477232e51851467c316b7c04f3036a3dc2637f404c9bc3bc4640461f08379e79c5336f70f39a12080f99968c1682dac878ab89d00bca011cfdb265236d990774cc1d3cc07f93a1cd7fdcd81670adf07a8cba9f8209389f12aac3bf3d95d6dbd5fb340b218b0373687cdbc17b26127b8adefa4eb8d9758056d56c6c6b1d788097fbe137781574774c234db70947dee64e6315fc741b3fa15c5f7ee2eaa2bd6a96f1ab98f022b98a4ba67b61a8b79591cff39c734cd55086bf5ac20953bcb5d0360ad85540f0fa996629943cd9fbfdce755d4cb57bf1193582ef63d74ca147c1e7b6cec1d190feeb0dca3c989d15eb0f201d21b410c54e8c4cfd1d2014d48bed33a5097a5cd1311b0e35e85e2dc945c76f0d6cbbe90f4bc4d66ee2c1e991100387d3e11354ace91dd7ce54db96c04c8803749e21a91fdd2dba307dd57b130b1ab51b291ba6c1f3e0d9335dce1cf9d79e10f427783bb2f644ff5339fa6fbed0a508020cccfa424d386ff5b04fbe2b23f604a2f6d5c1464c8958633fdc6d37bcc83585afbad5cdc0c7b3f55a522225797cc5357523a91da308ca11504c5fd2dd845d74e5716e81a56a3cfed949de2a3fbe0a4131fba35bea410144b85ac5c0a71dd4d918410995ec24985cf6dbebac30859a3742b2f64e6f8adcdc62a4160ef403235a13c657b6f6c6ed1dc3c133f8307f86a6a8781fe1e880be5aba817148bf39a71a24a70549e76a36ef6f463927bba42f45a3911411a2abec92687c40b18c148b3e2fea689c2aea836b8d75180902c94e8b068fe83663c8934571f5c862a5d7fc18c0446fd8e288b79a061a477b241383468762e338a4fbbc6f95b077df7a88930ec5cd8e9e9fc775776543d76fca15bcf4cd007f9d29885ba816763213b5d31bee6f150000b6bee0efb95d0b70de047e10cdd251f62c99d7549c28cf2b95720d6b7dcf71c50630ad0fc7f3bd046bd05f3f14d949ed4487703fa0e01ad55666744a2d07e218cc105f0d09026d86807a665aeb3e975e46a9366b26e447b223f59657a37a8c7cceb4f32469fc24273f3b13b9db2192ebdf1cf1d431c61cfc266eea19c030d6f736d694e1013786e47a615e12e656e84ccfd4ce2f59f6261c6f414820d0ddbb792b0a710d8ee7b7915d6aa9c72368e0e4acd948d7631452ffe55cc3a97270c991cf401147a9143db2075fff1e1780814339e9b02546dc546b26ab3ea10c3cd45e946643cc3e06d84dda20380a114ac152d20de482e472583c6e3cc42298436f7f2b807963b4057cbebda0dfa958d209b60d5ee9adb8935fa82ab19f8b30050e9d0626dae54450c7bfde085f75e867454b4ab558c3aff19b52186335c19aad1a837b7a75172e6c288bca8a973e72c83300684d8764563b4593829dc33dde1e7f0000f5c7f269f48b008d08c2a2c9ba513ec6657ffd66b36ec397460323d424ff4a9e7a487d7e1f5eef4b40458e0c3b68c882c27aae648c0154ce97e9d7e3c5e4a6cf00799bb0191c59873affa9acbebb8a95f9b9a85c017ef9189ff80c6b16b53a26986c9f39f189f835b53fd0570215f5c61972c247cd1e52a910d75a78d31686f09c09ad0f2d08b3b3030233439bce6e2be9f1c25cb5f6aa41347d4954001b1a204e6bab2dc2293557f0bfba47a1cfcc767682f639e9574b360360b007e6423535e4bb013268b83fbe9381a1943897678086c1f838f4a6e9c6e34f02b1112d0a357968629a4300ee1cf896540f6fab9dae4ae62bf3a4cd93345cbc29a14e43857ca8b70c3754f9b725984a797214ffd59ebeaeb7409d81048edc2cc6093f9b31c6fee923ac8c0db20509314446ea0db71196ef8b9c1c28a7ad7865e2f2ab9a49c80ea06e854a6678548499c77ae641ef553be2b117248cc3e1ac84e5aee2d54493dc7a4e1b1bcb1f34f93634deabd0e26cfffcf1baac0c1476ddfa1a82e1e2912460d7b2c38f2a546d7bbd18836b71050dcb0f73896f478eb9e13a2a6ba051da8dc2595d501cc93461560a90c8ab09f50429ecd752a9ff152a31083736772703d9182ba68858f3c986ed92c100df6469e31b1f3a674b7d6441d32b97ef7a3053a615c8eebfcd3770047776517dbf6d0c1be263086a31a0fe77182df753df908cff2c74d08f972db97beeb66d78885389fae682dd68f3774921ffab566ba46f9978823d95ddb725b78f0ece2f74bf45550ad52559bdf92dfb87830243e4705f2db80cece211d29f46a19ca5cb1cc0bd0fa51f5b615b4b26002cfdd46026adb3c1d59287f9185a97e1c5ee76f85885f6609cd636f6f6ca5971c3ef946d46c39a18f6c6e34c8c15c8c2e9966b87e18380b1bba8de5c49239da98a2a71c8d2fb8613448013660eb28e03e3e538905b8b16a7c76dbdddb4f8d3c41b0f96ae70a4b00f085c418f0e082a194ffb7d7fd06d1612861aa4863cce9af6492dca4966e4440845699f03de3c807a512a60cc47127bd77f6cc7e3be21f583a5921d9e3df32b92e3a30391dda1ab8df5bd86c3e8a5cde495046a30cf0b9cc6dfa7b106fc8009d21347caee4ba88d87eaa4a7e27cb9d4d4723736a8ce10a1408917e66704fe610d76cdbbaf5e583db5c2a30abc20192b8e72b20cc94cde49942a1cd6eebd8beac1a415da5898470561294203cf0a1166d7492669f7b365d0ca475b3fa6c73158fd3648fe02619da81a882de520a5e66809475adb571f14110adf6c5f2a7efb3e67716ffc8fa35c5ff53fb0361d3dbb634e098aefa0deb00241a7632843cf63dd2cb15275d52dceb21e91e65c1afa98fe143e149a81352235f9b86cda00d46b0eed76fb821b15b86ee0e63cf5e72b44699b2572bc0b473ce771854f3ad3e1ac171c03bd7cec3ce492ad5d0a7539296b4d400d6128791c1b2be5274a11795b02826a320e93da4e7fce7da0d69d0d6ff4094f50a041835161191753c070867693636f1b5fbb0511a6b53771547fc6ad80afa17bfc0b776ae0758cb2a19d8ec1b528d85ac7583fec71d6926f3ed0e7106ee821645159e39cfcc3ef1afd7c6548a6467cff6791f768b368290d376a700a2a24ed887b5a1bcc926659dfdb7d019bcb7aeac701f8d6e792fade3bffffe9f1e4ab66331779ac25242cfc8d0e0befade5a8bea7a390d1f93dc14713ec16d7bdb66ec8c552141c2f041d5a86c1be53b8ee4ac280f0e7e1ef44b3144f7f93e3acbf665b412ffbf64f030f1e2165b5763cfdb5157459f90422f9b90e85997b595c74ea5f2288e967524a3a692c671dec695033da169a6852cfcfcc3c39b49e497b0b55f15ca5ae1d4eec1a2ddc70318015eee998d80ca2b05661aa8894e8aaaa33d6636ec0f9c91127422994318b1c38a93280346174f86b91003f8a51eba958216da109acb80b1adbea2bec1ebb17adee84aa4f548526bee2385f576a3d04ff63abe53e8273ef2725420f68ce89518f6c0051be54be43d1c1bb424e64134d8e37384fb50db9f563436b7b3eb09cd553c5cbed7a13c5eac4d5501c02eba1e138f2eaeba05edf725e128ed33f7d022bff7e1ab4eabb01ac4a28a91fcafae95b5e653e533cb96b9e4ff08976a1fe33ddb485a2ae78b8de09cd2cfbc49632a44ecbe1d5f299160ea07491279b370d357272404c3348986b1e95cb78b44f1e829c15989521d81c9f8e2355b5375da0f3eb34ea667b8f54031fe3215c8211cf46a46271503f7431a9e6a0baf779d216f354699a5651859f3741ca663241f64843d59b0921620da70c07ff28c51a04f3e5d8d12e764e21314143fb52ede9ee1dad4b71c316010da99bbf266b046878c42483b2e7d6ca1e3b76ccb4b662aabc7f728fe92622883b3d71e4d86e24d70c6e7c2bf47ba04d9cdfd938ef5ac44cf9953a47f79555657ff93bca99877b4c2899cb9bd57d20dafe4b3c136aef21acce09063814f19e803912814d7e0e752257f20a9f270d6f87b3dc2ece6b5aab23e268fb07cb82768627cd4ac8f2b954224c4ddb84e0316259eac1662a1753c432668484b34b52abd30dd31a7bc4535ad07eafef579888ead6d2434d90ace7d900b9891651552077fc1ed1182b33498b1e391b5275430727e1fa7634e4701083be37424e3e8be06250b769810df7116f2a684c1d8bbfc915c8b89d16d99d3b5723ef39def7fb54f8dbbf6a6459176b8042a0d3cac169d1f1b1b4b5bf3670a4d02d19b51945344e9155a1a24169e394ab150e4ff051ebf42642b2f87fc636c00e9231ac5934d14b565c631665971f6b9a343eacd574efaf1e064e532af76c1490a64d827cddea3f97447dd51011756602f140d8954fb5138c83a8c7232eb129a3e0bbdd79927a0ef4078a0a0b267361a250a827c69bb5be90a41bbae6b48b185e6103f807bdce040119d50ae45a94dea866d09800297badbe031ed2a687640e369301b7f6eaed1fa0ac3f83f85ea29e51f2cf42ed585f88ffc14dde3b1640a3e4350c82a4371edcc091ad056331b4f907b628f6eb2d4ce5e5210e8c832b3ca29c6462565133cd668ed0c5a963a53575b0d5a629d456a131366cb655b653b85a9939b46124001cbb428d28b163bb432d7b3940ad324f89ff210f056eadd375a4ff2911bbef641a8dd19633bef96b30963c72733687b15590845216895914f65c7bb12aab1b4bfbb6e2b6b5a8df0345e156ae4884a584614a7b925438a7cf7f3320e4f4674224caf58be11175ecd7625b8de0dba108fbde38e164cb378660242b76886b8205884b15f4600872f981c8916a99f40ff43631eef6e048c04ef142780711b9377604c6bd8fde40320eb8ddbb44e41233c76971d19b3dd2e15c23ca885f8040a7137d66068cec3d5bd3ed8537dbeca75f9598530acb438872f3a2602ea516a0901f2fc77c43ebbf4931ecaac723c93dc734e5b5c9ddaaaf812a809324b0bb5150a8bd0050c40116536d6b0939b68c366f965daa2b67f66ddb0e4cc5be6015c214e95a0fa1c8d7064520c0f7391177856e7a7d2550e14b3d55309415980ce8b9197c8e5d5e2871863f31ed870e4919725ea63d8a0fb4bd873b116eb99f3f31c4a3466f8f738b4bfd8e3bf01bde9ce87cc954bf6cca9153b3fb39b8d3c36e090bf516e9aa50b5d931ab3f0fb515e6025edebbdcd72544f066eaf883daa4c818f880a2d915eedc7bc81d1fad8d3b3b71d7076674b366ee8927bea4d57c334f81549624ad166a424896928c61855993e0d04fc0a60d42f02b60e505aae2f28fcdbbdd5a63a1df8b1e7bc3e724c132123dbf025cd981a263cc1d9ab77c55f5345bcecaede06a527406ca696ecd76e4b8a1182495e45218d2bc855c9f4ed4665d60b3038025d3b8c36fcac7a176c1fbb6c17b5554d11a8b649945b81a33858535bca5b1d391144b90a2a0b1b7f01e0b806c1e7f009a424b1d1b9f625c5ac8d4af3713fa4f71f80ee6c814bcc20b6ea9d3fa5e5d3f061e8c86e6afddca6ab01207827ae3fc671a8011eb15e6bebf7c40933bdafcc685b54e042acb99545aa9888c01afe4046577e524ba44df1a8e2a205d3cfa5ac5941b342732401165334d2b521c1da86ac404ff6278112a64ea8693936e22e44d2021326b5a96f685ab9307d684bc509a6577774b27c9626df43fcdc650b35ef54bd302b84d6ea36f383acc59c7be7e7717c4f597d57dec8f5631ff3ecb936aa2c929efa4f6248f9194ce0989953a1913e0abb137cef5757490db63fbcc7a789d55d43ba2da1c08c5e8948cd55ed53f87d5c3e1d9300e57567a1ec38d2b93cb2a40e7240c402ec3bc7453c8d99075c033dbd4f28bbbe90938157a4752a5bce848f24851e9dad9eeb944c07981240ff9b84cfe8626df363804ac8bb3823accc35c94cee408eaf41b4d8d26265e7f45ce26223867f9a559754111239f6d45ba7fbd1c55a73d281c0af7d36fbd8a11db39f1c6de8adb4e5f3525b0ecbb77739f3f91936acd20b1ae1a3b0fead63cacd57a9e0962b7cb295937215d3681aad13ff6cf4380e13b0c4a36a0ca0995553b5c1664316150f616a77113b44f8ef871c40614a7f699f3da776ec3568e682edaa2c942978aa9ff58bde893bf3d862b6f86a30152f06aae02e6f5ec17e45a4798161fc25545b30348783c9ca8afbdfa50473a76eb5f0f5c5d53294010bbd449f13c47a9985d65621ec7598aec4157e18c9d1e6a8c12616ed5dc3f0712904d5697e8d93c546ad0f7ff77373ee31e535423f4acb9d5b890d3c3328c94dd02e1d43e84be086db444766f874c974a65ac28caffd184e31cccca21cd759c74fa7c346a83864c0889c1b2ee4f5728636550ed2ee71d4d6490e41b627bf68f65b675fa31fb3543d064eb2b3886ad9b21991f14a2cf615db2f19fc5b5190d94798e199603be2214062dce0db8aa3629fb31b439040e1b4ac7443774628702209f0b5da970ec96a885521eb6109b0ef9753e5a23204c473da892a8466e91d94219180b1904eafc989c61b17dad96c01f19ddcd28848a01e51c3838e3ae816c5cd6b761018f74293d54da8a4e32bb9e83e91895fd4985fa93b973182ecfe0672ab195ed2f1ae7299ac6d47d5775d3b952a88bc73194e3f11f5793c2d530b14fc729f51c21aad07ab326ce2e8e89fd33e5fb6e5d5ae766151bc78fe653b988d2098df7a9f9c1bec4c31d71f6a56de956f4676f9f7139ceb9051de366d8546c38cd13620261845b92227b31ef3f909d0fd83ce45e5e92535c451ca0eac03e6a713a24a02b39a50de34b1c8eb5b3244090e3431ef4432cfa4b2c38b0172dc0835e22e043ae5fb2f9750bbb9c8dabce09b7d217cdbd2ede6ec506c8d6529498ac3ceaa90bd84723a0ca1d7f88dfc6d418732a2805955b8d4bbaa612ca4ace591623a155bab601d78621a49abe2307897226d8c48e7e9f09264c94b6fe7169dabc75a89ec6672da11974e048a98aa5ef5ae7097186343052269ace4000f59e64df95d1fb8b2095e6d67c0276ab3134edd7af97fbe9b2af5fae727134a9c64b0ddac91383c5c350b126d601a08dd9fd78a5af77780a072e04868f3a616831c995d2352b0bd127c6bc913fe05f6a839eb6ba1a4441ce59c2ced3d30f6214a198f9e733097265d75bdf170feed2c1735c685dca2e923fb5a54e282afc9d0f31dbdf01fe2ef1d7fe8602a26c2c621b772385b665eddc3f67747d94c7acc971aa71d066abe0468040d7fe8e6a366e8304d0aebaf7312afb9f27a1a6e0339417ad17845aa86df3caf377a0f2981b11b404ee0c79122c5b1abefd362f293e463d3fe0929e73d7036f8ffb36ccddf90364fa5535f965c6a2718dbbeffad64e13ec30c139fe4a1a7875ab7eb8fa9e7c13a1a607a4061bbfc38bc9e1968351c22cdec66d16ef072a0765f7993c98354ce7c8c62b03454488562c5ce5dbd00c2e7b7222226fde0db8d0a923029cc3534396ea598b98e2e4a29397830ccc170373ebd3c85e78e5a0e98f640a1800b85a48fb1e7f1cfbcc3231018295d96c47c1467cae677797fa12762c5490f4811f52304e76c0351021f1a6bd53cea2b010214cbb1feb0a89f8aba75fadcc927b577890c92e7af678f1c80d3d6edce6cdbb63a9ddbc3d7ccd717d6566c9f05c926ab46a806e4026d988bf5747905e931555781e1d95dce57142d14fe63ac51e8c49bfc5ef2619f82ed9a8faaf898952616f3994390c034cc58c8f9d06f988b6c2d2ff0cbc6b67780e4b35a361dbcfbbe6dfc604fb69097479b2f7f0856b3f85d43bfe9951a91ff5ca68fe4e32a3825dd251958e382497f15687cf1ff875026cb1c7bb33ccaa0e08e6ce73b8122b68121410afe1f7bbc5a059fd971a94cddbe69d6f28382bf72626059d21d0a03e6f94c534ce923494213bd59e6d2249473c61dda11451de05631bd9e705f0e31d404b87ad6f58b32e0a76c4726ca5e57207207691a2b6df4aa0ad8800d872fffc25165093968f333b128c4d330f52d919e9599ddd41a9ceee46a34b2a8affbba20bd4c6c08e983a919df6048cc793bb0b7a8d7311e7084f8609da04d8e4e0e1e2f1c42a017f82954b8e7dace6b68d36d6dd2e1c752ba0605ff225c47389ac5a10ed8baadf2f55e0ed5186fa9d7d7f0ad36a313f578455b5d40f3d3e08637bc835ccffad0ef66a10fead7d1e049d92f078abeb33392e5650ee0dffcd9e9de8d9a56c94a3613d55e9ddc34b669db31eb36d0860ea7a162657689f1fd6e45c3bd5c505af275251bc6e2462ed710594497fd66c54f0ecff5698319d940abc5db43716164e6f324ba2df0fc375a1e9dc675632434c359cb75293d15e63347784c6182952a666c74f813d8d160a91c6612f11bae831be129ab1a8f8febeefdd896b1b60102c632803137a716af8a448e9aab48ab1b615d617c9895a7036de72a5f84c2c03c56a7a4a36656ef61c434345eafaeb8d49c4d80c24293a6851d459c72e0497f3ed9ef155fa0a50b6f45d5ca1173b2ecf7b05b13b984bd16f613161e041313da467f8b1a2299a9f480a641c7f538cb340b9d0a9778a10fc9fd4bb92ce131d946f175095490f1a1369cf89b09449c75239d5746164aeb8cf31d4b3bfa1f9c156618a1921be358802c563b6af7f34103252c9d2804f332e67638e2b4cf691d03498c0d00861d2e11eb6b7f9b4affa4ecd0dd0cb96fcfe8d68ed908987b62519b4b99befc5a92c0077493a11135d71206c67d82d3404f1943f5101001501dad0b13b778c3c785b5aad05a90a977710b25803bb8aa98e0a21f8247a4d4161de9ae30011538cdddc30107cebf6c8b40f72115d5f1aeb25075f48741e5d133600ba3e70172ca2f1262d1c259f581441534ad67c15df2d7ce3842ea957673821043dc046f7f14ebd0df22d6103fb4e88c71d0914d6f456361c30c8a0d7c53dfbea83058aecc9c1417faa428b319642f589e044d64125588d625097ffffd7967788e8358926923694e2a0ae81c9a4a5dadad4836393a53fe2109f4d44327bfa0a6c124bccaebbc1956e7a098abafdb323a92be39fd7d1557d713e35b8e7c109af221091c7479a5399175873a1bbfc78141eed81fa9cc85d07681eee0dfb2c98e3ac8d936dbad4da3861d7cbfcac20f07914daa271df5ac72c9e950b19a15f5b8ce6ebd6544725c33f15324b7325b93f5892afc6cadf5e42b1a2cfa9c6e4f5e35147c34c5a8295274848e24948392073a8c7c71a188c896e952d6153b985168af6f144a7bca9906ee41fd5d589cbbfa7d3cc7d030dca84afbc9d0125fe555add77b6164ba8c2084f19e383c85a2bca263dfe1798d58174053e6012e149afeba2fa6162b95453deded2af39e28419ffd56bf7181f2e4a0e477ca37bdb74557c572e65cea3af5eba865b594da7beaa4bc963e896ace0c97b00fbb3731ef9e623e95c542281a9e9b90ea0514857450c969e1d5608ce754f71fbb27858ac157da03249a08ed7c32d79e1371af457d7071f93e2210d7e99d1b5f583cfd390fef3edd77a455a8e4f4a3f3a64dfe8464b324059adf4f6e70da7dc02832d7f65f1f5b51ffb836d2f45c9d91f5960203dec1520e4d345a4dd3d135517c6090149750c985b7a3fde466403874d5730d598d95db2f91682362eab1d8207182df0720dc7487bbcccb8919693045e85278b0c0097b63d22bf8849ec0e93b9f97da5c5a54094dba8207ebbeeed01728c5ff1757df4e0a30b8ff9d681c684025b36662706ef2033c3b3e3488c02ba8d19ab2ce7098e99f7f59cda885f7c6ad0f23913d5ef78fa8174d61bc2dc1bc657d947892ad8080e7385c2034a4c3ad4424912bbdc2d22deec5d4c3b94cdb8539818be26d32e2c70e94adc6e1f55b199d893d548cdf1ad305cf77e10070b81f95ccc0cdf963285f65793f3e5db599114422a55e6bb66b4c89a4fb28fd6b583c78bda74cc89635882e28e958e2bc0694c6faec685b2fa247c95a94724a6d6dc9105f2559e84b11fbcc420bf2e3b7fe7fcf2d535e5916f65c7f6ee537dd29f0b0f54096a148a6737feb4fff80a8ff944a7f50599d1b19ef086d423bba3edfe2b4dfae31f98a24764f3daa41972a389cdbbd95478a9a73c818666a190104563bce3ad060364ae39ec884389212951b4d6884e09db9648783062f29efd0c99af7f257acfb3588b8a3a4bcd541d9d34e6c56fd6305438968c4b5191fd831f40c05504e0cdcd7564cbe2413629ef285a009accbc16fa5c75f6a0f69d71aafa214075f5d313649e23672e0f5940be45398ebc4526893261da96628f2a93732c5e58e79001ca9ca1ee7316cd78ccf9c85c3235722790f48d93c5434e9940bc30a7e11c1d12c5f2b23f3af65e7b7588ed71e609286a21fd374a570e49f83619b22c0033e3d6979843c376c5065abb701cafa7316cae3ffe076864fe283ee7f70aed48b2635507ca5d3bfd04fa44983c932538cb4451bc01d091a57571c731f8797b0e716c66c1aeaf3a5d9594784fc550d6ec12138b6a61a13dfaa5339e57e0a8f343c26c39664ee3e37ad94695cd722b381e34dd64864369d92f8c6d567cea62f9141f648163765abcf24a523287845a936aa714461f4c358611bac9ac7e7bb90aea61799d5fb87f96fc21450c5487f652caf926ae726dfd4fda38a93236b6aacd3c08707633cf86d986c125c5c4c3d6b65417739fd9a5e1dab743fe072ac31dd04cf3b8f6f6aa5d33985802297e30c4a478831b71da8b9d725ffd85055d04c5b9d1a7eb2cfeb1ac0bbca32e9cebc8fb1fe7695bbf5a9fa211019be2ab5e66e0f072c01c43180e00a12307d642cf422f81c9e35da25dc1664089f8aaa645aadab7589a9f8d6def7ba1cde3f75c05a2f60c9e39e91ffdc60a1edff44cc121269ae3ce9b074f1f061acfc500e242e4611c732e93c6bf2e11e37dbe9362727106b8da0d301bcdfc3d6ca22ad9c6b1c465095db2488a6d5594e19b12b4253bbab0acb81077f04cd3d871d4fe85aef72587d192d651c4ec249929fcf200cadafc1918ea18c3a267680aa20908509693ec7d3b854d0a3d6ed32b3ebe784a039fa852df77609476e7dab21fd234345b6b24e469e1bc3d8a9334bc453bc00ac1c2825c8b693b0a2d5cbcbe7a39916826a72a966ab73b02340f8e6bc51f42ce69f3ebdbbbc4cb4729bcb0024179cd5f7d970d38c6d7fea74ad6d28fcc33c0b44b8ce485ca5c75f7962384236bed406bd0eb9836108d5cc0a1417cdfb5312bb618f80bb2c63564aca88ecdc0f3a19093bd2f4bd4b2311c45b22f877914d734bbbcac643e0d04e4af08dc78c9ce712712c4312393842ec036efd1aff65ef42e2ba1ef600d94a88127648222ed4adcf1cc81e1322e1af7a2b76053998f16e23f5b7eb9cdf9d8cbb3c832c775da60f39ae516ea07beda8e15612c8ae4ee8e1961e0f14b7db87882a2f28066b4080809f7c3dea59ccdae426d877a167916b722643c75613b3e34883cb2b437a23de12e19dc5253b90d589c65428b052e0a803e433aa6c67e1c5d9c1099f6db65e7c169f103678d956f52318d057f7f01992e6a17c07263075459ab81c159b9d50b73af2998b64416af580008edc9a8e4c902fe138d33c57cd4b0ecf33f544fe3af5ad1aa386d59d3678b90afe3917a7ee9d7cfbf5612e88f11e5a13e49ebda96f7d650f674c1754e6ef97b700c1d39d531b35044eb5d191f807c15d871263534b5d26821a534885f3e0ddce88933df3f09ddcd9ae3640067fe5e62470fd950faa9d357e968e8f210d1965171a1f2f0d16f0b10afa45810311ba33b8888ca5fa9aa55b05f836e1c92a3b339e2ec83ebcc7087c092e5e59c90ccfaabfc7057da3459c1519613fd6d797d5022ec3f6fa54b725eef3d2b953daea8e5787e023c57d43b74a13800cd94176f40c00859f4507078783a6bb66dfdeebc73a20fb532b41617c9de4593fb0d53aa463253eaef2506d987809cd644ecd5d0f01f138d2e3df43428870ddbe90d4f65b87afbcbb81277a19dad446ade970f1fc5b4bc43ba43648b6c9847d5b4f984db3c2fe737c6a1528995b4e16f24bf07d507589cbfaffb0d6c79cb2559f1c4b7451ea292c9688aa71a00dcfde90ab3efcaaf9f13bf73ce8c30aae74eee1307027f108c5ac501662c6805be1fbee9d83398874d6680525854eb3f8d2869e71a8ee6b6b49dc5d0e20eebeac21a7ebeda76ce9226c19e34894488d5bcd1cfa69c49b2f55585ed229982afd4b5013857e6da5a7a879649d54666a329af5b7e2bfc8fd7b3a0c9f4ca0e7a5f76b3192b2ac634aabd199611f9660380fd71c1eef05ef98bac210b5ee87c69d5577d3835732e511e4dcda95831d11dea9019cef4c206132e18a463e9b8eeea19595c3e90fb23d81d44ecca5dfbad3753eb94e71db06a2716aaa9582617f065c6601b73cfa406881c81103d384f47812b8869ac43d5a5deae6fe32af2952c4d19ac7790cd7eb3f9dee36f9cc43582857bd8df3975924a2e497569aa645ec8e54df78b6441fdf1d5c96089e74b91b0116b762d8f7ad92ebba3b3dec4eea39c0c63bbd5466957afcc16f66ae087b7705920ad9f6d697b96800c25c1bdf4b68fc7f4edffe03cef7bbdf1397abd5da549821ff47dc50b4c407d35a000db0c4ab106b1dca2b23409cf9eec4e39a54692bb7c85ecd3f454f7f3f6809d2c0940b16f868d65ef161bde8d960f9ba42a4c787bca8c468d5deaad624949405279749e671dbc090444cae6c94a7ca6a0a1cc735305950a304a605c8e93b13f4a637896a58782f9e7782ae099da83fb9922ba0a701876d12fc78e5b335c6079686115d9884e034c901e62deee85f5b0dcf641bfa326891a271303fa3d31a45e45138050d47e41b5cf21287430edf696fdb2ab233b2ae0b99b115e9e5061c9091948431456cde2e6c6a47f722c299bf5f2cf0fcac893164cdc15b74f03399d2061d2987215d27d041cb16beb49de510bd19a5e95d7703874abba2598e2337261109581742196c8a366739ab89793806a69135859d95b3ad8c6ed0bb90b6b838ededb4022a0c5aa603b062d5a4860b0988cb46dcf3e584b496820dae7cf02c92d43fe585a397afb769b53e9f5eb3a363437e0b8566be8d12b68ddafc741955f95f530f3a28ff052ae8f111cd865c4d4ce18e755fa8f9a037fcddf34be2cc7398d9ada15c70d5de4e97dad24ecb0c212713e1652aed7d9cfcdfdf2563e122f24cd3567d4d58731aaf0f93e17cea9f17267eda0a17c76f3e68994cfe897f0dee22293f5e2459ada3419bf53d51a7d079527a79b53a96504993a64c5977b2abfae583dd1858a9a466ca3bf01d638ff52eef45dfedfdc8bfcf2c12b15e196778a6ba5254e1ed7b4208037efddee2722759c6fd48134f2f249bea67ec56f37aba33d64cfba2e42141108f10215ad73fb0989c45712b9aa48e3fe2b965223dc905a2f82edddfcaff120a590b9f1486f9e68a4f91308ec78ea40f9b12ae6033348ad125f72db5dc83cb37e351207a3d26a6b0227298c03e115a0d72f27bb3797b72e8f9d35ac13f82f2f09fab4090b23f6147fcc5a431b30dc503c7520fe944175ff5e205ec0940eb6fd1261e49c295f63289713a016d636f3e659241b3df624740c84e5e2b90e79ea08a518942e0c935fe284b7658193122aec3b5a967d3e5f0bcf8e6bc989a9cce2a38c2b406bcfbe7527090067cb36ffaf0ab017f251bea5739a6593b410510deb883e0abba5905a50628426d1e063cade51079fde87884d6f12d1ac31b8cfd5cfd92b4bd1e3f2fbfd44b51c438fe13993419051834794f2db4842a61f7ccc26d5b85f6ff7dc91074929c0724e2b5f51b738705c82783c3d6fcab4d527d65bc22db55b8fafe13a274ce12501fd6877e2e101bcbacaf03eb0af151bc21b522d64ce14e60b6b46246a2287fd1c9488f5572a6485312a8e8b9eecf1cef32d7dae34c74a197bbe7133823b571172402ea517bd0fc650d78c2353e71cca529a768ccfdb041213db5c3d3af86ba7083e4d23825a3cf95d5a24aa559a1b88b06aa1f4eafab2ea3b952957e481a856ac8b976e62e2bc0636edc74bf56d99fda1f9ec14cea55cd85ade20c42ac8488fb45d14a84eb54dfe23cec5fd4d61bb88cbf485c208da074eee7e16bbfd408c2b8f9db01696acbae6500fb8ced72211953ad24be870131438eab36015c6c83cdd4299895ca18b328f7984eb4f4a19fea89092a3c4de864aaf08bddeb2fddb8f78cd81f842c49ce0b96b32155efe3673d3524d41284e2b960e2c640ecdc783053e840cda0fa1091340dbfd1c6de95580965ba2fca54727b1024b3b051940fc9ff324fe4ef7101c90936816fa1733e01ffb37a5b8b2339601abc241c5f264d537322c0b91093417ce17253ddbc1fca276c4cf277bc224f772a8a758f35b2475527974bd1c420111ca6064afff49c3b59abe2fb12703590b843aaf91fea50aa1da393f453ed7ad76e8c03cbf0ced93f305336ddc2d004861404ed13cd61e1a5dd197f54668eb6d5726824fe16a432a33df01f604a17decefc33ce7c602f4e86238d085f13e245182ae28849b541162f92947dbddf685bfb86adcfd1ffe3486d810f54b9e16436678771edd9f0d3eddd3c243a6c36c5966ff74eac838f93376601f61e218b631bfb9f5d3c166cef99486bf6d69e7611a399e4a16bbe2b917f023e04df9677dde11d5819d862ef6e6b7cc95b5b9f67f4e2e4ffa48eb27fc4b95e64539cb079ff808b2e4cc22d8d3549b4f51cdcae7c83376538ee7b4807c8b8f7cae1f8bf1c7cefeb40dff9a7142a516b20eb7c46c8eea4e8ae30a4a522c1c883f34ca1e1c54925e9dfdeb1cf3f1de39b44b0a556aec3e68776deb4ad4dfceff96434e8ddd13a0a7b74db6966c2c37bdf4ac686e14c324ed4159a977fbb1fad83748da2662eb3fbadbc86acd6c92ea8894cf70cd3c64e6c811f1e0bd0fa9e3a369977acf146abf4e51a8bc22b7dc8ba3d11eac8d453fb1b081cc718c370c30dba3acd182bb89a47e2a2ff2b94096521e3ca1fc8c977cafe03315f9abe1145f8909f41626f3b51be5034652f6a24a897844bddc662b3ce637f85b53dc666e6e405e948e47080df7f88968d20d8505073e9e2b92a9e1f0090187930adcb876821ac19827cf023fee6c961365638b43f2e06e5af47663b7b19ba08dc790078f8659b3e9cbb13384ca308dc79e66118021d1f2ffda6a76baace507c0bee4ce8104a08bf95e2d02ce9093d480323b9d0b6140b81d7464e4fdc1b3c43854977551cf96ff9ef545dc158a87389ca8674ee7e7acf98b477bb2c01c797221ebc1bed8f44cf9cd1877d05f5a7e750915d7fa0835eecbe02a76d720ef5514bf23202385948da2aa332ce5cc04761300afed4c311080a9f3d83bcb25ec9ef74ed319d598eb27785ad354e21842ef9f49c6c6cc1fca66c60ad2149da57430b95ae3008ed25cad3264be41e5b4d028f9eea893844a12c51c52610630ee1426fd81374e30be9c513628e0f56c6820a9fa2d892c6a6487bbf7702391f1f7bd5809ceedea5e0d35d24667e95d2669533fc1a0461e1ff80a94cc6a1075614e410fd47ce7105507d45994d177a794074873b3439a1a2f77632bd80cdd9ead67995bce65de6981de4fd71938d994a9582c54fb7cccbd9a370e5523a9716e4ab3927dfa2dec76bbc0094bd68c11235309d098e3958667791745a1011ce7bc354b972c9582366fb25bd71ad0b28d985d9d3660ef52c95b8aafbf57571d71ff3572fb0cfc63a008d8110804f748ab4c997f0a421f879612321ca1abe898d71a1de595575f3dbc45e529e6f757cab84258d4015aca8bdecfb42592e0b79bc14fb56c54016a00c8c1a2ae1306292b5f66c3d128fa79941d10765109596d25db50130f3a23e4139a73fc89f0a05b7baa9647f9e6ce9991c89a904bd9287a52b82ad9f0113bf5f1622341cc75c0f6a7b81a67b41e59cfd9b6533375ecf8310b1a741307dedff487286b0520e4d62cddd932654cce3e1ea0fa59ffddd30ed42eb2666afbd141b64ac870ffabd21ca6942dfe38983a1ef83b12bfed015ff4f9f2a25e79df3ba1c7ffa72dbdd7d06e4195724889631af8ac68adf0b15f58cd5cf864105fc30217a804541ab63992ad8988c50c28bb18319bb99a27b49284cc7465e2685280369b8c1ec8d093c8e4a79d96d4ff7d9ae3cfb4e9750fd4e4b1f99d39f17eb6f1cee760a5026295253680a7c7ca4b8de8ac30db0c6f7c7044b6c81af91d0188b022aa2292e0fb95c913f8c033dd1ba83588d33fa9a970049529d38be02689e67f1e0e1739a0bc75732db331d166b3d4504112d737c033c119a40a1e3a2dd4bf327c63407fbf34c98035b3c40231c4c125cfdd0d9ee46e4e4e152a7208308173224265b7ea77530c6dbe23a71c1124f10c4c3a8ff757331574a678b1c4016a8f722fd48717da7936c0a0efa366e7c6e8bcae6314eef8e1a177b824075caf764f37582089f9f12fac7581d14a18bb74cd1e67dcf01b8d9fd85cd659b2fdf6c7b913fc88303ea1b5499b23d46e282e532bc1a6a4296d861e9454f12626c8d97674dbb58834f3a217d7a8ee4878f28c66f62602db1650b11e42f4e73e2674d9a99565f5f69118dc0d6c94afbc404928902f0e41024b3b2189812b7033b7cc242fbc1075618e28aa16863ba54095646ec510c015cb516ee0c8bf7b628008a2d51b5330029a4e0f7c7a187b8e20ee76aea8544660e63533b067ed871d247a86d9deb3802519b1c97342759ef60d044868dba22312780e265780438d465a703dc0c254b49e861d67baec9a05c0c2c55bae2822dcd676051b32d856d1c1d621f694e05108baebbaed7bd4c879fe135a0ee7a40689bee56023a67c5f431bc9dddef46fd56371dfb475669cc2e8dbfe47da00b4c27adddc094e371b489ee8f6c8c2bbdf162ca34c4b4a94671cfa54bcff9987148e17ad18f577984c3d05e5deca6108830bd7f5de5ac8d905f38f98e75e43ece2c30266051f3a05509cf1f68aa8fa302ca58d3e685080f19f4e854aa5c57c6c4db7e1880247692995bf707431b97a6b3372979901829c37f891a6c6fe2d34c90284a586a1ba7b5fcddd67f719279b1589f85cdd711651d345de2051b8edaf6275305c4df04add47129f803b4f62f4f75e3137022343a32c7793298d240c3d86a98491fdc8697eb942357b9f23b7666777e49aadb0d52a6e705e769bb737b91d95d64897141cdfd3e81d353b51b0b73965d483742b1d7561dd0feb69ac1354141529b3065896cd8d7e64b715833e5e36f5e4d9a1cf8fca45f5c8439403715e3f0ab84abde5bce383e341f010cc3f36f7ac05b917f3ba2beb2fb1908b3fab4c6e9490d70b9c1f828c8abe53cd39533a275114ccaca6f95db374f3959eff122be3fa62b37228849133922629b737954b5636db23798d520f9d6084890244ad9f742ff58ba4e28017dfc322e2082c8b46325b633d0ed4d00009a0232aa6380c8c28a0afbc4fce455aa505439e6fd8177ea2d7cfa1904b76242a387641e944ab6c800370e30fa884cfb5b1832e62540e616f7becddd42112a8c5424a1ca097e1d73c64cd8f24d99ab0248076b69ae4e115c605ba9c15387c4fd1e3a77a89dff0d3a34368a46f21a4e25b9056a33e0182ab1af8b9d6dd950d0da9d1559a05bc56662345574b97938da7a376059d7416266999aaa31d76252b757db5a87ee34c18924e453929a1cbdb1d27faf633384cae6cdff62352d4d7384e466b1b3c41228a353f136da4bed13f0fcdbd1a2c0e5de7811953263df26053c289d02f2b9ab63577efacf5579f9187fdb1cb810b2ad350eea74a591eb68f0ec1b2eecb54d3611fa8a942147780da62a18d8051f212c91744df24251b688e0b657584e6034209237a1594f8593ee3522fea2a15f0cabd22401b885f7928d2b93a6eccd48dcb9533538078473ca71156e6de3cb2547e5dade85788dc8cbf935d8ac670b088a8673544fafb024313fe463211d7ae75d3e306674151d654e25d2f67ec3c47d92e14a517f37b8663eb8b803952fa434eda605ec9149f6ae0e05eb9c3af81548183271f6328f68f0715b26d3d1313d8bc66098d4007cca0f769d2ad30e5029678889a5377798beec5aa9c8247d9f61cc7a97e235c169315bfc645406ea6b2967124a259b6ba6764ac0b695e546b6e952b021e77907549c98f0388592aa59d46edb187ffd0d4b2c29876e17d7b32fcde42910683d527ba3db27c09df7115befb28bf5ca4cbe60661e50ee1545667cf3ca0007e18ba06fc734a9e148c9ed567e9bac8e307895197c48322ef346c3f1886bf77d8d1e54496496962996565a56afae345d158345569f1c5fce4a849312d29babc5d822c401041336c0292fdb570cd9349b7e3ac58e6744dfa08a6c1dc6c681202da3756d016a37ada4dfa3465dddfb1357d851218caf158d44c15d3fd52e3ffc8a8f6c9b4b4e1adb64977845f313c567676b3e19429da915e0d9be272693631f01a707503a503c176ed8f4e9ed6798d6c08236ae2729f74ccfdfea55bbc6d94a418535608fa0d31d18d6ffbded826ffbda6d547a666b3002111d9bdef4f8d0bcc4e3a104cb477231b2fd88f0aad3a263a1d126c4fd88ecc5a917734bb840e21182bb2b7226ad42794ebee9a970b1104fa7331b96d5f6c4064f51bf68b29ba576ca0e70ba22af9de529f452ee4391d27c3f7ab294305244ec753cdd3a3632fd4da50b49d4ba2ed99827bbeb936a74ac39366548b44930d1383e980051592c8260f1f7608849b97cbaa3e995bdcf431a92e23f9d1e1ea8e1aea7189bb252554cd67710ff0882e7f2068d9765c90ca903ed0f6aa0d936d7d90a44f4c8a95ef9b87be9a99c306ee14779ba613df16003c1571b89a1e5f0f5f0471ff16b3eb314385b48db8be304322628155f1b782c6f5798f953866c94d00d05a6627c60ce7078bbe69c7372008f06a7b0aae9ae14c82aed7c51dc6e1bbe18f6dec2780aa9ec8123edc7544913fb5fe43dbc0fa12c169985d61e3835c61e290c38526432bae07308cb1d97ed447ce5654a687a2e8f666a5b95fea0cba469733cc827c16bd379af44e4ff5f78d34f557cdde9340d01dee550ec8a99486aa15cf5aa3a82b627036f87a7ca1ffc69507eed078c27cb968a7b67b84fea2f156c29645f2d5ae77dd7348caf73d68429b2c3ecf98cca818bcb51c4f3e22b63249f8955cea8c16eab6258ce4813fe7ef66c4315e3cb800476880c9408314aa01da845e718ed443a2466d499e936fe3702b01f7d2fcb13a87febd355efd0dbde5ce7c02ac26146a863708e1ef472cc4b6044b609e2662db758aaaf2c07ecebfd023a92cca3ff64897daaf80ec4e58c23b727066f692facefb3c7eb50ff78336f17b6c312f1e6a14965b5350e482f98529af3b0d11b1566a2228a4b9e675daa09e246b592899c49f9e31de42e483dded3dc81eeef32f849e5a0ec923f566fec10eef0ef522d151813d270600e51e5fa585c26f7dc65d49f02c632caf76db7f8364d693c0067d6c1a32568a4604618f623ba10fa0b70c0970315e0e81d7997deda0272cc8a9896c2b546f52b983d8d8f5debf0bec803874d3176e1aea3d89499583703dcb13f0b6fba924c625eb89b6775ad6818c68886d46c8626ffcde277ef36fb3ef9bf24a45ba520336b9388e3832690548769b1c694ef942f28beb3b3d52fb6ba7e18bdbf261a36b52019a48aa95ee14a7a1c49d14706269f8f5ac9023e05321b20273d4d3bd92996a190776ef8b7fbf4795905377950158bbf1aed891d10bf1bf05232602a2679a92d8893447e9d181009a415027ed33ef170e5232e025fad0b453701ef16a7f04d883809002e95c82532c27906fb6ee6596afaeb97b10937646bf5ac60dafe3ef80905a1db1d4dc277060f83fe150e7ca4e7065af8e4ca24f57da3094dde9b55d58390755136eb2bf91e3b4b296da28a04e75dc5af5ee7df87e5d7737842a76e975a942b653c890665ef806952f7dae5108d48cb1b450be0bcba1c9d6bbfcc27ed073c42f037cc0f7b4594b57310d528911695f61770f113a03de000e4bfa0c1bbd9f986bb324c46676c3cdfed479264028f38628f9ec1fb4bcd39939637302e24c670f391ed61dd830f6d016c20a9900fcca93a134edb8b95d838624e045e55f95a99f860a0a84e215982d0bc94f14a93dbeb1f632efa34b8da8b3bc812ee1be3d2d4b2ce9493811744552fbe9dd0632126eafd741cbc0b7fee5e452d35eb697fa255ab1a801be30062164a539378894a67544de230a974c13b3772b585f5609364c58aa69f3ba21699a8e822e5dafa3f7284ce5383e99506896a9198df28c4c906c14f3120b99e88165392d1af197c4abcebfd7d689233be884c4f1e34543de832d790919a140382bc2646b276a00bdb804087e394a873257bd877cbcc31888059c8c9b8f0abb2e302f3a6e66605786892f9c536fabdf055639abef949098ccd4cad9fe709521c4971e7aeb78cd5dd5ceb78a2fd2214aa468cf75fbaab93227e5bcbc07bc4104e33d73013d5278ded9e7872cca34cdfd072b5b65d868564362ef40181630bced890150f145de1bc0fce702faf69dd1b390cb62a47833fd916c503fcdb6465d2fe53c15846467bbcde24fa11484eaa76c3feec339a2eca28724de138f8c8594f48d3f3c37cf3bae362b9405143b007560391d87115f13fa1ee850626deccbbcf99e5faf8d7cc8a5faa4cf5f5c1e6f166bb353336e6655802a6c93ec26b1ee7a2fa8bc5736f5f9e81c79f12d81ebb7ec1f6792fb601db8fcbb8608dd758c1cc4bb45340aa40313526bb3d6d4db0331139165e2f228c71c66bfdf2e4bb7c90a4002cfebe1e2138d746f612afe1fd3b4e0190aa6908abe54fd5ee1a9b2be7c24faf907332ff8c345dd277695946d9a082cca220f02a843358598f4dd192cd58d60f578d349f3b5b48212214f625b7a8f8dfc997ef7c8be15b5ad5ae6ba80624572cef676dc081409d1a57144fa16087fa09774021311015303b4c91268a13c51f0abbee0a100e6e7124b6e1397cb183c24f565900cbd644f24072f68ca01c550aefd93f7b44b36a019c4e4327ecde07df6ac61763a334ec095d65ce4fe2220f0b4a820182550f075649fd8a62cfb76ef7ddbc30eee173c449bafe28c15dd9a1e8c7c7d6c4121616e12faeba983e63e3689bc6741206d137e1a3feb80a34d55738d8ccf873c0f3fc7a98d98b287eaebb889a76e4143a6c01d54f7f2ad2cc2c9e383b07dd64250f3b5fdb4e14b6a7c2b84f8eff49f81047db9fa8ae3c6682ae438a6295b0beeec5d101281fc89a4aae11b4d77d03c07b9323dee4c8f6b517ec83df5866e9e6668e348779f0209631740fe78f9698a21f63b01558fd1dd5e0b3f4b6966c89586895cae3ac8b2ce1e8ce98ccf1ccdd3c611a4e7f90627eaf3aa66e21e8ae314075efeecd00e87d1abcf8215a2523b14ad4e973995fdcbc3e952ff332ad8769010e552c4ba119af45e39037d196b26c63456b0d8d8d3130ffb48ee3a3a40c77af288f71f12708511dc00c76b7ebc55101607d7efc7fae8b238e4bd2b87682d9ad7443412371b48cfa3224ec3aa674e5a678f597435bbbaf2014ab9643b9647f65ce9074b5757fcd4a268f8b55790a90dfb96527e997a18e32f6fa0a686f881abd30965efb8f346baa02519d99d5c11c6fc1dcaaa12b6b0e89a1da09a22f35fa6dbf941005222c5cf0448723bd2bcf05606fcb94eb635a69cbfa19e3282a7f47f61c0b2eff22bd42a608cb73bb8edf0e1b9a89b4d198532ef599f154f4c29e85591b5c9ebd4955ac78522d759bef674787cf4c1d13e2a5abab19366aad46f0232275e246c09f9cf5865ce7354a7a49c10bf26bf3ecf9a5939e2a18fdbcb8ff88e431c7a507af34ca4d92e0c71756d8937686ca18ee9dc3885e09c6bbab14b25499503b7c320609ae1ec25ab27f276401a760b666fe360653cba4081cedd0a12669fd63bf0b50255cb8fc8e38d625ad7f70ee2341a9c64c51583e6982128c5c1689202bd4d83b818c1795f47259c58205315e113ec3403b5a330149e31442c801d8d9246601de4d0e9a6af2940e1f9eeb70acdc0d749d4276710047dd014e983212f4cd8f2bd8ca5df564df052e9f4be1491b462b36347ca7e580810b0405afac42e70d653e0f139cb43fcb1dc95a00fdb034aa00f1b9d42156cf349fee5136e15f08b1a432d2b77c1d0ea9d5a5ea58e3eeca9da8f4a9fe7e22718f73ad55964eaf0de9ae5a04bc6a6772e27f4c913b4f347ca2a0792bbbbc15daa46482b5cf23d468cc3c6a085aaa8eead1a619cca3a2923508cbbac9cd749bebdb61615740a309105bd4e259b6f96de818bc6be179eb320783b57ff083928766be331959717d610aab58a91783dfa49e7ddd280528b6097b3cac2cf5a73fe928f3475540f2112304fc60caebd7170c782f94d3857d3a3fdc61909e1f81598cce4151a0fe3008cfb08f7dcb31518141cad445c221204cf4c549ec1b6b4103f4d456ce39bd50d83a5ad3a802d8e3921aae518cce5d3d37b64c93be778f9433615fccb8229003bc4ecfe949fc7c06fac990dd41fd27a3f2ecebccb776b48b4be0228e8b6b2808b393413e6d1dc8c292794e9358efd331023cd0346d69043260faf801f664f00e7a7d86511ace9fbf72eb96b3defafe1cdc2436f9687ca7b9e4221b341a44d9928bffc8cf279e327d72ed11afdbb2bc0dcf2b56595769c37b879f83956347323b2620eb4550b000c09997afe68c8afb9480869e871241239f932ea43e23a6012e51bd6618596fb138a3c0a560fda8cffe1fd5e44ff0a65a6f674132445b625d53bf27f94273311ca760a6d8231ce9cdb81baa4ff94e5110ef4cb4e7af654b8b7cc8cfca512784387a77ddfc6cee63b054181fd5bc7287215188a717762b4d03a2e6fba337da1d0effe39ef612d135c0f225c70a6e4c0db4ab02ca60a36d646b916932b8fa14385a2579be8b9d6f84603a720f5d30a03eec3f78711e16881b01785ba814c91ef699118cd18459f7cd2e9b89d9659b7dfed9f75f4e4810c9cd76956f4d744f84b1f7783de0f4e79f44c1c28610de9e5773131ee2c0d11238b156d2c639ec7ea61b055be64512b16adea7ed406c2724dc9dad5de1dcc27682ce64fc15ef4ced05f6b03e7d96a861a33937a4a2fce39239085b58ce01a6d9e1d2d411759bb9275673543a8839d8d1c760dc83b1fc44b098ede6c3d4311a678830050e1b37ad083b1b2ca55e181f2849a843bf2f76f37e3fef0520158ddd6f378a896eb612ee1b4372f1a65b3a34c2181cf7579829b7120369daa265f5d09181f6327f9d20eb417a144972d63a39e6ddcdf701a10669d588a25619b9556a9dba128562abe99eded4b24072ded8906bb8f74d8fcdd0d4cbc3a2531958f0597e73a1429abb699b9dbdbd8f32fe12a0351437f0f90a9b41ef607dcc74ebd1b033268a781ffe2a49d30d3840e05b283af4ff321fabad522621ed1b790b5eb678ef06d308651bcdb1ab10799593efcd56f100acff241baba73ec2afd59638253e9fd37c6bb5f9cda8501f2e75ee4c0e0ccb01cb12fcf5e27c41ee339819d078b978d90d56c178947019d00c4671911f63dd5d1f5931410117e3bb062637d77d9c9f4ae6bf706dd2b3f1efcca77bfafd6f9072abab80e8f592e9205a94f9315b785f1c1c882b170a6d0a6e84d0e5132452571d9127328d98a1ff6a38cbb30e48cca3d1b30678e59feefc87c875637d88c302714d4844faad3acf2f49bb7c9979ee9f2ec224feacd429a13744c6c6f0b8f0c048d4e7605af2be1f60c7947e274311430bf3e34e0c8bcd0a0231a5f91362f4c0767cbdcdd7ef7b7b85885db75dddf212d8974033a54acb6d21d02d74700551f8704086d3faecd39a9e04850e8b5927ced77b99cf5d327831d5842a1d9f6fb8fb8e711bbcef2b0e3f1cb5e23eb4ae94c6770905eda887c8bd26f271ae0e19c56f836f5ac85c3eac2c1193a6b63e1f4841e97a0481ca78ad49b1ba60080061d19bfabef35a3f49f3ba5cc0c514466a26fe6b1e471854b941070bf2574987a08cf5c4a572a7ad14c6b7d49446c4be8ee1e2dd186135992615d250727af6e704ffda213f188ca5bf7a487cb02609dce17579e509143509c7cf21d829979b8d4643f9e5da94da79b754ca00b3e244974b980c062b8aa116cf37a15169fdb78e84227000d786618e9e90a089351850db3c5793d547bf18620e5926f0509ffc8a2daecaceca36d1390049d9aef64730667c957a6076d781f8fa37fa29489be20ed87167fec45f48ddc70a8eeb6f0fa61e2ebdc0cdba35035bf2af5665f05ae23fc8ff2ee847f2d967620769c7e1dd9efd745b683ebf249c84694c8c5332a4da2b8576b619595dd5455f6e9007221993e1c0ba56bf8ec12fec07d2a59690d0f8e90a5c0fe518b1c8bb80e4d212b85698d351bfe36cc04291e5d1142365fc3db90afa2552edfd85a9c4c7feebd2dd7cfe131bb4534b9cb6c39bfe628f98baf24820cf4ecbffbdd2cc8d032e5d65f5e44457bafc90bb65e7c22acf5fd5f5e54c67006413b12cca829126aaeb47b9edc0cc315ea0bde875cf7abac67d447b708faeda08ff2f97ea0873569345a78269233179592797d813044b15deae219b18571c956e1991825ff6a8199fe01f2008908a6a1cdd48f5989bc03ab6c878afd7509c0d15a6c5852fe78087e21765ca3d941afbf6a1792c1f2f298043c0131c4546346f34e82b482d9acee2f4ef8e8c428ce2696240756a993e135adc7c9e9fa8e5ddcd442c2044fc2e69d713cd237e801c2197b043475fee92214a60184065b1da4d02004274fc4f31244dae4088338131bf935da51afc3bbc2cf1381e048f116113888e6a7acdb26c9be9c76a658a9ed59254c3baba03cf7d470c1237b9ba6f179bf414d23422f7893d50a84fe629c67bdb504cbe7519f8b694824c1551fbc3a6412a5e2eed6b0c863c34d93308b26d608cba0b52b58c6cef3c5482638d7d5c721c0ae108655bb911b686244b0d2d8bede4224860f3f5c02d22469483f905c13ab22c9dd97598d6cbf212a4a1256abc047479ac05f4e8ef7ce7f0df872dbfd241f091ee54dab12603ae27f7d5fabe26936fe616926c1765d139fb7773550417655072f3c21edf30522f926f54dfc84719bcb921a0648a6605694d474de709bb125be246839878768076613831df2d7397cebd9b47ae29296192acc0b7f4b3283fea976f3ab3d2bdd96436639389876099c55503cea3be9848752d050748ff74afaaa705cc9cf7d2cf36f8bc6a1cb24df76679c192ce78b91b60ca794ee47c92103f80bfde8a6b45e3c8c9ce59cac4380f53f3d3e3f38da66e6e62f17c479f3b8a37e25a6fa9ddc48859873d5577c1755281b6be0b8a4e7fe75f8379914ed6768422ac4ec7a7344e5a08779faaac1254f4465e798b95feccd98d36512e0cd0e8861ca7970e7f7a1eed053c032a91e2005497e94ea4c28f66753645956a5960bcf6ebb817cd706913b593b269fbdb07a5247def356495e1a19e19c791c83c29dc15c891be3b3dcd3b44852085b74761df4d5325f615b625eac36ee7c17d26129e396b1cfd3afe24c6654f7608a9626814e299f1f4ab4c0e5aa7e83bb9d05fb53008f8540c4ab6e7be8039e9dd56cf2a27cffd8dafccaf3ea6421041c1f254958ed80760a6d6e7af615873bad9f6894fc46f6f5decd808535f139b8a3c8332ac7338cb2a079d550b30780f5d39391f261b31c5a876415336f4b28a6c7e3cb043f63e685d15160bfa56a78f3966ef87b4a7ee5e4bf884ab4cf3911b14cd5fa63eb93165bcab0587f2f32062ac5176f4cd95ef9773a17a5f22da8198618554b7b82a46e0bbfccf708e7da7178fb2d12e4fb3dd3c98d8f7723b3d8facfc87a20a49f403695852a9b67afd5a3319db01b372fbe2c14c4afbd4f95441e1941888080603e99af7ad13f27e78ee5dcd98d01987b29d4ae872b576f49f7a9f4c456d4c69f5bb5a5c97d0dad00ddb236c1193f73a2f3b846375c63dae536735606a0778bf9fb34f77b2944888809a04f8ccd0437f3bb84d9e5bf6ddd697f8a22cc8b53bb1366eb35d413e9c6716cd5049c486134d01dd1ebd127965cf05d5fe7e92004343a1f5c9485e2078696cd0ac3afbc78f40e2bb11dbdf2f4e999fd63f171708f9b8e7adc45f2b416f37e93f0fe57344f65c58825fb353a405be7e095817669ba24f4c2b7fb5b42feca3a1abf406bf1d4e90b54834119e16fc792605a4b3373b0989f64f0fb2681cd043306af9f1faac69c84b4bc25af4adc3cc19ae1068acc2edd797dcce834b0d4f098d2b97ea5ba8d3494b37cd0732923d561d1e5ee90f04e9b646b0ac0f4fd85baf5df2e10b42562784dc5d90c8ed321a514ceb686421a40c9c85cff8802c61f14f2fa616ad73cbc1f8773a119d7d467f986c4da720bfa3b4b7461aeb42c125f94a02512edab728c37a97e562987d95708193f0be73d21f44c17e32f231e27e7d532c1d88481395a034cc422ec6569b26a737758384dc7ebd44ab76d956d26dbf25df6c0b54e47a106cb1025a1694e607f58551446b82663e247ba3781dc2aaa66373e403ced2d0e2110c3638db74b8ff7896df6d2555ed0eb6587be3758a9d3bd80544ffc67abe24b5e9427b59a1814f8ca7e0869784cb77b3382599d7ee58354cdf276de1fb8fad65606718071253b247d54f295da39135d902dd1bd6fde69b341338e98dbe600baf657057680325fa2516e848d41cd6d4066f697ba71f0a3b0be15ecf0d2f645dbf7cc796e391b9f0d4a32b275a020f444d6c87a5c4d6616bd8c6fe2317a53d3efc2b1667bd5edff42b215280a1324e67440d97905bdc8063ce75e3c984e390d5b25fc78b79a23bb21550aca17670584a1c5455061a97b8516c0d46445c8ee2fa655b72b31d6b5babce2eee26cba56e289e6a8bd0b8724f42f0ad85d776789d3a1817dcec57c4d216559e8628e07c87ac81f9303c998de002a4380d47cc0d68407053db137eeca4a8a4607fcb5181242dbb07bbbad5254075a478589674087d8953eedf2c9ced9d4a485f24b810141b5faacfabe2d94d916f11105c16083d5800db60bd33f6547f33fcdb7681716745ea940a8b40e5589b674caeabd32b45b5404afc6a6928eb5394531b90fdb542b633e4209d520d48dbf64c05a54167c74405f1aa2bdcab37e3eebe279c864742268730986c5fcd165682886f95a68b1dbaa4d400cc02885bad6548152f75effc1345b810f0507c476ef574123fb40caf1aec0a00cb57182ef559be98169e530faea170ce78996154224f291eeca66b004780193bb08d6e8fcad8123e6f40055f5a8f5e91b4f210ab83858762d8d7d918968a2adbfa250c0a206cf88180ef49d96e7d613a79b19d640405f8d0c0a54df25a145cf34c374e98d414fa07ac8ac3fbcf32a0c2a398f84f14f87a659b2378d8aa71f8b6df51fda254169c831a163d04598d14f75dfac5466de35c70714c1dcccdb66985d982c365698b776d5567f732e28daeef987ec0d13e7bd6963f95332f98c9563547abc93380c4ac8b96ed4bab97f8b6028b82544abe0aadfacf8d827378106831c47ba8483faf32603c3c28e4a4f1bac312021f77951a987a7f55eaaa8518d528d2a9fa77d95d56b62e8f372ae74945eb4b27cd6ab0abf206aa3d0452ced26c8f17ba4a9dff3b64a542ce29dfefefab32d8a5694c1e26ebaac9f38a1dffbcc4969add25dc762a064824d5c6b4ca2f5b6c61dfaa82ff0783385caf2a978cdee7cad53af25234498d4b9ad24b8fdbf26f6d9ea4a93539fd2a2b66b44dab2b8223790e4c0635bdcdce907a553c0acea843f143151545b8585fdb6f384ca888a64f271eb62e6f12b278d9542b5d726fbf756a14a425d5cf2bf9af13e76c2dd834f6d4b92c9b243f98a2bc8a8a8404ff0cef338823772e30afbeda025a5fd2c4a62de00b850624cd79f4d4af388cc1fd968313defa8984129e513eb2ff1ee257a2f3a9a0a5b465c788c2465f597d9bf81c9786c245e36a33e38246141d03cc05e5a395997264fed5f4312cd5b782a5676b92366045077d141d630e8db8087d9c190acb03d6ec057519157f05f9e461a5498fe034a2df2a212fec5aa71546a7f50ac55fd7f23bc17e94f8aa2e3bb6208366ec8f63eb0f79199a4dc06b0dc300a7585f600fe1324218985bc8f9ef1c8e57397fbd18ab92f1bddb591fc3367e83ea3039fae2c0ed7630ef02c00b6c238e2f8964a7696881d0c7f00e6722e3a9470f794b13a0cb35dbf05072603968cb3f2383dd4e60b8446b469ed865e258f66072e7ea848ad9131c1b1c025566d531dcc18086fa6bcd1685ac99f428423f9fb14bae50bb441aea40e3d9d8aa4a5b354b5f35758f0425ad451434e9ae3bb8515280ff93215a3388168a129c537ce8f8c0331ec974940aa9b42cd419dc55050267708cdd4db8013381aa15c1db42896d6a2ce21d3bf64547bf142abbcc6277a12bddeb0064589620075379d2345d7af882e1554242602318dd89d423bec7c769d110b94d9ad1530487706fe2ddc799a98a573501e16d5afd4652c1b9dbc4d7abbea9a0f42b1c7c561953e0747616c7c38d3ff31b3f2dfe589a7f86f7548816e997ad89a4a3dccddf20e931396f70c30029e8dbafb82cb15f9c4a24dd27be0e60761515586e0c0b3d2c7152d8518d4cdaf2018dab15a386c2de5882968c88f1bc1ff8961df08f70110e3093ff336ce2a0d4934c46df561236760b9e4c4e5866539b44088c206a3b47863615dbb3accf654fd5ecdc9707723246c930cac11237dfcf160602672df60bd57a8f37c64384448b4f7e349d5f06710dff1ec894a1a180002933bc52dc07320ac15aa9f4892987a45844d7bdefc81df55c7f8a600c35d7f568c4710d2776820bd86ec06d8289d02309e0a2b56301f23cfd77e1c787c6b7475e467be7f638f72bbabc4c71e37c4bbba2ee389e9486b2112b7ca2ad7e775fb82c96e28949b97d1d6cecdd8fd09e0e033bdf16e5fc524d66f28e5557caebd089401ddbdf4260aff9d9ad93f0374a8460e21f5c7346958eca9bc5b9590851d3823a5992c1dc242ccb778f0272e04f3c9b198313627e58bdde3f42b80ca7f0d45bb570fa99f4fb86496751ca6a4b061d8cd71f9f043d24d6f22211dd324a2fd64e4caaaf31e8da74dfade297228be28f1158cf3cb2a520a01a3aa72861a64d2260a5080bfbad1e94b3bc7debe3b102a35d843e2d87ba3451b1223ab345cdb86d7cfb9ac9314d61bcf17abf215a12502cec4275397227f16404852bd57b262355e2a9fb228af88ce7398d10e450fe8e59bc3e09871958a768f0b435cc822d95f6c5925b8065ec0c7ffc8f084c8a374ddac43da6f48c9e8bc99391d364453982c75815ba3e2cb494caac2d382b153a7dd45383a2b783cf3407e2709027ab6e63ae69c5b960aef40e84a314b170faa3cc77c488b101708a6d766082bbbf5cbe9b8c4376600ae28ee53c67c737b001e8c7a8b37d62dac914192bcdb0cf2c1910e3a18f76fab6230de22fa411e439109b950850c8910b48ec8aae28688f9af28a72c1bb52728079ee439bb7b1fe9919ee74cd4f81cbd78ff4f1d77a0531c4e7e5ed2a1885c0132343467e681f1972bc6d921e4b4f0ee681503d40c5e543d88c8083fb9ea3592dce773f2bb4645481cd6b50b98e20b2f09ba1854c74379837f5ae01ffc418f69ea4b0337749ff633b3d5930299be43a9060e2878c5d5339a4f2930a507ba8f3315983ca97efca6c1c2cfcb7ade5574c5655d868a472cef428c6e8026c05e769ba0577c32564e3efd50a9751c010d98dd0321752127faa8fb25be5c2525f1a83c549ac275f9b2b39a5947ef71d058098990a5a4e37471d841e4a70211019d41b8dc07cdd6b12d20606e8e68456f9a65df555af8db0d4b4ef2721d4eae62cf75297bea1cd3a829b2e43379304a5f60db254efb486c93a456d3ca9ccc10d34c6915b9c7d29f49f7bcf150c67eb3faa3b08ca12361ec41306c2541b75bfc2fe1e112b00072c8a80578a3ee8f705e64f52c1f223c0f7bfa5f527a0552d0ee8a4dbd1e15ebe4c2b2460b1a0b50f3cc6b875606795d067f4aa1f4f3e9db30f549fee076012f36c9557c30a0e05bb6aa5da2cc033e7d0dfc6d94417729a6122e0dcd386d918894f2c45867a79e10dc9c56beb915aa8d843fa70235454f46c59b31faafbe0b058b51c0bd330b9232358ff52804072d3819340ba41af70677cb93a6da90eef06d2641abc79a24620e46cbca6b4a11d26584bd39961e9823103feb17a9a6744bc1e703d85fcae76cce5a9c66e4e0d1ab01e26861869f768f859ac1a308c606b01165c7085e2e83d980a9fac3efbf2b89e692766ea88c9727242497a3b700b5180e7f815033592bd2b9f8ae10c9e4573be39b98515da46ccf934a700f3558081fcf314f8ced91f5eb5ab9c0d8c4826cd254a79a9796dc220f045c01bc7c36e8ecc0fa53ff7c4dc115f7e9206adf1394d574ecfb6d409c66f4f36df4289d40fd65f2770fc1a1b323dd3ad806344b5c5809602edf8805a72fb814c8a6fd39aae11b38b80efec681372bfd7f62ec4088141d70cc59c1eeff957c2deb0d9cad0da93e31865fb29ff4d0cb7df30c2f4d0e4fd4e30488b8f2fd9f6c83e7106fd7b4d824eaa056e7859410b1eed5cf7734327b9c1a89572b939c8542e3f1ae162b1655c0563eba5847a93c6af6679374f29535499cfa9b122c1622d7a3e2eb5b37fda51a311bfbb7830a0d2c36ce94704df567a7c17b39373f056c57fdb257da8b24fb873ab7c9baa3fbe7ff7fa0a68899902e18e347e6a447692f6f7914ec4ac1d57af94d71ae01e05e7419b6c7515df80c6f8e1fbb0138d9236ddd75860da245d7606d536cc6b9cb358ff743d42f0d372ad3d86570c9ed9ecb46faef773772b41a7d946a8aa91969e44985776c3c9bd9281b2c7721c2b28918c2c74650800210e72460b66b171a9189b9ff4e032312e796c50fd9c05378de22b1650064a937ac02c3df8ad9822e512289ef5c0de3e1b3af7d74229c9c54067c82688776107e2357abdd4acdb034cc4a67f075670cc937479e0800cc49ed25822c639af8a2737b7761034fad17c6b3173e32e68213a5aa021aa3afabb4320de5da078ad945b4937d8d5f88f625527fb1f3b94b5dbf8af955fecef90c6ad4312a7832a0ef72d96d9ff6c8b6b00f778044a83829b41781e6f3d5c42fb08e7217ab6725fee08a8382548441105368ec4a4ae270ba841a9bb16229b49646b30b5c782321371ce16d289bd97b38ec2b8ca1745ebd34e0b907929f527f12b38142f970b6fca0350bbfa368470028c5ffa9bc5ddc195d9eb455360999666993a80bc7dade9452074b670c353b6750eb89ff1c3f6a8804c058bc5030d7d636a86c904d2946f2f7464ed83bf622d1b30ede74f182242b479814061e3acb4ca803b6a5dc53b558269c59d387a61d5a373102875b29df3ce01f27aa38af9ea6e138710c58864cbc3af6b2dedb0744a6fe474f41786e52022aaf2e4f8d436d419f5e4e241b1c6b0419ad44720bf715ee0dd5275736acc418e4f8279032a5b6c84021d0f4a39b7f2b373ba5a2c6cdefec5dd5a9240aac17b688cd2c186b5287035710526bf752453ab835073ce169560f50ae307af13976861dfc11a298dc05a1bb7b020d3e46918c76430c2d1cc01596457898dd8a54ae6e613c92ad340f2ad86e5dc8284040c816480f7c36cb3c68e285c911ba40e1d77a9a8a2936f2943e7f11d3971418d73029a86fa92e1a5dc34781373916d8793a457647aadfbd6e23d7c2a9d8f6cfc73696a78d59d3de62450d4ba323d464879287b1ba90f89e450ee06c4540a08185d37aff2f213dd33b2258026307dcd800c4bbc18b721e58f2792028727c960629e75d27aac04f94816f9111d1f8bb5739fcbc5c8a00e25a4fbb89be73cc4e7e7e80cc3a99757e8c4a845a3d47dd924bdd29e4b4906b9665166f7301aee95e85a0528b09e80551033903119cb15b80c0f33f4e9d75d073330dcb8385a518925725d1598abf37d4515fb18eade90a2a3e4d4211c7d3edd21ec6ea5b814b96c7ac5719a9e21a59bdc2b74b1ecd0773e495448196d23476dbe7927eaeb01162ef818d32b6ee7f046b2d1fc99e30d81f46cfbf0af5d59ace7dd0ead078df57cd3b4c92c1ea4b23e97b1b088390248666051ade339898534103bf7ebb07a6498f19d4f9ac70f2bd0401799360c474c3f8ec54edde3bfa340a07de31764a4ff9490637a73dc921e5439c878f2ce58b0a386cc6e3a514e90abb7ebda8f8b5ac7dd3a2ff12ae1adf6c4b6e1efd454d97e1d1069c50e4ac550d4507e0bbe6d1dccb2adba7cbe21262fe21a112743714f595d7fc69734c535aadb199a5da8a5bd8ae2b0f65ee2cbc3ed64aae1a57ca5561805f8de45cab2213570db331d4df03d7a5a69edb46ec2721311defc13e0ebb98d2657238bdb479ab41592c06d5fe6e25c4315baf84094a4c83db6c80348e221459688534cb4008d19de832a4672f5f1dac1a9909850b96651b8045e12cf804b0cf35d43162e26ea5de0cafe6c6603469bb5e10ca23377d9464ba591920e142f8635e235b795b9ab4a267556142153a56e28b1b52af2080ce8b67799bc0919be385f051728e1fcbde573ed2869e5cea7c166b2715ca16c71e43e31d2e86c6302bb8f67d8d9834692946b7b6818994585df37c22750c3004a9f49787dfeef32f192be2f4c49e003aebb497037842ef0d60df38c473b1d47e21469d1baf6bb6d544ca0857c8b0957ce2a3b3dc669e572493644f90641ce650a0ba1a47d02d9d9df3337953b9c76452eb1a32a066408fe5da419b19c0175536da64d8f8a3534ec342d8577b6e73c9a407e46dd6225e418f244ded903cf02a918e4d54b2c2796868b83010f79d2686f83d7ca7e7274e091b29709c8bd506b832b5451a7dcd0410171dad4f428bca0887ce49759488b2a245278cabcec7e17d263f19981a585d61c78f24049e1d76e0b5c181eab11fe1868cb189ac40f75978319d4c00a295d4e2bd6b152a31b579ad14a1bad95e261ff2881dd9b70286c0f174946d3fe0dfc9c8ff5b1b2cdcc911abfb9212a7e643fd593cb48831d5c134eb0c4a855a5ec240d73ded2cd4f54a0fb8a567427047ed5aef7e3dbf7c96c1af76abe83ff31e6af2ecf6aeca425a4117a9b0a92d4a1bc7a5f484b61451511adecd9bac301d7bd023962f6db1e3a256bd9e8c2183b60068d40f2f172b1c8f199143615332f9fd0272f31b851f99889c82b2b7c2642a6b8a41356137c942e382398f923970fda14ae9425b88110ce173c2bff48603369fabddb4fc7bcdbc20572e7b62a7a42faf1c7885b24bd2e9f58cda4f93964c96963b52e2561d84fc9c56b3f9d4d242ea73e31692c52acfd808769695431a025771f00c10e0220fe14436e8d4d99b99b43596bc05f470f46c6b3eee8688c84a0f95e39766dfc2faefc7e57d14a2ffc9b2c173e964cdcb44c1146341e195b4f406c4373a41dde59602146bba2516dbc3b64d4960b0e9af5e6dfb8bbde1aa66a288dae58c51f3a27c48402c3d587e235bd91c112ba9a2a7f4c02aecf6c11cbe7b68883e454e8ad83eef1cdc4948d58e451e2ad42d3fda2780c744101c28e724ccae2162bc37ec797943f1543db8a12a2612e0abf3533a1b66987d45f5b770cf08ccd77fe508810c453dac9545ab51187163226dfea449d3cb23f3554999e065d03bca9a665152241f59d1da4e63fb62373d2bbfb61dd44af2757a2746b4ca332f4339d094856572415467ab839984c005f9c68bdb5ff8d7bf114124e0aa272e3b843f1cb63b204ae0a6c60888617f308feb908748301ede98a87a17151062d170b76021468e8b793c5158eda44a4208f8a72a464fecc5341966bdee7b50de8c843cd969e276c750b84928acedbab5829e58c56183532ef37436ae8f90da77d0273b41b595fdf411906dfccb2503281931ef68f0e110a462fc7eeba425450c887388201c82e07336d7b93469eacd0fb0339b76a87af711f6feb790207ceeb55a1b6d4dea0ae84de8d539730a26ed98a1fe9792affe145d3f988f9dd83defd352f4c48f36776408cd20e9b78e596368dd0c9368923584cc8af44625c25a07a6f3c77160dee179f6662cd1750cd0622f220fb9382890cd798f8ae07d4e2936bd8f086ca6d12d5f07e2fdc40188e1362ff83a397110e14d75d6db7adde82ae4a962057ca15585fc6279a19586bd37290b5302eecd8f6a97907aacaacbb9d2393233316d975c3448408099cac97c597612494a81e4496d52e5ee6bece9909cfa48c743ab3ff558680589306d24a661cbdcdad45d58cff01d5ed74f0d2cb20665c96d39c338025762a6254940168c09e36bbac1bb4f1bf631bb0046474afb45ff5bf2a2792e39cd993fe5459b4516a9148748ea49f5209d47c69ce2ce1b24c46b416321bf3a09319a0e314810f357a2ccc4abca287565e052e23b5460a3caf15835ad4cd74a583ad37bba5569e18c886baf73f3ad9ac3547b038cebd9b7303ae104b0b54363ed37665040d648787c832da73d9325d8bcb42c5cc08d0d135005d65c4546ebee7736139afb4d58c8adb76174fa7731f068966289ffabfe5d88e442755c983d4ba27e015f94afc04070ba43a9ec6ff22d3b9eddf49f79cf3704c940c6f6cb8bdec181ac22fe248fdac10df9a669ae45ce9a664329348bf3b0cacb002441e15d6c56b84cc8ad26c2562e252042fd6da5467243f4a3cec82f01952fae9fa7a0af3e3b4015a06d0dc2b0d73eb319028a0264fb6d7323140d6e981ce32de0ea3382839447032f09b5d6ba1c68518858b855a45090563e2bedd30aaf4c97c7bad3432765ba1ae5bfac23403d2ada73bb7469927899a31af38b4c617f75e1903777b8e172c1620a1eede62b32905fe4f2dc7fdd20d5b69d55474caf34c2f87d4f7a2b7cea0d5426014ffc5877cfe927076fbe01c7cf4cbeb66350e92dadc45999679b8960a0af46a2402420acba13e1bf951a7417af04ad70c2e76f51724d907781effa7fbfceeacba966df91e74ed44cb613f0aadadbc71dcf855d7966a2c858858b861fb6cc64891ee0a063dd4a4dbb3cbbaa55c671f1c5a30842fb29a3ea028a47a513be2189cca2c6b991db53bdacd7a2ac1ea7a3a8e58a2fa0605af6c2ba7241d1d5087522f165a2617a9772447157e78d88e0226796224a21e42f7f6fc43570089508fdd045888cc721cfe1561d48c6dca72f3324148e465e60adb756f5cdf7fbd6349351e977dbb12a910b175988b91b70bdce8578d54f36a7535d2a177e08d0917c50f66b1208e4bd98661194ebdae69edd4fdb4a278ba6da41c3718f01bdb441c24c01b03fec24140deffe7dab09a9d4416f2fa4c490cf0e9a780021a16c00408d1b708f54ede60775a74bb5f3b09d053976a400b48aeb9aef2b7ad62ca6f5e8fc81afc8490a28a836470ce55765b75377779288792ba1d4569d91c2bb0a7f1730c3c14a3517b53711050b9c796d445d83191f00dd4a88f21266df0abdae3ccb65ed30a520c0f2da989fc058258376a98ce6fa6cc15303b9cc44c350e587cd616625e1be3539c91426297d02a9da99ccfe0b0025b664ae8fd7a8fae9d6b24b6b61a8703570844c7c090f8141cf11deeb6c5386e8eb6bf81e1e91b5eefd5a2266cfc1840a3e1a55cafd1a41a65c360e207091743393fdbfebcb0242339de02e36240bce899ab38877d2ef9e1d6e0529e5c5bcf41df0a6f5828a442d1b895087f963fc831e84d3f41a7a2e9de9cb4e811b96537c971fe8be1c377cf122707d9d05d784dd9fe5ee77b073874a656b630484a4b251a1dded22ec9f5fb5839ebb970c6d71e7fa6017edf8f2219511cc5cb6d5f5bcd4978493a8de97e663f9cb418f068f2bd7425ffc7198ce171557b7630691b3106f5856cca0757a850a08a5e9f8d51773da75b4d35436553b88f7b33107df6aa89e1e2cd71fe85178d46a7c0fe42990f7cd9a76760ab84d0c4a5ec19f80cdef2c2d1c8a45f6f86086e338835483069fe9a00eca78b2815296ebe62c7ad496c2f7a90333f6c221430cc8806ae4ce10bf466bd6164b522af92cf06a4bdc8077de1682deb37736d5f4280494dd08f698defbdbd715859366409fcd90be89032b71a91e3427c6f5265e8393132683d82acf8a2d9c93bafe6bf36beb4de4341844155fdb3e31d3efc700f03ce24dab504e4da4a94aa400b75e58a788db1d6824a77e309b3eb1f4b99478b6c11832a63b3a05867909e43d9669cd51c12faea0cb10307162a8d03f360e91bef9ae23ddec0f16210a0ee19dbe04706fb00013bcc49153504ee18822fcaa47f85f30c32532d47487eea314889eb15e90ea894569f1ef58aa3805cbcd3a2f201e540396dbe5356f59fce8267073f0547f901675e45b9bcf9494c4b1739ea8ca16647d0443e7f47880e1477fe377ca69aa9faca17610879b70b6b8470606b1d068f68f2a81cc13853d224f7caeab1c4b766de966c9ab52e63e19a848690bef4c79ccce61ed4f0cce64ffc76923805546d267fbe04af8d507951649a2d9370b302a7ec5b290e09a05c9f9d836144fccd91b7e06c61d8a116eeb198892cf4a302c0588870f22966cd873a66276a950eaf641fb0e90f36d17f4da3b7a8abefc3f548abb532fee8038fb8e29528b5bffdae90be73f952cc092f7c2467e4fcb78cc38ca0cf623e9bdd81e9860be609e9e9fbad34d5b66787fc5c6f27c25e2e97b509e68130b4f2653e430a9f18ae0916a65c337ab2f1bb3d5eb8e3d35f20ffeec1e96b5a206db1016ab62a0baba62d7b769af1cec1f01ea88eeb46c89c2c5b1a0be4eb5870c69714f9d645f4b2700d20697d96daf56419bd999803d1cbfee4e810772fbd3a8e3559f60df73f1bd883452dc7dbcf2b069bf3323d65efb19193394ccd976879f3fba798dd13e8bf33a22bcf3a26ae5c9f6ec535bcf9deb675a184615aa0d9e6a7bec1a364bf0e107803aa437325e79a55e6fc99cd53e8d03f1daa28698279fc1e2eb2070b029b39bb898a7fadfa4a846fcfdffd50ff0ae9bda3b12d4abc2191a15f9ad37e9698e372673114bd837aae0b4181916e17dd95acf39740753e32df18a575e65f1301183f7f947fca006c43f95ca17e90a0f8cfa2c699ce6c74db65933266326544fa28b83b461f99826670028a6c238a8047999bb4649453ced95d2e76024c4da741cdb2119ca7bda78bc3c229da2f1f066347bcb8c2fe7835dd49e353afc3902c6936532169b6a244cb774ae66a1dc47aad15a6cdd9d933c910c67205dbb0f0f911ccc4a14a055ba2ceab8b29de8e2a8fbbebba834fa26d4ac42a0b80bca381d0517d0228ef2d8ea7efdddd782e6f11e95f81a91a3ba49a45d593e9637cfcd54b4596c20f5651615cf2d1dccdd40069b1305e99dec3dbce1a5e0a3b1e13f9273bd4c4309a345344fffcab3906647546eb29ad6298d9a52a5f44e1ac61c94175cefb2c4eddb7bbcf5ab2395b44baf9ded9f20b1de62bca1e571dfdf488601e6875f5407b947f3d2cfc4985331a683e398c595dcce61dea66ec520f28a9eadbb78a976570a39f7340557a49a5d0a9df94583584373bdbff11d7fe0561ad8216481aab4785c73806ad6939ab1cbd18f083992d7f09aaf53dc56a98a51866058efcab7885a0bb9617d53c6979302424f2889419b92751819af695b0c0969f29f14238fd54340b855cfb16f42cc0fdb8dc66c4fdd04a9ee2e9a3a82bdc1667558a13ce8536de0b098d9b16c3d794f352d1d60ea5de06303eeb86df1c25dbe63d0cc432661186317c98be1df86ddafea284ec951b74d8a0d264a7505510e47f22b4cf85404a0a43e2c7a8762d519bce2a63674bc1173923f00382b2f91eb51aca463742a993285884c5d91bf99ce3a69f6c85261ddff95eb114c3c259b72ae9a419e293445d17e7311e2fa2b7089fd5f5a949b9aadf7fff86927fa2dfd3a97692bbf6db75db0f37758b8664c3a420e275e33c2bd1c844da855565ba50da4fcabb6316e53b87c86f4ed0d9bd9cc42c43618ff1de5b383aa06be1643d0e606ea4efcfa5acc241e1b9130dbd560e10a501656aa7b5a400d1d449fa453d769105582bdc5bedec0118730e3930da48ba753cb193dae142eeee383c9592008c3a8cbc046ba44c968513457fabe5830cc1b21f6ed9e540e2c30de446c364e44ecf0452d690acc70ff97cf5a464a30c7bd64c37aa052228bd502918464bf1638826a4aed52df4fde34138c7e43f6fd520c73dbd18d2b00507b335e22fe1a7142affe915a3f3eb9e0938e19a4912c3eaf0a43781d4226aed82f4ce40cc8396d7be28389678b09fa936d9d5852beed261f4f62fbbfa4fb325b273af21b8fb7a8e53186bae7dcec96cc11ee6de708452bb62100ee2a0be55f08c76a05a76470e04737529539006165b46c27e8a5540847d29e85c9e1f9fcf4b0fbd27326211649d8dfc079bc3356c122c1b5ddad530861f9ec0fe70a47e0670e51b0068a0830dedaf3ec87f8905d87b0b0faf44f140bb52e774dae32bb525419f9de4d9d6c6586792d24f1834b41c6ae32668d4cc227d5fbc7d57e93d9b223a362caac28ee09a743ad761bc1415a10db83fa3b419276332f5114c3af63dd9148b2d7045a0113e0beb62d5a9d9fb869a182db234b6c660964470b98c9238a201c27e262bb152e1c6f1a56fd6a0d54e99988b10223cf47b1376e2b9e00f1b37011199303bea25a3500eb7453740e1eadf390775029c39998aeaef399b2785758aa50a9ed31fad6d9461965ee922e3141239fe6ea4a64173a9ee08c58ace0268cfa2d5ef3b49f2c8f767cb341e8dd8334e5d3f3ffae7833857964d8e59c07e4b1470f3c1eec42c073cb6858f03c85d96c8c38cc286bbe7c73868ea499c4eb9b0f0863354c1503b2d30440731885ad2725620f7e7d428d18835918cc7965a6eb6602faa91d8d0478098b70e9f217d3bf5fb6af8d8b0fc10381d9ae8ed55cb8e0e0da65b7e2e28e78ecbcd9480ab6301fe758e116ae060bd10bcc29104cfe3a4c9089910adef2bea044b42fdd5cfd47215211bd30bf93520f9749da473ac046fcf20aad80c4a2baa5c64b9f57efb4683fcb6a6d0517f2313aab0db16e5af4eb662dec1d7f93596293f79215a5f39274a9ce6f3f4853d731c0bf04cd61766dfb83454e7b548612f34374dbd08a7538a7d57d1de5cd038ddd7eb4e67b6b6b1b27d4a4605c7c5d42b090064d8e0c018703169bd3d6de73634217a7439bd28ed8562acb4b2074e0217bf34e621f0e91373b80d0253ca97e8fb60965e7638116b8b9d1dc31ea5824bdecacbcc38ef0c36051011a52b99bf3b0690c4649a251d4335f5bfd513c56727e60da08072f58e62dfdcfc03b2b63095f70d62b2037edc8f3ee267c46633d7e889b5ce7d0f8a8f9edde2b2055d6219f765b7f5ba765c1df109845b9aed503dd2e6506d608827b33f6b36c448c78c7cbbe841bb4c0012176c20d2c1fcc2b4b1459254f51920044f0eee60dd7f246ad63883306c2632194aae35a87e4ab74fd4f7140a8a9c9a16d9e5597418d0b4e82b3b7afc378729ddae8121a6ed31d28d573137c2c6421cda351edb33bcce598e3a04cad3321a2479418a54019aff586fa481f7fcccd64f081d8623f2bd68d5560291bccfcb8732f87015e624488b8d6b84ce1abacaa1c4e3f2f5d9ba9645dac00ea4ed5ded6ed0c8474946f45645f23f4c3e6af3fa8cd7c4f3d892060ec8fc31ca963b37726b227f06c1d1813fe3fdcde6edcc6e1b99a064e6b7eb081c54a0fd1749b0499818c76c6a8c7339efbc0b3a0f5b813d6cd459c167d98ae5ec1f42e6414099fecf5881ed843ab6c9adc8d7e553d0b64b5235ffdf7a2bec3fc29004ef02ca759bcee2cf7d63e433ce2df8f78d1f2fa5f0d78eff998d6223c2905da55977425daae14b663bee3d2572c2960cd118b4c76024f0caa2aa6df685ea0c2b2cbd8ab2465c82f03feaae6c4dba52bd51a3a8dcca3e43e57729162f143a988f43d083fc96d3f6e390f386c403cd4577d1d7c2bc713b4de606a0bb9c3f9b24eb54c0153b4904ba2b64f681ddbd9b7a837f3710f31e77c01ecb4cef58f24d78b05539a6332beae1484c8d77b4c69878026a811dabdd533ed77a590fc5a9f38f23fd41a7a82b0792d86c5ce383739953b9876a4a26022edc4dc7127cf1c1a3d8010ec8cbc9acdb8d857e596fffc00a4423f7d5ec46e78e8971b7da6a60b7f011039f83edb2d743d0319ecd1981f7c51fbf8cad5934ceba16c4b12fc0dfc196e84392d42bb135e86634b8b2727939a22ce397c66e3245f60036c7697da5f32507a4819c83da5ef59a4603f068a83965143914273a8f4db9afd80152a3d18b6e38cbc99455a77ff3bd64d76375ff4e0aa71d0355a44e29dbaf749be8d0a95ab106c71d785f8037c3eceae51860e70adb1ef4f7984a36d231bb9a1a03da1f4c2aa9279c9d7b8ac2cb875ed9dcf432f049cd7ecc471f034c061ab818433c15c1c30100e727d76e481e243be8f60ee34e6016a85dbf4b6c1b3bf7179b8c6c8a9b6f47fb5f7d3bef08ba2561b2015c25c28ab5ba4cd6096ead289aa4a8af9121e936b213330d0f66878c702b5b60697beaf884a0c5ddd012d23b06673e6cc5987630a30fdbeccc8ecafb022d34fda9b3b0fb0a32408204f6f4e60e6564bc1a867f009e29d65f875d957b967890688cb716a430228006362bd26763eb1794f6978862ecbbe0599247168d11b3f99555ad44e4173f79e6142d1feec36e978594a861f02d4f2c630b0f2d920cc69483443a1e90572ef5b7fb43e5e2644c2aabfcdf37f9481b01ce4f42195189e6a463585a7e44fcb4686a332e601a64c6e1fee33130bfd6387fe6604a826ee122139c9d869ed7d1c835c818fd0a292e210f3979586426967438375eaccc18da26369ac20e6b6807676bfad28e62857f1e40ee2c8710ef172ba40bd8cc2dbac074778c980729f2f53d5d470c8a209a85d8f5198bfa7f6233319e34f1a582b984cf2fa1cfe3d12ed63a748e7745c667a621afbc022ac02ab939092bd9dbd308b663dc9f82860b9cf1ae0ac5cc081929c99925cd061bd0d8171a23c677457dcb20fb89fcb2c85213c7581f1147b72bc5e526fbce61c4414db05944da58c742bc644b1d1a1f4101ab7820b6b54290943550e0044fbfea51b4e5f12abdf72a137c3417f872f2d89b0df84f068cb63d821ef6f3cba4c4def2617b3ef4459f019af239ec35b553c3872761fbf1a3d6e7fabcf983f82f23a107fc287bc6ddae625856a66a84fc50995a2d90e7d73a276f6ed8f452914af1397074d7ba5d8d7fe9c42a60154776b004003ce950f01c908bfec8019c76367d0cb8d7994c4cf7f6270f2ab47ff819cb6e3b14924229457c34db5db252f586e73131542cddc42b41cf76f68fe034b56e7c9463d3873abe4ce10bc5034da7059ba3e40e8a383265bb3d554f19d0ca66447577a2d800f6036e1c473444f52205e72e7072fe09d49d6dad913e5b248b8c4f4b8b96faf8725455b271cd6404e3ed89d816ff5baf8287163c0a354029d69b812afcd7025548fae93acbb1f1a8f79a6114341ec4cc8becd2e7698ffd0e0bc47cd8debdd146c384c54404c0c13694873d5d0009ee8ee36dbcccbc8df7610b81d51a39bb87b0eb3f3e94b431d6eda7a23f5659efcb961b97af280cbd2fa04b7e3bd00f45c761bbd5da829550fae5f43d2f362b5e1616b890345bffcd2a9521be56d790b89a782f7c6164277c266c38a2c1460d9250d064d2f70c5e1735dac204b6045fe0a66a924e86e6ce5d65c819eecff214be2bf72de2b538c21d5faa5b9667c4362dbab42c06bfdaae2eda3e213cdf0afc0676eb1b5ad106dec12cd4c4c5febe8f7c0924e67b1bace1b56a66e4a9d0e43162f33c9d804e8d9233f858dfec7f24e043749c31eb04b283f9263b5fc260519d5a5ff35aef47a5e2246273ab733f0d3af7e92daa9c039e86dac79f57da406b2b94c75d17c29e890fdccf4a4cae76f64caf12d807a64902119be999ef4449210dcca9845001bf54680be29b144daf1f0968eded3c1c5fa14c6d2ae01a660e38b6d6ceb479f113f34bb45cc53a706a84928dabe99592ae8876c2dfc046c811da2ce62d75951218270a60926a71e7b1709f65aa4c22a7bbb3607244bf9989dce0a18ddb96092640a6e231834739610022c98089de2eef330f3e7ef1691978a76f4f995bfd56536ea688875aed2a311b440f4b8d0370babaad1cdb8c77695374dd7e177ca1cf06bae45087b803c2568d6de07bae3a672e260ebda5b3feaecad5856a128576855d170f2c3ebc0c6cf4dc6c3e321805f960fb500fbe2820732b86a39bbf21de0964e9c36f988d76318c56290414e14c8c18fbf758c05ca0734699a28434f2b60e8f7f62227e839e83cfd98a21698bd4fa2dddbacc6d0b92e92dfa4cfd2cb5afee81ae763162490a73cc5daba24a7726167f29d74ac1e1876a76e3550977be1dae9b01f9b0cbb9a6cd5fdcc9ce7e7ae5f71388c8be5ee47ab0fb0deb35f13f5668a4137fcc15f99faacb7a8548387c8337cf4cbba0623abbcddce8ea1fb207ebf065df079dbc5974c8b722559e0b1e489df326776f92de058e4d30f667f3f5a0ab21d7b1e25b11e1f63912ce18b62440423d26a90e199df0caf2ecf2034ab591f005132e27e491b42297560748796d049c6620841362f714499e4bd093d2126dcfc7b42bc98830a3ca90452845595ca9f227a2e5e8c7d051e75c56e8bf8b4a7d439a61d1b1cda59deba08b2e474df408eeff44865e794ee0a49015e2839e744935cb99558c036587e551c7e34b9bbbf9688247e5d892523d0bb5ddd2d245bf597557e88d5ef7cd313592c8973ab3323fb044a98946e6708655220c52d264531a9516a9bb935a92df6e1ec763e2daa2a4890b46e5c675a66b05675bf25c8bb0faa09d3b90f37e471fff4b8b1c8ccb007e242b682e7c632182d8924e9e971483040e4de2586b71c587837d726c2b4c7e551a763e5e1657e364191d9ca36005a449a96674b15baed8bbbd180035411a74e1d2da0899a39176742b420a471cc8d8e48bc6280e285702277f6ef79622bfcdb65b5bb004145f220293af79f89a8969cb52870d911ed1b0f9ab7e024ba1f59a490895f3a4168374e27efd5b7b0493171f46849e1bfc00f6c4a2d86d127cd8c3d809d76bd2d4cdcd8a9bedf6efe0ffc290b30680518970a99452e0c1a64ac86d5ce83938ab8d58aff0cfd937165401871dc8f08c35a16c61ad2a005e1f1394278f54061b4076d3a3c62db4d9106ec43537650b6f079d865fb02857999617b619fb6f703160dc91bdb253f144761017166d5a52d6f72ccecd700807de8edb281ac6f5745ad13e963c478fe9eded3257982db8eb7d822c200c1f1ecbc483a53a5cbf0b4691a5c425e62eb77059c1ccdd7f9d2913c961a4120800c64a8e3405e51d965303a9f9c526d01cacda7f5cfec8ebe88059d957d02c12e45783713c55948baf93b1d4fe27d26bf9a921c64952fd22f0b9b7e449056ac6e7b4a2b0d335d89e44b0980a40e53f5f0926db1e6466ff5c49efc654f9f0a0687c4eb3c572383d52386f5e89257a7027ee77a73e2280a1035ef3cd48915cdee5e977f6f7384bf36997d693c88e4f6fefdeebf0cf0f4e311fdb6654e7c07017c07c4d2804ea7077bb4e4159338e245260a2b7f7e32a8e118b2c71b91cd3c71a1afb56a50a022ea69f46d5f05c5820983dbcf670f314a1756c0e55459b66c64f4d5798228b0625d8164c12a64f535bcbf22e1141720b747aada0c8fac5bbdcc98e9f77cc43ef2d9513d2caa5630757de5c2e507ae8230b9daa20dbf64e519b98041f605ca7c73080e0f9b9e69f1582ad773d709bea0d68fc872a93af997836c100b3eba12bdd6a85743249c2ffeea168929dd28f4ac9cb14a1c8c14eba0faac95c1b89d7c2d70ff8a70ff81c178d741844c13518fb18b4bbbaee6a7ca66ac116997afe79b22283f1727f1bf07985021305e0557336e6d7371d83087ddfff596e126d821ad1b401597e7bc8896f6049af162e4cb04ccdc2a48cf609ee50eae8c8128cb3a38eca31e1e8c92372534084131a9d0f12def99263ae4a7e273530a730078c8481ad0cba77cfb83144ab3c04d222cd8a1b996b4f2f435ad4d38ec9f9714d9fcffcc70a52369cd0465b5ead5d79d7026367577132bb9f349741b28b2cd941b644622f6033207e336582348b7a7e053ab899453b805297a0e21c3dddaf465145e5b26bebd2abc3b2c84bbae838924d59c3ac26b055b49ada09064c829aa17e1cabdd05ed392b287e025527607f5645a7f534418da4bb2f4cfd26f7f7ccc182dd921314619122e4ed54a3775aed55db0fa87ff6a0a58f3e384c281ae70b8a79013245a83c93c19d4793059154b58f960e92e824a1cc64b1d0cb03dd0141c1017683715694836dc350f55368b1863506073187ad5142c114172daf11cd0a643d857b8fb722f5fef1d73c630f49c666f3b9c682745cb66fe546d51a71d560b225ef15d459abcfc4828d98f438af96c35f061d20fc438706ade9e603158992b1599cc2b3d2ff6ec1edb2682e4ad44f0caa33ee3fffb7f8ddb5825baa54a2ac6327d07062b74d5c4b467779ba2f24324e6176c82c8f484944b4d24a4837cfbd4cda450e83dabb7ac591c6ceb219ee6c886ca116fc0a4eb9f4def5dcf2bc97e897a15a4ec6fe84b37e0887dfb49abdcbcf24545509c65b78819a43ee3bdfcae4e5fbe0d416f186161dc8ee763fc39901604d4a61ae5f325fd1dae928169fc43df72b43d7fefd21435d110ef769b7ce4c41cbc24f0a5d5aa275a60a23f2d2cacac31216bb654b72841ee7e0596d19a0d07d3760b5feac743c34e08ff3512b36c759115297340b277cffa5dc278e8c7d7e722c460f829ca528a99c5265f38c1950aae88a0b909d6f82b11b35dfaf238acfc09c5672e6f747d368b0f831555d46543e69a0a043ea532c14c8a8c0aae25bf172b55030fa19edd8a4d4ea401ca5ea01fb4c1e44e02b4a151d981e2b4941a6fa5dd5c18a238f512efb45ebd22d0c774c0cda721e3a52318f89a9c2748c40cb5d792ed50f217dee6d3046e8249727877ed2e37ec0c6fab3ef75305231112dd763bf4699b1b033882ccb94fc82e232372e4adca2c405293a433b7e5332fa30f2b11b77ad3aca509705f0133abaa9c1b8f84e593b7c5ef726186f8c177ce70388e3cf4b29011b8a54afda2db6097db423a95eec9c38056cf53c28fa7246cf9d932e56b5db41c2d8b84797df576cf71d39ba5562492abb3402e8ccd7ee695e71f41a68c9e638e0cd7e1fc228082e0831810e53da04cbbd8146b82b5f06523db0cb75b1c83cc3fbc2bc160b7901416b4cbd3855bde96a4f3b1a67a2f4c76abd561b0afa09639e1233b6d88fc0b55f446d686f051664488b34599985e4ce7c5c78beeaf9271e38d073a4c66ea5ea1f0ebcf20372a84f967786b9e72307ac8a17caf02d0415f283018dbde37e67a1b32024fdcb71e25fe743a159ebf9f80d6bc8da57b65d44b2e9371f32b008eb658baf0ed09d7f6b67b71d923edae7e077184c0d636a4f35fca84e102baa5955eaff0b65d884b72e65fd3ea480f472ebbe805bd63b5000105c06de99c53014c18a3dae794ea74b9e6e7d70d26488cd49c08f447a6161c319f5cf9a98306fd04dfaa21016182d7475ee99721b0c57ef9481ee38fdd89f9f2f8ef8837046c1d45b395dce567b80505a8ffad9add4a2a7b6668aabd28a843937c9cbf0652c16586f1e95361009548a06cd88e1925620ddf4bd0211612018d76f35aa101cac2e0650a9dbc68a8fe5d72df5844bf8f166ce7d36231c2645cb229c16112a0564eedbc86ed4961917005b609fcb6d28d6ea0b9172be258cf5e384ff8e53b46d49ddfbd0bbfa13758527415a55c5375ee471cc7e3217317fc84521571f87388a10792c245075ea04acc638538d5421c16651ed2ada08395eac633e16ef40e92d21e331d95b68b88dd91e644cc766a951b713f28eb53e41d85479f0c9d07fe1cd4c182c791d04e9edf35acf92ccce9bb07cfe65a03c3d4f80bc44689ee3257f78131a29f9c300880eaae4b0f7518a5af04da264d6298a7cb0467f29acbb6cb629e88de97558183c75776c55b182d1a554a0bc1bfdd75ae4787f3b6e68b5e1b398347989218c19bc80bc5dd55a23da1e12df74023988a683b33b91c506f1ccb92cdeaa351cc98df7d0b5b4e553554ae261f4eb112f4a9f64e33ab8b954df9524afe5a87ecf45db93c7fd3e6e84f9cb6321e99ea5ec6b3503f5a36f92b912a5e24254908fbb47f00b100cd04f05055ec11f515c41eda1e7d433c5d76d0d5695e674d83a47315afd5753ccad36cb573007f658c70afe77becaf2d2d12543a90449534f7d5aed32d95ac4b58f8c818fc40c562d5670885f31f62f687943de17491614c1a8380d11ffbfd1dc24d9eef4401cce5990fc4acabf84fd5fe983a1954bd641b41bd0a0f057f0be5d698dc3ec95df4c6d04450141caffc71076c5111471d06c81e8d5849180aa3bfdf57aabc2db8ff4141465d9f02865add9d040b3e1d40d120e049d9184d3c3b6a97126ae8eb6e440bddf64f9f770cd9e6a72ed8577937116c2346f8e0e640d6ce3fa46b1d075e0c9a4f09515a42f993588aa2db5add74a7ae490ec85df69b12482f0424fa0c778d4ba5ccba68938a89f39b18860add8b92a9a70c55d8da1234536ba69f2e55f2b7cbf827f9f8ef8b04215bd0b09e5c48f5248736ee04387a6ca908495c6df4337bdd26114a74c34af514a92dfc96583aaa36aea8827d21f8b43fb541cb32e31c9f203463ded4f199616a8e52ef78ade0fe52117fc0474705678ccf4660e2da745cd7810fc8f4b0fcab6823d96e253fbb9e697835ac398929fd94d0fa166f348d3dfddd6f5422505c75b71eb8a10cef109321ccfb9495bd46bac70d9b8978689722347dff6a0048ea57539b38883b0d561ffb67f66e2862e3e4901c954fe6862f4c7f55f4a82bf5e3487edae3ddce51134d99df820da565d2a93791000cf667fb4ba83166c1967048e2341e6a7b589c56542069c1738f9bed6f8325f2ca8f33e85e3261d1ee82061e12b3ca8963fb3645c6b3171a32e0ffaffbafaa10b637d02bd9f34d7a0d50ff27c790e378debf3c4f5ef963be11d66781baf7f3558b3e3fb44027822ca1ce323f4e16cf8ca27610fb3a2b8a1bf39a1452d2f4ae287210fcabd3dc2db3d63b4cf7a641877f7e84fd0740f624ca2676123087c1c1a302d4596818464f98718868741e2b9cf81661d1515b8374acb8d60d7d4986948cef1ef118dc01c525f2f44e949783aeb899ca58dbabe650efb670ee89517dc45acfca2afbb2f094727673946664849b81167c6fc4c2959b212b818c1d2605f6a986b1da5cabbec8c2d22d95e8f1c3fc812ca4dd91db7e243788b119076226734d7fdc5759856b022fda0db2c10b1d0cfe95e867d7d08de2190ed3a465f8b94220d063203b6198f517ce1e49e7fbde5a4d71d4c92f4ed2a3f8ae385972d2d1d8f53d7de24026d465ad9f3e60b39137bad6d58d0642bcc8697ed7b86f995c901b12fbc8ce5197133bd351782358aa6a5ed77c7ec9150660d25f78491ed8eade06e7f86e8c7dd90e6b62419c712a00fd252a705b65db94719e83ad527ad2c5f97ce1aec2f048957fc2950f12964b3322b23f2578e633ea564802a00602ee77be072634242b18e3722efcfa97e57bc22ffbe3cf90fe5af833742f396590a19575db7adeef3e479227066b19442db1b40bb72c7aba908260de914d03dccb86e85fb2c0576ac636e6ac334fc2e720913969e2c278cb307466e7e925ee8fded953416371e730340b51826d2a73b6271c51368d18799c59b764d117c183ee255959f4cd8df38c0dd86d3c42642a52b541915d6a078bf800291b198ec265de5cf5b317d5860e1ef5929d4594b01e681c04ed8e4e19460aa5ce63299db1fee28eb11e35aaa7a49fd8524f451b6baff1b2a09cd764b265b780dd769e088c1c8848cd8d52247d81d065b6985c8fd1066c3d7684b59934f9459b582c02a047e4b97e7740251712f320577148d5914bc33d1a07580ea3c47a2185a57a2898ac6d2b58484702ad368515b906c4f799db0d9067b55b60d83de6445fa9e6003a828655023290a08074bf1d57b08a75d53414314c5d03de6d5183e5b8c285467ffd9e1a6f0a926162fdc260c4753be41d02ff88273007db9719c6ea5df94825661af714b9885424174766a8690229cb06ee9bc15631eb9cddbacd1a4a53d61889f9e2c5294b966e967cbac3c9de2730172803f5c377298d80c3b5e0dc950d8b7ae10a2e1640fc428b0dd2575cf5ea380c8ecb5f2e04493e299a93a2bd443a5bfaa73565119cac74e458c0281a8e9e9cb6f2eddbea1e3fb5ce22ccd7d01a56109676d1498634b5ae2311b3ea36c3a8a4caad0eccb15387c1d36a298bcf2092c8a1297d3e60d9d4d5df26d5139e0788d951382be130c040378df331fd0983d0574163561c47c1bbe478234ffcb69cb8462557a6d70b87a908c9d8b52bdfaeaddd3eaa7ab51504c19530d702941110a80bb676d7c785766d636b81ef9b6295062cec156353a998d2ce650bef430f78c6b866ada8b200d1b3d8decadf12472cc1bd44147968f978ae054a7e4575679d4321bb6bf258261bfc3aa24834799a02439a7504df7108f2a74ca81010ea04a5dd7f80c8741ac15b1b133f12eabea916a56b09a6275a530a770ceaa2b2f69afc038f59e9457abee84c5747bc4a2856f57e0279b8c34728c1b117d619a53680837f92b0ed2b1836fdaf61ab44e9dea0ef3c5336b5dccd780251cc7c3ac735f30534390feada84fc886b70db0c7c1d916b93f2922a418d011439e8f6353a562909e5df0df86c8812c1b7b7fd5ed30e72e84444a7c4ed4028528aa649e44f730cecf5a480be281a157d2164b77c46b8365303174c5d1416a06811ea76909f14c0192a4c68fc56555b8a2099debe3282c6cbbdffcc893dc7d8e4adf153cad59e30a158c5c24e50067407380873b65fca375ac9aa67115c9088e9d74b68b3a5a63823eff78e5fba2d042c8e3354798cb6783ea7b9b4281b4686293e97b253e4cf44a71ad77f91330f5c38171cca035e970e10fa4ab5100eda337aa205b664d5ecddf5068103ba8eeea07837e726618366d7a7000d1f82ee34b925ddaf2cb27ab49b32cce10c7d4f501dce62ad36e62ec2e7d6b4c173b18023631503bb2ab6042bf6782dc54cdacc265f3e9695e0da4b1ec86c13d0a7304afc327ae0ba8deed31eb32f64e89ff0124f5417b2aab9d6176250866152714eb42e22bc2d4358f2ab364006222cb0c3fe8230af6dfb388d4ab893a0b84237fbfe15b10a191044999faab8b84d163a4c796afe3da17f280ff6e22aad64dca1025c99845fe731521572a10db1b327479492f48eb1cd904fb0cacd582452705565e1ce8ad62464a3150399a4d47644aae5806a9d0904a876d5f6b3244c3af11af7b08e6482955f3bfa0a3bed8d10d41757c69674b6c470fbea81f338d7880abb5dd96545e5c8f6bdf79fe87711c18201d96321e4638808450b2c6560ef9c125b49fb2c90e8d7ed5a436f30f5f5c7513d317a8898973d3c0431b289c4a9fbcbc9b1a928936827f44306868a7a62712b33d3eb7c95910ba0e07b52652408fc894260b0f12af922a46eb833b2da8e5557f324674c41ee854e9694ed62a62c83d9747398fd5f0afaf0df0a8274aa56ef66555e79ba23c4c285fd57eaa28b0e7e44fcdbb1754ba21548cb53f48358217d6c9b0b5f0b11db0d4eebacdf4473bc60619abdb1d0213a98e4724b9b28900255a8cf4b9de0499d629eb90d566a5dcc9930aff43724c6fe71dcdc11f76a0219d0709a8ec0f34e3466c4a4cf98ff7ab49f1ae8db02a7c77bba834712077c5dc7f184f2df429e3683c5f33dc3d127a26cf27d1ec335c705eaff2c470edefb04fb623e6c0877e6b18346eb469780c8af4115ca7209762595a0069a4ef9a02d7bba27d5dd9172f9808623639542966a4e1cc0631241b354201ec6e726f83091b04b5259eba26bd87dcd50ac676eae028f9efd4b8d4035abc7dafc817443a6a652b92780a62aa88ab492063e624d78b5901e329b17eaac6bfa74a4bd257e3e82cf583481f9f413682895f3ec73aa62ffdc3d8b88e030b7d519df70628db5172445c5e6b14b3a5f5a83f32d61c60e157a12630c72dd3a66a2f0102b27708d04971a6b71bfc83e7223009c5d43840ed746f47286b42fde6805e83e938804f2358a6fd7b9fe418c68ce809d0650ef7745b975f02f0d8d2efea485140dcdc75ce16fa20df4f931fed6ddc1387e3a6acd67102e367700ae6d30daeab2da24dfd2f07d2699fb14f6c8c27c8df487d334531b49252ed5bcc4a178aac447089c67e61eeae9702f420572d9a9fbc916ef147fb28f798b4f8a484db0b9e85a72bed7a8eefb4c1439905b6cd4fbe7224d761694bd07aa3471fe20e2794f8f662e25d5a8c822fb3a75979ca2f5d5f5b65c8f5d5fc68ab748d77327fd2d3b6df60544eada17a7502717a4ebc72c36671623350064857da36aa958506114997bec61a4d74c9172d00a6a7a8f8d77ec4ab23f4d27a61c79d1d12b757f697d5e8a26ca0fc30e3694a613c83dba9e7cbad6ca9fb674b90d9dd7c48a6926156dfc8e8248b21dc4f47d1a95952958be7c016fe96239d4eefa7287ff65aef0905f4c155764fdde4c123372ff286e6f7c39804bec691042678d678251e7736b4b6ea9048e209186d85712ebb91400f42ce4a7636f07f4678bef3c5db3606bb62464309f311683a8fc50dc1ff276b6f96a667e5f3cb45577602f39c25f03655f7d3947034174e2a9e8d6c354fbf3e304c210529ced95b957f945ccc765eb7a75cfb68c439ef688d1da8904da2788549dfdfd2a352753e75b7b7b6682c8bbd0bf44c4e130c04d189c1542c74a0258c02879b275e73b1c360d96f2379c2bb5990c33a8781d125b4beac4bb4cd769ab70e36d9d08dc1bac0f79bb59a317b94b1b31376cd990d8bcaffe9a9c132899d8b43029d65f7e2cc17269f2cc9517a35529be05f720bd53915df4d80e4b2e2ac516907e765eb645e1a4ca9deabc04fa96d42a1d18bd2fbc10be82a3c7316c3224d123a78338c602c14c9876098cda142ab3f11a63f8dc626ebdcad5b8fdf2c5604652ce86b1db576fdf55b9214431d8aa421864791bf21b483934e4222b65056f3214e647cadbaf6f4741f5a4648cb88c723e92f9f577124837b141cd45315b07dd59866eebd309417e471da26b496975c6fee5c7800ca9015d92eaac7db6ab4d08bc8f34fc41781f2cd5876ddbe43cccf40b3c7c137cf7df7c08a9b9a7fd2458e5a93740a97e9101e0d7c31323320c75787eb5c7109ed9add8baf2262fc525f72178b54b49ec403a8bf2abd5543bf3e3d85fcad53354e5641b891b996542acf8d3b60fcabb344739db333ad34defc12eca5880cdb36fc8941766800441c1e5b01d316968c6c220cd1065cbe771ba09b42e0d98fecf6f765d95eb5e8209c1b36b0e17af2884949475ccacbf2cc1cb22af5f26adb301856bbd4ee90b880dddba7be190b46f061f2b63e8624b7fab0d076884cf7225dc1a59dfafa6a7fb6680ed899ed7491aa2e2e8a403af01409662f0b2a8280db09a105f15c5db60d514a3178def871a650868bfefa39202a236a5778adc23e5fd918e2d264e2a6e33b13ec16e26e9f3b53e3c10b518270ca14e7587f1b5490e364fc8c4a89a29feede693ef168524758a0f74f2a61392848b344ae265d1db72f3f3a19b16624823b65e18dc5f7fae9b40e5b0230dfed022d721032355a96398285b2d76d224ad86fcf122732a97108b1ca87750a0b573a87d386f160517fe2e560d611fcc90c5df4f151335ec5b195ffcd06e7c75984497e3bad202c16ba2d9bcc81b2dc26c349a0267a0a7c14a789d271b7b2ebee8c782888a7717bc0485fc6c84c364ade2dfaa25d261c97b42289793d225f428795a128e47d537eeaf4b3f0370a6875eab4dbf85274a13f99186c98740dc0d02631e5fe79b6b52c80a8170056a4b5d593beeb5c52bd3aab43a1b4d7b494f943317100e5fd914e8166a8581eacba9c69bf9c4272360bb53ae08c3a0f5f795f9f5af0394ff4d41d9ad530da09fce370ac4646a275ffba8bb2baaf270a950013dee4d1455eb9bb9aaa80c26e425048a12f3cbfaf45dabef72c83787d9db8b7c9f9ba09e238116e0d6af099e42737882f670917597dacebf2677e2085a20eafb265396a8dc2151e2c9134f9832b472026fc5af1d3d3dc303150aa5a68e4608cd7981b42e9d3292558bfd2a75cd4a6e1ac8bc8678c1c41b9537cdbb6465d2169096849f814a590b83eff84c06909e9c7a03fa588ebefd609472dcdd7180c4fe033dd5f946aa3a864b56af5f56a59bba9029f47cd1fdb23ae1cee1cbeed6a0270cdbfed05f9d71dff1e986a12c27036d53f2681caf2353c6ca0e7c3f0b4ea904f94fab3ce8e045aff86c8b74b6d3d4bb2992169050d338e7c07885e7baf3cd565ed0fb7ae1b4f12bab832e98812c83d587129d7ecb41efdc4fa45c679e55e662fbc5e0c8202073217aabd85f2ad6db855bd3c809ada7ec107278408ee11fbda7e40680d2d66698f87e7af577ea477db8697a127930581c7fe490a087b8a98bbf1d304fb5b86227c3bbd36d0e1067f09530de760720b83d0cb199f43349759d5d799f5306eb22ea0cc85930bcb13de22a433af0a5a2e84fd65c3dca369826cc05282ad30134cbaa0c89b23fee59032c16089564714db0f94849e7b27ced2b6f3f7bbfd5c13abec580963f74423ec314e1978e67048e47b00cfc0e212a447fec85dbaa2c84260ae422e54a1de9b209fe13c6cc9cb233aea366744c653e7a61022f28ba37bac69ad72192a7b085b2d806e7c1ec18f0c5ff3d8390702472fd8a53e2e7a5045b6e83a8ffe4c5bee802b1d0da5b6f9d32759426073149bfb0e42831b54ed2830358ebb612ff35db037b4910dc044ae62121ebaa76c3e95304ffbe4a02019151e4bba843ac0203e7d9eadcbd3e76cdccdeb4ec4320f1d0ec9e9ab237b145f524379650fb2106231e788fd252db645c12b81d1877b7d2e46de2b10cc3e03a5040b6cfe81640d56648f275c6eb27510f3ae0e8be8d487918c808b537691d02af3f5abb4c1bc94a051d56430f11f4dafc0cacad14b8e3fb3731f65d39caf3f582c72740134058e6aa60121e2bba3418abfae5b65e4d9950a5df88051430e6d618a44352190e4cc67284e52f850b39bb4dc90a7e29e6c2dc37bd58be0246c4d5c82a5ae3e69c05ea0b933865dc86204cae0ef8a17f6f455fbb8bc01c6c6051e4127764bfb20da9d0dfa3c936e1ba95c7356831a583ee6219818ca00927fd10205fd72730f1dc55526352ec2d4bab313b46f3c7d7a79a29b97eb5434f1ff2cdd7eed07b2e6108d0c29c3bedf6031be9dc5d2d98e006636d32ab558f879af2dae992d4d5618811660742e29ba77df1a2d60083c4ac89c3e0bcd2245c3ba1de848786145a1f1eb2bb5fe0a7c4897a420095a83579a99150b6faa54562216ceb2258543e13349e97af5959bbdf5f4a29501f943f4b6873ba1bd31331ea58282135a640a83372e9191acd41930a19995176bc3b255b00977c20abfd1c2f6c51424ab762bd0972d79e7522b3fede098fb168d6e81a2144627ddc16cd5d5a0758cb979b1ce5f89964d9fe1bd47324de3d969f7c4a6ee06d7973d5094c74a4ff6cf243fd66f94d4b9ff024f0181ebb75722f39ffa76553288f1cfea08366e7a90d62b31158834741c6b06be2fbbecb1c865c1a30ee012baf4b6ae5173aeb4faaa1214b1ee0cf932ba444536678f9fcb878894b39747838b53ba2bfcbb2db0e9edb9bfe8cea5c2b4d7fb620f981879e6e3091b7ad32488e71c985d5e7bc6d86d15eb75a2ffd925b9010b2581c4093e1db81e26ffc04240615118eb9f256667bebc32e586daf0324a921dbad2b4be0aee1fbeecf5301e9013b8e062ee62e93207680473dc5f2a1f540ef39c230751b5a354bdc641c76765eb59828462ffa8ba141d60197bb78112cd46b27c2c5a28561a7b21cd03dc114fca0ea9b5ed84504912be938fe0a1613cb1e8c9ed3d1f1e62fe999f5edadffda285dfe8b06106c8581b3bd44fc7fae80721fdc2666ec6e2f1702c0897b6b6ddb302d0e9caba817b926441aa2a98a488835f2994dd6b70d60818bc3efd4b8f2d48b2c2083b3fc8fab18c9ecd9beac109d40c068c837eab85063545f7927648acd0dd6de9964e73fc5bb3d3c0e548bec0df048e067e0a0dc74e1e40882c46368879081e3569bf143f09e65240d0c825d29046d12cdf52509a94393ff4217a21ec7d73a0c2b7a039c4769f656e049bac0ad1cfbfa973dd10beb3a924144ac2cea991f69d37bfbf6cf8082c06820652b0a73e2915b9735bc508d4ec47a8da5ae09bf64b22cc55bc0958d87846e3e654c78c0c84ffddefd588f1c26ddd3617fc13673b8a21ac8aacb4450c7eede6efb2aa6482418fdd654b3fd7bf8e68657585751a175b4f26dcd96d38a4dfd6238d4d3818718545a9465cf3aa651a016c256d2adfe8e84e681e17f6e738cb16bf4d8fc198a27eafe53d3fcd21387fa40e913bd9d69a8c0cdd45940a16be7ba1afd465c2e37cb2ed9068abd1cb770f0422dd52b867ebeabe247cab0288caa71088cd9454ef105b7cf460aef5052ab4442b958d68551fc2683ee3c151a287324bec816a880b34b69ecc08ebb67f3002bf7850959c0c15703832f0b975c43b1a9811899082e3900d6b179b75045b492afed10f0b4ec926e075782215de6ce9ca1c00580bde48da5a2f062b0dab1e2f9053b3480568ff8e94e99dda7672f14bad7b0908c570513d681c7f53f94072bbbea8d7528200f327df8b35cd31924e227fff32433fd5b3841ab955dd945c2a19081968ff8b15aca373214d7769f9ee4d097673ed30650ba4081a6f0e709cc5f24a96fc16751e15d780fd86892cee82c7b1cdc04679a9b140e02751acb95daeb701ea6547e2f80a8897b0fb8a3f5964172ea8a0dd39053d3249229e84231131b5c11222f7bf7431152364139de7da1d1ecee984379aceb6f0da2e2fdfa5466de8f675acdbbe27201644abe6fd264064464fa66d3120bc78bd8e8fd9b9f9e573a3d793ff732780b03ff4c5bd9710361162215eb82376c130d687b383fdeed26cabb670c6d337884338bc055811c9dd0f0cd403759da5355f377d2a969adfc4ca32e1b8fe0595cc06421eca65d5a8ea3fba43d4ea8bacc85e15c1dffbd8ac731f75eaa5b99cbc3a961fd6fcb17f4276bffeed589273b49cb9cc0f3c45f9d686bfdfc01091c8dd5023b87208f085d6f3aa168993301bc0e8a3209a74c99fdf193e8699a7941079635ae7ba5cc875180f8f00a7bc735759ac926ca779f6a23f6a472f5f818cb5628f72d39210b865bb96212e25cfabbde91ca97146e3e029e6c0d0d498d64b17d4f942ab0aade51c61b2669cfb358a79e40a2eb8610c442fd702e10a19b536878fe76ea80be7be7fb8dfc39c926f7ef2a0558939158a06e48650168f98e6697de7d447074311b91650a3a9844399d9aeb69c0f55adf2f2a32c9f6c722820a4489250d5d36463f1107819c8a4c856b18b89d91bbb105eb451a241e1e35bc978b46b7fc548511d1f8ac00c017079c41a2863de2542d01907e33eb8a0aaa5bffcf6acc5a0d52f49dc643d3bc606e6c22ee9b5b68a7b295dcd14056866e377bd729b27b3462a7092e15b8d7d1cfbfad19a3466c8dc7cd707f35ba64d2cd2b5dd3c8c8fd69e41dff2e9458882c1e9ca5422c346d1d64911a7a8a52e6cbf3cadbbc049d5d2337881f403b0f09b633593e64aaf45d3c37b87d8479fcb72931fc4c0a499f978c72ce594a4bd4d6246d1dd135bd73242aa4bd2289335d8f61a24cf1a88a750708f647d5d69b60b688f0cfe4a08999e39df71b55615d3fde773e6bd95af91e8c5260dc1acfdc8b0ed01d9128a26172c5a2a4fca81ebc966db8a484229ed76df085635e573cb5a6bbdbfd99ce11a719afe74c92f514a6d2c8ecac2e6e5cd6c381ff4243057e548e20261eb909f4cac08b3f316f83166e2bd0693eb5f61a45848a2d50b14b8cf9653825120102f5e16d0ec3a82a8b2e016ba1091f95f35b88d65a9b0a3f95a7e6732479c26247b8007e5e7c065f39a6ef707942abd13b00c8a02a1ad96624c179d659d5f384225afbd4e166fd239f4cb80d95d2c8570625fe621741e84543d33bce0fc889ab66a5d29831489af5b14c8dc192a1ef39a61accc8094d880cd556129b03b3660d16c0db4a9e720a67037dbcefde403c6d3fa33ed47b8ed4140bc60761830e9ca9e196aa50f4d1c6a3ae1457613e791be2cc26418ee422cb25353fcbcd290a85dbbcc5e12d5e590791ba58e7c253f2f9e18b32242b40fe2455d225846bdb6c1510d21e7afefbc4cd76e8826ba9d40b3a2b80df5bd93e859732796b8e06d32baab64fa659eeeaddd23b25d88fde10f0519a5219d29922c795e8d57c60f805e524a65da1b901d5b0031e100b5686bf9126b5f5de0072220e08327b1f98d6854da77e8c8daf3944a54b37a7def71ff9679da5aa74eb864500a94c9f7195b07fac6121f85ff273ca83f61e2a7cc2c7f70d727f3e06a3c7045ed0b8faf37cf0b39590c2f2ddbd0d01add22220ab75a149f17f7a64d7f82c1f35c4dc0d93a38a4dcb63c18f75a1b5aa4566a2d7d796d3fdf0ee85125167ba6aea3151e540eb88b5a6f7dee4be8998dd103d2e534ae0a27e38ee996596011b5675f05585a569ae4536ad91a755395b176be37c49769aa3548680c3cc3c03ccbf4f4a177e232651b5f2f2e5ba19896e040db9c21a43460480f2ababec510d0eaad01dc8424e6017e890f7b3ad545a3701d8efbbf0fc45601bdf046aab68c454c9f297e784a6a67a98c3d17090eba2790928b078967d0e9898d9117d503291d7350532a37e2e1b6ddc3528be02b26dc7bed6339a8f66fdb6917957d18712b16dc7b750d658d240e0fca44c1186b2fb444fd300ffa1201a46d2c406380a11c15e45d4e757311dddc1330544a0d738e33e2636fa40157f58ddfc3a157dd12ddb993ea89bc6596e6b362bf8bb4afdd9613f03fb6649a9ccf64a188051ba048ef7bf38a25dece5c4866455edde560e47a40578f01512cbc109d042c92848993bcfcc2eaa0ae2e306b72b9fe3de044bede7e71e1a4b2083cea386703643707984b2e667ece0f7b2560056e60018206a7a72c87a707cc75c8bb1308c7c2c0b174e47f6947f5d6af3dead21e1bafbaac19cad8662ac8471a97cdb4e1c3a95ec99cec241e2bc913a3d95718c96ddad0307694dc74b117f637dc268fef153fe7e076cfd55b375315fcf287f844ac91657738424e27bf961d03a34838215f7b4c9a573aad415006119b0d3ea213be0d666f23555e6f9190f23d541e2e463847b52fad10ff282dfe2883c07b94b7348421f3d90cc1da056e6227455a8809313fee2c0838125ab8c7e8508fed8bb569ebe3366987bba89e50e0a32c3cc8edd59c3231c3073b0ecc0153755eb77454a59dd010dab0b0e28d80bca902962b0796d2d3ab1f8d57006760901c8beeaf115338ee1a116432e514c1e2b403798c315702f17673d428259b298801c488b4e843a3a2a9beee014df94d96d1da02ddc09c56a61d688aa3bd894c65865718b585ebc1c1c6df0ab3cc7575dd543c26487f16131288fbaddd5579cb555fac23e2ea3659a2498ed90e28b5cddabd07f1e6d3d2f0164625fb9574e24ec52771cbac985dcd634c641879581f7dea0a057c6a32e221d86e25d7284615bbb483730ff8cab089c03d73bf346e64a2276192d1faa83e5c7f98a105f13b5acc0c9a87ce0e9fb01cc3dc4791df02c2fb623fa5f0e1776270e5f120e9cf8d5d2efe92f66839807703944848310c30ea0e0b0fa130397b2b18d3756652483b614e6d0a6a9bda66c8a4e8caef66fd5bca0fcb13b10fbc310f09bf6c1cca3101c64507562c893748b1ec13695f71d2bbee93695e721ee108f942cb29036b26fe34a174a1e6e70eb7e7ea89bf9ebf64488f439cf4a0e51f6cf675c60961ad359b779bce4a51940696b5a7cf8b87b3921c6412f9ce9580dbd44c52aa0a3234e46d8f3c3f83eae6ad3ca5bfeaaa616efa02701690b4fde35df0087e14798515dc3585e9d5a39c7e6d29acd188dda144b3ced62a8688decbb54fa53d02bcfcdb8a736019e22d4f96b25a644a29e60beb5ecfdf13a99369b093b8e02a494da1144d7c508b1ed81a159ce2c7a3fc0e33874144b76c852f7836780c2f768e60786b88515881e39b36339ce055b0f644a085e64107d9270d7405076e953d1799dcf5d3553cbb1f322b14b2ac129f523b19939ec6468d73bb8fa5c496e2931de1a1a134640804616787b7e50a0f5399e1204a73265548fc00a01976d6be6e046de88b4f0132207775f626ab59eb2c0afe0afaf69c472f18e10d307ffef29f598a42c5be0d464e38b6540dcc3d4181d2fc46d36c0152bbdda8f520fe9c872d24b9927aae0baeecb47af48c330d7b95f951e5ebaf714860e2e68a485be211ad423f1e2e42848bb88a21817670f951c773079ed22dcf527eba27975b996ed27f2f6d5caf421fb905f985d5c849b8d89b525f5eecc46814e47ec9ddc9c336312b7042c267e2162a4cd8a0266d63211916554413e9797c4da92c4d2e4fcb9bdb3d80de79b8bb49ee687a712f9b1b8b2b7e0f48df00cfe6404939eeb65e2197e3fcb956c222c76f4e1a5e9db6724567eb68767010cbba4491b434562a0aca1b84f4d382eb58e9bf5edb0ba762256ea7a7ad56858c09a5bb2fab74c99c07927b7cafe322b9d6ac46c2b46789deadbf3a16ef24a0272fd7afc0c0c62d3382fbeec734a90c54dc60c6f0cc1999d3902b1b4b2c2ea5ea8b3390b61cf21971691ad23d515c2ac4fe6a7346db63a05075d0d68b01e2a484e120ef8d25d905ee56d0fbbf15bc8c996d271cc38dd6c40fab8927d71a20b6cfe76756e322d2d0c1f20a126f52425312ea7a268782cd125732c63586774b596c04c4624258c622b2ad3f96ae99c17e6b66581767b8eae1e081d1b7741dfa8b7eca84d31168fa078c5cda614b9c1d3b26b48a24e967fb8e814b2153e4d339dd15d95d0ee522e269c97ad27f1c3acb764a499b6f7f1ed85ac5a70936324028a309676e05d3eaba947685c4d465c572010f34d9bcaca191013acd99ef69fdbf2443faa5e61a988bb47923410e28fafc873e9dacab2355243b0555c757abe6ebe723a52cf0e4dbc7c93640f2f13693f7a3fa9dceea4312b29f90f7bea5003d663bcca8b9134c3799aa4e23d8275c756e4b90ffb15c0ec81df9d84518bcba920293153c6af665b4c48ebe8c0b0990185d2aaffb47be7b873d3a327d42003c8d9d34eac0ba9cffc568358b6f426d5800bd9c39c47dfd3b85787ff53199b982cb27a71b7a9c7b3c02ce3d29024ea5df97440a7672feccf680c76e571787795ccac9fda712242c5fee02f906c7f140e7b72baccf859fd5c4b9d69558f79e849ba051008797b3c3557f72a1a1e1c579c6c23669188f60678b59671e008259b756535282668d9687591dcc7ee0e2845a5528cc66381728b63bb4f5f6f40329a5ebfcb78a5ae7cbdcecb58a4313ab41542bad76409b689c68600fef0b9b593d6acf183a99b6ab44235853fec2ee357910193753d5fb4c6c405bd7e3ad8074b7855c4ffe74d5ceb6618897ab6ac92fcea0d9dbb0306aaa2739381e4289268c3e09a0a39defbb9ab7566d9f31a8a442d5e173817bec9a97f1a47758980cb7ad6b061a95c1e9f3998fea85d26562a10451bee2ec449a7dc2d32f23fb26b91110046c1238a05701af0490982842192669bcbcf352fec7697384f9f425db2e02e21177efb83c54e8729330a6e247c1102f8e038d8dd1f51b52f4513ef495909a07ae50b68ab480ddacde088c17bb36b7e1eb1475dbcdeaa2d00cbbeb8efc61202f786b12a8b2f48ef745de50140b59c681ad4c77e2b9ec2d15de7bbe82934a096d6662058fdf7a88df4f3e85e14908b926e6ea34480ff93f510fc32796c54273ca2d5887fb2c06b4aa0c272a19a4da55cf90671e38e49c7a981ab6c07abc1c578f0df01445bab5b81323928704ba57a0a7fb4ac49ed6aee7ce18f70053ee905bea7ceb578a953f1305bfba532614fcf72a7d545ac39489e63b1eea7965455a733902673e0357db5b2e5a81515d5b95db4c14e6f15362777a989183aa2e8a8f100aed4b5b13082b0d158059fc96e8896f01e6240a3c181f5ec281b69e67028fcd28ad9f9d59a9d1a274cd5e1babe76ede3805041012144b40e81d60093d2173b98224058ab3d587acdb5b9311617947a7c0369437c0eb5a61109d2eef4b05a7eb76787c753b260638ca20ee738fd20f4f91764226a133800693c38e80f8f9520733592cc6261686573522bf5568e1ca4de26da7e4349eaa2be327af0058aabbe7be86292f916cf9f795f5daf775f66c5e9169c913952b22cf72df564d67771bc39b133bdad28d913cb5775598102fc0fb94601530ce1847a89b855d7e28e435eb372c2e1891dbcf2d94befdd40b900cc2e64e64cd6220f350ed9075cf474cc6a9e2423d3d298c668e734b8c613d866997ac8461faa088961727d26aecf90a118259aa81c5c8a4dc11ce8ea3f87bf51a3c81a6a4dc8e5b09e882d1e1005adc9bc915d4f1b28fe935237e5b3196e2f44d27206484ce0f71abe6df0f6c3de56e7710d9699eb45d2743c7df2497287b10b70310427f42f9763cf318c22a00a83a8720930aa6febc8849b11cc39543927b695595cb22c5c848c6bd60fcf86d545b9852125e255fcfea62d30940fcc4b80ce119cb09120dd7c74e897e1b23f65b90e086d28f86ff7ced700ee2638be66e2cd3157022c253b98b626323360437e3754baca7c4cbe02c4ed612f4388f589381963541c76baa08a9f45ee79a01887752f2701d5e396bc10ec9d42dd2d6c47c1ba07fee7bcc22df6176e6c29decec860e98e3f8c264cc978aeac1fae826491f32058a8e2a42ae1f98dbfb819c8077fffa07c0f06413f8d3c0210cb6acaadc4f4e0765b8634da197d43e2952352761f6c6c7d8f15aca2d8eea14b0aa489435407d602eeff3c9cc2c621dc337c6a9bc3df44be49c9e158cd749961d5dbc449f4b213453cddfd9ea57488002e4805ab6febb246439a913671d1b361b11d1a5339c16c8415c6dc8845ea48a540c6a4aaa21a52042673dde9bf500371da9272abc019fc4741f4c5cf8ff4af4718c48737ce047222382608d47fd34ce82592cb086a9c6612a815db860a9ff53a28dccfd41ed8b17150b688434924c169e7425c48f01167b3f08373e09737f47a86adcd5a7ef09a6770172551891821097bac347f32fb8ec9615e0dd3b5bb43beb47557e577687c1ca7aa1a7e4586ad0a58dd3b984988432c874a6550f98092c4044830b0d6bef60b952adf0f7cfadaefc327b2eff130300a9a567024a0a3cc90317f4036a8beb8a92df9f0c1ec437757580eb65888e5edbfd7ee777b26664c3d7f07d211c2857b37dd7538325e67d47161c28d80a2d2e9c87962b252bb68046c8bb3c74706a7806ae0d7e7efea9648f4072cc2bc3ba4373345ddde96703319c2d5e82ad6b72fb4b059b6323e1e3a3ae37f12dd74887f08d3794ab030fa14318d03d9ec911dff29f769d7ff5da8dc7651833a8117d034024ce85579f43e743b0ab3afa8549be87dbd43f2f8d6c3bcaf6de938ce3fdd60f56257870c7be8e17b83f9b8faf36a20fd84b89515153af8eb47452cc2050f1ec65bf13794239ca778b011ae7b3deceef805e4d6bf7a324102cc738b307d58b1370d02530ae70b40e69d63df896b0a5639532508d53eea4f2b57241a995ff5e170e6a8a3ab6b09a0b183d1a90c97a8993a1816057e6018d2a7b9e0694bb7ae965d072e33f5a2e8454a220104c2d0c26ce52354082a4b5671de4157337c0dc543192eefc2e3656f52a305ace0b640181dae073c3c37fbd06ccf9e8eb97ee33913a11708c36a86261d0b486bf35a1a4faa6e5707deb129716bc42b9286fe1a87048fa40bd211068d9ec94acee8703d04fe5682f685713d7d60a230f441e4e5eb4bed8fff87ddfd02e987d6607ecc9d3070a0d5555dce7ffc794787d8544995a8e90f94c9e3dd4236f0b7dbf2dddbbb84f50729126887612b1496262217ceec749eb39d96acb6d3498ea8e01e045b39c78e165ca805468e6f859c41913de6773f218db0486ec5a26f470288f09393dc584e642e0a1d805b2d959a7e654e0e619c30fc826e55a639a0ad5178648f25038e3d9ab4b3fa0087c57d580eff3cf905ac21481121eda6176ff25e76a78a823338d5b67774717d65604e0102bbf1bccbadd0689788d861dca22af9330fc96f20e2a3448cee646f646c1a9ba57bee2f80d9b181d682dd9746b68d799d84183a425c3479832bd23326a10748a1fddc4b681b8e74d0b2f9f8800448e14fc44c4e3167fb45c28cadef2628565a69c72b5f84a97c211d5bb6fa3a8fcd3760395e64f8bc0e8ebf522c5f6eae23e98daf25bf10d3b812b22affa2e470b441db4cdb269146d5d6c0ef047bd2af14487aeb28fc6da982e693ec5be751416a729d267fd0840eca4801cc8132fc6c506b77a2a2cfab94adbb909527f93d1484a0bea9ce6e44ccc9a0be48ba5d81c196fc7d197f39f69e8f9da6c3da12a4cc8124fbf3468040c5a4092b4c750140a70e295f36580f036b1806e1536f4c4607ebd1b951891e5a082880b89aae7e807b0397d8060a71be08456b057d9cd6ed0f13c311c1f209fd6242b54672188a64f4503bbc26020d8375b5c49a79aefa94a7af2caf4cc546676f7d1ef3a00507ccde6e4505712ac8f4ad8f14dda40f85ae05dfb6f8922b1401d97a5c81c9e6d6d93e7259c8090c23ab96ee943dcee7dcee0a826656b02228133c96bfb8366decd2ff1cc49b3e700e4d0b927660e5ce659646d98ceb3740e5ce183f2f48483871d362f589574be475c79696615ef1b5aff39cf2c479c17b161cdf8dd818bb26980e333187eb9359eb202db1f815a98ce8efa25e5583545fa3b38b284cffdb873ad6f3c9878eb4eb1c2133423393d12d873ef33a6476922ea9580950ca3355e8356cbb3aba578ff4600725b909d399deac84b4d0e34139393d8b5a6a7d1dfd3105ffb9a90c3366a2610c3f4f1d43df462edf390b5cb1dfa89efe8a2da29585275f201a15322fe342e47d63bf8f18975bbf7729df712f31ccc4fdf626f446e5f86d494f50c75aa151445c049d571f36c00f43ae9c9c5ad81756ae18c069dee3d2ba0452b6820cea482d29b975c2bb6cef8e7d7cd475bfc9e503cdf6b5171b3ae498640958fdd38167cc3e90b7780b7d75bffa96b2899091902e3b1282a032cc1ef250cdd5a1cb906f6f4aa878a48786cd4626a6bc3dbf36b0eaf8156f17fcdee81a09b953b6586a0e54abd19a3544970c7e70f6d51cab3e33678735cb100f608e54bcc9c18c6b9533fa84b7824e8433537da9cb139d0c6ed8f5839e4098d2ce9d6eec1027170da07d89d3a5341fe274f2b24b41ff8d92a9e086b5d01248021ba49304c2fa9d4ad1fc1b17ccd0e1083ba985a0e4c5d8a6c304db53d7c3d810c922c971f93d681c500264dc33d0b71417d0e9a409a4af244615bf751cdd1715be703a3c4a6b5ef97fa998753829aba8195b22ed5c5f1d560562b4be806e861e7ac2f7f71a256430027057735f4182c0203620d726a136508c806eb6488aad6ef12027eb9423597fe7502754d0a5d252fa5182b3be49204c0810e30661e7979769848cacc0f3bfe27e3a0db801c8ca2c781bdc071388047231edb78863ae9ac6460413655187ff031089e64bc4ba14ea850ca9ac24bfcb4a926064a553a6f4eeb75b80d6e3a60cd8513cd0f39c1d31a3ec49bd42ccbe0a6e6126b2ea2f4d8bd39ea64b21797b7348bcd7ab54ba59abf587a85330fe4a7cc69872c08f956c671fb5b5ea1fa8bb97c11f09ec7e34d198da65530101d0d34e433921c6c08fea7728cbdacbca6abb6cf1802bfc4e1ebdfeaf98301ac084b73bb9f07711bbe8b7d3112ec2c803b5843721027c988d11fad84f9db4ae604ecd7e3d5947054599ff7b6ce92210b2d3f8e6607953dffce609588715214cc8764a5d15106d00c4b07aa366afc83226df19c97e3bac7d941e027cc2df738bfc03d933a0c16f78d98512e44046149c6ffb6c0f2d67013e406a1337cc93852d3e25b65c68821321378c247470656042aff59ac283841a1e0fddf7b8abd55dedad94200b53b5de61cd596b9519dbf67b7afb09797d0f975f3255bdfb061784766cc3b5e9eb839879378566cea4093e112e96f6698df8e91b8027ec4fdbc17c6727011654963823b478db0b57246e0a649fc4c64e8f4e02a83767e3517a10bb95847c8f1bbb3da4a72b6adecdbf455c433302be9f102644bc988511b96c15546a0c4fbe6ddc6c1f25c9b3828c0004671ea05bcf4f42d20fb4d5f57a293ccee3c456a72d78d6ef8e5c9c41d9c31f40d11a03db4fa03c59336ade505dc400fa9fcca71575ffc86cce6c3e1c868eced78746e0aa719eb7af31a04663ebe9b2f82f5e9617fd21b15ff93fbcac77805be1ca33e3b0df9d7889e775882b2dc4acc76313501cc4231c240c3aa06cd5644ce186a5babb5afbbe74fc9430a8a14ccf26338c4ddb2eb50e611b8e0541ad39cc1d951c52cf81415db70d00a2124d1739f2663acd05cd8dbf000e388a16a3fbc46820387c388504e11744a427a788addc78ebfd003206354cee3de0827dd3449e7070fa826135444f5e71ab6530f8d321d9a670f355c728a0149035c48a3c955ebb3c9a6e96e5f1d34be11a3ec218f4813ca83288bb3e099f36c84fb7602e89d2f17f733894da5688594d3842c9829797da2696861b23be46321a0f3b42dacf5b7c869d79bf322a1164b57b80b0fcb07d211f44dee73678f6cd59d7fbcfecab9abfdabf2ce29607121ffcb4250af0157508d29e1e997aa55c0e37520a2cf9ca7bd71426fc36dbfc4622e414e8471d2713e34f453460c2079b9f8f8b1634f54e4666fe23039cf5b84b98e8f01f1d146da83293fb01dd70995596cb2531bd879bc382c9b80d326b3e6576d03b133adc414a97349dd38357ebfa8fa59133b6aefa12e4154f9a6d2a1b2642d948db8ce303efd36f867937fcf82028eb2a3abe606e31e16c820778b159cd29f705a6b475381300a723a58ef00f22daeb330f9ee0122d55e29e91f99fee48ebc63a2381e919beb72ddefb2c140c940cb83860bf143b1868e39b2530b369b5d2879f9f78b68a5a50d2a19a6684933f08302be196149a492ef7cf3b7588281bd27c45c25ab4650261e55304fbce770a307203ba26e3caa16cae56e2a58d1eca5869b5bf3d84cd2337c3150c6365378add3fb902a855c61cb28ab91558247309ab1ecd0e31d1392de8366f825222889d036d6e4d9e508c2b2c3b3e4a06fc46e55a9f82355d97f8ea5ee490578f93c899ca4bec7baa4313def99cae995f8e846b1a9e065eaa684e2b1b3b50dfeb6e588eea4ff67967e54c36cf13cbe0095e13714b9f296e233f3940a72a166f4cb9b1f40a211100d35553ae4ddcc63d4189732a209978476337c739701a5e229d4a987adef127ec2f3fb8cff1fc5eb51b7b6095efae8ddc5efff9e06cc09fb8815ec636b23e149f8e2882472cbe5b2581c3b661b844261d82beb8f49c39e125f1f0c2f6500a03b3307a885e517e5eddf5021bf192736f0974be1a5910ce0b2b6c5f3be1a73f4b104af5abc971f58676692ab6b440b758531c1adb46c0be1c3b9e235c8fdf5c1d30e66f2420b52d51dc0655bba7ba8f37704b27d1312a55314e33adde11cf63f0d8db11327e9ac6043602be09136c998c7a76ee367a954b749d87354a1822be19bf53c9329e03ed8501eb0ba5f8d2fa459eea79a63399a8a69a8ef32ff8391488dac406375a299799d56ea6b1ea5f8063ebf0cc161cbef5f831e884ebfe1bb150792349b5099e4df4105c22893c0881d5c83c4cb93301bd848d8d2272f44aa7084919bb20a6fedf095897cb200940096e197ac04bba351fe586a11c968d55fecd6cb83004f2506d383b1f059af8a2b0f449ec3a4e0fc6885e3deb7fa6614597b8d5547e498f71d3920a4b2ae385d8dc5dbfecc9f29463e6a48e5a5229beec3ae911a16e3b93e8789e6d9b13a5a7b2ed49d5db17bba8fed1b370c4597c8ff5774ee9224394d30db3332bd160e972dd6f7ded4403cb8bcfdad0e8e13f4875be86b95c11c2e1978de8f23ac56418c588b2aec493516dc2b087b61bf1301d53d6cf0b96ccc6edcd79e501170d102274c6583542c209ccc0f8596f7aa81d2b0b888006c3b1ca055c4fcb9b518ecc7da050caf496c967f32444010be8b455cb50994f0c43a6f1614f50317a7794380ca5181d814ca788f9711e22ab1f7ec19c49dbc6cc81203fa27e32823ce617938de7d1c45fd356057d94ce74d577e981a61ac9eb7cf4627c5e316587e26c462cd32a3612696c9b5e14287c1ed5efeb405341a022cc01b31303290ba2979e5abeb4f489d3fbf0933c63f3b008044a243fe0c646a1daa653784495db3386843b9c88508a929aef0a05f2aaa027803a8929167715f7fdda5ba8511da3d7ebb496c41e0977240a83932e69f327f0ccf3523997fbf67bf8623e735e83d17c2aac53f2e71de6ec35a4724b1794577fb942ca847c0bcfccd01ac63b7a613f4b641d6a8310ebf3ee47a7bc163516be6c05228bcfcb3211e0582691ba3249c5a6900129cfe8148f9329eaeab438a3d1ad83f6712ddf26bcf2cbf4d06c9a3e393a6b58da9e0e71df57b6dcba8e811d80d63f04c32c7b776f79b9f24e54ba0edb27cda8c26e2c7a04d808b06cf97d4cf9f51b9fd6295fc6f0ec21d39ca3becc857a39fab446e461669beebb38a19cdf4c6be92f58e866f29f924410477e284b2313ec2b1f9e05338195e7360d68fe4d34acc7bc283d7ad63629968af25db1e15129b753cb067ac20557d74c483858d15af881741d2783490708f33de854ba1576ac0ead6de64f90cb498a586516fae50d9ad7dfaafa3f4bf47c05bd60470fc6d1f1144c7bea05368bdde5c28692dbda49cc5e483b3ba6d3fbcd0dd27497cc63704efaf58b30c7381bc12e77d0943451b07dceda85ce9400b419e5fb811fba0ca8ff2bfdf87c1df2a3b174c309b89a9123979c767c1ae1a9bd794bebaf64772a697fd727a6ba9a47dc3a99d09b66d7e33ce5df677434ed6db4975d521eb6456bf35eba0a26bf1912948b6438a091fba7f881bcbcff5e1f94c28bae509613ef4830a908289800ed8ea226d62a69384adb66e514250e0ecef0fd3683cfe36bb11856aef47f9d3618c30d8486fb48580b30a35ca755e0ef07c1caf35a360c808b83f2b73877c914e1112b9e5a12d1f3b50c167f754abaaa13d47bb9557d63c150e61ec09b5da5d65a2648f887b46becdc8f8ce3ef077c97326acf331755ec62c2c5885417ade77f1d8c5bba78c2c790fcfebbbf9854a61495796c9b852afecacaa1e75ac5fe5198a7b766f25263acbfefeb40a295fc4474dcf7f47af8e8eb0c9bcadc36e61df23c142ff5bf5b18d5cbefee1bfc62f7941d66cd59ac795a97e340171c24190986795dced32d8ffa2d6d682f895c51eced3e0e52918762524878b219555c547bb70516efedc71c8b48f8071d7c256ba6804549ffce05e9f626371af15ec12611c729e8891cafd26e6039ee62ae76d63d6095167366a06b54f60fcfecf9edad2f70c3c8c6da987e55b9fec058b212093698fefbb8392e7122eb4883afa1bb4ae21737aaaa02e1f247e35c5c2a7c12eeee46b97ffcaafe2094f3abbf4359051f3af9434f3b4fd5bd9cc040a6992083aa2d1426885ad91ed57a70d6422babe0b324b40b357376991fea10bfb250e68e5073f5bf43a5256282e5a97b201e1d3df96048659f2d00fdb538bcda096229f8fb525c6b52257fba3205978570abeb38a770d29d65c0129b231dfac2c0759c1610e0788fe4c476f836c10ead1902b7e0928634b6db29915cd97da5b69e80b5886217d7db1ab516c16c64aba9da820b22beec77dd05ffea23858ac197ea168aeab62d7b47229dd728c047d18fb58941febe5a17ae5f0b4c5ec89d5691e8ac36afbc132ac860113b07f1400960b6f80d1e5cbb5822bafd3f116f371c2be16dd01d6b0f0a57ebe8d2b24b4276eb6317dbbc5ce09bb7294ec3abf81ea4fc56b60107c548ff6bddb774dd1ab50023e2a52ea025a440b24873958764356d6d380512112a6a1522d17b042209564843be65b0a744a389f1d2b82c774bc93358394abe6853ae9fa01be5efe81f9f075dccc9fe6d63e8ed28c1312658f6af8d668d060c1f5e5cf51ffad1321f027ca80b8ec6a625e501f47e5a04eb751a01bcd993a2d1e7ebc89ad9d09b0f481972906c0ce96ebc1de1a6f132922238c37fed4e92ec83e41cdaa7ae801bd8e92d22b9c72ac90946a1dc63169dd087aedf2353781ad409658295448201927a0c115ee43e39b901e7ad54c6c0933fc79364bfb898a0bb1d68908666e5e40d07a7b5d8c1144d4d7fd919dc14137efb0cdfde85c46f34fcf8070fe41248e9fd8fa7d343d14349d483330d8b10df834d3c6b5a00bbc5ca90d3f7a557c912676a8597d1ce6536503eb1d09317c73d7d46bd92d6902402d4c0b66bb243c98c0403feaf5fa02dc1811af50f16fb8e81503840606970456a713ad94b4271b229f6d502c1e0caedd8cb04f4f3f655c8a5d1c160844b215bf7eec41a2730a6463d475c11b5e2bf3f6a292e1bb648f0d481d046548786fa5a033b44b538007feb178aa5aa1896fbad7c302f2459ebf582b6a1e740577bcfd8bf051efc1fd86056c990e5a0e88364e5f7514f78416402583555bc07a6478481edcdc009d7eaf1836a3d333676dbc8726913ab15aa1df330eea3647b43ac15ccea0cb42482021d56bc9ac926f8935ba4521dc04189ef2948a814187d1facb91e9a60522c9af68d77e1560cb2b0b3ed9ba83994a7ca4696848506795008151312cf81e9c3aa0650a09f69ff16ca23c66d8dca28b15028b3ba4d9eee5f3ee80699cfb64916f78d20ec0db5bb119eeba6545c542bd18facd13a87dffe355638417b46c5f6e3b5e3f60ee426c0340e3fdacc8c58a356f9dd9e4d3889f8f3bfc8422bf4253a5c3b970bc5da05c3854014ba529107664f7ab6c74b2efd6fb3d6680122d080e96b019734750e5f464262d316f1192ed5ddf331d045d134556f345a9120144bc8bb2f87e67f3df38668709058dbeb61d2d1c6fcc221aba74b2b974feba977500e96110214b442181c75581a9cff44cf1ff2ffea51825be9eb5d744ec92c5de22c97a70850b03f3f11ca709575f153b1e220ecc01e5a06967b53954877dfc60114c18c90578322882e9438c30eeb19f94e5838e9938f275f830ddd69f68047ce3690b8804cf7443ff5975d312af22266423fac8a56bc2e694afc58fcd52ec4d04b35fa3fd4222115c75dd42406832857104368bcf2d42a3b9dc7aac84352a6975f34415ca2909b9d14b201b8c0a00781a502c1b6a0f13ebe8fb8e11e8ebff60ad038cbabeafaae3c66913f1227713ae478db865ab00782f1132f7fae041f3a329f75ee9b9dd308f521b1d36a3bb645e5f4908fe0a019af489a1fb97778a2d845557bad25779df53fa0b037c477d0b392ce74905605da5c3f0c54b789f17ad0cb16936daf203876caeb96d084a99ac547915ded324cb0c88b2d2b177b288c97e58eb043e9cdd28e74fdb8cb97b205ccc89603cffbc6ff93d50d6b1eed985dce6132141faf6e79f69c2a30d7aa11cf95d20f1c960d666f491faae193e9da4394342bbe5efe9565124d3e9e3f98f40b47c0a6b57e3c59fcf97b21da2ce0f6439fb2f21c6988b90a0baa466bd02a3c816982ddca2bca70e4e5c9165feee6d3330a3e54294a2e635a1dea927b42d1163664489775edce6b96f0a134c773b7ce420732988bfa192b78bf088aaa84d71d31880ff77e848b118921c2d631fa9f625726fbacc4b453c71ec45b75889913e0e7ea03d755781dda02e206b10a160012b532d31ed0ddaa9dcc2dc4c8325d4cedf40e982375756045450a2af3106cb6695c33240391603c75fcccfdba84584dd4455a55f89f0678a664d6f4c4677a4d1b0151bc461c5180377b04984c84fbc920ace3b3a8940522d13c7ffedfc150ff27bf0535f37b554e7deab61ee63f1b3a72672d6c611dff518a22efabd2229e55142940a3f2bbe31bdb35800e67e2b0d28839e63c43390decca34d696a9bfb2b67d045071be33c285a24c0d84400d2f98fb3aa67aac7c10dc9d2816ee724dce356bb52d4a448a9f66799e910f26701a6e3b34b6231f8d548794549b09c41127b54a77b11534fe7b5e6d38d718082d4105e9bfd4c1f33a83d0830389fe8223ca8aaf935d65457635f8030f8cb1367850a3471d21c4bc387d5af1dd5fc76c70d178331a3cf325f1e686a267972541a248fe390e3fbef46f6760af3fcb7d961437bdde444d1b8d887c50c1d9f02fda525b921c6f85f21b2282f6df55dd017ec21259f282f72b75eba1fbaf511ebe9cb4d52d1b72b5b633b28346ab6acfc7e287ffa4dfdec97d94011df770a0d6a0a30e131204f25cc645b8517ce1b3f735afc38ed3c8b37dfb0f4bf38beb106661cca0d52c2fd3be765505af375745332ee85c4646e2934f65d064f6d31e87de54ef7086eed95cc77a0f89d778f79b527d55040be4b26a959c313707022a44e0157919cda3f4c2e63a7132358ae98cd53cc8d7b65c0865331a079f3b9f52e6445633fda735a53e69d918c5bfcab050932bbab90e4842428702fed94ad5784c8aac20287cbd66b026d7349df0f165254c6fe1180e9f3e154a51388be9d2e6162ff8455544ff581b858874f17fd5c78432455d19a496a8791e9e46db547eddcef7ca559bd86d912490dd2923d387737755f7a11567cb7be55583705140ae831f415487bcf03af36f30c4d621ff313281ff13a64241f93a691924ee6bc5152e507edbaaa63a013ae750d694c0cf44f392041285de30e472201a3d943f7083fa4f7e74295cba04774bc03ee0bb883e0ebb4496be598ce0f5a2cb5fe7c2876bca7a7e2b63ee313ff4758dc9b39e3e9078bd9504a069dd3bb4457fa567e6b735e8f6bdfc0cd1a185bd5c4f1cc9bc28d1a77b7c1a2aa91310c0101ad9e734d6185802f0c6db64d4f6671f0aadbef91554e4600502c6ca9c8767b60e88f4ecd5cc91b4e5e3ad3e203083866898958cd35d03ed5904d4039b3f2358ceec84484c3f229cd6cf6fa4b1f443fb9169afc2f1daba97f28092122dceb5254decd08448b49f3c8997adf91233965bb2d97c1a156e6fd2b8502bf19d8356f01c649969c8aeda869d74a976edcaf8191335aaa97170b50cba430604a6cfa192cbe57d9dcb2034ba0be11336bedbc66171db42a2996758dd26c0aead025099744e41bcdf5a05bf97f929495af68b8f41c071a93d7c8e09c443e925d04ceb0291b29e9b170d214963a1f114c9d70643a54a9dc4dc62590258e02afdbfb7a8759678736238fa783dea63242f041e27e5e9f439aaa34de190df5b13a5b24e5be45d2a5c9fa65136917390be4c39f4a51fbe39e30ae6caf6ba413a4f5a6ba925b2c48aee337fd3b591c6d39f054c5bd66fdc74d069c21d0cfc97877a024e466dcb0bb341808932da28138d171cd411b5dce2e603df226d42a6d797e75ea76e7231d26009ac4ca92c12115572e49d8c0da357a18c83aa4c7d8c5c0a887e5a399c8370f8e13ec768c2a84560b140294826bdd967ade4489717b569314940837cc67dca70ee0edf60cb77c62540f8d6ea72c8491f5d070a00f528cdc538a12d67a8b6039e9d417b7e27ae191fa82bfd13d5e43e0112d8c8c9618e206bb2bb9ec26452951ba98c90462a40ecd94dd8a2dd13979609ac718edd13f2aaff01ee2fac8c96583e75fa190165daac0e4fdaf71ef127f23f20707ced8162eaca6138d2635e10055cc48fbc4a239d80c3c702d5f9e50b9598d7af503c4ab2381c506397ecb97c808e60e440938606f65eb3d8767b6f22432d7c48ecc6a09e3b2d3a636dac54b3e30cca17fafd80ddec6f0ffcf4cdd5daede9e1bd8145e35b14570f939fb0dc533555abdf2c79fe7a0de765d774d860af9dad13e737037bd0453b0bd6b4e601a2973b8ad009a3ed0de0109b4eef85130461b329bcba520778d9af1374e5253efc4d1f65794b4de7f3ddcd3e550de09689318ead5a80c76c92a1bac6a3454980c62aa30e95aef0b8fc4df48d6fafdc0343037fea398da05e541407d9c2b21b0595f92f7420cd8207ff6559190b422595d438a88475e21385a64398f0843176c07d528cdfb6941cd7446e735262fdc29b9a55a4bc6da70a1681b6c3574f2655add64551aa22ce6f9284c5aed42608b531d92f34c117bd34bcd767d790425dafd2426cd34ed91b6a45df56ad205c236c3122dc772775a045c7e39e35354cab015c1b48167b17453c61848aa88bd5de5c97d849ebf15a6b3c20f0c85aa8ff67c1988b726426a914e5e1e9598b7314a988d8072b23e055d39f32f4b4f46f491995ce6527c5ca23e3c3f7c4aa7ebd574f4a55cd09421bae643f701c6a450adb351c9729fd6f4cf8247dd997b9720c8127c6c1d28dbd491a7d305c2d82886aed63d5e7cef54985ebba79736ceadc1910908cc0bafe41341ff1a287cc069264345b9ddec05b44ad50a53a156e7634a584944778a96bbfdb65085b1b1a52a1e78dadd5d2e8432272152d2f39e71649eca762d4a23538ead320deee54bf62a233f521406f0e438b4f74e925195808a12778c85267681ad8e556efefdfb4b648b2be83667b54df911a815c1876edafa536855bda36375b9065c05c96ad5a920bed425761074d837e168eecf827a3b73308779f66fc05c2a5078e963a3727aee6dd704a8721cc5f5c446aa49dd3a622e5fe5d7efa430bfc32cfd702be0a67d6c036b34a10544eff1f7768873a31aa204ea11968d36df2e1b58364d20b11a3380546ee40dbeb252eae12bf59665bcbc8029583620d87dddb018b382838d4af2ccb2d64f622bd718c8aef7a64caee21a8fdd7ac97823e995a91a96558134bb8b4c55f2292a1e577cad3503da7a6a3227d189fa7d0f40b106852d94c86a4dc8b9cc4d98d1189b2f769dfa2b5633be42d475946e2e3d47fe48309056c9f5c4a574e814c26c3335a766c677b8ef66b64644c737da92cb37cf5ec4051f8982f36bff608a88b20353b83d5b81d9a67d9da8125b758db60254acc1fc890d2c3ddf443d414b736d1fe6e05bba727390c2463f4d0d3bf49d2ab666a3997cfb81590bbeb3b78b492860c0bcc213e5313d2339d8df16b94d387ef981fcafa94b7dc51e74a71fc6e1c38a4d4feae0927c8527fcbe6877db43517e3fb4842da8336f7e541af4587bdd028d053be890db88d7e25b2610de6f2f9f04b97548269a6bef85d5cfb64fe8f29613e733fa2d6ba8f38c0bac62f1881e86f782d6f52738bea0537c9e470057c20036114ca11f19e89df53fa27bc72d32cc15d8dfa4795efb4eae081fa179c2605fffbee7b6b06a85595d026f259a71c15bf775585b30e6a4181ab6d8f800da7594ad98201922ed309cdc81a58246f5288d67cac2ff404d24f0cc9cf8259a86c9f9f8a627cb445c5e747029dae9709be4a365f7248d7abb436938ea4a4f0d231b12761599409c57161e3eba4e2fc7323622f890bdaaab55e60deb54b1e7307d9c8d9d8a67fa3c6508b8eea1f854f883489c58a04cf0963b94d166fa691e7d1ba5521f14e1aefa5081fe5f03ad6f36c9a808ddb7c90d07066331adb4c00511dfb809cafcd36d3fe822186ad6063a7660ad0a955b684f72e5e3d7508b17988be30a4c211c72f9351422bc8e39461f818004b8256811309014871b5515e98c2cfca74dcdfcabeeb20e9d54dfc2969ea80c8913fa6c0dda4fa42a9da89c1ecee5841a51181d5da7d0e7337fa22ba7f47c992b66bbc6192fc1fc54acc24514a11cc96c94398fc37523834b682350c229e8f91e15cd654401fff13e97542beb82316585d4ec04921fc57e3e0657421c2c23552b46c547d7d52a815a8b9f9164bd9ab635abc9111505dd16411f3547a863409b2d17efe3eb46ee889581da801965e5d28285219456cab3b5c137e7777a58d189c2200e0eb5077b4d5ce41a65e312b91cf1d4c837ad9867e6c5b57c0f4faacd347aec7e4ac4e8b547437d02ef2db74c2ab898efbd1f8c01714db6cbdf232a97975d0c6be0929aca2d584e2fbc094f1c75e879f38a887520c7bccdc0df8aae55d3ad6269ce78ce522ae25598b389716d745652ac328e1e87a7d086b68eda30cc6c1c331ed75e6a8a6e7596b789fbc5224c42fe0afd3728c5fe11368bea543ecc361d6ba98587a9a7be2d5256eefe204c8cff036731d52dafeb13877dd1540bc1dd5bd82168b5f8464e72b8fde9d04189bf197a8a9dca62786de8b770ea89bab330e237c03efa6ccd821f479c24daee4ec1e9286d851c0a05aee6774c7d60fe6562e93f77eabca7a13d8cd60a902d107d32390f184b93dffbf55376a0c5abbc7e4d1b0cf5f4889ee30deddc2137cc0b253b1bd5616d685e1e4509113896641b806465d1157f948322a71465f009e60f6fdd2b64177f54ca88b019f49894a72b8c970af9fa8a20cda3fd834ef48553e9f4f8f2a82d7b733d355450b50074719790fde7aa186bbe4850271ded6be3cad5b1cd049a12e2773650cea3ac33999ff56f06bae411a0e21bb593c33bded1d8eb129f6359ef71d2bff7ff110c7b3d9d4b4032cfc491b7899746752fb1dd8b4461888a7db51ecee5a07c7f317439b62863c465cff4d65c3c74e3fddd28d14596d98d5c452531e6147fbf7eecd944499699582cbf71f25b1f9d6c12d9492f5cd3f3d1c908d49c32c1aeba13935165f0f1ecbd79d246ce8951cbba6933997bf355b3088e6d7d60f8d0b164472b436099bd0e16076bc5fa7865b8badef8a9e1f7df4a21eca90e2029fad221094cbb4e30d6e43dbba34aa89c1d68316359cc9691ed5d6b72cc0934fc585658635b533f3116976cc52f0964ddb39f998cff49b059f1f41fd0cf3bf2e5ebe05fa58aa411e5b2d78e544c03cf3ccb1b015cd67894c9ec744fef06909bdbc06dd38c6f58c4852942435b104d5ba7639f63675a8c4c1470009b3f922563dc6c5d5c04c05369cdf81a6794f906d7211d654db60db289d4eb1e38b78d66db1e9d35fca7d2c68b96865172f07cdb0b0dcef3520bfcbc88de7e51594e30f3b2c17c703d72a3d60afb5d9828bf63c5580e20a4f6cfcd43d326870eec562172cce67ee72237ebac2523e1398d87ffc8ac215aba1be8fdc8b919ec9e3e6f8396a5f2785929dd537f1a60e4d2ac67dd7f4005ff1dc38735931c4ba632af9af96706dcea3b31b2ab766e8c9fc2501e2d11f5b346aa0d342eb97b3d0e399b22c4193bc93adf22d450b8e3278f74365e30428d9daf37988ba8e75203148a538d722c6b4d3e8d463431ee1fe3be09036db2a119e439410d283edff937e201a1b9f6747993f848192de196b089c606d3b0d4175c218129ae67b08a74da98335a7edd2f747cb40494846e586b596ba1a062f8186eff91e72c2b6077c22a19f2aded058f4e5e11c72c91c55c6ce9021caa158624457117f31383a3d553d40f279511b7c399a1cb00f55c67c10c2061ce2053f59cb7e7b3e47dc14ee205197103244933c145649c42347ec8ac0a785f02d22adde9b5df671733816fe9f07047f2a477f8489107cf1f0ee132544d7e2a43aa6351520bec6e13e313caf058fa2d9817d4d75f7ff33728e86eb2dbf535b737029cbdb76b77e570283579f821ffc010ebb600f8787a6e7ec9950875edc1b98f41eb8f41b1d8b19b209795808ea33decff649fe8319c89aac08d063a7290704710b230e77cfcded85669aedd4899d28d5da1b239d2839f803ea5e84afde5a24f1cf7def002de2a114cdff57b0c05bbddf235bd8e8e209721bb1c9cda4d6a0df351dac1ea66a72c3f73f6154d53e3efecf942db2cb77a88bd334bf275ce03d78e831acb04bf136293dcd38cb43ea459f58a825d9bce62e2f6dd515b31da9e1c3913883bef8cad34dd198ea8b97f5298f5ed77ced898e4d41ca8334f4cc098a7d38bff17063f484919f28f3a84b4ac57095630461c37f412f853f867cd2bfdf3bb870a79a0c80fb141416e28ddd2f33de43c41f862cecb06cb0629889c0e05fba32fd83c24c6e19c8a3c2f5a619a474a4704bab2ef5e68cc195fb03b713c04d1f2ad4331a8b8eea2e3732a6465bf716cb7213f66aa4f063bde8b4517ba415dc5ceb6575f44cc8710357668a74ff6078f05ab072be2392b592108b354fcef1777b0d5249d8fd389e7e36f6460cc346b76e0921d8ecb836e3b59022abf2c334e951f9ee759a8b2c85519cdde3dd04a74e191e3998599b6950003b93a5c74fa50e9daa235bb6e7134f853dbdd7cd43cc8070541435e4557c35b82ee279d62bf1b75bbe93d94a8ff7109371d60692fb78fe585bdc00e07404ff35397e9c108098550e6cdb5015b5fa28adb79dc9bceae2330cbbddef5b30cad2ad6dbf9ef9a14a9bd27c3b4f60b8f91799ad9618c143caed686f69dd0168a461f11dbe6464bbba7712ab7fd21175efc7f03f875ddfc8fb9cbda216b405bde1942d68501ee0910804164e237afe5f2daf250868905392838f1755c64706fd31d6cadc757096621e87067bac0868a36b78a46003939b6c696ec32f1668445230b7af666e49ae970c062937650054954a171010f9ccf8f6fbeff1f293b7ef7568a564f8d35dfab3f884a9f10541fffc571da79ff1d538c028ea1f90aeda949f578612761cf3996e86b14cf0496b3fd15820d6e766df1d62dffc47099ff382fa926319137dd7ded7a778cce2496c5af952109909d2b05450910871abb6d792e05024a1ee71cd431fdd1d1de3f254909515b2eda2beaaaf2d536e5e56018d996a7ea9d02a878d3ab57f39e9d168f9b46ed7a3390d9ea8a324c619669420a7c61de3c4bf1fe662d38851cf9718a07ef95f8a81391bffd4d6a40e2a5d927b72a70584fa8e636b21cafc558eab5364fd9df2e272ea1cb43b72cc3eed78a122cd5c2e542b767fdd5eda98f2d7dd32c8f1dada90a1f7380f740531423324c96bcf43a53f9092aeb37395fb171b4afdbdf2281534c950c0387c6b1ce40dedb0d95150a0d7096c5f6d97923514f5bc0484283c0f7c7741638e0fb0a324b6785ddc7801986ba5edf64f8059bde541ccde7d92cd2680134e893ed5c99692ca3ec436d4909e658212c5648ba915f9a6bb822b7a9d2402d38762fe13ea3bf29519ccf6a26111be0a2ec68c6eca3889f10f6f952d87d5706f0fc580dfe544dd85db733e8b6c6ccc4e4fa17d40205a3dda1695415c1bf4d5d0cab7f6c7ac5f407422a2e108d46456d1e64742eda8db8fb17e1265be3a58de8e8658d61b1df0006f4e51c63cc508e841d1486557c9e2e8d86aa5102d01e3ae3a9c963f7bcfa72bb56a5c285fdb45ad5547cd6ffec399c9895e91e64a97c7aa2bf9bd5e3cd11c91027dad1c3e1ce71b06c3db6e676e06c72c1f90a612e62491c9595480d815eea06365dabd8ac012d4dd3f81fc9a0ba414e1a3aa4bed9acdb27aa972eed7129d4c06250e9c9c20dacfbd3033518fe91bcde112f2dbe33a397d4008168ffc8f3fd6de6265f0db82a3bf39acefea615375913284bfdf010e985c5414fb2d64e797c23d7f22f478c9e03e7b84a9177354339c57b0826cd54fcc61f0d31479af66cc2230d2aaa801241307b4e9c8a629b350528b0295fa079bc98c91c4eee4b1018b872ecfaa8e8fbf12b80b100c333fd92289a336e1845ff727fb3eb8bfaf55d703855cc37cea553bc2e523601fac23b127f991a359ab30481554c9fe73dd7bfbb031580f10b7e42fed77ebe4f220fac2ca2d42b75ce3ab8f61a3460e8820a110326236a348e544933512a092e623097fe68825916c19cfb9475073cc07d87bbd2d411b99f70b06349418d1dbead15fff34c4a74d8ced160dddec26ff39fc30ba30951d34aa60e101844622a95f1368345c85739158e150cbf691f44af1c87270b5ee84826ca42cf36c89830d580b5edecc0587e4642e83e782141d7ff11fa094ae592aad12c706fd3634e94bc1d1e499cf7eabb924872bfc94c636f414e7f02231326336a58fef354a138897e0ca6e8d0fbb0c3d3a582c730039a073d7c13933fd86dba98491050cb4fb50df457677d76ba27d3f092d9c2d8168c8140cb84f7c290ee4418efe4f3ec5f125a13b0262ae14aa950208e2160a7c8bb957c870836fe46e0663dba6b6f6a81c795755e66ba4774a3b5bedc8c08e3db9aebae057340e240c5dc04904f84c4b632ae4fb73e9bb0bd8cfe32c934f42ce710b8e3491b45f72d9169a1e5044cb107ffd2eff691a263b802c8bacd34879cf3f8fc7ad3401c13b30ad6ab08d59eb86fcce1eb0eb7c3fa8c3f5eb6582da193c4f021d343b487528ba6b56489b43d304b795df26e841121b0db5bb215df60da4705b984acb34daffc310b6316184e9afe129ce7a3cee00416b60168b829989d2eea2cd9189088537d31a46412ba415b66565bfaa09ead2baf1ad7271345f06ec8073fcad164a3bd51fab668bd7f0a63261c8eb36a3c10740eeb6d2ee8e07a81364cd477e32eccaacd453874fbd9c7c94195c1d3c4571750a0dfaeb75695f60bcd4b4f54254b7eddcf1f4bc062671228ad8d4ce651be03c56f63d94c3f313a704898e6d15250ddc833b686d8b7a835673b7f494110050f3bb85730b32ae558735cc188e2a34e65dca95b9ce12d1dbdc2afc65b23424dec70cc2fce306a25657e573969d01925e8e8bd3595b6cdcfbfcb64db221efa2b1860356a544ba97e220ed11cd0c75bbde581be8395fabdd6eb6989dbbfb8388dc30650118ae08020d4a10525802725733a02ac3f0278e8f6839ef39aba3feb1602ad4360f1aab38df253b615a519dcbe86a95637014de52fa82dca60291cba155a567d019c39c79b7aad74f2354c53331938637a5212d3b9aa058b4b3e0b0442ddb97b91f21e226b6d4c37020ef382b48a8fafd2a9bce5a3f798850b431c50888924cc0d722e654f464686570aebf199b5ca14cdcdde00efa602f1b152ecc6d57d7559a80f0b1f358ffa33d803ba3cd4c3f92cae7f8a806edb19d9cdb730944e9f2b8ba626657894c55b52d666cff9f24db1457f218077924d61958e2309add3328a4be362940e8d9f829031c2d30247172f7efe3995d5eae9112d5d98118e935a4e952fd56db10be7b15ae561ac899fbfa6aaf6b193a346c8ec2fba407d8bfa79d3f0b24ffe7fc28c9393fa56f5cf3c8d3cc33cebddb26be8ca3f9bfd94ca6b133d3d221529515158ca749cc04ebb538acdf6279b21d683ddf756c27c1817e30691e1872e7b8f9ead347851bfaaf3a02b4314b65c494f9b3e3adf43b6611129e8d89155c2076d0e94f53e6716140ac47efeb3309d71a4bb4e45bdd9527e26f6356a8d2c299af2455137e9c852624e2e1e844141fbaee9b9ecba0c87141a5dd14afc2cebace552701572c65b95cb356d0d212fe6500165c7794cb0b792d9bf10080e81784bf7a3ece9e3d50027f9192e7db4cdbd36c49c534c1d4b5e18a88096f9c312610344da982ba58d3b350f696a7c9d57f296caf601d4f9c8dafa8b3c72dd0b866e168bd5a7ed1d397b7915e3d71429b3b9c3170f9a3bc2420cb0d852d5d82021894179cfb516235032dfcef0cc96944acc37c0dc4bf6d113f9f278c7b3ac2325e60adcc41f911ebdecc5618416494aca60a544309683553102bed37a2156b458477936d8d98c870496cae7c4037b9874bb1bac301c6aec7e053f97304f5a25e499da29566e75759eb943e162d9c75db9a3af7984976f0cfa97877a209aa62204abaa3f82a5e3e2067afaed9449700faf84edfc8d2bc380c2eb5598fc000f8d397327d245d53ed47aee201b0a0fa6c72c854d372958c3b4d030140bb9cc2a438019c5058b9e5bda68764615e5f2f819c969d09b989b0e1afd2aeb8cbcbf7338ae96173fe9e02e2516b7cb503d7415a0b8933eefbb2ad71c76ca3afbdfe27f138842258823aadd866045de88e75904dbfd717276a04df155d8fba666c3363e332cc0e2cdb6d61a28d9523d7ddbe07632e477a43fa70a164dfc0ada89bc0535ac5fd63f3807c078846705136b8818e4079f8ed3623860450550b437f3c5a675c9f4e6a76c8fb97899e143c894b2d18467b9be6e9307164eb5e84f7ad22de644b129705ca24071a6f278a44ad13dc747f31a9af0445485c3902c3a6e6c055866ed108bb28391cf435b2950115771444e3e34fa190cdaa57da80ee8dd9b96dfeb60274f6781e283779662d425f4af4d5d62d815699bf6b839fd01fa09eff9f37bc1e243fca574c315263714527eeef257ce73b539a59f3bd2f055f3a89641dbad6a99cc8df28e0adcf2092c2399ffbfad4b2844115de86bb69c0ac335297818870fc4b142de4ad53c30f43c31c6da3b85329bcd9170eb85398ec3b205d9e3f3d38a81c7ee9e3394affb078037f9f5d1fda50334cf4314fcb03f76140b85bb7b4e4c5755fdc489253757a7525e4479e7c9db459a58d2e53a1f4d34f4bf8ec46f8435d06c346e4193c88c4ea423472d8d921c814da91f4d8eda7df6ad71e365b17d5ba8af0a2e3b44adbbaebfd3cf4d47921b23f51423159135722b63aeb116f705a252d6cfed3bb96ea058a4cb6d16ec236a64c48b3de05dd8f082cbf74082b7218419d254fb52dcf852a0a6732d4ed3af0bff81590440e34f3e9bf91d4a84cd4dd007a89acde2a29f9e01af51b1cf9747c085c318c7bbff7950be3b35989373bb788a18d7b29ecc17dcef24e2ed4c9f5ea9c3b8b902cbd607cd3ae948add6a5bc2bfd1e395b7466f3ee6300051aafa8aed2a902f657b31b1a197e35e6c7981b88ef51f98f889523acb9d06e66df3b7c13ffa00ee3e07f4904cd2b98b53d7dd2545ebc050033ec82f2651f4c7503710275d9225a6ab32173858b1f6601ebf4d402bc553547326a748f805b1f226fbe1571ca8c151e2fade880eae2e60d8db0268d0a600f2335ca8bb13a5bcda3ca1665dc53c776ba118e8eb275ef075bfac34b135abe237bafcc9026bd92e41af8736cc39b11f5350159bea81257cca8a7b22a0b4e7efca6511138ab901cb3dd5c83aab582a6e42989dda6b862a86e9046271ff412d64b55264489b5b3d3bc0097aa76581d6441e5639bd7ec7ec6fa0bd012fe3c5f325141f93e134b7a43a4333bcc91e5352a98ff579657602396dbe2e67a7bad94a8d6c8ae98c54a6e620509fafeb86d9aeeaf3a007f71d5d21bf208f6551a27acb32d3e53f99b880cdee0d6fd7cb46821663cf50966d6c99fccc1601cc0a033bf26c5cc7dfad55d201d1ee51b393f36d4fb352143de47555bb05e1bb0de93720708092d44d75e02c134e0233fccd384efdf645921c6b518d3530637332417ac1e96fed6d99e33bc37ece2cc97353dad5755044fcd90673fc0ac2dc84fa6e581ada1327ab07c62621037d1f36c07a9d855cb79c6ce95a73cb697702200011868cfab87f946924d171d77a3e996b3559d84c508a9171d9776aff1a0519c6858faa8cbf745ee58afecb937ac2c0783fcc2a00953a2fbd53533d7a4edcaa9d510a9abb0f481ea296382afe88ed54670ae555fb7fa439a57c07b6b5bd6d900a92d04b1a6cde37117cd1d6f8d06fcc0c79ae220eea8e101361ea071115a0174fdac0e6cc8708be57ef6f07838c22a7f1bd1ca3b6fa4bda04c54b0278f9aceb1c50940a661a288f8fff310e4c620d4942505c367da8525d733fda8cde9b4e9da424c1da7261e57dbf4e9a64b396b84682f683caa3594346dfbd185e818c02c847ffd67c970bc6894bdf8114ed818577ec487c4ef32300157860784070ac4e02d7e833a9db9a2c2a977709a38609c26e051106765a2c74a23afffa3dbbf4c4931c45df752413665d246052ac384e0ead8bc2501a68f3cd571de7e4eae38304385ecf4d9c73aac3d04f39496dd36cc2693d8a32fa42cd8f92d02e4d8592fd9585d7dd5bea4fe5235eb4f8c8d4295249bb96a5b08c608579cb3677aa3f938f7758af9522883e9b74d1a3e8622688d7be63cbed2c3ec329cfb3faca996a073f980c8bac810e9fe34177a9c6820563524b2081d97a0f631220c262e124bb18dc746c49d9c9610f0e05bc649dbbdb31940bba476f4b05a810ff776f031ec242419e8d2c9f40b8ff26a4852a46eeb0f35f1d345ca0bdde1d11764607f9146a39a1a313b66bb2ffd552c460e324d724fc78b3bc0ae3b81adf0a46fd3c56a6b1b4f641eb4e43966abb670143a918a180c782395eccddf5d13f796dd3c6d09f1d59ad1cc4f4e4fe60964ec4d7265a081845015bc0086136a191406e3bb7dff50ffbeadae75b94a116fe5edfcec3653c9dfda023cd7fd6e636b90714b68b061dc39d826ed21f4114cae7f9ea4f86d55e4c35768fe3e68f1f94ae55d668e6466749d813d10730a843c4cc38310cd860ca4701dd30f8409f13781aa90d2eee29c7197cdeec0d62d564180239c00e2c7a03d592010c677d32445dbcb52a4875e2003cf2852989b080090fc2aaaf401be9627ccb52daf868afe2429816d001e16a34fbcd3d319ac82b36a19433420c555413057a7e300e81e8845b00ee9fb71bf2fa056299f8bcc1043dcc72ee46c3325d69c67c293b6e7ab584509002dd954dae8bb2403e2cf912da5cff29e93212bec3206563c4ad3dd7f26ab171618f4f96ea147de78fd00527c9324dd0bbc3530b65293296ddfc97a5d201185024a70082b191d0e6e98f721b5104c4ab00de7c8adadaeeb646290f90d64d505c055290e763fbb0f315e33a7439bd8c988dc12c52ffcd4c8a32536d623cc327be33fb7b7fe7977c6bf659447986fe479672d201c118049e3f9f61072c58850dce35eef765de002cbf02fc632c9b08a0daea7a253e592a17dd001dd3c236945cc8dac53de21b394dcb998c86231d6c9ab32d6970ebe5ccc5a2a591532f0a59bac31d6646eda57f73a20dbab6ebde76e2320466e7c62289076a98fc8d82870bc517870a266ae4fdf0cf36c2a1eea694f24f45d71f6d8271f99bde2388a9d34ff5fd35c012393cfca0af55130d98b3d4ab84c803f8dae70e4a8c9bb67d2e6bb5295c3cd28213620192fab9635f8e09e12b8774bd22e1cb9bddb718e3772200e4dfbf6b4123946eabefc01b8f2b282530f37a56e8dd8b29041e1bba8b12578d3e23e518bc89e95f102a0920e08fff3d809f9b4f5a62be2a27270fc69471f1ab80364e51eb3c661af5208bb12a675f54f1cdeb8d80e8c46e2f48d538d9258b047cbbd3cf2e556c25527d86a8989bf7ad390413c1e47b1f1ed91825c479e0a08056784d3806c0da043eaf3739c6ebda0046418ac660e26a14fcc8118a6bcb0da73c68ee99b361a1e55fd3e500176b7b67d0f0cc62c42e9603f67533cef5bd875c3354478f2caa5b538f93c6607e723d24e2c4a194720f9d9d3c084445f0476dfabcea30858577d02758c73f27b13dc645a1be1fdb086614c2af43cbd109062f0c52a1bdc9f8c76dd884247278883d9f29a59c841116e22f0eed308b5d664ec98bad2a09253f8d078055a5517331346ed61471f437a796f49e7c300a34b1d65ac16d602704849e5b8bf89a65dd69efe0ae8d8bd05f972cfbf77195be2a7fcc0f4f9c59f99cd6750f0a73bb061d44550fb3b7fbfc71ee0e9150fac1f3f57e5a347ad2fa62e23f80a4fb1adfac423ee52a4fbe4b854baa8cdf560a0d41bdab87013010bed969cf380ac828ae4d8bbcdbbcaefe96a55af0aa8260ab4288ac0e975a70342a09414b4a261f33c7fe830246e1f56d0ead359c89b0a008fe151acd995d0c21cbaf1f506737c428d278ac22922a9507df4269b475d86ac70909d125b0ff0ef080a5215cff3e0e74b92f2d828c94cab3f5a6e2aa525a65c8371b738cb0038e9de1399911c3509469691d1862370725850035c05027590a802b0286884bdae5a1cfbf1ff59f62c8491fe8a0841ee5bc3d1508f897b26f3628f8ffbda795a3c4af1d09bfc024cb806492ee01ad02a7cc9806e45b25af86a0d71462c42f9fb04aca3d9a5bdd33ceee904239d1fcbf09bb4b84a85d1205c1547e9ebafd0ab7fdf1702ebbdd734dfed5377a0165b808181d80f50e2048046affe66fceda303d35628f47d414a7eef68d987c73cf0e1b64d398ab81f86a65d130a62236ddcdd18c0db8bc3f36802ce38061bf1ff23130b8bab5ae9d7a5d60334812df6ccb01c11fc39036952ea7bcf76b6905d153cfc9dfab968f744957f046e807096e9530229305e0376d8284b15f5bb21ed51084f62decb2fd9c4cee968dbd1a8ccb52cba49713b0dd41c3194a0f389077bcd23be660af8922172f76e511bc80ffe0ed462747f2720e3111ce551c80c6166e2734ed643329f0e1d04ed148e69ad079ebec16f9f437c8ebdb6e591ea897a92f9db9b72881f654c6b87da496bf9dc1dd36ae184ab868430577b37252ff6887b78cfdde9fa1c81cfe2ec100bb7073cb0ecb727b15333f6e81b729c8917892714468824992462e4f46a70f3a5587ee90665aa45f512e6e00ecfcd74eb3d8129bd95e600d2650c72d972c99d3c86f37d5b49f1de7dd1f95bb701434a5f7ea20bdecdb56262c9c918a297ce10efa102ca0a77c5553fb072b20029c1f168afd7106491882614fd201a8e39e995e83bd54964fea8bcd9b3e9eb0fae7d533ddbc2011f6a881e83cf929a5b62fb379a5982de97d5304cf451a6c2a8e21f23f2cb128fd6290a049e56ba743e787f7d74f455a5c5b2c6c4db2db4f3c626f14a2433888a09b9518b2b7d7a69bfff813bf306f06221008b0a4dfdd0ded1b4907daada3c30d51332b7ef2e985773c6e2e4d00e6a551bf3c0a85b69be776b9d67eca29c30d6d416af7cab308c660ffc6d3c565ab17df8ef5a90fdddbf38247736e941f420a6d7823174aaa0d9b2d21ea4441b503bc3947fe73fc2bc88df15571d28c3630f5b9b1aba6ae553b9d1f16b1cefb0e4e48960338e3a2da291df741e8f4abac2f78b369c018217cab44d2167c63df9defa47d2afb2a68be7d1f0b91754f3d244913132865d609f995ddf1291b6aef48d55634c039a202042895c114f46ecddca8aebaf0f07e78628307acf6321e0b67649de4b46da7c68018ecda237972992eff9fcb8587c910f23ac328703bcd28256a246c09171b38a63dfd9e07a7a8533e2a76f1d3e607363790001263903812de327daeb3318ae01edad0cc289740cb09be5aed9a46a4cad47109532df964b03e2e2efc41818664467e6f1a8facb66f0d0f5bb8911183c63ce742d6c8f417949306aa72fcd63d201352ffa656acbc19361ebfdce6fecab409e932732c5a3e467c9dbd60efacae80d60dc9867f40067f6a237de9af292f1a68e49a5ca68442beb4525adf01a60925a1db9467d0c7a612a171eb3f1856b6d6dfd3d0782fd9347a863d5477d398866a8b8209b551196b3ebcf6a63a8fc1b416a8a9ac1ea1b609b0aca86baa087ee2b4a5eb49e0dbca58dad6824efacf900f1632c2eef3b7dbadc1451a5aefc6e7c092ebf7bb1296f37d96b5bbcd03ed310319e1233679affffa85761030e2904191130ef97fa988821a4d7642958725997359c4f2ac055d9e0f017c60185b92baa7b79a6d569bc8cb2897770080f2f78a0b90b427d9edf6f17c91af8bf5047440acd2d75e1fd26d26cabd690c689a62d1193cb208340c1b21681b28bd99077bc2add5ec65392f725506e7ba1fa887461f23239fddae3ac2f2ada02f5e910bc22fcc7a04debb8b40d224e415a79d9615d642f3e829c3204bb2f1dc3eb905962aba04682f5698ee5bf0cab6870c869dabcabfbddea15ef66df1abf8e20674ede32e1ccdc9d8c83f878c156644d402f2f52b679252df4da349164cb5593f03b6c754a8a4e64fe519b70e75aea9a0a48468478c24b553cfcab8543cd91390d8bdfcedb233099b8b0628d12effdc729171c60e09c1fb8dcb14455b92acd9d768353cc330fabc09360e76f206f72f004452d1fd532debaffdcfa71f8de68d65dcac063d09ff8880217eae1ac96b0b1a4b4f53da2c0d03450fc3b40cd42777126d41fee5460f1d8a5542ea93f0ebfa4f36097f5496ff456aa316129c181c5043c78a46e4b39d9b4957984d71a6af5a8c974202090c9bdf8d737af4a0a34da16afd348930031f48a38cbb98c1a733d7740f99425fd1cb602dcf2b6b34cc438f4abf8d9376c37b9e7e6c78f47978e576428c5d3ed858e04dfebf82f10574f1d16f8eed831832851ab9016ef5a91312f1b258c309ee76219ecea9b1d4fc8acb6c9a323062b83749780c68546421201c7af8fc5088c10e15f5c3ce998fe6873f24d0cf90c48d6d41c87ee8fa55ecbe3216fc4e27880ee876b95fd17c42a49775e4a2a40be08ec433d89b0a2ae7bd9aba4ee02ef2c93f03ae2f59eb6bbd4008cc9c747b0a47f6066c12d2a4c88749ec508cdf03d225ef631ae1d9c608e81052a19835a90e6c7685d3b3f763fc5a5233dc5ac282f870d7f728beba8577962e94f980dcd87ba596ed6085a4f5710ab0cca6ccad4176d46d9961629dc7d2ea95df5ca11172f38d26d07f283dff247d51c84fef970fb8f507cebf23ba8ad1cf2493119f3395f9218ca1481ed4f1a614724ff6e2e13c2af73acd84e835f29817d1c2e79faae82016dfd4df60f5bcca8346cd41387c110d1d114531df640a9828205dd6d5f10340a7f671e09ac3e49ee962addd7837d45013752d6f2e0d355e155788d11ca23999156f5e592d443e7143adc7dec0bd7f1b65d7b7a02074b327ac9c96db56496c6747d74e841ece2d900d615b932207c9fe9b1c2e1df4d890ff401f64e059e15215a518d2b8672aacce0bb9b73921fa1ddbca7860175d68e75c14d9eabc0c6cf133848c93bbd5e71c8f4f4fc6fe3b719aa3607bea666b82b1fc311cab5e2af8a6b0c7f7a2f558f26f6f15a8edabddf8c5e1e8ccd0b03e03a893706fd76e6c80d531de2b235041adf8054a3f401dc26438e8a46204a748d060beb098c4ef04afd72b2f2b377ec66b4b56053d8807537c13e1ca89b51767a6e3bdfdf374478fbd08e4f3bea271794ec85cd3d04779e1280073b8fd75827737bb23731cce0ba1d6cd4452ae7ffd816de49cb690ac9e02bbd182f1a775ce2a5c86a10ef4558b10a2298b6d82af48b91311b68e560903416e052d47b3fb77d2e740da4d6caa4fcfd119c4602be142d05c1db8c649958bf720471de3c0725cab988f9528c25fd9d9329ecf99a35fccf9483b8d0600dfd615b1ae2c9666a7c5cea268bd891441752e6a99311d5af831c88de67fff8d4d9f1360db9dd0c3d364e7c72a7a492bc2051aa632231d19dd77937bab4221c33c0e964d424c0f16195478bb1086aff76bd7ef245d1129c2453f35ffb37e8e423be6b150ccbec1cf13448c058c2e8198a1a2ce9e407e5655d069fc185cba9508fe18f972bcaca560ca28ef4bf706cfc15ea0ed755ea11c9d97245a4c2a8b1f3e6bf6899a3a7c113b14d3490abd1829be5be913b31c8af22cc804b810099d634666fa7ea12c00bdfe41b6a8cd58c3de391d0a77173b0310033b3beac5dd256340fea1b942fb77d41bcd64c24885fee94f9e2629cad050a4451407d70429f68c2d9f748ae4dc0f92b30b399c2ec6af826900f41007893a6e3c1ff955d56cdcc008021d10398c77bb12750fad1328c4c6c77495178c8ad0b5f1603384138a6648b9819e3d303d501826f38778e4334e2ec402eb1c9b5e5fa83fb2026e0c58a96c1323057f28b3deaca2901b013dda5753639008b5aa79fa68437c02d744e73c75d2ec3bc0e4b4cff16edce003479c4cfe6391e1b40c38cfa092faa8ef37bf2fddc94fce10be930e1dd2cb6c7ed2294d2cdd784b14f3565705cdb0243f18bd9bd280746eb79dc41a14cb78bd13c0728cbb9dc2cbc566ecf7db69cb9a185987a132690d14949827106623f9e44262727f1e3bc1762e7e686576d297d492ac57dc3331cad25d10a048f96bea4dd92ee170024a4526e5dff97ee8d73b99e397437010870af5fe32144afad794a41e9efcd98f09d5df1ab51ba8e783baf1befdbb4f44bf0977d9106b87bf1d03c9436ef5f23f96b1d3fd4b34dc9dce822252272b48ad805a0132729a839489a4adc61e52e5858996a228c068de8b48cc7cdb543b30800857ab35922ba6cf7863ef23ab6148a95e0241ffb6dc433d9ba71a833527933a9dd8b048cc84724297d9e277b7dceb87f3ee5068864adec96229df08593aa5263e3bea46b90dda5772d39821034089d270462ede875a3a6c01ac781b6fc691d619758cf2678ee93ec0c115a40f75054d01cf0d034af3b209a036b9331995cd359576e53b920a0a320d640b052bb70bc5b0867b3c9d7f7db6ac7e3c5b40fca99cf932f03811bd07bf8f63d5a143276770405c3d2d1570408d61e7abf4c88237be6a018f4716cce97eb8971779c9159dfba07eae670440e7a6f63bef0f2f72b30fd79a49814ad878d9b30a84bb649c912a91e50762b04d08690024dab83cfe650cd4a8dae02356d891484de11120bdd9f279b2816a0218f02038cacc7f4d29b32ede14b3cf095000b4ecb6b07004bd3a03f9bde20d4277c52e92641dfef50d581ef8c1f66ec0ccb5d0d2ef58ea5b2487a1110eb944c82c08f67ff227e25d028d10062c314ad5b7f7facb3c49dd301b8f7fe6575b4082709af5932feb2027aecd6dcf26e27ef369b3b3777c24f0c68eee12130acf9857f7f91a2c546ddde8fbbe1f56e5bef2bbcf2c04406553a76af3db2773e21324f2a4c3e5b411b02fd1085c74f8d792cdba266077f9c7978b05be978b2556529de218bc0f89683f732328abf9ff652d3d71cba5f61c42b92ec2fbfdac42a7f959f21ac3e2fa99f08ff1e2594646d18a5857f1860be02cf8b237617c0332c6ec6624d8542d5685815e397f1e08b74bbceb242c7ea5f85d004da67208abcfe8360d965d2a854a5d1bb62a26d34dbe371a705e183d5a9f93fe6453d8792e3ae69a5068689f6c8e1d3384edc024265021a40c5d50bd1c288512798a5b47411a4002a731fe987d03b7ef6908d2f9f586b1d652be8375396c65ef8b59fb9636bbc20e25d5a4e463a3ae92aaf3c4d197c909a742fd1c67fb93bafa3105dcf96211233e50493926efc46b9b205d4c5974667dd3f42597c2c4e5413e2c1b34267f4ccb3ad1e2e3c669b793eb7e3e861ec939f6177868ca0fabbe1c7dc0401cbd5ba77cca3fac609861e41ea8ff05e8cfd2340ed2225df4d21e148bfde8bad7b7489088ba9d412bb7e51f5d2155e69896c3f4e6e7e32736351d46a41ad498c75408d1ef4093b0e60819625d11c88d4a04ad998834fbceca279b3c919a63007b0cc161d42eeb6fba59f86b1cf28a0f4acf20f8835b5b5af74497f48dd4102246b657ac8eb7b75be70ffda6db79cc9b4a894f6340d796afa1244d75e3895ac6f3a5ff216eba4554bc2d9fb71803b39e716df9a66056ae1cc449976e9886e2c480714b0962302b594fbff8b57a48c171be286b78218806838de688de0f084035980e22bb3f54aae6d84f8bb7effdee12262d1afb2548fd046b72fe781e6629573b3680f1278cc0b309016dcde43875c619ddaf4024de190bd29677c47f976232b4fb71e7c57d1ace6c45d5cb689095c281d41a449e8fe48f22cbe088655b48927ec7148e66b0ae1589462378445212fd0e5fadbf3fe91ef45fdec795bb5b09949d1b28029ad9867aa6338b40e66d2a853e2a1da43865c3ec7df4a32252c3e0db209108b60df130e8dc8e24f3b8bc3ef433ce121a063e6f0cc681c185138965cad035a6e822a15bba141f8657ce5b350682bdcc4cda8c1f4363514a6605fe432815581978cfc6074db3741eda64bb4319c3dd6751894f16438c583900aef814d3998303bca3ebf21988d8f0cf827062168572707106f1001ce31e7d8f882243bc71a5953031264eb417b4cf8d4f9bd449f8189ae70ab8e6002db0663ac69b41a501a3d7e2b5788d79c30c45db078a9fda97d7b383c32ce8f17670ae7ec727335ec88fd2debe4884ba2f17ec418631f0aca7faad73d2e375298cfa841c421555a1fedb62b6f79b22e9932f79fb287c47286e92ad7abdc66ef7eb0f398690e05b15df60f1ca4d49ca999ee1e95ba44c2ac2aeb8607bc27072165f8d719f69dff1656207bfa56927e21a2574e5241a9ce1b86ad855d6111df59087e9145ca0015bbf5358b748ef86da4fc3e5ef79e6ce6cf96a315558250bc73390486bf84a7c626e262334155e517dd265c535df30877cecc276c50bcfe7becb7c7e2cd732406e7cc07603fa868f26a624cb7c326bb2c7a8814c61a5a15d6509d377a39635c7e21af2ded48adfad28212edaf18f1ab7375b4dd08f25cde97d3bf6e2480932416457e927aedf9707b23c85dbb7b082453beb40744c8030f380d673cd5d580f7306f3a164657c18ea02e6c722611f05a25c54612f0dfc712f8098f0777917fa6c75e178ae7bda2ec12cac93d3291b0209edba52ad65d3bf903c59d41277d6d0b4c2de88f692571b29998bf31a22ee6565a87e142da376b0b69e1b8e9c05c903667cb9dc7058cca4c5387149ff1d041969938719d255127aa9cba3f1e0c5666baad191eca514c502ba0ec5419b017067cf979c9214bfd6178820115ddec3741ac13db61ee06c10feef3be7b5196c96b8ef0925cd72c1f97c2a2c5cdc2e9fc2a3866c24f285aa56daba89264716a9b8b0bf9f8c24b674f506f84c77a21a3195468107bf43918b22c57570af0491208f1af975a0433647263c82f5e96eb7f80f64a0475ae32b3fe01aef3615532214f5d240297797235ba56db5ea5fb3e96a2fcff079c75ee508c676ca9cbaef4bf98c40771a7da57160b78f9e189d3e2fc3ac9c104bfab87b78919fca64a8210c9211ba4ddf341ca07d47566f2b2307c091582d9342eaacee163ab3c36e26c6a559247824d0f7de5b72e81d61a54c4a23d5d7172ff501161be65ec36d33d90ae19c9f5c9bc52b0797256ec834926312a9a635a9795d5faca9993a6dd970dc52ee1431c551749634b30871c48e33ac9dc99a7a74d4f0cc359c625b53e5ffcc0bd5337e1fb41bed3af487abdd0829c43edb55cd25ecf7b508242bf32f2bf790e95b60bc23a03801e98c57367827e34be902f6825fdd936437a0192cd62d8dfeeb8e9425eecb281f68464fef216074511cce203729600727e83c9fca1d74fed3116c3a64b96fa17bcfdaf19a49ee42d729aa7ffdf89fbe817c3b6161ee0ea0c7fb9322b473888be3af35c48608b73cf21821edf18507e61694e315ad8f1520ae067a31a6ee8a40833cfbabcfbb4798aa8dab5b46666de2de9eeffa0717f2e0cf2aa3fe04e4ee243805e3ba5f5c2ea5613e3205b410ec78806fa269218a65a51f1de87051aaa4e2e957fba2bfc62cf879975e5cb7b3ed5c740acd8bfd930139e559a7070ff41922d4d255d46323521cf32e674a6d76211936a0a2e54d369c3574b1799079abff2b1048427d4db83bd2b62ede5cb34344266e2518f5e02c52b3a7518be76285fe4bfad5a0a8c9a56588725b8e6c61e12b62cfb869e4d5161f2cb571884ca4591976248bc70831bd9795ff6d9181934c42354bec085077095e43feaa384d6d66a3f722d62aaf943ab06e65a33dbf1e1fdcce9126563f8c90b27301eb2beb3a3b35d1ff3580bb8b7b9e3cbdd45946f9c1ca0683831a6d33093eb2d2c6f207d356887902ba7001264db90e7a06fd98c09fe89c08f0cf22602bc665faa5ab9031cff0c18ee6f62025ea93db4244520fc0362933eb4b8fb232ebd5053cbb69684a3a0bdd988fd79cc9f617e8a6b9ebd19724cf9b6d46876b2a1328ad6d62df34426949b2bb7745f6bc9edd50f20bc62aae76ac1e1b65efc33398788e2af7edf408ce3da90157c4edd570beb080881717b1f31bc87005736f110846d36e3856e5cdb95399aa7b4381329ceedd4910d576c4eecc3bd0987e4521a463ebecd41183e278498988fd8b313f6ecc50d506158f5f983f584a9eea0aa080d2633a1227d19f2b8976d155864e524ed46f2c2ab462cc07d27850f542196522e9dc8f14366d63baab4b8a5ef7294dc983aa9f7e57c399bb7b12400715a8032fd913084580ed5f4a282b8c065c7239ed64ea782850a2dcdf539c1b77c5c52af512441a94907e5cd12abf687c2b08d050d523a4f5a83b07f49d49a90cc102fc75ac6c7f2d612a1a73070466732cae2b8f3604bb615ffd5379eba97517d6e66a5229afc77650832c0975fc0d45afac07241bd03c2ad745a41b2110287c768c76efb091bafce60a25dd0d467db42bf1cb5c3c8490510675e92b0dba20a224a39183747a63c1ca793dc611ef9eed0e746a8c95f04874361506056d199ffbbeb36de70420f904e4b9ab3810c4d1bba088248e0c476a4cd7d64407bb33c0f527681c51802c03cb70ac2c07b296ab422a3be194c6fea6df81ec05a68fc38555d1534f53c52b9b306573d0d03a6dd144f92d0f953122d9aa438ebeeca989d97f27dab4f9d128632c1fcc70b21b5dad08820db087c685b1598cb0e082590dba150b8fdda22da1a65ef2fefa21ae9ff6050cc0c7dd2bb6ff301e6eb3f144c6caefc5f9643ce05d799f4f9992921370b686940fe2e9ec63ce33e89161885bcca1d210a9aacef28c7981b97c37988baf539b14ef6ac12d7002d2ce0a1ffbdd2818240feeb1630305098be1eb81debacb7032f2bae31fd698b7bb9b81e5ee9f68cb4d47bb3af29794b0a16dbfcd384dd44cede067cc43d31fae5f31a236fd9cdd9f86441cf1c09e788382529601ad587122b2d6853f50c47d6217f8eb13a834f296cef02b901be9ed6dceeecb124aa24c7460201ca664c6ad640fee98523e79fe434ffc53577e233317c8be2e455b2f03b8cc5411bc6fc2032d3c34e5b7c5829208a105b4e6ebecf8f9a9da9140f662fea6c04e55ab5a415896410a49e46f46a335c06839fb414977e1babd1105b0be8817d982d3412b931390d7632855b100280bb7f3fce8735f6f04c3a97e1d116ee46dd98f8716b85331e9c86c393029cf3db7947a8c6562d6b42c9aa67669f0cdd472706a768d346e9a1457293019c9c64bab79b3224874c940b65f90f099dd870d121d509b1557904fab05b5aba5d4bd4d748e8584404bca4a1b6627f297dcd45c8cecc8d33c67f7d4db6b618db3291c03547a6ef1bb9678413e01d70cf140b349f8f0ccae715a06647becf167f86c6799b8cef6139bbb38fd0a00032ded86c69cd65b8d6e39a9c48a36889bbcf3bea972e3359ea21438e53cd8400b61ce37e0fe55c23b0f603ea353ac73f2e58d7539d14c5d480e4976dbcf1f6a62c750569208ce8d5a8507921d4985ad2511043a6966d83b29745dcff36df53203fb7f9d72ac4e4fdb42b36ab2557c3833a4ee8ca30ba160d5812c709a059019cd3729992899f2d659bf1c5bb07e08d5017260b0930ff85f04e64cef7c83cd76c9089c0176ca620692a40c9b09a40f6920ca0ba65b98d05d0419a001ab43699014e44a7b4824658c239c42ef28ecb23f4ec1ab8bab4c7b65ce3a10b7262bd3594e6fcd28ad2ea1c338b0901e4a8177b6f8d173e46de1df952c6b3f30f92e3866013ed724dd1021947c78869438f5d849f83fc60bf1b332aa08ef9b9d3030dc692b28f317db24ba94fb0d935127ca18a5e6f72cc163af2a70125fb096f887e809e361a9cd0aed716f1db10dc30f9cfff02e778c4810ff955461759709fa505b20955b9648c6ff3d1413f9dd0f7a30a5692ecb10dcaf0d6b9a4a06782bf3454c2ac2162b71ec3314e6e5acc14612101849f46b6a763a03cc4bc78daef6428fa568137be92aaf29a446480df4c133d1953131b520f59f845eff66f437b34cc0c7594d006430e2f1a0074d8fb35eb6a05c88809633a5e09625d0f4b9a226ede34e29535ea8b28346adc35cf1a74bc19a5f6ce94d6d2e3741c49af330d170071f06aece2e88c17bfa681b46018f9930fcd3ab8449d183221a0208ef470c7ec6e26c021860f61c9f80b7ebfdbd8a6aebe2533ca3ad49e1f192a8bd320117e44aa86f29a8674ebf84a423d98899be8a989b1208aa4608b521d9003632cdba5501eaf24371afe4614ba518086e18403ed7ec3d9abe6741ab0d5936a921d96b91cdb41da98b27700ffc5a2ce487e444b9adb68c1b79738a68802339f9e16c73eb23f05f3357847e4498be51268e23b4bd6a434ed34aac422da0ee6e84d97fec3b3f35bfb14c1f27c77eb92ce93ff0c81eb489ef94c0d86d5841131c317de33b7b0110c48431a8ed20aa9269fce4afc577115b6eb37d50020d30ad272ddc0750c78d22e6c6101458bf21d826a9eb57d025c0758a11696d41524bc55d508e2d657a8eb46376c4ca3fc91a8f26c2ed0b574f6343b3553e328355ada30d1790a87833d67d36a8825798dabfab2fd0994066ff2f608323cfdf23b78a469aaf134429e53068d283e7353d79bc2feaf162bb49f4158a04741d0bee8c3eb257773479a5f7381b69af3f1438d758a0676f2fce42213e98afd026289bdfd2fc19f9dffe36f1bfa09b522dab32a3caa7f3e164ef90b598c2009b5f73e270846411d82560def31465cb45bae2aff1f161bd15792c45499b44ce515f4aaef196e58d24fe5312c4613311323e4e0d88b70701a54f39a03e425b89f0e3cf5e7acb14a36adb0dfbebc3e2078e760863b82f7c249895b744d5838932beea28e47c3483102597259511718aa66bff3598a6233615acef71fb80305792570c4fdc443b788f653619f32f4f1cacd461ed470607de3cd8446390dfacc51df3bcb3fdcb8d7f75824338b18101990d3a456764804f1aa88c2de1d3da8c699894cb0a63117a112d1daa5de0471e4a6cfd57273300ec9137fcf04f885a8e2134e490aeb8c58e103a5418e05928a10ec845d25e7681015cd587a17bebc957e17e230a2e5175e689e44d4728036cf9f09348378645b5d10839ee8796f7237c5ea96687a7af20665e04426526f6a862513a52da3194c21534b5a9ae70471f487495764b667b13ed8ced84bdd3ecf26bb76236f92cf898d14f03402347cc7378f54adefe021cac3dc0c34a2ce377e16009acc9afeb9839eb61cd32bd4026b2ac2cb058e9362b06a7ca2429b822dc767b6d0d882fb48d85accc3520c010d80dca897bc394bfbbaf76c0fcf69206c1e6f19608e38726cf8817e0b63866914494091b02cdcfbec8646d8a1bc761e180c167ef0065bef0352e34b40ca3ca46bf3ea474bd4c83663b0f7a4eee60f606655557e0501cee17f5a8ba7957616ace569da2e370f4ccb4aed7919dc7a8fd0bb6bb591c731d907ad1976ba29d5165004698c4fd945dc5a1c025c1c45ed4d635c43c14c4dc7474e4b02146c6f2b76980085cac0531959f906220fa5528268e2ed31b6b9579c422314dde9e755f82a0d9af14d412a2512065c39c77160a6e6ccb86f52e068279fd845b8c534feabeead3d1826262368ad9f79d41453f0e24942f91736dc8029c3e88d149058e099a211c71134e64ef595a69694944cfc20993e6f86f7628dd1868718ae9b9037e8021f21f52ddb003ce1118ad3c1c38d4faf559ce92d8b468018f61646797c027c0b4f406205e5cb4d23f724a7994816b71034c180aa910b2895f88d6d2116c4c2e18f6ebd399dc69d8192b5d74f1ea0712e94318699daa782c15d81c3d244baa4c0ab37bfecb67bc1be683e05889d4eefeebd858f7e8917ee7efba9b46269ee495e298c4ea391a58ae78c0faf2c34e98adf5bd436490760491aa00444aaa26d82e420a917b3a1e80ef4dace0ca6cd93332b0bcd095a5afcaaee5d4e41630496a492c4003aa24e0c8f341e90b10b65d9515ad33138b0339fd47703bebdd332fadfcab73a009a774c97f732f86cfd7fc615aff1c5a0ec91cb0182960280573c84b82b397930ffc52036124473416262de42d440ff6accfaed581323a890782dcb37701311c09e03c42ef0fbe1d717e21300406f39af36b9cf9af5946e93bc6458e899c554675d0e5f70165dc32d4a53575ae2b9aeaaaf0eed91c4711ecf0793f8f271c0d4877959e3dbb071e8e7c5ece0e3573cacfdc79fa03c6860eecd180ba15dff144db1d636feccaf77c87396f02ea2cca02830b788faeed971a4143e10c5aad65f74aedcaeef68a9b612aea9ba879523b1aee3c769f7ca7b39332dcdf6c8a20503467ba5d127bb3f8306e34b54c15286c7d17ef55283d70ca555600e0a3e3e7a3db80e94cb1ac963c64cfb62012a38e3edba96bc0cc5f059e0da2a97f958ea610d1005890093fb803a8c382428adb3972e7278b5f5f53be24ee08d403e6a4422d193bafe46b54dda1e5ef3375697165649706894a44c61bc61e346ff05247726d24b931a26c404a2c7063a1f47f7b5fed2476249f7bcf4095e0994d7da3ef852f6ea62b3d20deb722de08a58f8a12c34c6cc71fb452add83f9b96c686ca9429477e1aea1e50327223f8e4a690eb123d9eb7a48f0d335f6ecb3d025ffcd49f2ba44387109618b1e83d18c052e9a7365d01dda6f8e107820f565a960df1337553da932a2b0a8882ac3968a4f72cbfc8af444eea2457f14d5c66c01b1647b8e83f5fccb6515719439c195e3457bd95aff0977f2d377502693671539041ad6d951e16e0029c7d6bb29ed26e054c3e1c8cd16ac6cf9d611a0a46e36ee4186e72b8e9327f868c69282bb64d0a778ff6e8aa24419ba27abdc7b4e987a7fa7d09446575d30befc71058f45c92f31e73064219d75f8be2490e14f94007d5ee38e747018444c2f77e9e07278ffa9fc82e07cd85f12b837fd53b4dc27a0b9471851691060448ac68ef27d33fb438c9bdb8d19aed925a55094691c078e8acc242c808b5d598a51674417802af3639b328d0d3e5892ca7c96d9256c3773e94ad67eb9ea7921d31c362827afe592bb6dc83b699dc3c27336ca6a3c0a4ab940ed893d4f043d0e5fd43cf5165cd9bfef9827d2eb018d4a3c2de88e2d1b1e79c726c636f0e23adba0b6c8790b9c5bfd3a1ca70a9dfb67917eabb0e0aa2c560cdba1c86447da22bfcd9c708d0797021529a0fea949b57c81d2c31e46af8466af47af16db9a2586b00df8cd2601046561126e0f5190975ccb7d2d1b663e79f541bd0131679058def38017f559b8f63fb5ffb79b46edca35095c885531ffdf4320ce34d4281e58c769c26aca086e57f308febd0b8d8f10ac92e9943560eba94e2a5827d4ca0d6ffbb9a2608ac6e47488ada0676290c19991adb093ac5cab320088993b420e4a63e63795728ec4eb8374ade71f9669b9da16a198aa6f8342cc56696cc53e7e047948247452d05479018f4a1cea6e8b56efd5afacd3b61f11542a2efdda333139c8831148be317462630c05eca1f66d324f9ef8f291efb8f2282bd873c71fd3dc2bbbf75701fe69b3e7de3ff01806a35d00f052e1b1c08907a5b480b17a4725a9479facd82382adb5676cb2e55dd0ac1668f4bb57e3d6611e219ab71bab070851d7310fbe68b97c403219345a8763d6fc1a9d1f8bd1c507f39f77bc379ccb6d3b9b6c29b1b536d15f944e5d49b423bd0fda5b98eae7fb455cf859f113ddf9dd92f7e2a5d3daafb6007febb54dad319b8c109393c1cf27c8b11c3a75a6aa319c125a33d63dea30032c1e9589fc12fe5401d425307ae05f5c9b5dcc5775781157e641075580fa0d2eb401b206a42f5e20dcf7f3b12bb34763a43b8caea3e12be252ee70b1f3d355a46dc28a3f55728da44cd30895100ef3f81410ae6726d2a1e0308199943a1fa2bfae32b07d83426e5f1d1022e895f589d4a9667c22d9664a2bc20095ebdf98fa2bc9f861123dc3648f46a1c48d892e118b5b20a6b8dc58f076b2c03bd4730d200245a6761e988febadcefb4afb639ccb904546e752ce2423a07bc8f65b7ba71126d8710472c619afbb1a7fbaf6c0fd4a89f46a196a95a749bc8b819e696cb09b865489a9f0bea166e5f421f119bb68df4090ec0c2263dd1ba39de631a4d2b3d6e1b6f6103630f8c9317cdfced0091cd470bf41da833a14418bd74955b31edd88a8fc171f43b662c9914550aca074fd3649924fff1bf25fabc592f3d05d2bb7c53ff51c3f5bf88ac6d73e851765dde1a833573502dab0828e2894f5a3b2e7c6a0c14b07582959adbaf5b8751081387517173708b1c172b0bb0475879a2328fe63b121a14d735f0c7a5e2c74d8ef14483d58a226894fcf706758ab2b69038f11bb6a08f2218f2dc814b4ea4551adfbb726a169c62eaed1b22c4594439e699465d488c2fef741b7fd2b1ad2b401b617acb479631187ae03e730bafd4498868ddb8534525a862d51de550d480084f861cfec510fd5a82ed3ae7ce8ce3da557a9c6b21290a00e206ac4c082f0c9bd9753d24a59a9c7b3523bba05518268518b384498d8af259da7cc6659f531711b6f33167897604c213bd9897ee4165535f4ee115010b65e27a5e020dacde08fb0b44135dff1fef7932ce09bb7cd01bf0b873a1d2364e85ca3b16dcf785cab8d24723ac4c28b25b4cb140ebe9bf42e9b2680078f420b7b9dbbff6a10e809bf9d3e17762e2ed5f2f9ae05503e9579d9e099e87571326c370bb93403bd4aca19a17c6c8178ed59109944166a602a153361bc3425947720dae06986a246dbe4eb0f0c6927c09f23da0fc72f6bcfa00c2065ab2c9a8effc8599ca372902319d495497176d199c3bee7a80badfd9b9970bfffc5ef7c2f1aa246f352de9aaba1238d203178efbdc4ff344d0c9e8558a3687630c658db873b9e7da7227d51995ffadbf1cef4ee25bd93dcb43567876a4e7960484003638c00fa0d97894ff9b1439a841b369712147ddd58cfdd0e926c8e3e8e4feabdc553e544575a4587702e8b15514d4efb57a603b29cc9d85e5903c80a6afa9aa1a7e54ac77bba3f54c7d4f06182e1630c4869249869aaf680dd83e60be764ff4c21ac203eaa8ada118da21881b527cd1d3cb538af19d99fc0f932dcac16acf8187901c15e67ac3f7a23676834422b8bba3689e3911885fd6b4f578c2f866d5e0f72d48e98ee4cab20568705e205d8990b5bdae455352debac1761b1400993178f253b71e76e364cc376595be1329d177534be6873f53321e4c9a08301d9355ad26d8c60a3917d811d5ea1e18340e2eba72ae8d7d34b505dfc4f7d6aaefcfb1b6c696d1c4b72275e6cb0805089c63795e8cc45520a9987e46ea6e51623f2c3c6684b75abbe0799cc1d03e861973744b5e69f4fd18b19fe7869ff0a11890386aed927ebb2ec68386335263a6651576287a350c19df832292122d28fc885043782045bbc7d3a225a2a975808ebcf420ff5036523d7b1ac4321c01637bf7055027d004e867962dd215b382da54ab7f9e14e59d87d594023309d67724f3f59a8d3e10503442dc2f5ce45e06347be930c927dcbe103d3440ca7895d612c917604201ba0a9417ee7e3cee383cc6fbd312fdad65efcdefb79cab30c3b12bafe3ded4a3d089989559296b90e06b9d47b72e9aa7a4454ec5516dffc266650ce9e3b44d7dab1a68fa26e946df0a9f87b8f981ee396cf78e5908e293f5a847dbb1797b1ac0c8004b102796e0e99182693da66bf660553fbe32ab07668007b7d30a0625110a6923252c0d82774391b3176bb19313048f41327d3c6d3bcc510cd495e066eec53a19936128eadb9122b40e155872b04a0536665c413881cd406512c4904b0028ba7a813ab7b103eac03a41e523c3e608f492c67f3703f48f1043cda1e36c6f41d143f48ee0d397be9c5ff7b9c2eb837fc032b56c7e7664045c3e6f8121b3328bb1d9872931a0e6da15751cebdc158492b3d60e44b73fcae5929ba7f3d26d2b804c321392f337fb2c7ebd12e2b3475fc6cfb2d5d02def112de161c6f675e984569801dc3881a303a37380cc3af2dd0f3b66ab109c646012eca3e23c3426a4b7e8183f40a73253a05afab14b7dd253d1cd2feb488e721c6c4c1e5da9fd2dd583c41cdf9b149b29d5b3332b8f96ab69275d0a7bd16e71fceed797b10ff9ce312e097da9d1abcd1e6285bc74282451a0bd58174ca27dba7f873ae718361138538e2113bd2394208c47c5a79c15f45d3c1e6bdca6d68f8c47a472d5eb664af41cfdc5bbd3e7d0ae8cd94c85a271616e240f29027735120c50ba22bf6c9ea3b46da3c54400a7087aff8c3adde16e2e8f0a01094205b29aae96d847295c47193ea055d858bea1ee938d9bc6ed3865fc2f1ebdad199adf47b4870bffefc76951a79fe0fde867029f732e08ac104a5b204ee0bed6dac3738298153cb080e8344d13cb1fced20747556355d02560e552dfe848b68cfbfa6d26dbdca0fabd92473031b1a1ac5d12c7d460c981585c20115ea380638c884e1456ac837c75e237c4c6a93e7ec2b6718cadb70e8316790b6fb3413e488f1fbfd17a494348ebed943a4990265976f54939f4e56977dfbbc24f1ea814bc13e3407663ce01ea5ab66948dd8eba88f9603d397c52ac0237a31739b6da9263ba13fc3da572a613bc1e83729db42c4505b80d9bf053bfd345f546e99a7b0b8b3b71dbfa65417f77d7eec7f0be9ea42973f2ca16dc6d1323c0893e913c667392a1406714a2eba7eb04c83feaca71d97cc478235dec6cc5ec6de5a0cc67fed3be804a7c1f862c2a91cc0eca82e860aa8d530079a0bbb0824d8bb1fb1128ad2122513b34397e14aceee17a0f7c8b42093419d3f3c8827cba08b6a0a7cecc1d1a13efa487d26b767cbdd0677a70e8561ad631b41bfb97807f09374d7f96f8ef1673682816cb2cf048e02e42477e2e178c7a097c379606caa11327c4016afd704df938c3a3e8adf104903135db93d4d9361657d6f0261f0156250c0b3efc3fb006fb614a066459e9f92c59693257d410afb95fccc9c5c6eab7aaaa0c5170cfd98bb26d576a28b2b49019323acf6f1ec22d23b5fb594a1f2ec2f9e1501c1f4f9b060b5413613056ce36c7343bbbda505aa7f0c2bac13a1e920823af8e9a8ae226340fce748ba74fdc7bf0b48d824f8e933e065ece3a4e0bba01aa11dbf8075737868454db9b313b091b4c5cfe82bf27264007f363dac90879472d1337e24f8a62229253ac17e70e315564f32ea23f7437d07015dd77a661f042c9f532dde826723526d678c88174d254a0914c83351d25f75429797dfc3be0927bf2dbb03aaf4135d1e51932e2d04f79a07f456785613060b7f699962e6fc346ef1222a44befa2a710f7dce7e6b2d459869777fa41533db232d131459ee399a4a2013ce9fd6003476fecf28a18bea218b504ccc7914151f63c1285f85317881d282195b856bb881418f8807d0b98015ff89d6c1f500ddecc36d57f6aa9fb6657f1b8c77e8bbbc73ddd9b3789c1e9d4d0027fca20a96430c45af84d07eaaa545025af22c0c47d116c99416c33fa2dd7978c95ba9a3254fc303fc56a1218c15d7ce3170370f4eb7c48c8d8ba569c17b7ce6db4941e1ae2dfeb553460405499b410eaaf4b5af00e513c2cd80bfa9a76d86d7d36b76ab1998234b52c66b2c281a089ac4abc8ade86768aa575db4b3386d6274d311940bb824102e5290f9ca02b5cd962b06c6cf241632e971d2be12c92b4301cf11e4a3e6dcbc05b6ebbac241b34cdf455dcc5acce041414d7cdd9e4445e68e5110649fecb377e45b3a08adf517077b935d52867029155a38ec83283b3dacdbb8b9846872cc5f125a1854f958de3de790e7c0b2010dc1757eedc9fcee26d137aad6ab43da135c4a060d9662b218fa6726ae56d996b66d5d38822a4b837045286f2361b086a421e10464ad645cd1d9e797950a59eba27b88bf49b283609d1e15ef83b9d4551334d3ffae3651b024b2aac0632179bf297c5be0aaffa0a6e9885a1e8d71249396991384aed1757445fefcba9a57e2f54edcea632ffa2d2a38ed06f7df2a4887fd048c74c9d63b0397b318f6d7ca3d6605a5c62733deb40e81161bc860eecfc2fb0119d19e5a7e3b6930ae29dc404ce859219d6c3291d8eb52037bdf4a991c30e3e2ab9cfa43d961c8887c158d580365dc1c81490695923ad0d727962f38365e912aef83aad98f9c41efe681e75c2d04a31c052c3c93fe0b828cb011cfdd52266f1cd91855e477ed3af37bce80e84a5ce22490ac45f604952c5b49642929769c28fc54c3ae4ea21d0e4407a4f2e8e581d611324f76c7bc370b5061d7fb8cd4ad84622ddc79f54da6b1bac3ee599d75269816bc8bc7d2ed268ed1c370077df57e6c4aa4e19213da1559684469bba59a98d88f783e7a0372011e1a2d22588ee24cf3247247d685bf469edc462525df881ea28c9547bc9b16146b5fa6d67f4bafad2ae000c683e38d91573abb643e16bfa07c9401055a4d16768e3ac72b760f8abcbd39731342250a052eec9156e88f2320806956b4c8dce825a6d74336ea364d0bd52006080010a78386208cfdc1febcbcd7ab0726cea835991f8ff913598d3e66ac6b71a7025ec942fb7fea341b3a1b89dc15f7a4ae7219546aa594f9c36b909a991e97380e642340b45944d1f5a7bf7b0f18715678adcddfb3471ee3adbafa1631d93a7c1b36b35d3230446b304acda3b137d1cb74e5d789bb1ec74dda38750055b96c7e3549330c02ee42a3225418d183494bc830bd2fc53920fe0697b4883a49adc5f0e43efaef89e127ec98a7a4d15c4b75651a93088272b5eee9ed0bd1f7dd14c23678310a688f35bf78205612a629cb01d3a32de785a7abc975a785857c45a28acaaf47972a16f5f61efcefde002a20777c7bd670166656f603884d254a04eab299f13993a8e84dc1d349e52251c5040751bc83e108afad4d70f2ddf068d03fe9a370b1d12185c1517b733543421077696bc8ece156ab184ae919819e25b846fff91fce7ef074df6305b3ac2c57c9209bbabf433f4c69cc57c30ace1b0faac1c3270f2e8551946e0ff5f50b54b775156003274874a812bce9a1adf1c617e05df936ff62562de1abe4ac04723c7867d6e15c17ac6be76c9c8445057946ac272c57e4db5d9667667575ca3e356cdddb6e0ddab299264c49a421d682506d38455503dd8a3b69cff0e8bab1d56114a9e2d3e7a96083d50498586eea3ace9cac8482c7c93deae2f9baf127a036d077de34be7e4e0e6df946f81f6a2e3f652de1038d74c92da5ef3eba278fb6c0d4a8d1f53160350e9f6b330a8a74b31095f2f1a8ff9940743524d7626816f77341e0398872dc3d5791ae1a18333e22c5bd9f7c0eaded9f1a3e6be21ef0a5c4344c0aaada1d4ccec88c9a12521294250178e5c92870e56a4cfe06644264944a2777159b64f7ae440efb2d8387e6c0b713a54a0cac8c02b0caee984fdec57ffb7fc7c8ae5cb6b734b70697385b5eef7db394f3725c75a56a4cdf5129c2006cc7182a5e4b1758ac7193edc3be4b359ac214c6fc832a5c4ba4abbbef4d2f3c3f1e4037c73a61b36d41839276c8d04085a4397426f736ae11452ffabf68bca8f2be5e8ba68a9e3c1fb805526cac46fa80d1673f2ed5b4c135bb5f767a65250f8511f9137be3cd01a8d216b0faf953388c32243043ed275688665f94773da5566eb83f923c26851e8e5f2533b7866f42df4f8c4ecdfb2e6a4891ff6a41638c651522b257c4c4135b9dc801536801ec92e364bc80586e7bb4de1eaeb5ecdf8576f18cd4174d3f5de15b2da7f99b1c8d5ce5a7bd297d0f8de1c42d1d64536ba2b6ec0d0fc2c7a3386650816c280e5505622f4283e670e51b27803c66fa733367be01cba9265613c3dd1f50f77bbc1d023a53fa1b4cdeb0c754ffcf5f48821ba7a72a4956d08a504e7889dfda0d549ca864bb47ba2327af04a56f729622c362007cda42d611d92d5d07009f711d49aa828d7ae7e4532cc6f51f99e66047fde82a7c503c6d6c0dd18e98f678146d506f616e6f535e3ce5087ff276ad7a6e5154be0b3d1bacfc0ed6d56e1a8e48fe88e9ee6f02c544b08c9982f4ef4ee03561eedc73a0685b4248d826ba96ba9f83959fee001bfa16ae9ce5f32d5dce95e80a886330c6934031c7adfc72570dfdba7909243648fa4ac8617cf165ca3678150c8220ebcb32d87726e3afa7853def5876039d61f4186acfa3849900077487914c49780b0417e826c36f04c25360a54d47882b4c2c14283b21fea1dd98b3cad0e386427323a8c585430bca6111d7a417699e9a45c28a47b1ba2fe184ad857baf504fe5d6344c04155bebf4a7ba1132b3fdc921f9736901ae0f497131f994d55cc3ae1fe34d627f5f6ab1c6483e4850c8b8a9cd3857b2191bb2c642cab8781ef47de00a854edb3fdaa7c8868f8fd68161e66977a56cfc7c52fcda2988b38e0f289866cd1da50bd5540de057f72bc44b647e982a219f1dc1c79a94ea013946d7fe14275a376bb1c92395918c88adecab370481a79578dfcfa2b2ece1094827a291762864ec94a4111fdf2327246b057b22aa20e3ea2aa4cf29f4400dd1e5a084855d4a039f084098ce649ada2a143eeff734e0a776a2ff8e668b46c97904242a5296492e9fdceec29b31c94e2a3ceb3396e4c09d99d68158eb1ecde8f47d24945ecd1070422dd8b79d92dfcd01057856479693a8eb52a5bcdbb5694a0da5a6a48d8a0fbeaed6c56c61bed8373f145288c0f1e12ab94f70236e1d3e3fddade83c7189750bdc3547edaa72f8146b56e19f05d8483aa5b67f383915b528250dea6c671834464f64d5e73e3f40893da8a3857ea08d739ebcd307a75efdb495b58f2898f9cd31c8a763501048b1398ea3f8a5db0b592683828976bfb26146cb066b7e294f7d1b060f13a4cf2ed6002d25dda1a288cf020a30609117dfc65a7faf545c092c5ac3b02f4ba717a21417e3bf108cba9421496a877bc7f822c5b6b65dd4eb6f00cd31c58932fcb44f8bee927a930c8e65bdf03c572ac53368306c4b47473d7e13bf343b1d22ba46490cd861ed7e79ffc671acb4f72028d506355090833681df603bae14d6e0244643233deffcfeb68fe4b2ac46bce086c21693a1499befc1a1939bb11311b257e5b405bf16e129bc651e71118bde0daf8a8c07a90a91c422c7f5bca6fa58ae4e5b5e69ad21383538cfcfa0c47998e0084443f674892d197a6dc362737224de0fe8823f609779256be8760ab0b8c6563e51f8b651580a7d4878fb9f0b9e2e7badfe1cfac67cdd08018b1867db051498d8612d2d0ec552fa4506698fbebec613b7698f7a425368b9b60f1b3a4c889b74a307ce58d614bf8fb1d54baa28ffc0de54df21f84337ef2e4b09e5c0ac3d96756374f9476a49d837b6ae1add04c04efbf6cb0d1004fe63bfaa51cf1d0c3d1cf55d0a363284225df02e3e13e03f8876bb9f596f2a2406cde25dbf5bbd6e57c7a8bcdae211f813fa28533db672e91a7fb777a2797fc525dc9a5361afedb356eb982e2d6dc6dadb47d3b379abfbbd96d095da5d2b3dab710286b2a200393840e2d3cf2bfb0549a757949f31d811bb5ffe855484faac4e439f4cf350bf296e427a11cb339831615da3571fdf880bb6ee40dfb9c3d50cd120c640ffeee87ec4ea08939262a70cd57ea63efc5bfb910acfc7adeda2ba19d4c67e4de2f4c9375795dd751648edceba6708e682bbb53198b645f69b351483a72f4090fd189db8bb9714e5b3e81750b8cba184a783a0744e70d07a7efd39e6faf2a02764d413a8725d2f6c87b83c61c19bac451cf536268c2e5ab99ea939689d551ec61f850e412fc9efb669e7b71b5522062485079c84a7ddc2950417d97608629088bce95993dac75306c1053f4c79d3c6012fc8c5f641cbd9c7a0248707d995008d50716881271283c69a564f062997ceda1afed79726d916e50af280e0fec2fdf07ada260a08674dd91623fc2c52aa1477f779cec5088ec0ea10e5074194308b70bafbac079aadbf0dfc5b7005a063415a155c04f44739aeafe382dc8d876ff72814d6395a0d211c518c2e0318eb96ac97e9934c80fa2e3c19a96729cc14edc229a6b0e6ff7e6198ed34e3041d0259fc55f66f1c468e9b137d8337a94232c5b91115ca31920b5dae24e9bf6ea613bd86d9f8f6e1582f1acdd6e7a9b4e13a71da4e79f4210107c8927390e2678ae73cb60ad1fc2afe13907519c744d58b0ced611110422cb87b68eb9e0d1066e9256a357e3910818efcfacf09b2f81c72fcf9a6a38a75873df6ea335d5fced1a6660ea4cdbcf4d12735c6f33f2cff31392a1a688f04b85741a45131dd47e8e97f12c51e6ab92d67560c1a9038a620f4c8fd1440299c51168dfc6f7567e88dcb0bf789f9c4d72bb2d75d0afc3b8c476a782456a315f556722586b2a3f364462d93cdab9276f145de643bf5fa2f29295b7ea6b796535a0aa896ae2230bc3508fec7b74b58ae92fbbc29e16e136239caa589bdeeca7810201e726bf761d5c0e6a3f462a0b7a4961e380a3a22ffaf1b16173d6b3d40984108b16a9c599c8e17c4347cb09397dbde368bb8a3d9116969ffb7202fe806eead63874af212f1b755e0588d1735b7e1c208df7f42b2ee7b82c239d965b2b71ff0969f7bfd590a262219e32102face908fc445f1fabccc408275472d082abe6b6cde908a1b9e9f0f390b8159da6ca6c048ea06eb718a04d09720f4542a7ce0d94bb5a5865efa9caeba2f3190108ca3204d6cf81741edf1318ee2666a1bb0b73eb7200359f063ebd80195b1e8ab01c5d9f5baca68bd407f8763a26789e806fe814ad3d2c9b82499599063b49279e2a843c7996e9bc8e555289fada469f5a13d2a40f509747c4454e149ad700379b78df2938b73aa6b71086c01be2377b347097a4ab39a8d4ed4543279f8df10bf1bdf86f9a3f4d4ee25e497f1200cdb77abaf40534c6a40a47423207467eb8779fc6da42a05bc074cdc166bc4d10769d38c12a74b0a8a672d16077c048f6e24233aff453a0576e0f52bb6c71c84cc630eab37268731715103f7ef9710dac1e9aecc36897166c9eec7b39eb57259a96217728507474f91034bc811aeea726f9f99acf664a1dc68d1942152410a6b70bd532c8135b2577be04fec89f7ffa25c8f52b5d704d3bd79dff9b25160b7e9c41d2bec9fb2de45915249af9dacd2cd4aabdb788863f311472055c6d4d068e14e270b7a4f1796fae86d15173dac61143f80b6aba68ce279849fdec28fb8ec6ded374e980c46c136c43eae02de2e1b9a43a6fcab6a6a50090cb99c54cd30dd0056bea9cffa475a9c2b461be4f407750111bf80d3115321224c60b3e18f95c63853b38fc60aa6bd08b2e28f1038aa447737f4a638ad953bc578ea57f38f03a851510088d78378a62059016cbaf32c0016b9b5794580f686661b44a1cd10e7e8c0a56a368346b7b6dee7c049daaef1cbf8683528ee9c72958453958a7e6326e5f7b72a10876b4b3a886e18f0267af4d54bdb45b298d30257072388d7aaa0185a998019d5ccca9721bbe48def0e229d0cb4a51c50c4dd3c66dae37408e0630e14c088551b35bccec080de930b015832901cd0b4052d84823514f2f7fe1dec95c47e026b98e76bf39af7dd8931edde9d7677e7a3c98b5542c9764095157a558c5a8fda327bc9c1827a3374c29ee7f6068a626217653b2c50d783d9da27e5eef388d875c1a454e3fcda229f07239fe101c16fa1317d1b0c1b0492e365e22ba4cae0085e91b9c83fadf0447501da0fe7028985c1f5b20d0d034ab8769ad4e43357501a98427ebc6e9cd585279a4e42bdc699a01bf17c5731dbcfcba3d827830c83bc8825473150fecd8053cb011f68bc0290f318497900cd980d8ead2fc05957e7c96ff0ce069c5fb0c3cd17219dbf642fd1db5c09e21d61f9efb98d9ffed60b25ca9a4d1f25ddc22c2d2a6b5ac2702661961a4d9a296bf4e191d904ae4d13b7a53e79c44d3fcdcfb286a368afeec99dbbcc9fb821b10304b3e80f856e463b6686405fa45efdfed4424b402ced4d460b915d102271627960521ae47bb40b616783560a3e2dad2313f6d36a043911acdb03a11334f1d22af0e35c1b9089ffb7c1dfc5a80951455d9891e74872df320a720e164b4a13128273e1653ed3d89acfc89662871d2dea9a6b90609dfbb4b46d9a176501155369a7e97f5c2adc74cb3cea4fec64749702979cd3e57e9ece49fe8cdce73ffaf0583fe626c4b482c5bf90235715266698fbeece5d92353a553f6514ad54336e31a78a875add2a0a1a0fec0db126c15047a24dc2a795c8552e8b86ef99c27a241fb6ef2443800082ca6b77bc91621a9435f071fd19eacd7488285e6184098cb5083dc6aed132fd7eff67d26b48fc80c0f1d38ac634ae90da9007fe7e17f76cafbef316f4be8056dbccbfcd32612c4244021a4783b235de931333add9a9e96f79826d7f55798366f53ba242fafe7d1696b116ffdc804f0f8dca7ffe3bebd4d8cbf1c8711e5b81e19c72c5ccae7614683dcb80dd25e97e0d8addc4bbc2cf34945868a33ad23ff0e9987579aec2f41c511bb151eb0be24caa70c236a29bf288201fa363484c9fb6fb4070c38b0a218c60de3acc41ebbda775c599355948925176fc46555644f6e1d9ea720480e264835348a3a83e7fc2b86ba5046a0db9de42b59a06779b078e6e2266e4f6db431276a5ab99b0222976b9500d47954b7f0ea3f8a92ee074bdae613228327767241a704d976fa7e15f044ad677d39cd0eaff88654d920ab957ae06eeea42a3410d88af1cd0d26ed7b302b702b942099f8b8bd9e5a50eedb240740affbf69a4b9fde3c76145522e6c9d1ad0162cc730d08e2c1f53110fdb73f40614ca67eedefd3b84eaeaff606b0181f9a4db08136b0c91a645e3b16b0c10a1bb0657f7c6d057559ab380ab8019447d4ac0d2c656c45619480826644ee3fa893161a025e55c82b2c25327fc0ff18e0f5d732cdcf0b2c5c9008430ac1be5757d83e5e0c511d929e5dd4fdd981bdd28f4d105b5f3add5aac6ac77277eb8fa6ae4b6f41df26955f58cc690b711a43a12c194794f67df4ae9f00e6a5ea367186b4e03ed19c3431dcab24c8bf189b08648f7b876ddb4d88cac6da97b13f7d459c7f381cc9bb41db7ffc6cfad1c27f8137415abdaf99408d7711dca47dc5753dc41487921f45041eb93446b99054d7a9d4045fa10f16d006439db7cad03df465a39d6d7bf367444f2c2e557f023bda222f93ad9db216d1ca1e4ec56ca7bbf1f0e1a55dd43fbf81f3a72b710f99bb137ea74bb12a327920be12bab59dfc6dc2e0559b4c0dbc1e82d5b754bb29042a9cc3e290ddc86c8fb8aaa19e56aadb55a32c6a442d3381c17e4c1ccab8bfcdf349a211d1af5d72b56159c370759182fc4fa83b98d74207f3467bce73555d91023e2dc66f51d37a68ff2a1470998ce1fa8f74c91f9d49d989062a330e91081d7a784f52a9d4575e6c24d052492e57ae5a284b512762af0a681dc5335a5160d82d4064e1ca7d0053e1dae7265a42024a08e4cbba38f2950b8c8993191323b020179d87cab79a96cf4a6e61298f037f9889c2ba152517157563b96fd3a77936f9836afbb0133d9ecdfed6e8f4600c7137f5a3a20966b3cc895fb146c9f2adec9628d924cd84a8e346a44860546ab572d62771e4090ad217b05113f874c0f84183b209c75e61f703dcae35ec59d6a00bebc0795908e22c39a63ca77b81cfad0aee42f864da4f2055b2d97afdba8bca46f17974aac5102993cb829673e25bfd041618cd3984f7c9382f0034cb53dfe491139098017742811672219308b006a84f944cd4b32132913d9f4f4398b9bd3c1521c996a396b97b00a2e7fae4c4eb3d1b09093c6ff885a2e451c724f0a49eb154631ad58e3739745a62724ce0674811f509eea046419db46efa7d58146330d6cad534254166c6d6bfe37c1fd28e3e29d06525a77049f6acd801d3a60232b2925c329e0f0232088aaaeb772835fbd42ce4c0ab4394629bd6e3cc610e3b8fe13b243db6df8cbfb17e6f7bd635ca468602268864b9357aa80d70c6aad426ecb67cb0587c4f2f0fcb3933d2bb65ccaa8550a913b523292dc924e33c7c27ba1f4fe9d6edab07104bb04a3cfd5e3a9f4e70a26452fa3553d4b2947b20195772b811b18cf4cba79047e4c3282f095a930c34eafcabf96d59654494351857bacc28e30012535a9bb4ece58c2b1279727e970c40bcf05cf3bcb7b63d21178b68815ea9af1d4046c3c445301c0a37db79eaae4f7c6489e6d4b9c0cbccdaed91bd6e6b14abf8cb2af98ef5aa3b1cc0eba0ac21b39f3d64834db1f8b76c9e2b2557baf43beb2132f49209fb6e4e2d4026319951a3354b34d97a30439dc470d21e8d2834db3a6373df672857c36004095ac3b0e7ab942588ed8f145be97fc7438836cd97e840bb22b8f6eebb9369cb2b0eec5f525677f523514d5f5d621fc51fd2ee94814ad44e396b9be8bea4c3fe439a66a33133c976828a2c9912fe583bec88f338a24ad4e4e923c09f7dc63fe8525b028d9398e210a4ed4c7dc2cac50229cd6033be2a9aeb971aeb8ff2e54e4de13ba1cb980d704dbfa44ef97197c4b8a4ad0c7698ccbd7b532b422a7e594af66da24326678b8fceb9a9b926a94e63ffb215ee3d14cbce3677107aba4cb84a90c73d792a8ec17869732808768ba105b865edc12116b47b60d0a04b2eff2f5dbf1d8b0c625bfe0ec96351292cb27b0b72c09f8bacef3e0d868a9bc8225e1b7aabdef72713ccf3e5dba7b883b929113c01884ebdd15a67d5e656d2c5aa8a336571d7bde41e3df06171833817c33688df80b5028cd8a4bb89b21fde0964c62ac184f84875d7c7b063b2f056ef7d68475565a82c3d793bee19feb7c501977d453bcae85817d563ee88dc62ce62dfd6388004ed081acc78d9891fa11c4944b21e800e12e894cb11e3f805ce255777ac431197bbe4ab6d462239ab8c130e5047133e0039057c217a8192c4fdfbebb42098dd478303f3463aa24b5a76ee65879febb89e30c6dfcbe135847e99d4d0fc2690f73a62334f87e27301d1205a1d7045d957421bc61badeda3adf371ac096908e401e309f6150de378a8938e5bc2f73f5314cdbd670aaf6e37c5905c01665136a960be4339c04e707b483eb450c2c1f015e44912f8266bc3e1c4847f344cde8a3ce596d5055cf186ddb0ca3b8f72affc8547880cea77b0f22a0b84d5d8e81b97ff4738bcac1e930e9d3a7ca16397b795b0a1c1debfd4302f79c2c1590c40342ddc5dae76d6056d8779c659cf548d8378c2e5220f9ec22271a3b0e3c4bc90fdbc950d5379be3cf573f16bf81f35d630e6729929dd60b4556eab84f9d6fb5c85dc5b15b4bc4a6692e5c8d58a3752601aff149b0344cf21ac29e6cb4d02f8c1a82a29bca690a9d0482f0ee93a3b500e48c91f1aab2898db9acaa6ab0be92ed4419255b926d06f5019c32bf7aa5fadffecac3a9724c3d452c1ce22e2549aa800cd56aff0f7a4238b0297eda259562bd492bf69d494685fcf470b60e7b1d7701b4eb37a4dfb2181f632e4c9c6f9afea39c781f7053f8a32d6c0c054c207c6b3214134ca73f4287fbeb958adc3fd0631bbf2f39d93f13c6e48c80d375a510ce02cff7c76544250d931b12fea60b9ea4cecb802a35b660f38a43590effa043947f99fb941143da7b079b1233234c782f61ae32a56d318041d4c5f82c8b4be7f12105e274f7f3db1c7bc23a3218dcc33f2d6b29bb9711d3f3169e48c8a5a94b83fe158b88c54aa6f60861152133d5af07d2a8b141374d93e5a1bcccee01210cced50e5f3ae0b1fcfd628f471153915fec9969d9706c368509b2d0a8ab7a52116d17db4c64c8ecd32f7396f7a978d0b920fc3e34e7e5967876b5828dbca6a6d5aef3ac88ebadc1d3c9b609099f81b17de444380f3ba3579ab9d779a5613452f6b8303e66dc645dc9c5a61c16a59f6b4aa6d35759c511172fb5b1ac0728bb80afa1d18c9d2942ada93275a86049256697deb4906bcdd87df7ee0262fc4b242ff8934af548eb2866b4f1f3518e575403315df082b55468c65e4b36d542d13df7c9bf1c9590545e26db0bc2295c67d1d68be047902283493aa39d5fadb88ca6df6b189a4f2d2084de823d69f6d12205e67c109b7c5bf6369d84addf3a05a92db36a917721926ae2d0756cbd6c09c446bbc29553bef594c2a32400517eb9b205ae3396fb1ef62f79c9e32a476b235f0b5c903b9bed80dd8937fa0160d4ddb15541752cec0512f00154d0dd41d3a09e698ea20d205c617e717b3f9559e07cba64979853cd92366fb7d0e7970181f43be492fb32a475ddb4c76837def26773630d5b81d9d2eda67233fabf84d7beebbdc0b9d0cfaec4346767002bca1f437a291d94205a10af16dc629b2ab67e43f35f3209919e6c7dccbcc760b57774e6bf0c1042558f2ca8aed6f2346eb444fa86a47a3197f822c83132a8fc477faa5badb855a54cf5a0caa30884e2158a6de3b71a08bacb29d1a7d1fb69f7c718b1abe766abef0aa2764320aa26a9a157a5a063440daf34d069ab9d9ae0acce255281c07d13adb820de014f702a607baba53a824ac45a824ddf733a594c4beb2ec6c5bd8cd8d1910d843571abfb8d5ec44f8ae0d65fc5b45ecb0098c506e52f62d998be08bd2dfec08fae7150bad0c077b45bd82cf1106af987fa33a456b6f8a4d0316d5434fdbb29ca6d07e6d4ca692a99e226b6c65bcb43436f653c34fdbb8c3b5eac625576e255328656f1689291baceb2f46da539719466a5317e053b9e61ebdfa4255ed2e45f9661ddb270506474ebe619363f09821225d7a01a31140c453b0c94797b7c4629bfc3369d216115ba89894b96e9a2bdc8487fcf7c84aa26e360c0e541610933d5653a0ac43f8418675e9b52b335b9c15952c54f9d57b0672a7b1e1131f5ec5b28ac95c5e945bfe17cd3e0e6495be0a92ff1fd2ad4985503947897194af17e24dd2755f8fc5f14d75b67001fe56626b3c1bf9c72ec8c6ceb305f172e7de547b069fcd52345eb724d8b3eaf9ad5289be7cd31f80517200752d4e430c9914bb5a7a06aeb25d268c44bf666f0878a27028066a5beeeb53b115562ac349c2477420e5d2f0619b2957c05e0955d2aa9060b31fd7b987dcd32f6aeb8fb6a923aadda88bf1e779ca6e58e87aa1510a8d8ddcb0ae23ff5e5d5d3ea9901da319fecc742392f263a3e964eed76f2e8f777afc1c50cced443b7c3d2f49a51bd9a1c05d6285d86a3b8e5db934d3f4f19fac3888d8f0d76e048d6a9d9b98299dadeb526ee5b74e7a771367b22f89f0f7aaf4c108e64ce41d9c3325584645a6c110107228a9a723c769c5ef0eab03434258773f8d77b6f78219efc4601721678156e284cbee1d30027669fb61379eed4d1eeb5a833cc9a900f42186b60ef8fdcf8c8357b5c60895626a8cc941f02fb5a38a5fc05a8b3b2d5f51a792b39b6d4d578d0b4c5bfb23e72529a1febfd8bc2f551fad701db0750cffa641489511a56e14fdffdf10fbdd4be9def2cbbd9acb2d448454847a8448f32c8a3da3dce2b88ed3b223eb9fd44b47f3925fa46e0cf11f054e161eaf1b8c5e685ac66b44a2340256df58edd21801ab4fea669ec3fd4140bff171f334b14ec9eb069d5689b69c40261c0d8371f31198a0f4ab6b63147778da1bc20bace68dcdb6d149b5ef127c4f91c97b805560e5380e98cb84ac6d20b202da6ab06c832f8e926b00a005b8cdd78d75ff6fc2d1f07cff06ed2ac1989d9d7d736c9e4c519ca2369bc2cf5fc5432c78deecfc0ce6eecd9b42210629ca12fe7356c6bc7c9ef13fa31a87beeb1bf217b85ba9db48902fad7a1d0749b9985ee487afa0f5b7ab71bce5438a904a4545241ed38a4aaa6149c42fa9015b0f93df3433dea56c07bca3debc7b837c31c23a08b025a35581e576a577f9e472cf1a93723e394b1d58a93acbd3d8be847a1c3ca93c452f67db7f3b8e697b87b13f10edf8dcc8c683dfc79584d2df21a694abbf37a9abcb638f7581511adae0d96f2e17a4d8847a9bc79a1d2083db32439cf492e5f9f7a9dc534d86fdf0c5f14a98011ce69f6faaf4fd259010661551fb785c4bc7972d8badcbb0a918c6dc18055c22eca2dac5c019eadec4aa27905c34a61ef9966c7a08b0ec4c7ec3deb445a6b78ebd77ce378750451161767c9f8ee456985bc9e6600fd07d88e62fb83ab8ec60be0bea617c88a94368861dc951a3e10fe9db577a7fd728cdb8748f7351aad246a64aa3e75e2ad9a96ca2bd03d37e08756427fdced2fefce3f48940c057a6e1ef325468f84c351b611d7ae63af3361279aaf9c629f9b1c32cf2b7b445218a85575eec6b1e0c3b0b127c80a3024ab9b7571d5cb586741c7c21371f1afdcd0c1dff36f4e62fdcc3a49f68f2abf3ecf6d151ce0ba0762e40c2a9b1a39ff6257ecea58a092b18f7557c5b3d31b6d69799439669771a784129298f3dbbfb171f6109f95e109d2539b4e1d0e5e7b2b23d99acc074ddf4882c0dc0eb6a1f50da65c9bb44fed2051ed2d5273748de0def88c38e4965a72c94edb877fc7fdbcd5ce99d2d10e27f0cd949d5647063532e82f9cbb72ad73ecf00cbc6ffd50ee2bfc6de43a2a638932660d1c5716d268ec4b484422d243f159d784d636a95061cee71179d5ce601c009e869dde6590f0e59858f9e2db43b3dc822e0d81b16df89e7c8dcc60c8a530b62e6455fef587faad9f3e910ce20475edd7bddac2ee7a092cfccd0d34cac8daa9be1f7aee5c92356e39cae314889185d75817e0ec7aafed7cb8a067da434390d07032db09efe275b6c79a23ca80ea76e02a7142f17de3f4fdce61615c969f6e24ba05f83459e8543a3723e5df3ec1b074f92246175ed21e20bf02b1529899f0d227d7db6c882b3ba7dc097bea6e4261d43887f66651894f4e56251835e55a6eca7f8a32cbdaff7c23ce2af84e6ef991bd9b08130762e9f3d98884ff29852ebff704cd6bd8b70e2f703b8fd82fe32e000deda4f2ac0343485717c46d54a87e545a37f1afb0c6678c38ebbac7bf224d6cbc67995e4fc2ec945d395910793085ab3281b271d1d78f8f1adc3d54e6bf448708978296e37bf79bb31b35c1d355b6e22124e0703798beb194970a0829a4023549c196181af090ad3d83fa1c9f22e7301e88fd12e7ffa85d5054ce18accd865516537a038bf1bea22f8fe51ab1104a085d07039e29f47c3fd1575546669f663df006def0f3dfc7357b3f0bd17ccd51692203b3923c56c110ec3337cb6907435f4f859410b29b48f91624fbccb08041ef5b08f4eea1dc3724f368644d0d9addd3a76628c252dd157ca4efd7564061ceeb2c3af36ee7b8c2518691281aa42aa2c49d10c2cc76301c9a6142ba39a5a399e72a659de7544471c9f1aa605467c5d24286e0f3a4b4074198a9b89f422edfa20307f60423db36ccb584a6c92f840ff0fec808b4f9f7ecbb1a6be2ee59b8d9a30ac35c8f6e53a0aba5d988a158d5f914a3c6b7a1c137d5a4e29a9e525e05d67d6321151de5d4c56d3feb6f3ab34de00dad484b3c09f7aa940957c6085bf6fb2c78136aedee41c8fdbfc4719f8fd97c20f20a60331556b07ae135f6d39eb7fff6595898c23dc050207713d7774ab6680a6b7f8b2855425c8a741c45d72b9af59a22eda797878cc6ef3383f06d344536f31fd37191065698efb05bcf5dae102e9a6f7e3e4bd806289d427bc803b5a9545e78434226ac8cbf8eb5a6f3db5dcb4ccb4ce3384334f272a49087382f95584c3fb522e21b9cbb82ee0f8429c6333ec4d18df51edd0dd740d57007f7d7a1b2960d9346395b6854e616554daf0e178d333299ddb6579d1a9b35c8878b086615d005399817043873ac82da21ee93b177bd1312e70432ec5088e260c1dd777f637d3a4dcbb0b280149616075ca6ea58df92910b16a9a0f7ffaa8b6ead5071cf40c2d28b306ab091e20dd785e42ba6d4f977f4297cbd091595542227efc732c736f1272fc0779ff7d8b1a91fcc44765ca4a39f3ba2f27c34db2f445d7eaf9ff6f8ac1f6243e68b3e3d1ccfe7a370abf15abe4febf8cd55c35e9f6ec0d319caf28648588abf925ebeb812bbc4a1ad4ba9fd0650358bb35fdd03b2dab3c02ea271f3bd7b836230e2f0728bfe26b3c806e6b58c529eba1b9c4a2e81a122e2f8581c0dd1240ff99e48d2985d3501d01e6ad32bc639aea914b7b5a72b4a923d2a86cac1c536ec262af6c652afd17f5dcd6ef10f546b6185cfdb5d03e686ec1ef0dfb5cfd64a95c56904313d17199ff2a11887916facfc87f69e3845a94634036a52e72103c60bb5a629f143269b33b286939616b771d471d7e8a588d790397de9678959b2e030fe792fa4c9c0651bd9a732fe57fa3e7895502256b8341cf4c677a4d4155602d86b702ff48e0c562ba36f115fdb019f4f3729dd3337666d6778d06dc24e39c153256e669fb585790b40a116e9141659fce03a455d58039cad23b33d02aba5f046613533daff6ad5e3e219d1d4ba3d1314ae0528e7c65e794588c0693dc245f6e98d66e4565ad3a3fca0b19d60cd291e30c6cfbf41d23dc5f3f82ca374a6e4ee6c41d4e52b53877c7159144766337ca266bb1f42c48ff160d55913cd29f2b4e90d58f7e5476802fac08666834efb00f13db33b81088ad35a34f5394224622019d7a1eefe0dec7d6524342136d3b8141ffebcd99e548f81ee026684dfc8c28c68539f2b5c4cb248f8b3f4d7e9a8c14548f4a2cc1f61ce3742e9dc1e0bb0a51764aa2164eba84f4f96872e533aee742ac83f8ef991c7e275b4f6e537d54cd5f2268b2a22be374d7c5c856011c717aa68621395a43b37f251d354391e6e83a69c19914b9f59de449b307793f9c14effda316d0c4cb68d1f71b0a4ca707d3e5eb7b5be0b17bafb4d6ecd19357bcf0f17f32dc82a43e3555948a5a63bdfc81b07163a001ee20ff516522c9ccae84e10e24b1e5a756f262c506342a9be49a18af290dda8f3f18ab854397779e7afbd7550f54a3ffcc8ea29c8a5720885c25409d1928c932739d6c3f513e657eed22fb85b1b70e0fecc5974672a71be7cef5e5c4d7153e039eb28bf1b40c4e003dbf5cbb19bb2b05d5c98976effbe2cb53208b051f0990d235fd09b355b95af7f3d224adb09a769fb78875ff8681022c9ff3c5f5d409ef8bdb3c0659cef856bb5f871b7f7c48931fcf449e9c20dde4ab7d2f304291c0eb94b6fc883989e240b59deb9d89f503620543bb7d5e97e623e3407ee302c002878d69d6a632049d7dd25b977691cf905f21c2413241298c833aa243e55173891f3ea79045d2b1020e5400d238036db7192b1cd90b04784b0bdc0f7218c4ac1786a8978a5021d1223a52590d3ac2ec08174a255e63fb42545a616286f8b9ac868f2a2772e625ee43befc590561f95b7e650153fb9736031be24769431db526aaf6c64188af3a6a1775c1db34d4ae5c3e80cc72faca57c55acd6364877ebc15fae8492c9f18eaacd181b015c49e98f35ac21efa22d31e2fac7760b3fd6e8ee548b4b9bb2d98a94aa08bfcc3fcbe7ceb065e8992d61f63b6ff039f85483e78c2fe1236fb7c6724c7dec2a16d391161e0bdfdf8855ef2b0a28723f689373487bca739c0dcc63bab4b28505447ebce17ba874971ac31bed0df0cdcd7cbfc06abf86db5da68ab209064d4f44758cd2e5b792c9927b9b7ae7433fd6a2724c840af76c36550750557826ac5cd8b892b9d66bbc540a3cbb037911b3def269d42d16df46966250f60d5035950ee151002939e58734fa7b38c8fd0a3ac729bbc9ac87418b4e32ffc8f74c7d903da52c3fff6df8e1b690f6f0c87c69759d80707917a49e9460d6238aaad08927a07220a7c4e7a6993e729f20642b973f157de442844f2ab342233fe63e057c9affc5029a766ec2af9cfd6b7a2824487ab4b089e84aaf8d0edf04f4715df81fc2d1e3844bcc1edf114d3673fa0fac38091203be454aa7fb634a60cb649589964e106aa0ed2088ee0d81b326d5d39ec0a1cc8be2f48aec11837190e9645a9b1c637545d33bedb95e274ce7932975ed555388d06afc3c25f7dd401a0903478518c851180f609f2710acafaa0a687d00b1bbb777f2fb1193984e57e462ab6f6933b0460634a446da3bd8c676ba70ed320e88bc10046ea8c73c627c4e0e33afdadc086b6896f6d5636740e2d5108dcbb2fe76a81af108f1116dbdee6badda03c57a859c4eb714c1ee8b2b685b75a2aa78f7da28f4a598ee8249fd881c9892f02583e37669edd624300f9f17300d71625cd81edd74b48fdaabf71c64c4c8425ab9609a803f53f34f0a9cd1273d6375dde9c3e5fc0dfb8d41b21725fb2a3316feb7b7719fbc200f993630ab7e085c5cf66ae5f1736909c07d8316d1fd7acd080cc25968c974b2fff23b7f9770d8dfec343f405db1aef6d83929a15b4a5e3e4434c33523724d767170ba8197c56c24707ce45b6b126b245e8b459638815fe5f334f03b9927ab90c9aa4c5bb3711f51253c05ba50631f29f2bba27f8ab8e5cbbca2228a9fb0da63309903696770317a5c452af1d2cf2966062ff08bb3003a9c392206299f938765b3f09878a0eda94aeeea805a3850cdef0b74696a6eb11e99460249fe8cfbb8906a6d8050d7e5c62ad70b3243a5efdbde0b96196e279b0a6223a569a6ea8e51403d6cde696e38de4e90b910860981b5068a940dadc41533d861d3728fb88fffb525890ccdd000a16aeba2557790e87f1b19999957d49ef254475b21ae19a2f6bbdcd3b0c7df3b0d64d90708f183643329079a6f9a48e2b5c2fb4a9e71fec6e29d50c6690e86d2d695501b232df646c2b14f7da1dc749e05b667fc87f2e3d19f755228b0822fc63573929322d2515d74636cdf1952e07b582831dd4b18f726b1c8239e908b184d5b14b5a303b8b90650464ff1de893670fc095a4cc28c3ec5376c82451969d2433d78e542636abe00f07e7ca2db08204c00361c4b7ebc81d8cfdd1314fc9eda7952c13ffc18c781360079bc26f2e8a481ae820ad98186447070b2583b04bba484126fc3d93413f2f2ef168853478f428e70f22cb843f1f53b291eb21ecc3d4530fd873a51480400080573c9aeaf9e41cbe2539232a832097ed23bb7f1b10c813f4634afe5c45815f817c9f44dfed12d9e148a4237bb21695c08751af4f363363241e12550c68ccbe2715d661a0a092e642e0799eda475b525388ea896354d1bd820608f2ca3531867833aa082d93e9ee80594b28868f2eaff1f86b1dbae64e3a0ae70b11ca3a28d3d32cdcc8853c38c0b59dd3bb479a62ddca9afcfdb60df21ec3bf0f0bc5c58ef96f2c278806d3fd9cd7aaa1dbacd2cf005398182072e59386d1ff9af03e2c52b145cfdb2086847a17134d1e06458a41f7b3c4b427199fdbeeb68eae1372e4c3fa5ea0e7ea436de30e38543b5179c1b05519b324fb065a6aa3f3b283dab9089673a6921e419411b623b53b520109bfc59acf2abb30ab21c184aac57d58a1b002b4ab9c6822397a28f75c6a02c8d320a3125258b04c3f8e673b19dd1f807304ffe29d22c4593bc058db90bba58270dc979a30cfb81105beb8dff085a7dddd18965a949819a659117a1fac72b195b47c5fdd50f003ea2dcc84b932984ed809440826f0a9527f5f0893ba8a8a3a3e57743ab906a6a271653858e5b83d3f50dfd33c2e5f3f6b4922342494fb8b8863180463106feae85c0bacf12439a5a77a8e0e88f4ac14c76d0135bb6e7f6f6890f6788a3fa2b5af7573feed6ee8e842a851a738283751139cde48020c104758a9bccfa1f214ae3388896b0f1875e7c309a500cc00da5d206d0a6ee0777c9ea53b5e3ddc9ec4229125051ab5ab0b1d8e5a08713e283ffb08ddc1028bb49433593951cc80ffc5dac7420c94303df930df909e54dc725dc9f5b499abc006a23046dc10f78928e5b634d41c3b5c5d943a42ffd71081820d114ab03509859468177e236e6251fc625e0bba81420427af3086050716cd6422ccbbce0304db4b4fa834d93ff4dd6906b15319a9af21e8c2a11ed7edea9b538db3935f4710a13913dffb0cf5c31302157f80e66fe0a3baf3f1ca879a67556d6e7ae00fd11d0404d3b6d007b69e58cf95c5ac078af2bf40de5f16172e4cc9a5ca00795eb8ff8950a9ed2ad31c8b86c9ea72543306875e5694c46403c417cfb5c4e578bebc02ca00051d867e3966791edde93214bbcc72f1277ef7b9bb70af86d8f5c1ddd1970c7aa225d0b85c51a3acccacdd64e83b5d9258b2d843fd0d4c6a16693bc981feafaee1a16ec4814d825d9240bf65e8405300c23b4cd55e331b4cdc141da6d179df60e39c75ce5aceb7a696e2b5598db2d38140a23aed4adcdebfbf1756e00a8f693c589206cdf6ee5efe6a4dc466f68eb51633ac9089e0ba67a7e34a05fef008f32988c06b4004842cb94e6332e89e353e0f10b7017e2814c000bb3861210762ea76b692f27effb04d3ddb437daa4d141743b24a43a0b25881a73a4b769abf4d53ffeb359f458763bb3bea956f0b08c6de05b81d357059d5b62c7572baac3dbde826699ba1e47cac406e1ce5dcb23db342d8a55fd49eb4e525b0ce58abb062925bf5d2dca2b27b2c825dc2be0563d165b731dceb756972c5c2dc5d276764e582089d1c73b43d85015199860750fb1b84cd279be9f6d77e760ae84778d15fb26f9ff1f316a34d4366cb77886fcee83be11ca7224777386e90f43d4b9ef622a814fab05f1429c30d7e853fbe6dca581b060d468f6299e3d5e3a32ba764780be56fac230186647a41662daafa95e3b1d6d6516423f4869b357b4029d1c7c7a1165b3a8a262597a4986dbb3b22994d62e614e862c551e59b6b5d1acb8886e8e90215626a34fbc1e254d54674863529272a76b9200696f05ff1f13e6f4365b784ff7eb14f12c7484601ee6f2ce4852156b28262ae0527881702c4e6bdf93b8e544864e1e1a5a6ed6fcf798739752cd010d130720dc9b527a1c95008431ab84809f961715c717a8805f376a4e4447c34891cb441f460a7bd627c7b2c2595f6dc3ae1f488218170589d4472ca5d31f289c51a28a990f7bf3eb5943d6fe2e204f901bca072271efa0bd2264c52e860f8a979d6094f794bdb2b5daee853343743d6071bb07494b476a7486212ab141f4a931aa75591ceea8b81dafd20828f203c814079c5133822ac5d4f015ceed8647ab3f92c270847b43cbf2d76c0f805670a3d4f45201ad347739ec8ca8e0238c02269ba56ce0cda01ad10a3e2e1f983b2faaee00c64147321f4f61b7f4faebaa6cbbd7c603c1d36f289f3aff0baa73b1f7c618a51d1f704668de4f3c2e4aa57cce8bdd73fe89cb83b9a98129c50b03c5f278a1fb699178ca29cf9b980438862f61e7c3a9dfbf80f6135cabe6fc8092bb36aecccdf7743e233b0adbbda7b6aeb75b7f8fb197d32f3b2ebcc5dbec964bca036ea69df6db0781cbece58087439fea120d2716be89b5efb950bb4b5c0572cbc76b0fc6a61589f9e31faa05d75a983d62a85193465758dd770ac37f25aaae9f87c1e747d08530e0c8ab1287e8b80ecc27a83fc787a60bdbe371c7d0cff3f0336b93a45381f9ef202e6ecf5caaf81ba310fe24b3c4f0f8544c748b7d2e612cfadcf5e69bafa767ecb3e7e57711b6d8ac7643eae88fac6f70f2b070658bc7973d4ce13b8fd57912aa4d7c349b6034134159cbc365a77da95858a9fe0c95eb1a699e509efe9e5c9beb3ea733f508794bfa77b048dea993d4c36f7e961efa9fb305dc65ea750eb4f3169e21112f306cf7e317c871008c610dcc72ac8151395ff5aabae7f863c65173d17f1e8b72a9b2010a161bd9c4fcc31b4d7cf25f7a9f9b150a36c4a47c0b38a897268c577d12605e41fd89d7f0c7a1ebfa4fc5866defaab04ce485cbf3f729f7aa61133cab76ff6d45fc26b6627ad0c7164b4a8dd10f81259b2d6a2f1922cd2f448f57335fdd5292008b4bab265529ad70bd9477252305f4b2523347df34196e1d64da029162b3ea815807094c8699c428a360584d0ae2270352b4039994cb657b6ae8002b2a82d3a7113c5090b470e20fb58c88f28c59c1a2481434d13b5f68dd72944d684a686d607b21ba65f40867e6947a514e453f481fd19a7f618aa62ba82ac2f06fd038d30db7dcc54633d245369a3bd944313bc1e5e604be9ea5e0e266f2a4838f06ef67f232150ca3c9e45aa64a7331f6b2474f2b9dd958664d13c0277a54dd2e3924682db7da3ecfeb335db49c1bf14cf3f15807db97774163fb247445c4112b2af4d6c00c818e4b77f1b484ce35087eeb78aa3b745e18ea93f40c1b31712163fc9fee332ef7d34175cc597cd457d939016439493d03cce80ceb1744595faaf6f1a331b08075c35506dc116005c083858959d2084bf25a1ad141c88bed044d0630a8b672e1ab2d2a6294a28b81e89d73c941363466e255482a7148affff7595db8d2f27b903574878ff3564fb7cceca03b024f56a4a6b15f2948bc95eea6864b09aea23f6c3b39ea35fcb825515db133fc0ef889153a762d7ebf70c643c1f72841da8ebec85aa1cf13fe7b97d0ab488bf0869c45dfc2c1152f151a178a46c8daeed417b24d9dd253f4ef3988cb9e0e871f5111767513eeb8d830910e12d86977ace6c569e257cdcefffaffc85ce9728b7108388f72ea31d39f78dbeecce3091aa614c68cb5d88ecf59ae4d22b75ecfebbd0ef4dfa3ddfc52a7df5542fb7d5c479f34eb4402da3ea1801c07fc9294395ed1ef8d71a7f77bf6c5e4f97fccb0e3ce8617a03196c3ff190dfbb4c3d0534378a7dfd38abf24dca78aaa6e46bd24c3d0f999ede7ad8f794852803a7ed0c15a428dac8d0980efaa720b41d68780d22026d9e9626edd54d397f0b2d8fc343292b7fd32f21b0ea97f04ac9c32351d816ffc265de4d1c343f2b4787128dee6bcf34364ce8738417239953ec3fa75e8708fd4f00a0fb0f3ed779d7982c5b44a41621970890a8df0fda8c66629d23baf4107c8214a12ba75778b3f0ab69e7eb72fbffa6beebff776bafbd5e59c9ca63fb840e88b2ecdee83fc5215f2267ff14b1e5499c3a129c1bec25c2baff9ae1db48183af734804b872ff7a53a5412300a853b5a5fd300c6dea9f433b15147d2e56dd656ef7968a4640e30cfcaa44fa648dd887b5eae35c97ed0034d8d41d0fa0708d720726924df519b4e1bfad5c0cd7194159fd51715e178910ea3195bd730d82576296ec644c5ed7bdec1668d3627d4a1da5a5ee8c6a0b1086ecdb90f64bc0470db57aaf74e95b22258520063df3f0d5cd660aebc8a92f0a8e8bb2e1c929f3ebaef3881e37a4d40c29ffbc242ab0f33187899dcb09f239e4a2e31a5168943b65af5f734380cb2161ee5259161b4750916693d7795e95060d93cf0b70e01d26680e12dfcd822ea0c7561acc3bea10a0679b2ae3afda68714aa3df09b492c1fa85863c0548f2bed6e1b73b0bc73b5b6accc1d39372d22257339b63e937c8e689e39db3df765d4d59bb0d742ee4c453b755c84fe3444bc7c0ab3721c4e8f4b23578033a8b6ed470bfae8714f7919d4e67174bf7cece9fd18075db4a6cdb9afe83ca65f3e59fca34a3cb4c49f724e23c8109ca3df64b905b996833c2917c432a3f874a526cc32317a8a6c66b139160d60048c7ad2a72a16a079d31d6e21e4f9a367c66edd909973dce491532584016634c5b49df4c00978efc6eeab051f836f752d020076b3b6eb186d16ae96272d01220d2e49e2336bd799e7218f4be4ddf42fe806bad6f16316ac3927c1cc772c91da4cd68f5db434b0ae96cf1a42f1801e4c928400120d8c7a1cfc090365d3c5867b53763142c2be0b5b2e0699095278e93fb268d71a69b811a42a1e8a06f5193e770aaac3fbe46964b3a40a70743f75ad07d85384b85b6a2140d797f38644d44064deb2dde71e2338e29c4ec89e2d613c91fd7e90fff738de0b0cee003bd11a0eadca1a4c7a2532dd8f5c2194cca9345076bc35e2ff66ebd0ada37dafe739b76e580a7db7742f4fe4f54f892d31368184a699dbf67bd5567799b9fb0fb2c16f69eaba08a375708a3a86873f5e9267173fbde6bbaecd62ee4f76f24b91134038bb5c80538632a658b873658e856c1ef41d50a8274d211978c14421da4b4f071aed38c1591d63eebfb2c5e41eb9d06b140dd8327081b2f0baaa0c1cb9aa7e69eb946d1aee2ae156a9aef4072e9498ed09b6d824dc519da9cfdcfaac7492b8044bca11435d57fbae2099937bf450607c2fadcfc48d5c2184e81c78eceb05d8558836030d25115d448c2d5056fa315c104383ccba9da825fb4be3ca8504dc1888cb78c821ff07b9ee8c5f91a7d22579f91c5f289c26e090f0cad6d8256458114e676967d1526a5cc25bfed4d5599ee02ae9d40c774e5f61e70cad05772d370133c834a566405be88548406bb09cf4ca56efe268b37cfdfb080be146b28f90ccff5212576e3e2b86f02125c96a5da665867fa1b4790ba40501ab894449a1c584d15507928652c4eefd5983d6d2d8ee4b2d234b4a07039afd48b72aec73873f6f7ce4d615d05565043627ec2c925857daa3721d8ce336385972d379e568cd2bcee3988f746f93c70fc86b5768aafab51deae6db9e7a714ab3f60677f04e68ef98a4e424d6b18405104c798a2da8f10688d637d5d08f172ba9e773b461cc2a0b40d435b4a35191b2a5801c74dc41320193ef3623a07afeb881400f4fd32a39694b14f20acb0e8da8257e9fce14c2fd01d67e364a2a408f3443964cae8d5107aa70ab5a26af96f78d5e57e51406d7d090bfc9b131ea2f373f6420c2b1a44153662bb494e8e00b8065ffc9b710e2278fdaec262a4a0e165914f332c4ed145498ce19e92e3a168dff5831d3cc8f04e0aad508bc3f4175ae3c8d9507cc20dba7d697e27110b8462cdd8a94b6a767731641b23ce696bb254456e6f6e58b760bc90c186ac652202ba278344d92a3a5bb4148534e4287f5992c26062d79d2c4f90360641da0c66f855a815621f7237f279efcf1a3893cbbc51367bd5e9adf5467498cb336d8caeec9c9f7b181caa9d10083e7ba6093f95f1b9f35a6c3b7b519783bc0da5a8e7c43c1a1a89e8d5f5089455156959c99e87ed90ebd93254e933cabfd2ce05b9875fc9e91a2fc312f2821b64702a55c1f6f9c4f460168fc84936885f67903ef114f2c926797011557683b2cfbf1a6dd70b9b8231419c5141e06ebe6f51d55ba43cf0e66289be1539375589a9f4784bfe7b7643c1f9923f311364989fd2c0b6dca9d24e4af5b53600ba42ced448a0e37fd37b4a02a85224d857b739fb6b702f79918c76f4ba35cf9272546e59cccbece2dc9e8e7d80f042bc2b94d320f44a8d5e32c9be973a061aa0a23dbb320bd7fa279d555c9d4da18d00ebd6252e7b6ecd9ea158ef7f9039bcaae7287cee90c436dec09253cfeae86d92953edd9126fbd620f676ea74a0f3973c4cd8251a65d516433af7164095759e6c09534127fdd61afb1fb9079b8a8c0845770e5e5b76d5844694f3faa7b443e72b9449761776c0e71da0552e186f25cafd3baa8bf10605d3808b307f1118e7077dfe7b5811b2304716281c17cd15be8b97e8476170511f029797c67492717c289b6b3b4d06c72480ea5dc61185037d5b0a6a7d50d3f57b7fadadc32d37fb30ced09327c1bb32aec34181ea47ae83ea7047169f1346d8bb263afd40d6d630ffb4f32056e47c21fc104b35b799bec559a0f792697ce6bee0b5e3a0412703ade150a0e6641fecfb39712d06a72a1c6463fa4e476409f28b695a9266cccf8fa3b0bf17335e3d57f1a69e50078514235bf61bb03228f695ecc154a6c268360d84758c3bcc4615bd75f384f8e66c3fd7df8f7b104831d7adebd16b9c8bffde57a6cccc8a624f59c4c7e33b91204e2b36ece4d8ab1cd2aef80071bb72d6cdf9fd1d256005a280b856d4412face1ada8fa7f3c83f30e800f05f44b71dbdf6ce0661fc0b6caa80b9e5242a9ac77b8916b419a3a34a978de46cf2b4ded8bd9896cf68bdf08870bf381d98491f1c60928e13ea73e4f521244c1bc41bd54423b30a674a150a791654bba9bb9433019ae565332e982abb8b5322840a4ab34f7639e249e8490f4245227a89566b80c34e5ec2349f1593f033e36c09a3fe4cbc4f09593ffc7362704bd850dda6bf3b039beca7721165c4b02c5575b6c7620bdc1c8308506ccdc7a4ced82b2ed845db3b957bff173040cdc0724840003f1c2c1b1cbc4daf3baeda9d8454c819c4a6b1921f85b828e75638070da84b325a30f23fdbe30df13ed30af157523aafb5707599625f97440cc0064df61e6e61c5e9a5c5a0c30e7f8c85e0172b6a5826a46a561a95d0a9b8a443e5691d9ff361c96bb0097d8ae32b613b504d642a7d1a522d784207318947ed417fc357806971cd889ed4ab3aaf5e762c3c62c149d5b87cdad33cc0ee6e46703c25752e4678321e18b9419bff3f17af2dcbbd5e27cb79e8143df749e8ad36eb2fa3f90f07ffc4b56b0dc9b96989c17adb1d4b99f710458862341e23905b46f29c98ce447cef61c0e95870ad6300960aa007806a624b5ae92d15c1790156f0bdc5efe6a2b8d3613e0faf97bda9150c6eaf98f58cb4c195f6425a7c2207d52f0a6dabee4238c43f815ff92a631616d458be4f8bfc68de213a22237b593dcdb578221c7300a6254bde7be862d49e884bc7fec2eab1dfaa11750db852287ce7abf3494ccf872f61cccfdcab5c54b7316189047e211b53289fdce67b7edcc7c95a5ddb48b253dd2d661281a3e3fa22543f48bf28a63523094fd55714f57d19c6eb629fab0124e46474151b0a24d86da81569eb1a1b08d46a2839a8684806e965e66f5cd3bd5419a20a264a96a5a077c71f82fb0e023e24e0cae73bf9b0a7a87e604c984c8a1fbada9c89df78304e4fa6c6ca38784a009d8b27e52ebafd471f3735cc3bba71d1016abbedc8ec56f1c10d3977f415fae21448295cf9e65dd83c95a12036010defe322927d776dd235407e17621847ce14ff52d1db14c6fe04fe3f26b1566e643a701861602a5735a661de3f39d98e639baf9640c44f78fc5622b2004ad872f2855bf5abffaa105959226d3c5692d28576f0b61e05cdc0e371bca02025c70f2164edc713a8401a83d9c3957ec9340d2bc9c350fe6c7c282c27f8841ad1c129a5d491904310c3ef7aa366595d289e3d87c61e6d532079983c7efaf119450294097e15291afc3fb297aab6541ae7e6f224ebc02a958b1cb5a9a97273c9ce42bea8284a3fcf4f546cf6d6a85284fe3007b750ad5ba41c496720f5fa3906426e65f5e736012065d065556f47a4be12d918c40ec99d4b23abc553035a1ac8836703d2351f0bcf98bfba55fb65c5f1de7707691496dc1856845a3634e48350b694506f15726f3e1929a8e4b8add79e45866a2c46cbf68b296fcf574cf59b124b491632fb4704e88363be5f7331b5936fde43fb295c56656e36c4ba44fb277061cf31a1188a78b2f7421e90d4fe81b6ece258af383db3cc18d62a73c7013c2ea601c33d753e83fd6a5dc5d540e230b6d47609b25517bf2d34df2005461596f13dcc6c277bb7dfbbeb948f6496372eef565cf3c82f542ca4176e90410a82a0a40ddcac37f3703d899fed68f9e7124d80029d15a1821edaeac13c1ecbf7fab5480801a284fb85763e1eb0b079e6c109445b8d8d61451a090d25efa778e12b70262719e6f7bdcdf5dad76cd55e41e91d5e9e19811d96d4b716630d0a1814ce7fa7bfb1efaedac3e02d57d6f3b4acdc45b114421d76eb413797b162db1e65313e98f9464c94302155f3f90afb8d9d4cd71e5545795cd4781b14f0c36bae291490102d12f7a49c9ab3647269450ac9b9697144e546122f03905ff7e122b9cc84c7a29440c5b97fcb42407c2b59e57a223a8f9b83ca42c6fd9117ba714908188af5fd807ad54df3f3ebde00222e45ce5cc1d6ee761aeea181bf1874164282bbae59dfcb5565535eb20a0669f63569d05e9278018b7be6eac65972b2e980ac067b61657f4d21a1fea719a687af3e1daaff6860f8ad5cc784c228ae3471c96e51d5360ac3e17f76490b760b78607498cf3c5cfde567262e3e437347d4ab5d8aecb9f6b6d7da4f64c4ad03a0bd6f7a1e3b77717859610d1b533e2d2df3f8e9c15d9c24a541e7db5f2f15c83314ba8f607ca6516169b927c952f11a7016e1c9e3377bfbb13db6e1335dd237ded777f832795d3b1cacd8831ded76c60bb19b3e4add8e102d5da1e1f5043f7fac9bc21fedf8bd416761475851bd1bc0fffacb739a00f9a4b0e58fbbfbdb0bedb38e92d0d77dd390a62a7b2d3a59140041d2721f1ed747f3ee2ba72e0c36f6c3967a66fde62d1999e79a46af476e0b09f4ef5b8964099c44c4d5443a1f822e55d88ab440dee47118884b6431e5c608eae0cf28e00f822261ccaf28dad40b98a0f96f7bfdd0de76340e051e433f5280d6329c404f8637185c9ce2774fa8152fe99672377bd461b8475781e90954caf978174c329a81922121efcff6daf682820a645afe905ab7b5f144d0e3bd8c44f9cfe8f8dd6f8b64ea54fc1492ac80ba207261ee4677084497c4dda2b6ab75fedbccfbcfda423844476901686a94993192db1315ed7c23dc39900ecb7017055d5fd73494401f7b35e0429b18a6cace0d46da63c3beb15c2bd67fd649cdc5c34a7e09a048393b1973bcdc65f0f99b4558fdc08835d43e5191164faf5c247c838e40cc04a2f7288c34cb5cbd88fcc627d45e71becee8f659c616d1b3bc5d0ad3d6428f1651f35364b1c527d4b9edbd137730b2c53ad9bb30590b9d89a2d083b955b76ef15ee7cc062aebdf719127ceb9c7ba2e835ab3bda936cd0660e0d5fbb92d67ab1b24a41221d0d8aa489061050a2b41f89f660720e243eb50c7c4c1a660e6cd052c8f347c33bc093be133cf4cd665168413817ca693bed99ed02bb5b1fb6ccfb39f08e66de293721e70f441c51b179334a6f0faca34c46d139002b17d403bfb31788ce44dbee759da81d19e939c23d2ab12155815f1a06572cd280871c3c8ec57d658dbf830f36da62fa6b9354c8a7b2b85bd1a2f6d5a365c021b0c2172c41d41cba892a250170ac252c3619770b2c928ffb2496db471219f07f7ac922b66ab52fa873cf771d34a907e552dcd119fe669050af1b71d4e7532196c8bb0abcf581c2a48967eb29491dd875c5c36e439bd123ecd8ce7c754d53b0c257676edec8329fee735b2bdf181acab1e9c9194cb19abfc059970e74f18104dd91bcd57593e785f73a7a831824a70ade63383c239996ec039d6f31355e2610afb185e88656c678af7aebe8697e5b22024a659c6f68b268c3a94df11bb884f29a41f7f4d607b4b6ab72927307d45485bd26688404753d1dfaf20b71037042e07dda7bbf69f63b4d6af3c992d389c9941aa251528583dc209f74aa95f06047974ae2235694675d9777c808364b0c08f99f323d71ffe617026803fdb5caa189166855879a462e825c4a18598cbf5998a38c995d559bb4bef0ac4a6672408bd03bf5320c16f0f78f2ef4d3750ab3b333ba94df3da2e75ae0e057eea0c4b5a3b5aacf628adccac1dd16444ccff2abd81aa4ebf90f2773a91a8fec205959a6301e07870a9a2bb0bbd62ba0ebf6121f446aa8179b40e36036aa9057998a9283223841fb9dac0aa843cdfe80b834a947a8cc6047c18d2735b11ec7043800b65e71d8a999b2717ec43ad2516f7fccded57a3089b8815248777f6641811cc4be51d6feb080d1a1bb3d4d90fa5c5c96d4f59dd0379f6ad6506e7200e9398e0271095f1c925a9d6e7825777f11b3d7c7cdf2644eb3406f03db30aa20d538fa2301b663aeed3bcc874fd72dd758e6fd0e726b6d3abaa95259a1afb00a94cdcbbff3285d76f80207c453f061506ee11691a43a445eb8198a786f47d7c6fe4969c7a80ce7628bbec640066aa43ba0e65c2c419dcef34d66983e646dde139a5edd26695339100699a4b62e301660a4c9cbc64b4d914c8b878d2d6c96823842c377c576ba836f256f9de0bd5d6a6db7e9627f7d49b1864ad92911b3b22984437d1cbc5c32f9442ecdc6467c988e39b2db3b83be00b63cb3e19b22a7860136e40526d096c677168c018f3a6abe59bbc8970e30e424b5c7fae572d4665db2633fdd39ca503b5fc9449d64dffba21a97d9692cff5cbe9bd12bcd198e1542705804c5c08cbb5a5c73e1d1d3fb6cede5af47f0dede980bf984a320a5c717f7fd6106bd0aa87d930297d94965d9b133743bb80f822fa50ef09225190e3cb43a249abdce51b95a895f9c27cc58bc757c9d990cc8d4a27e367cc2d0f76aacda26bbc1b94e0f141beb877b768a938cb57bd172b8f1d7d5eeb2c5667cbb862ba434bfd3a4fae827b1a0bf119b99d0b5baec239b7db92bfd3e73f4aa50d8d96cfca0c45acfec7010f90516af2c874248fd775d46adf5ca623afe94fa0718177fc31663924422b4b3be7164c813749bc2b3a1aa9c74fb340aff572c883b2ea38dabafb252aace59080ccc3e4eac4402c616846032732f2520e335df681b95e57b4a2827564b1c21684883f147d37a21877956b02679bc9668549c90f2a9d008aab32ef21006bbe619485235bcc1ea4677c27b63bf2d3dda6e16e6719501b3c45ff30d192ea5806d1ac534ccc3ac44fb65425af165db96275179304345e08ca585a4c3243f013bbcf3074c98441a61ae4fb26d97070f667380cf2743dc3cff69e018b6bfccfa240feba09d5d2892dfeb5c41fb18ebca855a2c92e61201cb299b2749a8bece1533d875e0f8891e82050d0c8d52e46dc3c1b1774aedf79a53bdf98f15fecce523f6974d0072c82d5fa5296f09c8e092cf1ad62400d6b141dc67537dfb8ea1052675d3665e50bd44f9f4e202944c676dfdd26fad8051ae58dcecb711f174676a8d95997fbe5cb0d0336cb594361305cd252a365bd36c6da37ff35687a772e288e5b7fb7254fd6fe5661719070dc02554113ee523adc615879b9642b82083b9be15a5466bbd0d7598cb6c8b459339cc023a7eca790fcb05b2b6c5ed64f222250380a8441a853b18a7bc43d0c3d4e81d2cfd5e72a95a3bb9f898ba1e4efbf4929c47aabf4116faa266c1f3d316f9b725b594e78712a208135070b581a5e10e040c9571ea38b7dbf14e1e755a38dc881a44527a2360f72517179fa6701d910eb23de4fa91c3860a50b59d75d82d28beb934a6f5c08bdbcaae702e57ee3f4236ff99e8d19b3ab47c8c24a090a718cb9017618811a9870f340071268eb6e6dfb097ed071ba5a1d8cba532835e84579cd215746ab89fe166c7e58c8f7a6b200c8f6836d2e9c96e652c5cb0ad13912155878809d525b5835108656dfe604ad5e39f35f272cfcc9d11a22f4ee96a68c2dd5fab0e43f528c685c558e483242f4bda717c3d8d8f17611f588f7782ad4a591f035c431f1eff47d62ac279bd0cf24879e408c433a95126b79bfdd787a56861c550b7e4fefb63105dba42a551998191e87a130f32c502c4d3f3bc956732e2c5a89836600803f03b15025a2732efe1a4e26a5440b82c358118c677e58cdee0469a7fc846751a40462d078656f459b2e63fceff8a9ef1029dc2d47be77392cf3ec5f63986af25652397f0ba0e267c7f3bd80137ead064ef1ec6b372ec9b53bfd29af40ff7daef2141a25e913c298739351db865f45daf90e6d57a1a5438543e3cf37c04388b8360f4403d198c0541c8e45affc50632588ff28ed465146e4d066a8839bb1213c5a36b82481d86f40b358ca126d39c9912efb1c81d9118d40d4b88beb0eafca90816559962e69879f6cddcd62aabd82c3b16ce6b6b02abc0cdb4614767669a47cb605425f4a62bfa169c4d57eefcd88143316798c54acb38a68c7cfdfc71f73c1498a6f596a9793b6a7a89f5347f4e5978d296d043d8a64ddda053c99e9c83858351f8562db432f9be73acb924d7839e6988c830e2a5afa189d6a1a400a0d300c56e49ac95daef89cb5ad0feab8cb1f83e0c323e4411f96417a3ba353bc38e9001d9b273641fcbae083c443bb138ba984fb8993f02d6f14da4a034347ace8e0d492ff4e672f9d2f5fb3222fcd7613f34ec75a852064870de8552c3e67b4422587106976e88947a5aec5edf9a5aea9220357f4eea7bdc4a308f229465c2e9a795616661e2c8ac4fa922273852eb72fbdd5ab7ee02c204935b76dea19539c644c01074c9ebe4bc77ac5ea0458f9a90eef95e700113eee41ea4519d2e7ed3c0393a3ef1ea2afd503e47e8b0f593ba3110861c10df3535e55cc703863ec6276e675cf99bea2ec0df42b37c5ac53be27838a12784107b82ffbf01d02ec73585053f23a6813e3d832f2a0991b04b3dd0cec035e4e34a10b6b1f7345d86713af8a763b8030cd809cecf8472d8df32cdd281ece88b6417042772e2c64e5e86b0e8c4241dc9bf17f51ab032f57fdd12ee779bbe60605bf31c98b842667aa9b96998988ed49063e0e48fb1703443dc291555b27cf050b523c2a697320a2b3d51592154e8c6a955232e41b9b4593d63746d77eb46bd517fafbada84e82fd8bd2c2f3fcdbe4236b8600aae8971a9f0a9fddc23e4bc394d8e2ceab18bb72d2b9a9714e80b43f391ec0373120349749e21714baa9c59c1cfd39a1e05d10f0ec88e2dcf672f1458ffe4c91321deb31814b81dd5cb11a66d7f4b1e04f38f174d70cd192e6855fef70e4803bb4e49bdfd54f6503248f0c26b8aed1a8bbb9f3c9a700c4779473ae1f4c5957efa8e5e4a8ab90e2e8d039cdbce400d9a854dada6ecfee8f5f7a54f8046404f08ed565d0d82bcd842de31fda279823dae0507a1073a8aed0dd0843f3925e61fc4f65804f432d006116d9854897d610d6d1a6a587dee669810b2c210d1ed0ede0a7e7c11aa614b591cffcfb64f5df73ddcd7430ca075a1dae9c650af1a8560ecec9306261eebaf4370736291f2a439449cc7216872b2468862c47b5d2692d3ae5a1420bbfa38154b76fbe8fcebbe70ab1cf9f062b19ca2c080666581bae0ccbb89e664e90cec08cb4cdeac9d38b629353050ca409067ddacfdeea736e89ee71fe3286d82b2177424d0d2dbc740e4e1c9fcf6fbaeb82749cb9c9916e04eaef537efaed6c28a976fc352f7ac6dce72a6bc9bd70ef1457cc6bb96e7cd8ad38a7e02015e4d6d0cd60344d8bb97c26ace065f256c4638b13175d18a0fade5b34fc150bca6fa3109565a42d7cf6f33adefc0825ae18f2e422b3b201944096bab9e6371817159b57aec119aeeeef484b73fe3aa4e03b2de95289cb482f36c2c002257ca93031fbd747c6621bb042d4a8df948d16fb545cc369a9ee669d68a6fa297ba7c14c663077534a878377e1fe375983f1834c96094b8b0af6e87651e160d2bd13ec12a34ea5e2c3342c22b4df78c764ec3fda2a70fa04b65622ee7323b08af50a506dd729f6ef87a4d5be5077633427bffbea54d279197595c52226efb4cd30b6d91aa7ac25e9125c6051db0f326ac45404fe9dfecfc424ae5bdb8765500a399b1be1ecb3b91d18116b689ac6067e3acfb741f348f292185128da00d05d9fc3a2a041b5e0465e6e20b1a748141ddda604fa8e40ce056802b8002a9bcdfa4f6e77435862c4e1e2604dd78dae06ff46ce8a3861ab90afda6828fa891ea1e4e2c731b3f14ed39b12f866a9ece981565e598acf1f1b2fd9e9e1aa269d58afd70076c5f4dffd8239710106cab69361342bb025b0f27ae489ede653dcc0db7a2472dabe31e40459bb63996f5f0b41e796ff299f60f470bbca9e1fb843a6391c593267c7545ea99c78351f2bbe51f254be322daa93d628ee6fd19ac98b79d22ec2b2da3d84da848a09d7a482f61950bf10ca576c5dc0b5315c8e488e83dcccd5e34ce9805d67cf4f9b91d64a2760a3c7d10503cc1450a1b7f19a110ccc55eabe517e99bcb17185c6af8d51b6c7302b98348c7dcee8b2cd14b7f842ea3b7c255bdc2d15927ea603be7530dff3c39e7bc433ce0a9c0e10900e8df989c2e00dda4ad7cbe8d2c9e620fc005bb88ed4117d037340a1cca7b84130716d29e1cb40b678e26fcf8eed3a4af00da1fbdca7f255ae027a62d31c899a3ff298393f0a304770cc090fc86065389ba98deb4ba79f18849cca6dfb6709d75f42f714316614fef86babb716434117cadbc29795ab27d73a4ebf4be4db870ca1ada00246f93138301689ee3aba16c773033b3578d77f5a834fb0e3f8d427f7898022f95259b14ca45587eba367516e778083298fa53fc6e214aa97aa0dffcd6fbc5a2945aa43fb8c39e01abb97f48ef1439b2bbe68513d846981399e0fcacc6cb349ca06ac9e8b237d8620bdadf28ff6a9fa9cd109b594eccb74f01a1f2adabcd38a5b79b29130a09c24962ea53abea6edf837a56ba98af23096629bd948cd8f060448d47159786562aee40f46284ee9098692297a2b1ca588bb2c6e32bf59038e0d3989adcc1d06bf8d25a34a6f1319d383fde17758cb59280f106c9f968fd9a8a7ed0c6362a63a70c441c32b0339776c27dd74e4891047a3ea875abd0813811eebf74ff8c646704707b95b25f5be2a6a6380f542c1b0daad0e89a4014d3abb89bf1e956aafecbc0bf1a8209a888293fccd01b5c0552becb24a31a6c526fc4dfd2c7f32530502de78e1d3e46f751df13960f43070a23c0a0862535c71698c03ae0ed53664047a21d9bcec3f5504869b4c7430d472beba13597a2d8ff7d6742ab2ca1480e2ce45482e68bf5c8d77dd2b21bc3466d828d88fa7c21cec41ac06a6bd906a03181f4579c1734ed1df97a01995f0315fbf09f309c5d4dc0f4ed1a53a30382cb7c0d10bff33a9467fd7c03eb91679e8f3baa713459a64ec5b4b7848429c106a5ec8bc834a5d8de97e9955c03740458c402a319c49aedfeaea1c7184dc2aa4f7d5f64c9f259777dbcee97c4502152eaa46a02518b824b97269daa4fed8fd1969350b0fc033acd6561f281ca44f36625367308c3a09d36c08681979c96709c5255571ded4445bb99365bf43ce98adc94a5d772d5795b81d9fa4152e78a357ed6ec53ed64d8206c5b7fa68f504fa24eac541918f5cbbace9f378836b80eb3d2ef38adf6f9bd088247c1aa65bdf106d5cbe7d49b0d972571528ef13d8b6232f2ae79ddd612c1f0bb6810803665d111099aadec2cba96a9ec526dbf9a44e85df56a18d88a2b9ec82fede8f4a8e8fee170eff9f590d8af3142d967289e21496564e027ded08cf48f2784cb65d832fc753427189278f06e2b5926907d9aa94d8a32e5bf344d71b0f761b69aeb63b7d4993a3b56d9697a31128564c66bd451a32049afb42f1278b3d3061e16923e5a8820a06fe340505133ba20ebc2a868ef1c81c3791702e00edf9edf70672506fca513f498172f66ef1bb1a4d0cdb970dd749f328bbe4d4dff637a8b74eb9eb39ac9f58ec34569e1182099bbd4b6025898067fc03d9b24d53b3746f5dcb176bddc3d10be1f6848b2c486b8891d5d5369639f93d03030dfbc42455a88a76a0ca7a36b05367e5710cdaacacc39a356b2dbe4b25ca710c0b6b0be23b2ba9db7a08ba32f6836f1e4436393d5cdceb6e87b9f3103dba83b58dd42822ed1775f663681ed1f5dda5ba287dd8753c03529248e2fbf50ea8a02c482860991b4f140681958bf5f6cca3547d8caa0e044b284717a1f86c89a28d8bae10dda628e8c148b5d3aee873071f5110bf87d8c8ee2621a4d11ccc1f68d63d1b6fe4359314366417c372e106643392880902affcc5ef9a2eb58e52b8de37dcaf9b461816ed156ee569818eab9d1b8cd06031a3fa80dbde3550fd121f3fe2727d310e435631e2a23dda25925cd2cafe43d613efded4c7cd8b1d7e74e22dc0c966630417d82d4110d662a673cf797c63605d0d909211f33139726a003729f4bc3a131ed66f88af876e23504de18b9e429d8f21b382e5c2329f9dba0ef0461f20ffd004604135a817aa8ea441486c4e72e0971260ddfdc5073cd07ea8386127623e9ddc58626df0c88a3c4d188a47c517509b59ad01c962ae5ab9823e93bf9d72d55d7ed2e4cf884234765e7fdf7c03cd246eeb27610c985e365fd4c0ef428a6511b3d0975470ce0f783f1cb91f51387cbb8aff091c48b95b3659a086a0cd592ef6e8fae7a9aa0b2a16107af26e01391e4df21fa39e35bbffd785f3dd85b86dc3de72464cc5cdb0a53e9b746e2a2f599bf7a5b7ba30c966e150e5e6a359b65bd815acd9cb2b0c4dcc8fc16ea12f62d5f3f64e9d5d14bad537158d0f08fce2e8b5adb8da4a7e447e7a8d6917d251596ddadbb72920e92acd7d87ec8f0246ef6adc46db66120764c9dc398c0006db9c0385eac7bc3fcb981630906735d31d5c1b678c0d9f22fc18144ae41e9eb443812ec0657e91d3b80b009b0b13f6b2a96f0f5f23ecc13bbf05f5a1c804bfe01edc2eafcfd2ab1d6f30c1688fdc5a4bc539568eaf322f009d51b991642a0ab5301ce9d06e0745b6e74505df89f256b8b117692580eedb66f33cb99b6929c42482ebabd1b4ba1d25f20fbb0ff04befc851ad0bbf0ec86c6ab8344ef2d8c0036488770929c6227fa6926bce1cf5ed90c849f403d788eed3b49b1e8152b1b3a5b43fd736121093c0871afb76f78bfbfd8cbdc90fea21770cf20c66af3f21cfa7d7919c540db93a8b51c08c9cfc29aa696e69af2b559d6c4551a1d32db7c81bfa9157c372fc32f7750238da8269bbb2922f49dad5fb0d4588458d18acd8cd78eb96d246139c568bd129d9c4d05f6bf1cde769d54a4eb2592840570def8d4d733ed1f960c635922ec1d317ce9b5ff7d0543535a4bd6e842fe61aa1eb1bfb2c7358724190fd019669d7ee64e918ac840c01bc31a31a6059bf5a24618c59951faa6c218f0c28b49da7433dae1911b220524d095050b0a033bd2fb424c2faab80aabe9ba4f70bcfa1d643e7711b8d426c75c6605be6fceb807710135682ecff10df42064d35b4a4fa1a41e3bce30aca90b78147066223604e0e0722e8e3c6f649f247951c382bb7c3532c287a710b8e2198315b0bb2d6af7aeb7f1302c424a6784bc9a76ac6b217fdd78103440365433a834f53f2de7140dcec78e2d769cd2d0eea7c3ea91d61af78e73dcce881fd799cdfb0c16e7a4d2d9aac39514b5c19725514c7bd9d0d9a2aeadaa1a83ce7ca4fc7f146d719dc99674616ccc2c09d71ae1e52c66899d9d138e62ac4c1df30c17a5776dccec5d9a6fa4535269eec4f6ad1931dfadaa8b5e0185f541e794b8b34faf16c3ec44a62917d3b48540498dd4bf5ba5b9ec66bfcc38805e27b1a392768eb104c56840b5ca341164a4b8a6bfc04f1aa966ce650650265e5207afd3c139f31a89ca4afabe7ca2404d68e769a87ca0ce772bee0270c432815eda3d38f31f5d8bbb5fbf0118095bcf79298d333884fe16454c072ee67267dbcbdeb0acb3ada1f78a2b3cecf65fd7eb03545f5c1c5e3758d57aa35d60f2dd6bc6dea9ddcf66d5bd789c610ede7a42d85eb7bfd77b00b64c0aa925bb981574a96d58782c23e2139364d92fd0974976335e9c24ce5bb83cdbe39e2b4be79a99f13a71ccf908d7cbcbb24c686792cf55d666806bbff464c2d98d9d88afa53793b8b0a94c6c1d1af0e20fedf0a35b4badf45390f8b849d0e8f3003815a2be2082c873ace8e4ece1fed6aa26ea2e6ad5534f95b0bdb03d76f96a2ff47c4a3553a34006c817ea08529b3f84ee46c98bc479bb5dc114336f91db8d5ab3fc3a6c7a8d534844de66faaac61b5b50d1bff3da7cfa1bb1305b9dc434fa246e7a61a781bcf790c57fb6c6618a15c4aad98167860a1eef05f0ff21bedccebb66761e5598487e1fd983601535ac3d48341360d6c75a94d4a68d0b417755278aeceefb18c328fb9a107797d909d7184e913d728f9621f96e0695342e217af504ac93195d4581b424c00716269ca8abc1a313ee1982ac99e13d4368ce6935b1dad85e2f09df776c86276162361d556bf0a31c8d80e8723a6a24fd5ab945b02e16b9cfd81840e9ea9984b51d83519973d7e4d9167b48fd88110d5ba16e6981084838fb467182d567f8d5b9ecae39fe96ba1f682269d2788c2ecd37e9e21586c6ebec616ce25b9547445614e0171eb7bfe3b9630bc51130c4bd92cca95b6c1a5395fe4e22cbe395cbb81fd2f1ddcfeb74409115fc3f682dc242674eed9fe82fcb4b3d1c6aef60d4f69fdddb1ef870e17fe696ab727ef6d6d214dfc7eba71f80af9c6fdfe306e28cac1c970fee10f193f204c11ec8d5f5ac73ccdc478addc84ab1bbfaa1ed04cf5ec5058d3147551a43e779a7bff28bd06fea8dca75701f6f7a7a82ca57041ffa4a361a147bad88313e94332062c2fe3f38ec5e0b7f9132193cb10cf8a1e46ce22b237558e16e6a9e29751530057ea7b23bc99037ede4b3c92355a0004cbfe8c8bf11a2d43aed70bb5dee3489c39c8c97b09fb502ea9bac99bc25f8e761785ffbb26988b5f28f48db665f6aaee830b716c37f8114ebefe74060c466682f97e9100bf8831cb512e176ab324927267d24c8c3a102d4feb512c854705bad78fa1239bb520d98666b855912830315f2c758d445227c0c87bbfc0dd7c21b68d55705feedc79578c63fcdd7ea00cff1fddf452710f9ecebef8c9669427c2c25dd2f27a5cadcf3b0cb14862c503c3cc53b9509b9104c15876400452f1b380aaf1695069dfd56e3e40788c61b71fdd6a80ac7bc4922420cc017eccd3af4fdb7b64773109cf603643c323c1951e05504568ae31751c8f1b9f887b1d974c530265cf2bcd2d116e68e42ce71c2022146dcf1ad4107ae00b8ac38b5587cbe0ae7373b5cc190fd29328d760dae7b18c90f2cc989357354d7f8c07ff2dcf614579dc25a6152027d194abaebf943d430c197e80fe9d9c8ae6ea197824ed4a4db2341066b1c70ae032beeb3f3b97e56085bc9270ca987a981aa92ed0f754b4b4d91bb4c8f6e729ceecd1ac97990151c07adcca73bb4514a9f836fa8ead054c59c8aab9126d6266ab0cf867a81c58a645bae11b32d435d925e0d8399fea61252e76629c617dac3480aab2ac265b60daba81ed278018948211042f078e527d3e0f204b4abc9ccc5a5ee986d8592a0d0ac9b3b5250bd21df65dc1f91a481f147e49bb7e09a92ead728b6571cba03968ee881b6f4fe5946865ad0e87e6d1f1c7abfdff6ab15e49527f822d5da6640a780f54d525ff3522672ba2aedc1b958e3f9c5729cf12e30ad0c21fca6e1c13b5f28c7ac3f63430e459d30edf6df0cc77fea349a5975b88034389ad087c475e7adf237062e8e7364f7a0a0a86d6923a7adeeb7af1af355ade403e978cc494e2f7e08ebc6e383c40caa0b13a6bd4b766f222857783f27947b5833fb13e43bbdafbeadc6fef78dc6089ed13165c644c59fe53a0942dd6b973be6d8ef8ffcc757b48e74a946f6be08368ac48bad299962824d97b46ecdc82d892db1956c2b434cf66ae04cf975298a95b17b87e822c6e67b2c92c8326e7600ec21326b31696a90b7a2d01687bf854dfbf3ccc1bd31431001d3e9072ef6909086cc9f034f0ccbf30d5ede960241a0cffe3fed723f386cf961c87f2674da825b2686ff828aab96dd14a39c5763e905fa3fd700fedfcb23bbcf1698e6b4697ba67dd903177c2f6be1f505ac4e82ccbb8a3e35a310cfb8a8aaaf921a6f8cd10f88c7271882c55df94e419fa60dc31720586e7e13f13fa8038d5dfa644b07d2777017d33f0b8fd78ced264defb0c1acc3e63c9c8d0c151100809e16d024cd4fedbe8f4f802a9d0191ae1985c644ce6c22a90dc91bc72f7c257887318e2b3c5821b91843cfbc74079b1dcecc6e07b31ccc73e34c8e7428c604bb25cff22d37a6a2c5cd3efd7da1825d6058006c272f2af213fe84aa25583d78b9387a21a5b38c00a4e50975a97e589bf4222a51a4fd6e24248e875847a9543950bdbcfd3c67605b2a5ade4aa5f21fb32ffe6dd54ed4115808bf9d3b0cb351dd9cde17cdf1fce296d98fdaec31c95c8b37f4ae1996f64774e2b57c940889bfe9be3ac38aa22f0d660dd7a4f27a45dad6e37697a1569514e4284d793583f48f4fcd471abcae2e8b269ea113c53290535dddf5971e8e3ddd837e464caa9effe0c2e94b03bb33220c33bf2e38c6d773a93aa8f62000bc6879786de165b6d2aa97915f5350b7a2e27d324bcbd37c7355be6c3a9da1ee54d42b997f9f12d71f1f9c54f7e38748627c9feb0fd47a661c27348f27a1d6f0b0700ae05e5a0f84317304912dac13df6254914e78269ab235a04db4747e2abb75fe8c1ecd0766242effeea1dcda7fa22d5cb6405524c9d126624f867cc8bd56fc8f64364d726555325b666e2f114f686a045ec87bb52483abfdc2cb62c419ae34ff5ea4684da015defcccb0a6c64783e751d55110e0d2299628c2ff47b39dbbb58f19912bf9789f63260461aa181fb81bc5a27417634724b66de3083b67f35445a59a0648386184d7c875fac6255f467b161dbd502b27af2fe2d204746e4aada34487e059f25f3ab55c955a56d7b9a8a288acbb6ef05d3c46c7df7059fb8c7575834b08f28dfae4a57191a9aa7aab6a7670edf63d23a19643476e3fa5a1bd421d5987b18b4276efc56c222844738525c79dc4ef7c9c95575a3f670ef93491b4744b5d2594d8be0f7af0b1fc3c9cf1bbf6c2cda08d0d103fbfe6ab15ee66f410892a1bd8d2ca5709a30257b2c2b97a4154472d80e62ef6faba935dce4452c5c0e20bd583f562015ccd41f24e54c40bf2c04d5ae45daa7e615418c0b49ae86e4c7e20fef1bf75104e03daa1e9b26d41f1bf3bf9aa85f95b1589e46484b30e8ece610fbb0e7d7bb7bf6f1f631244473161056b4eef08cbcb3210ea30dfb0de2d15a71300f5b2dc4df82b638822bdd9149e2be263fa5efc22fb410e17b2013f47dbbde63c2e92e0ac5aa2478ddf1eac1b8f26849a2ec50d1108736b4298d2b3f457600843aa818fb30b4637bd853c6ca5f1bfcbbb5eb7cdc790540bc9bf8016ef4ab1dfff0daff4eae16e217c54cabc3bc728f224a5b548e9d08028239ef1f102ef5d04f32c172382c0a49fd5fec07a5002d128c8ee0a33a260eb26814d26b49ae1f2c11af88be1d836193f13f5e7b48163e0fad8028f0df8a8e315b2af869433bca436768e22ecadec61662da2c9e607b6a6a1b139230fa27a9542619ae840070a4c535269b66132cf975a36f12280ae3518a3e1fafa84d8a52fecc199c841febae66fcfeb091b6562649f5b8d274a962c6ff304b1327d13d6cccd782c2cd27c850292400d1d032dc412de3bfb65a8b88e73b7f69160f1f41befdf663f3efaa5734fc9408992029b51bc810ce7d96940c2b3a52516db40e8e4c6aa14b2cd9c4b333c1d8b53e8235eb56d0d63e5865f149f762080772282579858d61f9995cf2a64d44f11bd42a2f47939477efd60343de655608adc624106d2bbc6593af1c7b760de14ae12a4654c3e6aac6cf10ea0afe7feccaf13216f37e26344a133a3b5cd8904968bd7e3d32e6e38880720e47d13483915b8afdbfd5d394e8d3e6c5ec999401c7ff30636fbb3a3c01003f51af5041144560a7765f79c763d28b234adf6828000291f847a011bb2ec53aadf056d6633893fa1bc96243c1d1c44349c883696ae7fb01fc05377639c8cdfb8b7fc97fa46dae6581b55ffb73489b6c46a573139c9898112ccf315482897bd5215b7d6d02107fb2aa72ba21bb5a20e48edec12e154ebd1444370edf22a9b3a3c8ee8b6d5b75518eafa3879ed023e67126f524c57283be1a68e2303a1455679d8bf7c9a758a9194ecd07b6ff7cf11e37f75b832572e9780695e6ad26363b02e2d26bcc517ce0f4aac9aa02fa9246b77214391fb4f32e89f7ba3cfef50550203f79bb7859d626a56a8a106644f9c6359dee4b15b409d8c3a6aba38c0ca66dee80c4d92519deb590f2ea4476b198e40db8f4ad0227be8ba8a3e0bed1244b690a31d83366c944c80b6bf27a0cfdbc44458bf4a469815d40831ff17a3d0cb472d07dc15b59c21d0d4f5114846057785be6a5c89d0e13ee3655580737d51954e323921bb910418502797495bcb5d33534e133eab49852f6af7e40e38a871704910e88f5c07298a7d3607836727949c899e9868112b40226701d96ba4e0534c1af578ac6699d08c05630c230cbaba5c20b7a3368f95ca01cb7511c251bf72cc883692ea446afe2feb025a58815d082ccd0e6a25afa07c7aa683216afcd6379af3cb09c492d2f2c5c04131951bb9cae7396ee43498b3a0a9084c5e2d5ee1c675464016d654f04edc2127514bd05e00e9374f2309fa31a331c5b96975c3db15bb4c2a7cef269c796b673b575df1651763082401cc09ebbbbf41c002632510497e82f05a913f469e048814e5a1912e93d0eddf4daca042ce670ff2a8322d4e93051266b3a38cb0ea2dcc676c5b949bef89fb9cdcf78ee08d196c51613ed920750363e056e9be4d8e04edf392568427f670444978f704715f4df7bbff1e30fe42e5aeb0aad8a7058b10199298b82105338f375ab34ad234d1d7b2ba08a0a175b45131fe09bee69db982ea4a45f5435ec0e9fdc23e46e5063c90ec77a3775f0024a67e9189c3f8226f01671471281730e402b8420f952a9628b948ff8277158c60fb98888cc718bc225bcfc9d28a30febab96d761bad0c3ea038493ef278c2cfdd27f87606d220fcfe8c71befff6ea6e898c649d01d14fb46ac2784a3b235c653b779eedf318b577092e42d353f5dd4c28481adc7d4890df76d9368450de0ebbb8710cdec592072a5f2923467a3f42338c2ded7a3dd893d4ee0629aa1480923d580f55dde6f344e4a181af395f69e1a95648baca70119bbca5f29d7258dccedfbbdb59ab84b2c1d2eaebea2a88608c1cc67bce50b01b71ae3d230be9018ab0fd9176addb4dcaf41ca520ef724bb3775ac912c46cc0923e69e3c95dd70e58b433e71a3292bb4ca4d16b091a8869a57fa02b582d37e6705891a22449230a0551c78c67dabcda3edefc7c2f0ed021aae3fc46a42f8e9da7d40177a920c24369836daaee7a08d2cbce55a6a86d8f1bb5ee402618d67bb07a4f74968c5793f4cbf04b8deec4075fe7d551d087a59fe7294da084941cdb4b4099db1157f4361b4d38fe8e8a71ba59ad89bd4efa1fd1637cd8318b822e4c168d96d2ede4753d7b738615f335b522c8e7397487d36dbf1eff7a32c8ed2e00274515e5a88aa17b7fec3a8138acfc2fe2b78b8baa9ac5e0128816447b9dd6467f6cae3919256428cb29e9e6a2ec3ab78b52f038bdde51ebf1b51bff10b4c8776dc9c5b2987c0a28ecc39dfe285efc94952c351d7424548966f34f959751a2ff4de4bd2f282459aa581846bdd4d281c2fe968564e74bd4b150be4cabe4a77978bd9fab9fa6b0d691e8a05cb72e8674919e2afcc446d38d37c126e992f0d414e3ba67af0e421a587cce721cae2574e0bd8462f32f46f71f12ec8bbb8b8530ae36e2f60c3e9c5a7a172923032911af466fbd1715c3ec00bddcf9a3bcf9dd0983cbbd4ad2b6fa5d5ecac13403f8a1227b80ca7aa2a149eb248a0880089a586aeb4a7c0397cc31c9adfef693362c3924dda04b284362e29c478b348d76d6e3ce0c1003f86758af804aacc5072858fc6640ea7033865b58abfe1c20a384aba71e3db2fd3147e63b90648946a4aa3c364cecb794e535cb46a73dbf570b7dff83861c85981a28774c2413dd2dbea20f583e9245fe7d259f954785ea458c65bac72bb9e5f31ccfa2f80a3959b7ad0638c18e64171a90b77999812b227b7f9ffd2dd67144a4a4dcef3b3b6a1fee6d51562e5c99993bafb61a640f31249a1a223101eb6c35c0f8fff6a54f01859e5d198ce69de76fee8031fcbaf66b3864c71215b1a7b3550349d78e2c8ee664f215ba6a3270c5f8f3dd4eb76aa7ab9112c49bf21c37fd5390ef08f42b30264d5790a3919cbe5e80f90d66363f187b5e4c6d8d4c985a782b59ea0c89cc04e9fb7c3d0828f6e7e5df2768120d63e7480bb342544ba8f69416f5f85a06a74ed4dd5cd5101e3a9cd9dcb14514eeeb7fb037c61e011297743eddb57adc51790df98b385447a5e5aa54ffbe6fcffdd6a9c2995f72230d563f8b73c89b5f2adc258867b3171383086a97015fbe943c0652c5275342941728c92c0d8a94a580009add9f223c1c6a922a8dbb8d3a8d1dd2fe710a2f1905c573c3123d88afb4834fa8955797341032c6277152701526abf1364ee77419add7a88f361f69e1a65946e16ebb12b6b45bdfa42c07b623c28de0e817082405aa8e5edd337747f9f1cd23d65d8c940513f6057be0efedd2643dfb2e421e38ae3be300e9d31e3428d40d475485e556ec459c5e29cf668fdfd956b1d30cfeef8676ce8b57d62bffdf08e3f6ac51f1d7ec0df811fc8f74ee258ff0d4e4afee65a5265bb1f9bac880bd8f9fff85caf3be01f91429f983562c2735b188de0a0a5f128989bc7192b894a17b49be96bb6002fe0ac20791e983a06851b2eba2e5274b0cadf42b3d65420ea9e2682b524aacdb1ba13ed6503984223d9eba3f0e27e1095b06b2e8d2b9670401a07fde3e26e3604d84fc6236adead93b37b894e87f1b606e222c2c1b8b0f1e55dab87a569a2f03e9e970eb746d19e3640040cb8d9409d621f1e0fdda490acba0f31ad247e663c50a759cf708c307a9fda951a0c8eb8d60a967346ef5448050a548f74a04ec46e77c6a42aaf2d50f6440d5d7fa52a08f6b2c19c0f34680bb7bbe23bd6631c179088fcdee59bb4cdec606c99f36efcb2d86680032cd46569892a01c6dde198927d5e0206b88ca4629da8ce8fcebd3f18066f4d50b74299147f5a490ddebb49d67f49897a35c7eea3aa100181f1c64858b8ce28a08f282d4a40044584b1fcfcd45a2c628c61a9668675e60f31b0233a8ec11cbd16c5eab44f98f9509cbf2f8b9db06d310c99536e786b2a106eb0d4a1909de4afe8799c9ce4af3a182f010978d6c95ff06c3bc130c3d82b79fe3e2b0ec6a08a875938afd32c8e81f46fd6a862bc5befaf03ac2265221f13fc7cc4a6f1612ef5c76c24d5ce44ff4d04c601a0d4ada9d54ef3106105e763fa381432c5697ec6f16e115bb1ae7ed6e0326a85be0c0afe3711664779e44e677202317c2ed12dd70609d1fd92de89698e6cc73150209dfd3665d6db45b9d27ff25bc1e93eac9f1cc09bc58f0ead39d42d93eeea25913169893d9f8e479f502b737e71bae0f827a4d8a86f1c4a5e5ed539c86634209bc3dbd6180e782e0b472b5c1aa6c33e281ee2a508ca4ef0054df9d2c494f7de2476a058c4e8f1780b9f3d64706c067fa760cf24e1cdb489184f70227a9da314a468b6d8a07748faeba7ce6cf8c4dbf93a10913c3475120389e2fc896017608e4ee06f4d13e572e92e4d19f801b6bcf5a423b89371d98dd1e0ea90a704184eb99930eb6e2aff7194eea3e5163ede90008ad388abd89d735abc09de08a9a8294e35fc6a068855ef5d4cd266fac7485552bc7b823fc41a5df99ad6cf16492fc5ce80f03764cb67b2ba1e89b952d90c0ae98aa638ce97d5f855174a5f9c8ecb4319ad852b3442eedba5f624745fe80d5633697890e2fa0138c53efc9a20a353c1059a396badcb4446517224cd1b4de832ddbd25330b13cb7bf75bd919fde8a6927075f209eaf8378dcf2312b5b3b436ab6e97f4282e673dc9e6c033efdcb9aff5ff7d89704fd792dd6fcdfbac00935e16d8989625744a9e4bdc0fcb23fab77108d9cb61430d24080f4ededc62c5477108aeb9a0005e79e3fe85479b7d14313e4380bbb01b45b149c5982f82ba8e75efaec00734594caa83c8e3728a68ef69113ecacb5cc1f433b28bb485bdb62a2205dbc6704c7ca3a7e375cb3381c74b2d86accf94f6aa91feb63b9eeeb8fcabfc82a221bc7dc0464eb49e1f9f1f7eaf1fc5ac6ff928c44c3ea862f6491224361118fec2f20a47e69630a1d175384637ad251e51aef4a5309919572efc0aa326449f8bf2c217ffd466fe913ca4e8ad433d07d83383c940ccdeb8c1bd0a03270b5b7f8a801bf4084134affa43a8fd098bc90033043edaf72ea3e6658d8d266ea250928178544b04faf947eae4ea456a89cc22c69038cdd74e12723125cd4861fa0a99fd73562985616d3a1f3abf20138603a52a23c3435593996dd539900e0d2455b976cac87b8a542255147940ebf1c55c86dd72ce9e3d3ac21472dec093e6e243f2a7472f8ef744f1bb5fb3db5d467690f5a5e372a2a7bd506d33e0d51250d6a037bae7194ebaec01d7882349120ec10c37e104d48f8d61282102f44f6aabb599c1120d58fef5dfcd53501fe1a786c0ef6ee991bc5dff2090ddd205b6eb5f8e0775ae29958d7d17a0dfe96eae4a63cfa483027fd6209f2084b882902bdc152936aa1c5587687a5afa1ed0d9c1f6cb34913c930f0c60bc3b1c3dfec1ec6909393f1593bf527e76355cb282e8ad1635ccd8d88776ed159a4f83be5c6a58d195e66eb023e853329543066d2b51bf9d6da1237d2ca40e763a608991e5cbbe6eec1c012780702fea886078c91b06311f7ccda155d175199b306e2a14129a9b4a81afe9636e627e85a4a5f000bcc760aac4ff4ee91cae0cb56092bd2ff6c3862a9f2dd23f429dafeb8843fe3272606111eee90af4e45dda86f1ea3bdc362e6269142d530d3a0068099006b4cfb117edf8163eb70c92a7a514114e0eefc8d4060a34b7f1e3a864834fdb3aebf8dd118343956210cc891a69bce3882376cc87ea315b208baae281ed7e044f366b6a005536cf1ca332f068b3e21e30b1fcd517dc9291b3fdc0adbd13db80f5543262a85835679cda438caeaba2325552bffe8a97e16fec4ab30ebb56deb181c74e2589edba17afc64bdbfbfb6933362d32ce434fe4dad0b500b2bb597a13913977b3bfa16e325a0f25bfdf074410e7c7ae9cf0db11562bc6fb2fa8aaa79febfbd40cfb824b69e66871e0add02b7deda90342517df38bc8fb40baba19925525aca9bd38ccb0a662d419bc2e4ca900893332f36c978b77f62133c258ed58ac90acd8461c2fe9c1cbb829b1783b7d328b5abab8bdb52bdc247f044b48b082e90aaa1182dba760694632a124515af0332066a4a7311b75a022de036740d62e54d7a819e4e805c8a41ae226e9893e023f22f78f60001c079fa5e9600a0d475049981b78a83978a6da7bd19da9cec88d1c8c54217eb994be746f92f71fc99f639c89ecdb18a3c392cfdccc9531e0ed53187cbb59fd1f63ce5188c6d0787e44838dba9a4e82c09485212dd04c5fe38f89d2fcd2e4acfe07112bb36997798bedd52ac6d902627af5a26ec76cba576d745ac77137046a0c21eca4af3d4d04e0d5521ab25e093947d18a8a7d5324995d50d33b3a4cd5c1a6453a211c52407c17a73acfb22aa1f0488bd8934e05fc740f1f29b4b98f34fd1c81f43b190b52b2a949a4c2fd8c7504dac82ea50a7cbee339739f674c406cbbdafd76079854dcc9872790405d599bf02c06ad535b1f97cf57400d08f4bbf03c734b3378e3a7e096d4ce90e56956cf70cc6a4371972f7f6f01d0341047c79608b2183565860b6c0ec8b1b75fc34db0dbd58b25092613622416853663157042965910a0564da379ca3e35b33f81642e1afb898289748571cf0304f6ed5d186f269db0f22c753d2bb2b4f67737360f4437d7659cbf2fbf216ffa09701a0c90b2f144018c59c00e4f431a5edfe4d6bbcca05c6b074e01d7c1139d783677c17cb8118a6cec6ee45f6bfe87ef59e7bc808309b57181616dba923df91da1634e215dab870d52d77933701dea3f4bc2fe4968271e1e082ece7913604847f4156e5d89a8e6355290e3b1e9c748aee3e2914a9d87b07454c61e63c759d36f2e3969ff1df1da2b9b294b4f6cf29e596a3019bebe013e4100d6571daa467156812cdf5d21f30b9f6fb941d5f3da45b788048ae45326ade7d3154cd23014bb2a47b654890d8f0ae6fc6a8a4367e9a92a03149ddb021902a77ca13288137b56ec0de1e194af2366a697e18e0d4327807c858c8c67a2d40111155b18c4d862ed7e922b3676a94f6c73adfdfc308a2f9f767c8150e33a8fac55870f83b15bf586bc212ebcf15ed4da4f006defb402d081613ba45c5db0220052589cefc98dd2b5468802e04e5aac4bf514464bf0264ac7a4e81eea11d264f8c15493627f53cf3c1b0a94516c7d490fe05c18875308e8c4aca8c053e05c0ba9b07916155dd509c33e1dce78ef9d5c96e819a66b4d2116f1eff02e198e09fbe5d7061da2c7982ae8af40abdffe668a31f828a9755ceee66ccf035a9371692207bf2aada6a716a92120495bc0a0392f7716d5f4c62c967a4d3484a5a15d24fae4d485cb79fe761b4e93549e572a86b97a61bdd3d433b2f3f788dfd72fdcc8f37408d56003bb5e9e081200325bd39eb3c6c95633c4ccaa1d6297dc8c4e87a8e7b7179a84c9998548585db8bdb5a715fe28ae1a518c040878848e00916b3d9a07a7e6791ae494ee8eefb62b24f0bfce576e1f8c7cd243b40a38e366d5d26e916f61ce4cb8e25511d09dc863fdf34015c60be3388de95c461b321174860e45f3b068114ad45a1af4ef266679bbad10a40e8d9a376840675bab8a43c9471f8a9e31789f2e73c661e2fde17bd6c0ae8b33926922e753237a85bdc6902670ca8abe2b95e2d65462d8d5a3e3ab0b6985c544a0fc513658f6be0925263b6ef356a047a900f13bd512cdd0c5d149a2f1e08f818264cddb58d0c84aa870a0ebf8a902e5fb24f7170cb616fb85ff78846fac1ea9783cab9cc43209b1d86abe569b89dcb13a91a0b5df5176df24b6d774af7f2c17e22f76cba22dc76df05448bc7ae965b759af0a22bc65132eb44a6e906e8054b613ea77ff8849dba1bf372ebd271b83a31420705aaec6a9d82a1d618818cb89adec8d16e32c634144cf5ef6d636809bd0179bc65d923f67b1a2cfdfe47d1f9fdaf9cd2728d54cd330c9884cb44de40603017417bd7a793c78666ab497288c7b1cd0ca7ec0feaab3b027131ae20709f349679501f8ad3a81fd1f68556c98cb97fcf0e99bcad1257495f977021dfcb3d552388400dcce46ea3e8893695d474f074b4176849a64846036bbbf393844518a6cb4b71dc9190efe7170810d4ca61f10409749b6d9f2861fd9f51faf90a41c41525e645b21e882224f36a392eb9eeb74c912653081c7b1bfb78268af6af54fb8bc0ed46c2ba6a451e06a42e896c8b7cf892765eafc8690db195abcd3d7260298246b302cdeaf59fc2d2a16e021f8ef02987f224ed5e63d35dde4d728f07b23a76a071efcc935b19584633169fc268464fea744c0074ee29a1cf612f7c2fd28f1495d93923c7240352ec9183c928b25d5eb66731e5c7214e2f0b29c92967fa96522667f38c9fa3195cdad69df3d0433434924297e8c0872ab994edb70b32a4145194077c631fd38edc8d089a39b66d4bb427c28b1078ecffe820acafa9bc8d4596c07435691e2858954ea0170135ced30899eb06abfc779b4a38ce906eee9676d06a558d7fe44135e96e8f62b977fcbcaf2751f96015302380702dcdc31abcf228ace09d40861f22522477ad6363dcc438302d758b6b093e1ba7f697c5798a035052343849c99b4366a689d78fbac97866c65a6dda293db275d0cdbbccedf41b0e2e3d127a8dd7fcec471a22941f770c91608dce715f15d980598f5b6f52ecf23f29de65241947f4ae5a9f82303bee4d99e1e6797d5172e750fd5a27bfe9a136251f8a44e616655b7f8f3396e88cf8bf06c288a75841275368bf55bb292655c1d961977e11620beba41020b67a0c3f8f7ab9a3092a1f6a57da02cef2767e466a24c2cad3e3e750e824bf575d64d0fc4aa2f0104d4ee54a9893df060c3b7d92efc0d67618f692c66c93afb287543bf25273f3b13221baa8f8bd7a0098343ce2792f01db94fd33f957200ebfb92c12bcc46dfcfb66618877a8e18cdf7bbd76af1d776db53a27d445dcba811da3b6470ce4a821f851188fc6b4ddd9347d8a0f7a83ca1ab1ba273d22ce9177bed1b1197a4898efd0a54ae419f567ce257b03245505355e4145543563089a4eff1643d73ca526a30143b82c6310f88758a8803dacf4fdcf8c581635600748c706beec3c4a270df4a985c48949ffb319bf637ab4065d6fcb8553ab2ca709458bbeafe34ba217e8a9af330691078ac4e20b006acc2fe8d3f958754ec3bf03ac99cbb0771fb332c25b8f5d0aa83d99a832170bd522f417724480db713febe090da91c14cb4470452274a025ab8d82529fc6d06e18552943793d0ff469d33dc68145655cf9dc37855aca37b67840889ce09115e310968a6623e025c3df6bdee85ca414ebbdd91d6ffe5349db36f4da05f721e2b961ff2d2a8c1efde162150c4770792a41159c75ff2127549b30b467a508d724b6216fef34997136ad924f5df5c88f5187f6ff3598afa08add38982e34ab693f6e6dd62fa196e344e16fcd0a6492b2b15e99015ca8cdc468030ffa824f547699344a75e535d452671e1eae94975ed74113cbba7461ffa119ddd0cd5f3f1b7a95bbc943d74add566bf60e6f6a7ebbdf05f6652715c3ea073449cfe1fb3398c200fa48416e44ecaccccdde91ea2c395e956153ba27d827e17e484869dc2c857951cce090cfa33102e4f7738dc553ac76163a31df7c7dfdeb05985db8e0792df29340cf5c677950f4fa0f9db226bcbcec2b57fe4d608abaf58dc2b1c10a06d71fae6ccb4304136753b43005992373ea164529fbd916e4f60fdb4513ad29e49b4f51d34940fee01aa09f2200c825d49586b505574aa5b330defba9641956872900535a0074924132832f39d785cc7bf7cac698ede001ff440e0da0337e8b2ea6fba41c8fe650e7ab682440bc30028ed3023f390ce92283806307d4591d79110de24230b5b2f1a588d1dd73afa1e4269c4d807f53301c09588f134ed3464f8a267cbfd12dca31a1be3e85945ea05dd82e93e0d82b1763c49ad0cc683908e2f8de4cd66e072b1cd70f9bb0456f7ce129e26e895e739f60ab4ab262474c4828019b27356af9d470c87e41dcd744a410e29cd92ce7911d01ba1c9f4319797974ed5cc738b3885e5eda0b9bc8e5d0afa1844c047547dd2dbe65321243dbeea5d6beeb88d34371007a2bdf80c0d0a784c3d208384f22485f377a960633353fd2d4c6e6405e41e3e1e8dea1911ec04d92dd0aa705bc9238d1af5576cf4c0a9b1e47338519451ab6a5caedaac59497188740cf63c701d9a2c6b42f4bcf6a0504d94426358e41eacd1e4a3603aae33fcd878f5b737e40fe7112fe1d2f5194400d9c6e353d2c76dd6c8fe8b57c91441b1853956ab89fa35585dd1224ce188e9edc76bbfb90b899d519361ac4fa158d9561ef562d062c78e0a8658e778cd7e5697c241ec233b003b828643100f75b4dc80d788fb214fb810efe0d9426341a62098a323e4c6f291ef829879d47a4ba5780cb922d85c1ea20be93f933cdf809066f3dd72b6967ff6113561c17fadb40067a5235bcae2221953bea0eac1727885eafd34919307ce093c4e8e82dfc0791ae9086bebb66c06c9836a5757477a27380cc6e68e057b0d959de8488281450c27d988833ede157fd762b22ff213c7451003b4d62901a8ca6186cd0f574642ff7f9a03f99db1405108700339e635c9e8b9e5e5cae9b0f19186a5adb3cf53848ec2b322f0446ad8609daabcf45528a36f12322e63be82fee48b6adc3053adf6850a6d31f065350782111f016e44ad393ee828f694c115430d732f54cb8a1db2eac01af8b2921ff5e3cedef18203241588716a00642df8af6174d7f54e1689a621429c52f70a8237ac01ebf3e5e9fbe688d012f61f80476884bf2a847320ba1592de4488e093e30c2e5ad8ad0cf3f23581033b132f956e1629d332f685b5b9b8c92c48a29a54a030f41fd82053671ea76a68f09a4c4bb4b11d6d361b7f2c2e0c708829dea5bac595d9c7c976120fca187726d67c9193355fe8e03043f6c3944b9227ad6880eba22be5b02370c76d17d9a87c29fef310d501a7d185f6d44805500966df6f6850f4065bf75d8862dcd238c9a9417baba099ddc8cf034239c87a41c5c7ccdbea6fb33a2ba032c236853cb58651a2adf5c4bd9dbda3d6527fbc8ed12a0273f1d84dd22ad19c24a5ee84a6fd06f07a2d325a60a5543cd603a06eec981188ba6f444ce5b6761ac6ab73aa48643a408e3599bfcd4e4d0e04b7fa7759f3ddf35c0685012d8208b2ffee5e8cc2f11fcc531b3a3ad8cbe4a70c0d173d2649caba38362bad9d8d02bd0a62277374c6c236e59dd6fbdd3f9fba60fe887a926c3b025ccef72e3f9fa0dfe80cdf11ca228569955b2c67b82ec04752252704a401e94f8118c97d7615590e5209ab71eb95e9484d6ef54987ebf107c001691bc8a9b22320cb6365ed385be9a7e07aad5f6bbef57e714344f8ce61579695865eafc69c17eb4ba7ed72f53d76c7f61b102be90c143f62e87f0697a5897f194766f6218425ef9f62d4983d1a1d4ec816dd0037b30a6e36442acaeb333b8ffe6a9713a21be87550b032535265662ca8ef99a0076c135dbd990adcab53b7e5b5331efbcaac26a1fac7d6ddb3f2f15c7b9583f85df9628b9fc95b3d158ff502cd07c18cb1de0b476dab725be93c1ca6566839f433619f6e016cd7cf6725efe1f3c281df634e27f3ca407206b0b0eda81aad3e6ec05040697f385ebd088045497c5b215303d893a4e5ab0a4a18bbaa26972173dab6eea0e90446d866461bcee74caf8994e154e9857d98cb6b684b7217295f07e292670a986fd6f475452f0f4dd144ea8f010274b9099c25f4836159191e1a17994f9a2175b167a7275f7f60e7d21baf66c0be070ed8cbf2e7f3eee1830c842b528ff08c75ca340d8f3f323391f6bcb71dc08948947a990824364f2c8a84c63c35e7eb67ce4d12d543a25f0e6e14fdef97c83428703f282b7e5601baf462bc65185228317add42b2ded5267ad53d7eedb9c1cc6f1b7fc7678ed3d353503b98168bc6475dd8e5856cbe9f0e2ac7d2b3ae0cc89af4cfedde6a95d35359fa923fd949c9ab0c7564045e50ef02ac3b3067b3ef22b63f0813257b227c32dab1a4def5688217d3e38f8956430c75cb7145e06d1442c7c9467457d2ae9d4b625d9c0f74269b690c0202b24be744925598066793ccd7a60872bdd8198e0cf0acc37f20f5fa6c93f1ce0b4a56b8eb7e600827152cd4e7e81d97ac86c14ae5c6a61746b4b7fa3076d1e88150afbca20466a220047c91161af0a20747a03dbdc541b591aad1c327ced9fc3514cdd8642cc944a331b6c9457b5f4ee57c6df005c4585a6e80575b1adbc88afa993c6255142cfe5abdb554f2301b3926b50d4520b97049358a27238b88e19041e4de554d14d2fb6b487035df420566743bc91a479edfe8da814d8646018c47c565574825edca0e2bc3127c01d1dc29abe44d074dcacb3381612f6068a97a0260e4c9911f016ace42b3fa9f859c9b59a12d7df750c39e27b7cf424ce93e8425adca4efd902696c7aba945c5ff8ccc3d46aa825db2c32601c7cfc41db1defeb3615e2218ac439b2ab9b10260fb2ae325170f82357555535c827935a982af35cecf236c3cb3e8048bdf957a88c55fa68c1099cd1479bc026e21f19436885d55382464c3d1d186839bc9571ec69e8b458842e756d47619c4b191e2fe7fbfbdf11db22259b6b4c320a93be07b45c4c206afe025877b206459a975da3a748f900fb475716db1c026b139f9b92956431bdc92ed23cc09d8c5c45ab5812b8f850042b2d6f70a214ff9d6262ecf47f07c6044f0d742ccb9a7c47c7c9793fe0b643d37ae6f906012921d2ea0fe3d6c66d553ee0d512bef0183dc808f59605d62b90e241bb9d8e673835f79c8ffeb56cbada16778514794c2c846e66e0e2cc086ede45bc8af66fa0bb4776491489fd35909f8560f29f56ab798104bda9f5e9b65a4fd7b3829923adce5ac824b478f4f6c66dc843a7d355d99e9017f854510283b4cfde9d27f0ed8168a0f503f23a118e3ad3d311f2fc4c7474215ebcd2c274899c047fcfe84529adaa38730038e0359982affd6463dd304059f974db5d3cddccdb8836605b4ae33212103eba791c9960165dd7d805e1ed944c1139336f8132a9fd7160e87342c3540888070339f2e8c8f112723d02b4634eedb3d02a602051098cbb96919904ea947571a72bd66fbf84cec844a45081c381e3b3baf69f4fe8b1a79819799e52302c916e35db3f99260c24b12829b476801099b17fcb27d75768b056fb142739aaf6e60498b1e689244ee217316a1a6711a54ca658e5826f3ea47433bcc7ed67125bf71a75ed5b23bc8451cc6b046a9d8446f60b67f89dcd76ee6bedc14f2a9c58c5110d87493f945177fbd05a40847fdcfc64eff9f8a9bf736e5c888bcf213aa2626d2a0a0060932d6ea15c1f56e65d0ea8c9f0b9ccc920560e04f585a7fcb512da47cff49d55d5ff7e71684134c5452e5165d70848bb7948d626727151907acc5fffb2c396b422edb62072f3e06c78f75ccd425cfa942f20a1bbea256c8c33f04eda075f9024bec2d59484035d9a08dd2a35905c3eea58aae337dcb5aafd6a49a43d5ce5bce4d92809bf0cb0bdbeebe0535da7e2f14aaff04e2ba11895d49db24699e559a4730702fa02bc2f2aed1cdeaad1915e1989b4d80a2d55e510d9a09cf6964598492f43154a34c3d1713fca14e21f6311565670ec4afe048b60033d3965845db3bcd0797625e67d2043b9685ae32e90d481ef46eef5726d2e8ab22ee0d69d401a65c06349672c9e3c045b08805801f647b74db8b535938442decdc312065288e375d287aca528760e93d7a54264c359c913c6a4830a08fed97a99a46beeff1a6041844cf64b9762adbbeae4b3ac628408dc34fd3916a603207d9751db0f200ea6ccad121f245eb733edd10ad2e2d74520b6a830c5032618dc28ac20c76f7e82e5cc89de32a3344c3215eab44dc97ee971db187e6609278e723625198ce92185d3ea3833ed1c1959dcd2d5e4f12f74e65d8e83ddf470fba3cfe4c100439a006bef9dcc32088b43c294f4b1f5678f601f3667a33e790346cbd9b5e2107eaf5f1862853369516a82ab2bb853676f874ac70db7e791a5949a0b4078d80a6c06e8a3c8027817a1dd7a14895ea1113cb7da3a9471ffef4299796f817ebf28acb2d6cb88afe733df0c8a5fe2ee269e57e8e72fdc4ccd4a5e156af2c9cae838d7dc3b1b4cc80b54e695ef0440068a677fd1c3d42da064f9063afb210e1db06b3d1f300a4797c0fafcfb8dd2e7e4a0ba15fd148b9e25f2fdcec6d3f5a432c7afb42f2f2b1b7c7e0f03c40fd94c287df4e27a2211f4a1f721f2796dfdd5aca215bcf51791e41ae7700947149e9f649a4bcfb2bd5cfc81f73bcff667d7c714bca94bd956a69e27e3ca1a5df60d9a8eb87728215a0c50c1f15f22ea4ec6f04506b5f99a41b3a520b723124e3ee0846812969293291a5085fd41e495ee4e562b87bc0b27f2fec5b132be94cfc8027be6889c259d857a770e7ed3d3b19006771f05e9bd12275570c9840d7d1d15605de38d15c1d0a5e73bbffba4b2c19c78d1e8ccea790e2296075e2b08440053eeffe26c84f3bcfe4446fda75a0f9cc83a1359ac9206bbf67bae9ff91645d0ac6198230a2f020900bc3f2cc4d844fd040015bd2ce7a3e873138ce6db9ffddd3083285f99ec60ef643bb691d5ba2be7e653dec4fcae783fc16dd55897583942a383f3a017da4f15437d687bff20a5424c738a084631c11d745ae29d7eb624667b678840338f07f9b011ba3c24aebc9004022f381eddd6be2a616d129b3e8f612a342ae780db9f2be4e3fedca3de02e7e67d8ace56f94ed7fb847c5860d290bcd4a7bd8cfc53bb2a79e4ec8080c6e75451fddac700ada11461384b0852c6e3231d016dcd7c384b93d17c077e52c523f9cdac0e3137fdba0e45ca2ab10e78d435977245e6641e389c736d6be218184d51b0ba9864751430f35e7c88995d7d6d4ff30747850b7a7a863995390bf97b80ecbc14d32d9d9ce47056340facce0a7ed328cd99d75a980aa84a59b808e2c5699f1d0d108b47aac0940328fd3cd11a87e2fde14ca33eabc9d9498044376ad9e5133f3a65ef4d4d3436759b5dc84e919539722955830b9c36af5c17de3e910e9b47fee60c9674ed0f05528c654bda7944d5fdc0332febc596bf39cecdb0c3ca0740be6036c88fea96f4c36f19c6b8ad6a1c13342dc542070a2ac789d8319fd083d500a8e448ed17b9358776f437cd5598469de233d47145990bd87eb099adb95ad8413e7e1518360190925ac2fe4c842db62a55871c8ea0d6d58e2d3aee604925c33f9c2c1f4acf0f97ee69c41d35d0cb64984dd2f21d4490894e2bef810bb59b3159fbc34283441c430eff5e39c98c218f250bb2057df1711829f15f7e0cbe568ba725dfa4094bc57caf357c67147f41f1087a212e4eda245ff4e4ef30fdd5bc22aaa6b7e8720eca5020a7ae4a143796d444b499c736702c25830841d3113e7d69356081a205da656db4ff2d47c15f60be19d9f500b411047e026fda2999cc197597271395fa40075ac220ccc8e26468fcb681b5d0cbe4fa8730a7ac75c1bbc947ae5be78054d6baf34efec6d0195362d03d3f4ed1b8c9f9c712ad5a4826e1c8c1209b821c896c513c254dccaba2de5fb7567e4f3f648c8ee45d98393c1a7ed31f0b8baca2376c77051a0be96af365d50eb95f152eee7e281dbf5e4171c0d8da7b47c903920707dab570876ca6075f3e90c95014dc724b94cdd82e0175ccd1aef863cbbf34cc20e7eefe17dc79c5c10c3363d67d506b1346d42c98a07b93da1366920d7c6cb606b9140c90bb12ac9ee246db84fa162ebbeb949353a8ec7c96cebfc3d58f7777378b1082f5675ea92928d9f18a52c510197b6e01c1f565f24602e7cd9c8a5dfee1322cd3e0f143b6ee375d48043fe7a836d421f48f3369a1bedd9a1a058a5df07bfd507608caae63b5ebd7854ee9f9e77cb02ec293f27a17cc98336c748bd51e0904f84ac3deb779a628f3ea1fcaf58c7bd5be155ed116399e98dd9222aef84f249d407cc779d9653433969c2e5780710b8d168e78e2a274d19f68a60ac9aa93fbae8beeda3979823d2f46050805fd680baf1b629fa6acdb78d3278fb5efc769e7a5cf3016f99c485819f624264134e7f372381c43a141d6f497ee35edb36e3661f3d221761b2cdcf47975d6cee299bc0e1c1370baf1f039314703dad0076e7d3d18c64b6887fb8c5a34e41d39d4eabe07c1fb40ab211834091e9d1288628ce2a760fe9967abffd8639220ec4ec547a2abad50babd4e047c0ac19f6f2641578a6eca48fe65dfbcedfcccdf9eec17f0ed7a296fc105d54e13db64ef2d2a2d0aa0cc0dba189b42f9e358f7191ce7f794f51a84433005af871b809a8cc37b09068111cb112f7922938ed42a6ab972ff6a160f2582259836535b82ad7b75819c87d1cedd3a7eabec1515bc426aa45a1fb30c0eeb4af1d502cee6697d1bbfa5052dfcf1a8fb9fefc2ec3cea41c6c2f442497e8a6f07c2e61b370ff9d70bcddfa1cecafd4349cf7a5683ae80e8fca5daa441638197a269781a5e4a0dc6f6a812073d2e91765db360cdbca6fffd76b70ccebd7984210cc5552587636128bc206805cdf1632552ce04b7a012baf6495de0a2fe53d697dee221a40fde1e3220957f78814c4b19e3baa44b920c741686927a2a85c0c9eb7b9404ae8aa6500b1a7c8ea76a6982f3838905489d4daa6f8afb3d3cbe3dad92bf953b526354eaeff53f4c6f899ed43decf23fd56c49252669eec60e88c22b2233db8801fb5aefcfd8119d1030a62782277b9155db5c6702e7c4afe9c9228703e9df89645c9d1dda01486d06d97be1f6f8083ee98b5ef948c7e5865dc5383147edf1d1dbefe71c05d2bf9c8683d1e0f15c04dff9e732a27bebe903baf8c42251ab55bf374fb0d2468737fa2a7e45ea82bfdd8bc5cb1721a80219f46467c68714c772ee8c5b4172b39956005582010d000649e87c57b10b6bd5f5f8816245e8296239db3eab953800a4c2754dbd7bb97ca93f0c2836026f8a6f59eb70854f6677f6132e57d5ba722a285f8bbda3d5320e3911e0a79f56aa25167b2fc3d93a44794bdacf8a624a8660dca185d397929f35015b2165f0a087d7d6f431ef01e9bd4df1145088b4f8d89cc61d4d6e9556e8a354576ba5c35f7dfd7a381b07f5c3b7620d5366a2fe675076a64b4bb7d7b1fa0b1a6f7667ce1460010b1f936c9226623db20640a38e74488523e70d0556403303030f20711a83e7fc7ba71da5270477c2d1413bcd6f3ec655543bdf6c9a44deba99f156de91a5cdc6eab0fc7f0c9f6a83c34968dfd899628d54e9d8faa930b766aff6f313700ac4a017a93c605e6fe221fa54a5428939618b0d8f3ed063a59729f98ac20c6e4822741dd5d7b49c11907d636ad79b8a2421ef563d7483dd64654ee219a79f047bb0aa3835e2e186f2b6faf9452309b4a505947b976b82f0c890629041810ae347c278096d68a359e7696b879bf99a8372840c7cbf00e8eff71a2e6c30f2f261b67b421d5352184345e1ba0c5bed57229497c3114819306c2510609c2cf86344c9ee718d3d983b47d6a476a2ed2cfced135224dccc6f8449de4d4ddfcf8c5954e73b8c478528d9238b32a064ff467685b57b3bd8b78a77351337fb990fa591beea2ec7912620ed0c7e6675ac05440423287338dd385a66af090b1b01a7614d34ef9000b38d7c096b98697270978beec36f6fe75777b40552fbf6e992ae118832b53312434445c88cb7f7de5dc59d62d16732a1553483b69390c1c49a72be45054a50e9bbcb42fe7295049a6bc77e3eb39d14b5edbbb0a5acc664e1914624ebebd0ea26c41dc278823b3ce37a3ad96a7a5138146a6eb19c6f111ff1424fc6095703106bf6ef19c069fe31bc1eae2528c57b057b0ea673f02fd55b4dd0c755f0c18ce41b06fe8e12d3c6c5c8e45a8b869cf3f0222544ce4f5e73f1821d0e66f8e4132ba31c23e335106cc432d7e11d657c6d3fc55e9576b8e82f428e2cf6963e3b2fc953097dac5464c3a955424272f216598aa0edd498e2d041bf9072aa727fbea735e0fec5f60d6f196f511c330fcea58573c5a5fa2f1cd5d2aef23cf0c89ca845ef5d9c6f53645aa4aa0859deab21f1db0e0cd03ab9bb90824d97275c019d26af22cc84918f14ae07abdffef1ede0affe4317afb012adf317fb002555a3436072c10699ed73d46be4ebc86ee7ee51d430caa87eafb1fae4b8d7711e4442bb2e63d8dc16ea3e33e68d98d9f4b7977e8a36a1d7bd5ee620fdcabd7f873ca882d02579ecb9fecbacc430edbda09f0d25bb8d6fe6f25a6f1b8cb48c56abd5bcb0bc73268720fb39736180ec90fef384aa2d352fc26932b9a88126f8aa5010873d554c266d7d7a8af9fc9f57611d2ea2b0acca0d03b86f4af3ca94b9b0736daf63e31d510d3d587d00a62947e6157e6b5c9abd52c36582fc52ff6428da43dc0e162c2f33c92d63322432e3b673bd7d8bb864e04a4f205ee38178481ce4f0381369a7e69cdc4b8618d316ba9b3010e8fe606cdb988d47dcf829709be9ea9340f016652d0de63d9a092d2a3460877cb97c83001eda57afd8d79fe0c400655f91d06a86b24a3a21f0517b4a3d5d7303354154c52028bf79b835acf9048754210484f96768563d0c7c819423b705a9dd701682e6dd637f55947fcb30e36dc633639fcebeeb61315e71c6dbd9b874fdb18cbd53a747369814c5f10410d892d14ab54c216d5ebf8c64450960ff009ef33a90094a437acc66d1ae81b05b16fc5c135a831007f5a4e3f176ca2f34008642959436348c7c26b63608b8ee8dbf5d81d54081bf87c6b2efc0e6ee51b0d0b19a470c92bed3a7a8ba7710ad0f807f3a047002f4aca4037152112d36c5e4dc93f666c700ae9c3de72e7a620d5eed0737cba76ca328cd7210209f1b81eaa10a875614a8171725c1ffeb8256292b87ce5249301c926631613f69216affb8baa2a4bbbfa157230603c65c679cb7b19d2d27e1edbf8284e203caa4ec2bf5c95c0a49db7e29694b4b612edd53615cb46d64685bad42ea4bdaa4edb2b4ac35444cef44a77d4defa30452e6b553fc325fdec89938258e0f97c39d804fdc9e2c4c5f56b99e83b3143e81c21d3b1ba3a91b33fb773723bd91d86f32ac545d6e21f73cffbe0115e9ffe218d239aa5edeebf2b71a8b961416225cb4057a8ced3b77e5bd7069cc22cb820a34b012ff2224885e67d79422ac4b02cf6a92bea2b3a034f1d07df8a95364ffb3d3277eaa107a0254826203fccf64019f4f6517f2d6d8c31616276f976a25d2b7aee25ce66482ade23a3d9c3eca078c1d5628f02d133e27608591dc5e7bad0d662ad3afdd00a01063b088203d4a6872798ed7d1563d161d792b74ea6f4549f467296c524e088d3292760dc6c7020fd4d638d713774eecba5847bd6e9d656694a04f43294f11ba96a517c30c4d16322e9a43f9ccd2a4f9b7ec3163e8eef75a0a1b6af00b214413bd921e1c20452c3af19d2125fafb12f4d690bf0d5b9e38bfadac20bf21646519caf2e92cf2c07748a055004b78eba57f2db5a060a4e7ff69c298a6053ee5c3e61a62169a12d003b1c1a8e6a3023c4fde434ff1c181d729331ed3853e8ec3f8ed286f620f86476072e3b338b43458912ef99ac9c24fc6d676b4836674b7395b04744ada78c436d915533e60a9aebb16db9208a7d86218492d21e10df2068c046a9aff1ddbc7acc9a6fe2cf1b5839d4d735b54711601b8dc43fb79b05f410aafc312b72cfbf7dec0fbaed2e1c698cff3f71af37ab06e401b00a399b1ff74d3356dc076772bc20f44a90467404c424378a936c9af40b4b3ca756c10d349443d0224f7ca60c632688cb37bd5c1bfa55fdb2232da57cc93dbe9d8c5f04896d242e20b1627aa1207b2e9a65b33c51e341627a728058c41e669f1c23f0bc9c89cfe6f4d5d49b9be939e2ec9d405ed65c636bc5ff2e5543f91fbcf52c1c2110e04e05c85710f3172728e2466bc47806d1ebf10b054b853bb44268debc1c6051af1505f5838343143855621cf584f956ae8232eaa101974b080794d21ab65e238c78299cd7ea5997c40eb72a6c28dd9942cc16c1300ed34adb6964232eefdbefec1e1132f87ea5195c74c14be709753623909972d63c4cf986dc687094c3b5b7d0e854588db93ea6cb755b34f2457d4105ecafed3c2d0d4e13410cf5bdbe060cc501797e34ef3ff791a80f4db7508e9cdda504114da447351b6e44a089e75bf4f0ffb28bc182b1737391da35793a2272df79b9ef67f783c32b1e576ca63e34a565e332c39e20cd8c61b5d85ac43373dc56562f99da3c64cbaa5f16868733e46e658ea80e09f9f05da2830afdf18639844a4f9fafc6255784ab57b38a3d347a4ad6408cc35a294644a9d68169f69f8dccb88ab1a32abad4e02e2c3213a67e7c85dfd4c1c081b9729d05fe927218a9b7eb4846289a6ae49becdbe16ace7def8e0ed11571242ac77fec8c024eb75da62b7912e2b867be3e72db8d8d802a00367d40f9a4e691ba21573c4150ee4795a9a447bb7de5120a6e10b2f798ce5ce88bf53560e56aef548420fb084e791878f01ce202a4a72466030d3861cf9529361d8c9a189674cdd90bafcbedc502baf6a4231d2fbad62dbacaaf88cfeb3da012f9d115be92dcf318309482ff5217f7e9150aaf6530f685a624eb44faf304c3708ee6022dd1f5999e8a0bdac18d1661fb5d6d2480f9f9dfb197a2c0c962f96833bf7ed91a92f1598f60f7b92b603d7bffadeb9ddb02aca69171d1751e6b65119670c0f930cdc663f0831046efff734b2317e70ef41e8b6de45bb73aa1f0e5e08f1ba4707393432e924d185d975ecd94931e0b1847fe049eb1c1e61755fcb7d911eaa590267f40b7d2e63d517dcfd8ae1a700d3e80e88e82e796677a27f720748449dd472939951b40fd83e36d9a0f1597626bd88de49cc25600a527961e52dd40881c16169197240ba7b928b0093e144936baf74399f9764866b15f323e4d38f79cd63dab71dd137d3bd7f9f7e82d6f6bd950461999410b0b15844c0dc8568678b22261c3b609f1ac961c795dad2e1477dc134a6b1f97bd856f49394a1da9c04dd5f8be697345a7f98d11696d3b0e9f16556ba20099be36c10abd7f29c9174f70c33120f803b359c378d62fbd5ec6d6025e690c6d303098c16850b336c9c85a1a276616ddc4c73052fc62d44e972360d66cbfd21a6278a6c984b8c7d64ca54bdb1039eb9a35276687d410a97d455c55b2504feadd83abfe78973779346748fca778ded2baf9bcbcd9f151dd5a7812921e28841104fc7eecac18e89005239d9c7d50fbc480adfd7646c3a8e3dbcdce189ad1c97f0db7889b5b8559f57edf4af307f39c34ccc78ccc303331e191b783b90087284ccb80237fdbaf9b4accd9fe528af09ce90634890749d11125af80ef5074805b7a3be8c2d0ecb8d5fbd3ac81d05afeea39afe115ecd5818c83a01bbb3bff393ad8cd168f01f534e8d029c293ed3321d0e8a44a450cf051ac73a8b3e3675c5fbfdee67bf58a596e9a52245989f40838c489cf618ea98028407211b690f97bb25739eec1da9710902364f9a82bdd22c1e5cb1cc20bff0aa5bc7796d37c46da602905f734d6ecc15e449ef8d54c8d81217b1f9c08340c01c3313779e2f1863577ebd3e9610e3af0782b81392e13d83b42a049e386448ea153209ab2b9a7a83c8808c184f0bb16ed22c24d6f86e1520d26cc37d4247b89e779c54db4a50f59847584136cfbf70b9d085103d230ca6ae9c4f5847fa54c4f9e3ae6ade550d217b7d0288f75496333a9911b8a1fcbf1366c559116dcb73dd5bb03c2cfd8aa60c723648b386fa9b379ba8fed0a3018c605a94fa2d7b22489febe56b0d032ea3c7e6ac2a80f84372ce9ace017cbf99de7f42b0ebec6293e30bd5dbb6ac44dd1dcdcc53f0f32a3d98e00b3992f155d8985862fc7a8f65cf799301c9ffca62e0bc26fbcc0e2c0c439a904a7c2952a2ca378a29c5276ec2abcb5fbebf4729cdcc21574b984c32a224324439f5c4012e02d63b6f32641f8839f933bfb0756f0ca243c1d5fe58bf4c702e6c1b538a12320ccd4e9804345ec53733b84d832c7956d640c7b3209d3d697f132b038a98463c0cba3dc45e3504aa00675dc2a77d59b9de3dde8eaf923b64e9da3c63df4163d9a55f999629dd4f6112394feea0db383ea204df83394bc4afb68de3d5cd721271ab62f17356a99c696c5a4f57265f29dbb80e65ae3d87def303b78fd62b9300d22f92ebb3bf6d2773e0d5e179e02a4aef9e19bcb33f16202692f3c37b1f4792fae22d2e59f0499c4e238907e37c725802bf34671febd23224bc67d1d63a350657662010ebc3533346ae69235411f2bf6ff89f40a0f8520d93a80cbe2b60e991f928ec2d66ffc6bd1732ff280283b507b7ed71b2a68ed26c711670e37804dcf24fd113e07bc74eec5d3a514877d890cfefa7b88fc3535d2d907317c000bfe96ab580a4743f8536ee8e92a8a4953bb01643aedccc39e60b8539d80c37e1f08b36a51f66042e141e873b39eaa470e013a3b30df0d966d7b27809a069c8e46c7787a42c552ca84e14cd14cf61a6018fab7ce20cd619159cd3b009b57dd56f57ec832276cb411d07615ca3fa600295ba2742dff41139a8459dd05f12b7f9583a62a826ab058adc4cb2f7bf0e0b28fa40a0775b48cc6b7e6d6f609c97d1306af825f5df786b3b1ea7c798d5023d87cd9e6696aaf58de9b2c28f3aeaf8e4683bc632c0798145ab5e8149d0e0f786d3361223da61432720bb00ffef479663eac7a18d02f68baeeb8e6be45be04102d092d87d590fa7ee4e4a5e1e3cc034363b0eaaa03fbbd2c8d4f0487d5f421c77a50d9747130c8227d910eafca39953ca59b603db897935005a1d705dbe78d399ab843a33b47a988e646a089a1be4c602c992c016cf62610172996fbb73bc1ce2dc4b57b4fe502cec1e34b465303ec10e08f9d9213c4e7bf21a0cb2332a53177a38a2c6a862a4719f4d917840350b6ed7e854808515cc4b5e6d5a29360cdc3a22eb07c52a52f27c1c96af85b5ac7e88e1ded3be9fc8c05c5b71bc690a1ce505cb4eb4bd870ef457ce151b1edb759416d6285b543abaec9c23d272eed209fd293d1f47409dd1a96510e28e7a71e616c4bf80179a5cd14cff893c4a234b8193f9aa1bdb01b5ffe64fbf7ee57e8f61fbbf684ccd302034d9e9b85752bc6ea19ebdc408749cac6e768fb981d1b9d4801de51f1f21c22b57e6e5b1d2e5a208347b09e720acbc9fc8423eaa5926cbf933626c6ae5088ce490494bc10d9089fa2854a46ec79393bf50eea684ed42cba25c644c5d7a1e3ba5a086d47ad9ab2d02eb5f570d177ebfc0732cefc7e8438928845c0aab36fd4af5e259be2c0cb71bb54ddd518104f8cdde73b4ef6a2242262412dd93145a63bbe1f27a0b2a973e7c23cd2e51928c3a169e9fb7b60a033b00e7881ab6837e5d45ca88ce65db2dd5fe894203619bfdf63e580af1d7ed99371c6b7e0ba3acaa2cceb2d93e4f1c52ac321ba33590bea25496622851ab47bb6f974410571a3400949246108f105182c8368c302c0664c18af2e66f87dec4fec87b410a95b816f73e430051e4ca2b44f91c7cff144fe63cf8636040ff510f4a0e02203f509dee9ed432e24a8518a9ae34ee086d30636abda8a7111d48e71b7dbe5559d3a82b6b2fb8c6e8f4eacd0d06f107dbe0ec4a10b0c0f53047e39c3dc89fa0d026916e2b02634d348f8d11902ba52f211534a7f880aceeaed9d9ff778289531cdee44fab4a5ce1da0edf3bf29f4c7ca378cbd047c5a7a202d7c613f12288d9584b207a98447cefb5aa8d5bf5d4d98eb9f406456311bbb05a2ab68c5193137dc9ba9baa5ee8457fd974563d441585a8e34ba7ccc72298449feb116fa9d011f8dec829fe6276765847e0d1edef5d5560dc327d4df4a15b572033e7597199879201f92c4772488df52faa7ba619f449e274b328a6ea85b94094888d5c0fe94942f4cb49fe85f58c2f31acb17f48db25fc155fef969bdde8d70f957d73cdef89efc4593ff6425006b61cf4f31b8b1e8246dc15521ccd898e2f9baef2a49d4716bc672fb3d6c31e065c45895c05f85a2f9547c2a9034cd9f4cd1f5f71f69fa1ce58b4926e81d3e1467ba5a8d9ce4e98916a4b5c26041aca727a7438973faabfdbbd9e0ee92d76f58e0e73ddfd2b18f5999ae4bfef6cdca5935f00d1641238dedcf9a370dc49945624f481c199e344dc716ad3e7b340d737c6c22fb07ec2f726721887a4073b3e63435e6acc49e4c3adb971d29fbd1abe15c26753b028fde30763f5d27056fde390a1ba8f75f2510a1d8730907b43446c2ab3cd70702a31afb3aaf9b15ced09708e7f514305b0180e66e4f0b0abd8e6283f761af39cc09f84928dff1b283fb6e7a6c32bf5f1f6b8ba6948cb8965bfd3864d0b3a07b535896156c0ce0eb72478d989aead241b40d13c735ee2972ccbcfa30787ffa381bddaa5a837ed5f22789c8ac783fa303a81f905c3d78d1ea6a8eb5e849e1a9cb5fab2f250682748fc249d51664904a9aef9e39a421861290a80e3930c9cecf61b1ef10d1049701abda7c13ab3bca4b4bd1fde8540fa218063dda870efa8ad29cdadc230c2db558e7a5b02409bac30ef0e57698946f1719572067a80d2a477690fcf00b5d97d1dd04cd1efac190cf11dff670485b5959093569fc04cd9683fc4614b3746325539c1cdccef6bef2248e96032ee976f51a58da60e28148f6948b7c0ef5723b86c3daa2f809ecac2a56fa91b43d83ef43f4670b665b948a8052f081ab997f013341c3651588e481c1e0f1905017ea3c3a0d5fec0533d90b9748fce91a1f43a16c794a4639db0bb38e9b01ccd55866bbfc4a7784e20f271d4d9a77c4e4ce5b4135733028098688052c97d1caf5fdec23471f54c424314be9df3be24095aba755181c4b198bf6af47d0c503345d8cfefaa06a6047d5533e28cc00f88d859ea333bfe347708fd1bdc8160e7d73d8ba0ba38f94e53a67793381f14a297da80b4454edd25548c2d8b9bf20f2d1b4d0508d009bbf2d9a13a6c1d2ac4037426d436010c23e8f369c97ec9088c8b00d1cd02b1951df1b63fb56c1fbf49f14b71f6c02694f4b7f48df3acdfc9caf4b87e191af1f43ffde075bf08cb03c6dde9307e22462d3be1b54745e6792cb805ac45c729a7a4a729d073be8a44d12e7008d548649fbc66a5e06ea3155d11c5495752afb00624dba0c2ef16600703e38118db761e98c42168cac022d112b6cd0976b26bb45e01d26785e45c421977432305a05fc596508877bf03994c55b027d6c32d337b295fec231f3a3ed6a552728a027761ba9f99f974e4cfdbb76762558bf0fd5fe0dc621558fa50a49cacd62b5375c5905d60ed1bb8f14a788a6c4178f3e434f8b52e17eea106de19a9bd48bc6786468b1a4957844937581e8a1d31cb164d15e27b2d316a63ab139f150d6642f5cfa3d7fd8836b42ba957b65a0e2f9023464795b5939f3872d57f72ae5eede9db59a004a9fcc1e5a3600db5e93cb37f66d52d87cc11734ef36c666553e8ad003c10d2462e49a9c542a2424fd32ede9a46d85330235cd3f7651ec5ec749b02d890df2300edfb8f4c647ba4982471597fe9a8561620da2af09c5bc355a706187ae26b7adf80d6f4364bf2dbe9e3bd40f096a0478dbc32949229602bbee254cb3855f6f3c1ae1e9c407b3370ef4f6350e7ecee75417c36c144326e24c333945e37dd965d4c105ad00f73b6a337bdefd1a1345bbf2caa022ffbe811e948a17ee737b91ca348260c3fa27dee095bf366b248ecebffd116f8eace7a709662f1989836f632b0f8c378cc6be993ce57689c867a21afbcc81b6679dc28e4450a573709587d3c5c3f41aa6e58deb247afb87f2bb63d87fa92980e7e25fe2bb67c070fd8bfb52f9f34047895dfdb1db6e1a00598becfc244f641d1b5acd6572ee6bc6e6e27d25ffe6e093b5fd695287681520f8ea0b5280092d58a159b10b5fa09a99d0a55a6323c4345cc6f90b0544a6d1276dfe344bce62b3626b676657f05e20974de3ce43505daaba272844e5d492855164179dfd9f08e34279508bc849b9a779e44487703a21deed042523ee12ae770db1e2a970a5241614a7b063c4128c29ec867b58a52a353dce7631c41392558dbb373fcad0abe051026e70117879d943c9de60b8aafc69d609c18b50fdc68c4f76b016355398d6481418c5f6591ca3f489c62d9b70f701b37a7eaf24bb41e69f82abd4981b9435c5c5930fe649545b388da55c75d57cc11e58964db7fed3d5849d5d94c0dd397f90e00c11486feb80e9baaf821c038bd148900910389132cda33ea2b9c386bf263dcf099b0cd6b1a17e9675b7f1fe400897400012b7706f848c2df166cfadcfadc485d8705510faec9b16b7d2960f22409ab7e6924e84a31fc1c43ba2d705aab95f59c303612f607df6d4d8733dce0024ab7515335de88f563dfb17bbec14cd9e3085a1bee5fec9ff2c2a72bf752b189980117b1ed6248c4445971e8b0cdfc679cebc520122789ff4f94d10e8617313823f25b19623505d1c82c64fe1bbff950fa00dfb1beb2b8fec39d52fdce61361545c999ee809f2004924557e77e58061d1b649148e2c436cfbf62ed7ec35e1267aeb640de0e02981263e915242008645e118f509e599ba8f355d717116cc36fca4507090a955649d7e10fe4b46357c6dfab5c61f6fd19b82becf5c3b0ef54480a27da8e731a3ffb510f0b56c29fa71b6b5c9a217dea6c171549bbb7ace34771027b91acad75e9cf8254fcec1412cd2ebf4f7757eebd491abff021a59f33d4bfa942b7ca51810dc2ebe6b7404cf6bbb1453537d7c4826b9baf2112e5a3435c645cb97ad0155a6e17a22d34913c650a9c5fff984d13795ad54ae5d044bca06d8c1d7b4c4f4ea72cde90c56f46046e9d141b4243c2f35cabe5e257e810fe338ea416fb69bd2df72aa5a6720470930f6956ab7b7bd8efb61eaa9544057ccf7ac6e55b21ec8520f90492df5bf7fddb3e36b045eeb5a2718d92454fc8c3d469dc2b66aed0df7b176f8a9b627fb9bfdb4a9e8347defbb64eef8e3a3fb795f5bf7aa3fa490c00e03d4f9145af866820e7e7f674527368ec4727bb73f5cbc400b2250d49c0d4cfa880ede4f5a73646ad8898d390aadb6897d626a236050a267a32a32fc41d88c4429e8f6f8aee9ffec701e867dd7c42b804a761a1b490225dcfe2b0f6241a1387ca3655732ebb1e78c07a1077b8215221edae7f63c7811c1497fff33277054f6ac19d5ea4b64df85c588a4fb1d2521548bca8b8e05482e9e0c55699fa33a5c0b2ad06f0196675eb417d07690bb3efd38735fa4ecf464115853d03175f563992ad9cc6bfed1bfd10eead3d4238d1f2e90fa6204f17f17729b3124f1d03b6a7e5ffb88bbea065fabd3028a0cd79ada08f3f2cba2ec0312fddd0eaf6e085fe073c6095912d49615a3740c5a813ab8a310a021c54974948e2d016d33d94713da7e97baa1e9b991cb11c859e7688da85fffac4339fcb71a997719a5950b23efe56dbf2238537fa8ee3615bd5897a6ffa275fefb985a8a446d445fcbf28ce8271421581c6cdaeaee906bf586d31f7e4e802e21dcb1f3baede58cd401534ed9f0b901d8a5b06fb7966d37d9aaabdc84d6d9cb84f6d2e1b2fd69e13dec03f5d29cf43c3c034291a3d761ad542b7cfc0a2d9cc4cd925f71431b0309e5a9d14fb1dc4a8e6c5a882c6071878bbec9992d4a69efec3bb4b43abc6501ab1cc1ec73847c252099005174864b8a2efa704038e0fad8a8a47fbb5efa4325b3656840670820c6bb9658d83f1f273def5ca429e8f77d22e3f551444fb9e0a493d59add3fe46965a4652a99e4b4dcc819ad8d7edea040aceda0cf3defe65beed6ae55b91470af2dfad5a560edebd1a95ec2319f7ddd531376f6ef8184813f8221b620b9d442ae3933225fca22b78f36c634e4034020fd42fe3f0baadffad50856bc83f2149773db9ecf77157cc3c8ae2b30a60bbfdb7fa8b0bfd444c63ffdaec33d5e41b21f1cbd1f323a738e09fd8d055ca51654a8cb807fbe75626e0ae23c7d670cde3fc6aada1a33d055119a382689258b019a081fea0bf98297942c190f61dcf78e9b6772d10ea23253df4792dd414cbf93b940052948dd745cf1053d5fdf69e6559cf679496e0a4e1b981008262d323c6b8cc17f753378bd5a176576c930e90cdb23168d9682928a56d8e7ae3f4bc32d6d504617f4300ba68d6e0d1a14aedf84de0b04abb34ac4388f46cb8d296cf374039086c6a6997b6924e7df6113ff1432a345a34695c9af9d9354c0306b948570d9e5a1c5604c458ff645cac2f3b84a2940191eb8e3ecb46bd9bf6a386ee726c98b84b01bc67776ea601e2ac61638999f3f560ecb2cb3cefc2968d6ca3c37d6347a7538d822ad2ef90d7d643ed1d0e0a16edd13c333eef008e0d8fdc300aa7c554b38f85f9ea47fd23a85b2e8f46be3e918c019bf7f5b169666c0fedfc442374710dc847bc2bbbf5666e2624584c7e8477865f52d5f09b66a5f5b72419ae7b4a4c6428a9a4a0aa9ed1b90a4adb658b6df90dd6bea3dfeb30625353e8d6b391fe7b849cb81b7edc2266d906e9dbe40b12470fbdfef08eb32ca0f5a1c0607140560a3fe46acd19d1e96adb628230be5f48f40dee0e8d8d1503311a3df98a3490cbef2b344893ecd7901a8d379b2a76508c0292d8fcfefda23d9e992e97e66f20550c525459e6459482780654a4a70ee7a12afca2d66d553ccc1876d3236c3a7898526393abec1a32bd4e84d9f20b779740469db004eaafb7077770b3cc62229bf1f8cc5e9243ec832ce1399aa87355ce98bde907b6941c9567324df0a3ff1cc87703c72c16f8d25da4ad5af0a4f2e926f50069837c26bf1125a2425c977b27749ef7fb9d1ca313def8e693741b8caa818207ec08701e460afe71aaeea253de3d10a1e662146f12812c1115bac25dae63f8d86abad54bf3c135f7dd4d401d3bb88c4124bd97f7ad5ce95111a50984a3398b624eea2cd8dfdee89fd31496ff6ab66f32231287e2574e16b0512e68e2a9dd11f56e75a6d163e01808a5a8d91078a90b1bc855bb72732a76e765c8c6d65e34be752206c1ef2e89bdfc28320089539012f567bb54c84fae0f208be07e3bb843d52195ffad76572417cbed9b9ac916e4275373388eb24572dade92ade1dee2816fe963ac10cc1d9287d836945755c2517addc2ffe1e50c51dec2224119b943c6846fac9ba1dfdc7de3ee2b5fa7fd47634e7b6b548038e9e8dcd1dcfac91f6185de7aa1a8c8deb0b3b79abb10124a415d4b2991705823b394c08facc7918911e2a0ea91d630b9cc88ed2a42d32d34f1fe54e997432fcb353e1ba6c04384dea11697c3f3d86311bf3ad896f3e1569f6d898407e70f747780bac04d56b32e451380ff1fcc6ed0ca5935352ea03ff8bc9a9af05274ec8e58e8f10ea366ed8636aa1f489acd033823716467ffdfe88659b1f6b23cf03e07a25f14e7d6bcb7cc656eb2e7a0515c23049dc0fbb5450cf909a2f625a206f870a3d5eef4395c4a8a7c0cc30b5ba4d0fb208039f411e6da3de028cb71cbf45bdde7dd07d33a76e0eacd572e0aeee3706d561f33016b9eb4a395abfdb1a76a53d3a2aa34972c71914aa9d5d9644c6b05c7457256273a261bebed97a8bced6f1c5bd28d996cd713ce3d08b3af87b205aad4df5606676ec1938613c32018987ee13417415ac94542a6a9bdcfa57b7cc3a39d1abfbbb392d64d146709008eeb2f6b6ef1be87112395a25e30f1a6add08fe40ef81014ec620c5d6b0791326235d66c304f269431befe42e823535d142c3421161707899b99ca3acddd103e059d8d6ad4c0438cfed8364badbdf08c962d2b7e898d72847fe97ee89d65306114cbb30bab581518f7c006a97b308b350630896860c133402f836680784c7dc574b357d5adfba017c7de93a7537b3232eab124b0e453cf2f0b82ff5c045ae499e64c92b1558fea1731ee102f48b709f0d4e9d41ac8de8d849cc304ff7b45077ab2b368fc447cc8b0c57494bdacc6ea982266dfcbbedbef4ac43a20848180096f0af9406f89705e91226f2d1804526302765f51a8b7e601e55b6e93206cf42e4c0e6075e9edbafc4402c7454a0eb89a1a9c3b9c7ab2218f02f0458fc303edcd4b8386bef5e541a9cd14c0862db74222f7782b65b56d9df50a76f400327966fbbc261c7466a30d43eba39a3292fa7de3042d3a4ebee7c23ddf5cb55216d509387a5011bd3cd4068704717dae3b278d2230f7ae1fc5541c0829f564a94c8acd96cf4dc953585c2de6a8c35b43571d47721c06dd3a48102f081f4773301d1fafac25de4f365df0fa6b50ffd78e3e01bb2637997a285a29b107695ac6090164a6d4eaa65b10ebe3ae7fd56bff5e3e1fa8bae63d01649ee223f4cd4b4e94a568663674f0b2b3bc8b736a58ca067f9d5400b4a036791a746d0ed0e12e4baec977f81857919e09d9cb44a40a4f1f885306096b210db1c76b73d192ea2f3e22ecf90da8deaf08997fbe781b80af5f8725d543b762057111da34ec68d2bca5fe0d2d9dde814f00f863ec10b491b5485df928e714d70257a0d0cb94c533ef458c1ceca3aaa85db0261c6dec6fb35e0c071676734219d4b455ebe3b4d3d3fa420ebdfa5c54d999a6b0abe5b973206cbebb02bc562794f00f62af3141ad85d091ed9339923531beb1dbe96658cb63e8e100315ccf826e2a98869554250a95c8f10745949ba75185d80ca4f18335d1e5727116008ab3be54027a99f37d2c6b65ed7684ea4da10859cd496e084aa033dfd6d06716bb72e1e85f25d3949017098edc7bc5760070d70678576eac8a093447ca8606b8a0d511a96d0905d54aacc3a60d7f8d3b4b4852fdc137cd36a38a2a8f7b6668830911c3c75d4742bd1ec0411e69b24ed8d33caa6c6d58d83e0e29227fa2bf604a6e3f2ea2be50c9e005c2d088098a4a1f18f8f0a6708dd9b3d5f924444827c2b0a8a7373de69a8c405cdf30f353ecce76bf16c4154211249ac061c479ad3ffd2fce310c28dca998249bcdf6a49cec642219100e8fb5045be2007ef0963f26b2cdc1a13807a0878c6d102a210c61eb51a618e7da1c6fccb90eb2d32f4f17fd0c57b5a9fc22c44bea284c0772861151134b724e3251f3dfbb25bcf1ac0f2288034d90e68c4f25062548eece4b00b7767650ef8b8f9955de74fb1b9516b34302110b07f03f4f5f553932fc628ddc51ccbf920853271d5c024c2e1e223efd20daaf533e7c6532ba58d6c4d8c5caa6dde1154d56e1819ab97a8f6564a133a9e797dffeb900e65e56c200458a7a6969aca4d7506ae383cd5a5aa20539de7c2c5fe7dca6d2dbd225dffc243f47370acf2adfa44f723cc206a1702542b6d72722a1f81ab2fee87bbbfdcd1b97dd1ed68f970180c35f4e193a61df7d837833f7ec2afbcb70b80413bc60601289374db927311dbf6c217efd06f510aaac9ff2632d4b91eba7643c573a11ad224e4746082c6247724cb74eda4f92623b054a763de794f60d68014e0f45dcf37d2a31f7deb54dd7831e0e1f88363e515e67cbb2cbecf9a56a7692ca224b03452cb00c08b309618d9dfed4aa7953810b43a345b2a043bbc622db51d6542e4ea2b642f4135131c94506acbe65ecf8d04f54d8998f5d4db09a7ab213e9f75986e9ea87e75310669c22da9f4e4a7331011438971040e69d14d425a2e8fe39901672b45ae438728298fd2fc972583732c2389b29bde72928adf10778e719a95e2168439d133111f12774cdb444c76742a732002f0d14c04791bd88e401b800292f46ea56135d57ae208b19b42a39e722f4627dca22be5eb0564322f3b8a04a74f2a8520e562a5f3ca1ca8c62a068df7990b7772b6be2c1c440e6b239c0dee46c0063ebdc177362e9482325d4c23cba19760faed3c083c6d873bb9be56be2da0dd80283ab41b0f416496bfd319e940781f373da2df70536c3695feb46bd49210eab0df659c81f189ff0977f0865c275535b537a076a69986bf3dc07f8d829e02bc6fcb66220686776251cedaab5be0fb6191ceb86cb71cc250cd15997357369a2d4efcbefe1af8ef05635f6121878aa576bc0ac30e6d600641b22138341cff5bbb878072ce2408de17bcd953434f947e43a42332469aae30505c8f2bc002a67a288b573aa3d342fb283a6582d44e129d82aef858ce1725f2def07a0cc9f230bc549f36169db5b9576152b4401bccc4bd66f461432196f5ae973cc6327eaf35af2e8f0b7d8fed1f33d5d3edb69ee46b284629dfc76adbff4824bb5371f8b2014c4cbe87b1ff0ecaebf4e6df2a8a9366a8c8fd71d051cd2154ec7157a1c08663bc74f47e5e71141e29fa13c0fb1ced5e1b3f3980e2db9e23eb0e318cea5bf718f078667bd71f8bf3b1a881c19028d53d7d7085d9f3bba12a5d2788739ae66e66e2b8e87835f160b19473d290edca376b6d82d2778b38ba8ff508962a029e729641c69e08ff6c78a45741c90af8a119d9b030305e8bb1de41a7e59e0187738d104231ef5d8e7f1736a6d1e69911931f649d74838bac3f8cb7baaca23a0b09693739c7be2c8688def38320a92cadfb0289cca7fe67eb6af2f407a034cb5a2dad57e7e74031086994bdeef0bc2ef0fc63461876d529ae2030d016b1e7538ba5d6a2cdef8c6791346a0e28d04b3113171c33c44f8318412a2b93ee56cd37ef8e2913e0e95bf4dfc03ec722183fb424158cc873b0735011f0cd945a309246ce4eccad78d2db8d0c5bfc80173bb96822103ba35b672d5d84778ce21aeaa9cac8c6523cdd0e51902666e3d7c0d041303907f7aa78787d600c2638d2c349b1225fff62b182f02b97dc87404cbe057579245323d0249fca6e42a4903ef4649bd9a4bc1cf6bab385463072c9bb7cc50c540f2886bc60f7c1d83dd21445c501e87db94a6066520daf4238ce9916ec2b1977893bde986806edccd5747bd90b165743ed29908c899b6405ac30bbd7f32356faa910044c21ee4817c6a0a1a9bc38618e1d6d2987706736051dac5cedd88f8bfd311f59592e7b297cba902d672f9c6152d3a06b78603a68e024fc39fc115ce59d550292adb40a5d7d910ee4bcd60843f08fb15be884623ba0935478e88f5aad4c64b514e05b0073c08adb39a93572fe2348c32cc282ee3927976eb6264fe23273633a2399c91d80f5ddf7240a558099bda6538a26d74e392f888d9173dd4c3f8d1354055d9fd0490ec0c46ba21437bdd186ba34e93e4f2bb5abf833712ca135bbeb560befedbc4077fef51e619ac1a03a7e537e5210307791b6b59fea4f81f40065b9fbcc5cae97b0b536bcbb3a06e1270948b628b337f96815f64a90d6003676240ba050c56b4828f89d52bdaec1207af18adccdbfbd51285613cbdcd6b2155d5817733bc8cf2aeed635300376c3466dae272e7085c002d3efdf4b3148da345dc2296f5a63d3e38b97e5471b790b6145f1995402abd786e9a635de4731c3535f161cc4312d18dbcf59451061b963ec1050c1b3b3dc38060d03fc8b8fe248e6b299a0bf7fcada44ab24d831d8e0c5c12dceb239562cdb45bc323e2107529b1f2c846860828005a879e0539f0a4027e349ad89b227b1e3935dc6dfa850cb987466fd227bca12f59e840191e249c8b4672c9d80d9477ed6454196f013453a172249a90e29d607e0eada4fa6da904d600897827f4f2afcf471542568685c0f74adc1a3afa5e787307e42eadc38a74a3115bb569dd74c7f7f152dc0c16f29a21ebfeaee34723a214e2a9646bb66279aa2e7944b9f157618f3c4c1ba3339a761791d367b9826829696e8d61ba8120ccb26fe5d2e0b04778462422f5e074481d183e445bd249f8742f984a3f83255c701f6fcef79281b140d12cebd7f52bf3bfcffa1b80a22ea37448f9fbfa73cf2eec0c983e60213c96ca7cf19b4179592aae351023cba0dcde356e911a9b40688b4701a89e419240f294e9586bb6f232549d5722daedc9836b009bd172b39d9def01329afc74f163457f9a6b4cdaae7c8aa6e8eefc9ff25f1043c967cd5516499d4470c500ed7f51bbd36a2ed8956c208f4f80018323eca33224c8c2aa1e82f3950f1f2e6334ac45aa451a74eedf2fe0f973406f4ca4ae6ac9863d996a22c914dd0d46692ae9a342b4aa79d7e9cd3f5fb3c0acdde967ca879fa024ba784738af01dcdcf0c83c263f9fd38fd069b1664226b00de29ebd4201b2aa327de3ed6d0dad43cbac4ae1560eee71c4666e875aef61a21e56651ef441ade4b89b7c2562070e01e3fe1971acdc1ef1e4811df027e2b22ba4a35a8d4ba7a716166c780cde273de241feeeba19f4235561841a1f5c9a3122d03da2345a818a515dfe44619c607e85dc67bd0b33f1f0b018d32f81662cacd00f1e0d5f09d707a144917debe9ecab5d0a6a99c78d4467774bc9de286ff3f4d9300cf1f469ee0927a1b0dffb54fcc0a9035a1f90123fcb7bdfb3a3ed6ebb66e1262f2f04287c23e1cafc2a5b1ae1996d0c844bd511c82b9e1f7c71f2561f81f9bead1746016554c80e8ed78b435d3698b9fc19c15803468ea7ed1aa5752369ddff96cede888b4269d74a1df10e91e36bf45cf67db89abeb8c3b990e5ca30e917299ce372d0729fbb842642878a126feb6448ffe86c6155519bb3f2152a852ed9d96e8186213786258398cd60362871977e50e2dbbf4f77d1b957b49fa20013790374992a2212809471ba9eba7c7b8c81e32933e9e81ed78a5727fcd4811bb45cf5fffd8e27ce99391ac4ecae67710997d532cfa2c0f2899701cd5a3513b7fb6e0238906199b8f87c1ae40822f9e1a1d8aa2a3f93929a700c760a370590271ad5255b03eb7612f6d985c17dd8cbba0b636aea42ec2dba4537cc0d9a16ae4b5210166077a336dda9cfd35dceee8cbe99919dda10f662b8e4f5b614a54e55184ba350b1575bde608739a7abad77fc9d9bdec6a2865d7c86fc7b96dd275efacc88e67341ca0923cc236f779b7f8c8b5d57465b219afd773a0769fd718428eb2cfbeb91ec0f2dacb07e25503e687214c28ebf4055ce65f3b074931f61568a9b069a21afca26438bb4d9e5dcade033af835865937338ac1ac821a3826da6a086cda5e29e2ace8ba3315b6f8b6772e41f8b5b8325fd0606f52f765da56d3539eb018e18e61663379f51378a46ed48b412c387c988e5175599af2d9019da95f393bfc332de8c06fcd34ecdb02665ff12a6582491e38cedc1bb8de3838d279d46e6fd7445b19d01244feb7b2004abb0bd396ef2fd776a66eab67cc3476d56ecc0c82bff762af20f594bea40d0d1b80dd4f283458f1e5c9aab89909d55ac1150bb4ceff403aee32ecdf7d74d8797644ff6d6ba290f80bb1de3fea2353db0fcde4f5e120d2306ad8d5488c1fc47ba8cae2c42976db18f76a6557439cbac840dbfbafa8889bd87cfb6a6865757aec1f3c0b336834a2a13c1eac29b951ba2a72fd770585e93d5b0ff99c91067b2c5b555b6b74bbf41de38e374fb49c6e0de11925d0dd417a99c2185466e273ff9523e59162f8f499f27ba53c9d473ddda9bc1f394d9e89ceb425bf9e1ace6fec39c4a3d4e5f3433c59cd9f3eb96b605eb533ecc95c974e087345a4f383baa26181f832b22e81fe923c3cd6995c847bb11746c40b74645435f8af543288678c02992a7410fb761830c18174717167954f0f6eecd80f5c6eb4015b0ed1b292c3dc1bc412aac630d0ce0cd6d8af5b5384ebad1cc258c2311d175d3921b64cafe2c35ea74636b7f2e50da2af089d737fbd603e7f03df7c440d132483fbefdb68d7ff1b5e2ac2fa65cac9c06102d80b5d4d3a736980c88f6e94fc12a04a4f9595caf038a6f05bca91e6ce41a77bd3542d048cf84ba911424cad960cb91ba667c927b832e32d15f514d399ce0b0ebb7f241c32401aee62cffea3c41e4096b09ba1d51064367313e6220ddc77c078d94b8d7b4fe6c3a78462a78b9f54e440006cd0d96ffdcab300bb6091b6194384c8ec6077444d8a1f3553836b7f37cd2b35160aea098cb8cbc1c7848348d58f145c75ffe61638194e84830cbb061d8a3473e1a900e6d27a15a0ba0794ce2af6e1d09491912ceece6320a03963149f6e184c5fe0dd0710b0eedafc8b8a44c4ea409bda523f6555b56104636056d3e16f8d6a5a57981b959ec060c3aa08661974f374726417de25ccbdbc70741d46db4e0f0ba9642ba89430741c3a0cd4e1a919e7b580ce5963719bbdd53bc78fdcaa192d8113ff5f1574c161b154e05d512ae51fbb6fc0c3cf8377adf80d699506805573ec4404c664121b4038af99cbb7a020ff349d0cdb1604f69040bcf9300a549e9d7a77ed0955e047df8887fa562d453aff2f5f009839efcce904252a619073799f6511510a69db4e51d66f33d85fab2f4d7faffc8ef4c6a206c5732570c95ba3411157613a9e810ccea918ce9f9768a56f6a3a3403921c2407ee248a7bbdb07c4222baf60bfb0216680cfa934d7fcd6c0a9468e8845b60cd2e64eeb329397a19d9c6e19330c0252be16149357f0912b18ecd635ac06596e05cad1ec3fc56716daaf4c29d00e7def5b584722071dda1be2fc3b14accaba15ddf001807d505ea1e89e798c0895e2eef690c164b8738d8dcb020908f4f0826f22fcf47487dfbd522a58fcf1635c88ddcefa2bc646486c3d2d04410ff5a9b12dfd340a3ddcbd642c4394eb0757e9a3fa850f0514d4a47ae8ebb18a252492e8e9bfb644010de35b8dd86789c2bfdadd1c066ea180dceddaa2ae0d3923019efa276ec9cff4e9081fb5333de22d280d969400ad7cd1f406dba50011e32d0208ee5d6c88a83bc1456d98a48955f1027890efc24efb131331514256b9a7bbfdb0929966f3a9966f202e25e9bce5f85f34cbc72eeed5a4359cf0e26ead634d2439d18836de3a5552c8279941cab54e9bfebe7b5d1c2dfa33514b43f93d29d893b5ce23c2cc078c972ba1fe38fdc5d72f5519b7a9ed75aadf7d6580912f334d3c457d3bc0c249e6bf011b52c172967ebf0f9ce105ecc689c3c0bb3b77614ec62a060ed5c4aa3aeba2edcb6c3ae8deac7e00b865aedc9df267ae41e1db9225c805331bb46061bad8320dd9255993b35bbd8306da9da98a2739815ea9e0c911a09c59924a2612eee2bc70e5bd37ccb35cca036a274df12faa6ca1e017f8c0d554af6d81189087b4fe321bb4d5c52313e991ddef15042b92991867f8dacffd9b4187e290d1bf41a93eea7d3933c52d3d27058693574024d83fa12bb7074a8fb933c8f10e470a1b2da4dae73c5fbb2b07b1e6546176f5c3a295be38cd024cbaede0d017fc3cf122f26be39cfa38474bc7a31fabcc487f699d4665a1b3182509e412ed784077b253734d398c3a5da3b9ba4c2cef176a0d08bf3c0d7063b14fa53848ed6a86d07cf9bce5b54990836e7d59e5c15ad3409a49f93afbf34ea246078bfb51a61829fae9445f550d4ea28f9b3c4a4cde03e5ef1d3778d477be7724e83c372bab062f5c7552219888981dd1232f1c24327b236b0eb3aa785b526fc216b03fb06db1205773307877830507fc55051513c2829ed538b84f8f387c561f41c56a2b05f7259dd3d75ff9097d666bd2a3f2ef754062d4c3fa5bc4ac708c1812d55f3fe2a4d145891bd3e7627182dede750b9c5e0955b89ae314a71f4a577322bb473e3277fe109f61a57b55b91db56ced473fc491f402778670d87d803d9cec128e2fe1da54ccd118a23cff55619f6e06b19973327f0b346ca0e10479f2278c2ee979c9faeeed70ad3fdfc9b6f876dd497a65ea4c0d758d0cf2b27b06588e6236cebbf0228f0b52979d0e5fdf4e2543b96368bf041cdd1808cc190a8326c361e4d3d78398021aebbf9019dd83b26c5e4f6bc581a9b55885fd5f3019fcc9be780806f965b1dac06df8038651341c9aa41be7efa602637c3e55e360f01ac4b612526a95895a5d0266934f7ca5cbe1533c8efc64a0fd2da014bed3bd13a384f2ba994f283f39f785454749afa60c1cb77e7faea0c769e617321e85f2bcfc465a11edefe77ee81779f483685fef85ad8bc62de67de77f8d5d762e57f8b8242db1fc195a0a813b2bc356d2c9b155dc7b4e6db443156d32b9c13602e9832f2726c2002459f4f093470e330aadb38e3b20fa70d83bea74a309d42434b62d18c726a841128b04e939d7a655383712be07404d4a966b183ff3aaf4c4aed8a3c69ce5a9c18285dfa0f02380440f84f49aeaadf8d1afdf667d84e73ca772199621a563663efc7d756ce543ae916f21106d3ac44ea433f72b6f102b796a28d47c31cb1ad8f3e062683fea0133f0adbfb2483a811083d2712716edec83d9a2ef4c72eb6a4ba6265f9735d9b211237dc04c057df4f151b58fb00337c15901c4fb49b9f92aaac2037963e56ec9290ccee75946436729049d46d5156427b040fb1ae34f56e2960efe1f1b4f0486d7334dbec6b58acfee41bdddf0f4d166669111a88513eb9c9342c9586c7a8f76ccd291cdd6a69039772fc7833bd8f35ed091b97f1bcf56253af55f3248446205784240a0378542676379a8c940685bc31c9ffba7345e2c2567a76a3b8ded037613d709ac4364412a3fac940d25eb28fb938ba3e0e8df63129a4eabb3b75aca96f807bbb52674212a836586e642eb4f99cffc6070c15b0d9e382b6d9e8bba8a17425818f46f4ecc3ff96b017d55a4974aa44934868f0e069279461f623a028fc76c403678ca3e2283dc43aed5ee12205ab9926f4141e7306a311425823a79b7c3f02488ba2f6dbe261ba441bb7639434aa0dcf14822b61a1b7f323fe48b4a4bfe4f8aabc04f4c7d51017fed636d7cc68ec9874b03b79e8db3588d0e93f95cce20027ffbd49cd10939187edbf7b4fc73e17457921e6a226d746b4d51d2072551ada4f6b90cf532689d3741a44934f7f2d908483cf71086978c44b30d0284d2ccddbf253d75f3df99ec36a728d056978ebcd6953fa04ddbfe126e38051957d8f018397c09e05f2ac97dd4a79d149a094f8f8ba22ad70fb284d4268ac5341164b995780ca9c9d20b8121433dea2f33000bbbe3c826ff3d214f1962a3628ec4054b706793453a01f0cca0c096ab04a03193e80165859c50e5529f01bef47be8a1f47e038cb0c70483ad20df8983b3753211511543ea3077835eb184be2938004b761293fc527015657da8b883b2ffe940588faa53f70e4c4c89ae570fc71c43686e18d4b3f5a8fb659de75ceccea5baa5ce7a351ed2213c255cfba16a6129a5f117ae327199241b127074d6c63e0e24a8617714e885579d7636290b5af98b5c5e4c17b7cbbbdc2a83e3f6ecde6ddf89f3d1a09e6b3ef512743ae2c697c67fd1fb86e873c3b97edb0bb57d9bdae49b883963aaeb08486d9ecbcad5d2c11a40b51290171f70d3471ae011bace90502e46c6512322c97d50047206903ef3899673753f0de17b8207b709583a84aa134129ca9fe64ceb1c6c5aba09452c3651c16a0dae25bfee22a7658c9a3b48968aa0214933dd6c59fca3db42ef7b747a30781917e7a4f54e263b1160d2871ad1cf967606ef8b19cf4adae5fbd1852df5c00ce14d7206dee2ae680eb2ae25397c36a213418e472d49da62d767dc4bf3a58b3f08c507110de902f89d38837bd3a19764be6239c893a0f888884115a025e5e6274dda004bdbe71530972edd229cfadc98ac4d10ac259937c1f355a5ef77ce345056da9fae83c428df240ab0b29b180ea6ebdc05ac1239dbb3f5c658a94f78da101c476ee3db8d483fd1e188010c1cebea33e5b05881dc9a942421409a2113130ff8a025e4241fa1257ffc3e840acd2c44d7de3b28b3b5cee0fb12e36dbed10ac572b798e70b3956b736f708a827834f8bfcbd0ff6f1970ce30d7f2cd325650d77cdd3b2a5fa93c92bcab4627b51a543eeeb2d0cadbaf0319f3ff0c213b9883b373619bc366c8b0f846368988d6e069a876972066a13ace6404478f725a87e363e94082873ed54408a1acee6f735e855bb232fb19c7f9841c75bc13a7b4478cf91f8cbf9291d20cc6f398dcf121ace7652a6b63669f293888dfa50510f87f27ba8d1d47c5d66f7843511b09562af542917e128cf984f85f74e76f70b89c10798fbd5b8c9cc2a292d2abd736aedc3647e97c25078b45ec0dbbcea298fb713f7838f6ece9f58dc21b6de649d5882300e8a08d632123070ec0e2dc0881a2f74c21864704d8bf9241c5c2c686ff16ab56897df6b784ffcc2c746cd565e2c39cf8f32e3cce747f34efc46b0864b479f1cc0f8b6bc6c560e4a626be2de6bdc635be76124fb02a2dfd9244eb388b67bf9ba95fb3dccd33cb2ba6670d5c8dd0006e752ad4580981fa7550f46a28ff5bba9fff8752fd0b9684937b6c88668673ab3ffc8f67c782760e4f72bbad00062655668a4ea2cad15a900f349f9360745b35cd496fa965634636768b6debcda3be7f0dae2b3cc3953f0387a1f741d2813b60ff11bab97f0ba3aefdcee97a685079915e57e411af0065ad9b5e4db3f54cad4b69dd38673f7def2f33220cbd09f21c9dbe20f87636d1a93a574d1ca94d3a8266b600910a1cb2a02e4e5cbaea92e3b75279984c05b57443809f6da50a5791241483e08334199404c5bd3be2c55177596e7aacf8f7e24f5b8566e7598d3faea43a2ed0dcbf7f2184f6cbb8ae4ca3d2928cf87c8610d88ba3de988e171704c6213db0ed435592abaaf3317671b52a94118cf20924a0e9201d8facf0bdd2b4ba4d527418b308efa92403cc0942e7fc5c305de9b5e42fca8c837b7c7bd1b2e1070ad3d585caca2f1f60499960459cb6ee04ff6ee04e6774865c58c37392327800e5311bb641287cdc09a140157a2d632fa88a517ac798548d22735dae3de34b60b67375f1afa8c436abc04629ae52b4877f771c77dd244d104306c8f57971f29354b699f8034dfa1b06669b3de270f9ad94030a9ff5f4cefd9ec2c29adb89e981403890a41bdc2d46ff55bfc39e14afd79d78c18b1a34019894df5c2b6449c85169cec7fbe82a42b91db9881d9c05a77eea421038168a76054dc1094ae1dba38d53613435f8dfdd1867d69492f8af6b26594d64e724a9b9cb882a9154617bdd56c2cb2a35e2eca58758cfeb6b8671fc764e5806b47bda78abe238b77e8833412b3e309bd452ad7204b32c78f444def52b48cec923fdeea7dd0e83fa083db121efc87a0d637c052cd8ba2584ad9867612e6839c7c72e5a34e19428eb80a3b3c602bae18bc872c166931676737abce0e0b22c26cd0936c2d32454abc2f7d15a93e9b787ecc0e7dfe88fb133b97e14bd6d0e2f0376a4c72711bbcf719a1326ed226a530aa7cf7394339ff62a274fe35e8c3be1c4ea2a7680cb3636dc10bf1613c5efcd85e97da5f6824d0ddc968fdfc1f2a099e5e8e5bc683ad1d5be466829677b7d15fe4d278c9b637afa77c13bca4d34b22f3dc5321cd0a1f2ef526889b42fe9c8598f75fdb3fdeb9afb3658b5d28f3681b4f8514718bcf58434a034100898543f993e37d99eef90025687c16b4f556ab272a1bca664203dd80f1e3a8680de0ff5c3e8e0347851a312d5dfb7c354b4d42a59855b82b220a4eb39b57cf85a952ec22d162e0b966a9a87c0a6501ba89512c7450c0cab5126af1170f686507d7cc3a48af3752b87f5d122eddfc4e855be4d5c7e47e78bfb3e851d29eaa6f8a44482551f43d3148d356e6a499e536d7b90ac0e1577e472f8215c66222900e233ffd5d1d71dad7f81679ebb533894d6d3b3a67af1c709cccc5b57837a6b644c88c80576f133b27c73676f5742b31bc82785fc047687f5e84450646a38339d7bd49cf17757140c93b15749528ddbbc75d6b6ec00abefe27439919f9e9b813af86bbc9b6e900f3634a14e920d325a7d3a1e8eb9b018f40f9e30ff4a1c28797ce09207502c79ead4da23c3255f1dd8ab034fd9768d9a5175abcf724d43c75c49890ddd6acb68bc86bdac098d4a1fbe93cb02fc944f4d7e72c7738be9847e969dcde4ff6e255a88b0cea698c5459e7232a5f771b8e7e60bb189a280afd62e9b7f3576ff1b75084fdb44acb13b8b85a2021398cf28b5738d88bea1d3ba4788b828a8a8f1a21f4f98ed5d20706e6623bf129c7e23821d23a8bec47de92852a00b1e8d7171cf508dacbb4ca73c20e90814dc456e3e48f81e3b77467714a3e8fdf0e1091096df86efa77c281ff605a8d32a7adb3f2e57467d70da9e9b74b36826dfb2b2e13ceeb019818890801071145807957704bb8775c675689143bcc19be2fc5be56e8dd2eebe7d97d65aafa6f3955ffc2ea7954867dd68b9d1f503391929816d35fe00b54ce04c0331ba4a102cb0b8425d014efb70a870002c94d32dcd1b81fa196474227426c9ff964ed9716dbfdfe7205bd3af9da4245974a39267f80d41f20a85708e078dd61b39b79e10b2c890574c9a60980ead0b2f50350e8a4ef3d1001d43140b39a4784eb11c583a5b96bc7e32a6f330c77fa203ab0b78a14a5b306107eab961cf7ea158751b4ec05a952a3607becc3bcd921cf947fc71bbfa034b12a081d9983264e03a4eea65d7a1986c167c6bf914abccc3691c15e2c38843a869c54391e01ce104f90eb1e60223df858202d66ee796d11aa51e591d082685251c0d1be92fe665966475fce8783b7a68b0a35e67e0d849cb69ff074c7fac3d44776180703255513892c5b3554ca1cca0cb05ffbd509a0c6eda06d11d9897acaa93799df00f91330839724a27cc8ecd8604ad49512bff2b4e119957ed6e38c7c2556e9faf1ced9a576653be225b3270cc8ce64c06ae1ccb45deae96d56b50b6eae11bbf11bacb1322dfdd61ef0e9a8a3c7699c8f8b42bab181a4701afed076162f5e70db4f6a2e5e1063cafdcf35091486fe442cddafabc010adadf81c2e579f6891ff11788a753e2f421c9b4676902d2dd50c2d935976189015fd55943ecc4351c129b5eeadac43e8e7edae2205414e70790c2f7b793a4eb334abac2dda3cf363a93a25eb0dd066aa53577633ea9bd4d06144566a8b7935e79f6c1c5f25011d9d20976375c83154721d2b326564894d4e1c13963289bd53ec72f53be952d769860690ad1c1b8ac8f0da255fff7e8b447ea6dbeef7bb389341480f5aa4d0bf4d978ecb10786ebf4e9f1bc4b5f06ed227d131fcffc103ebf7d50b5a4641c51b321afbe46664d6b75d9d9591588c3ac9fef2f7ca7a5d2624f4000165c934e3dec58d73434a15c8fbc1754b523f1ec84f20610ff97da68e112afcc01b3f83c491a882282304f2ab98acdd1e3f1f20d3300498b16c265d84f3e3398d8e2dcbdb9f021f2b63a349345b4c156759536ce248a42d5a47666417baf3d5f1c4b859395a14558cfafb793d76734d8d3f4f5352533b9a4dcbd45ca5978e5de2a2130cd9c612a7a6e395341eaded37c2ca254201446cfbe6a1e79a137ddfaccb0a76892ece417dd07ece2cb3ef4af902973ec935cc508fd3b03e4a11800af317f7120aec5d74b47d96dc64632b784aa8589a7501518d5b27b7c3a59749dfe452db53714fd4a18258dc3b68a5f509e2a731f22c5ed3ce017eb882399b93a41c50b72ef3b4c452b1740b762d781131036a9bc9c961c8086b12d9a24a3e7d5d1b59718f7cf30c93e0b8e702fe875c0859ccf83d7c191aa76415c18da90854f6b8568da1436b192b77f85c032505e65c5e0215f9809cce0b4530d5eb2a2ed835d674eb8d65510b242805bac0037d828fd42accfe1ace3026bff7ad11bcd2f86b7ab9e3501d6ec7f51f77310bd3e2410f166db69a88833e80568536073569d5f6d362591d613e9755ae5fa67e71fd4126e0734a40fa6c542082da0c7e9d9b1f17761c91571f9ff705eda525b2e429d25afc9a0f802972e3971560b2feca88381908e49492018c8de4f2b079ed4326de598fa71850c594eb2adbbdef74778d3e24b5860facbe57837219555c2afc1180e322fada2913ad40d25a88f7a7dbea3fe6011e1a0022e753f417ab0b2fad720bc09110f7002777d628916ba486bd71367aaff95c60566c3f4cf9094e506c68260e201aa7aa63b72b652ce716a319ecba1d673af950e20e082cffd2f1584a14bcbe5f64cb41212c62078a0c1f1d651cabc9f2ae7e6ad3099db115788ce9a227ad9eac65f2ec3ff89de0ac3a8a221d0e48288cfc1567ce441b9a238d46f72350e2f43fbaa12577b51df38043dfd95d5948f7232ec695335951f04decfd21aaeaf13f5686cd4da7081adb36718183f277531a210df095f910ab038f0b8ab910dab2242899159d5aa0ef2e9e4941aa51e3cf689f092007d69ea58316daab779b4cf0e699bcb1ef1bc39be11393167e9c2ab03492d14981f46753061e8e69bdaa02220037c01e28de383876ff70c100c22b10890ae4f5561d88cd02b436d09d3c686396fb0947e547eac0714b08aea6182d1a4f48fca05a192a73f28f4670115ee1c9fe688044976a913f7a6cc5bc5e5feb9dabe933fb7ca02a4a324f73d6749f1a339025415489fdd7f45177aae8fad6b3ef050efef77d7d475d32e20725148793f561237d001bbbbc46679efdfb753d329a8b6bd1868580c0290914c97f9cd36d4d944272ff6d3542e7fbfdfce0586886b947d4bf586d77358e850f03da3e7f68f70a74dfe09621aaaa20c5fa5f85a871d92ff6c2dcdcbc8d4222f3c25836ef94c797a5afacf7df49e5b464b54debdd8dcaa8cced6eb14741a8af88d7cc90eabe61b08237dde5ef567a87b6763536cdb1cfe3246733efebb16d9bad27ba462498fc285caafee93dc88b0e8452a8831bc76f15593d611fda6a12ae0a95735d0c928e0123c83ab121e6ef8c5f088350b0212dca5764fd0b083887962bdad9fe4638e3b60720b51db9e0f80455240be1754fc328d4b3ae3c9b99cf5a2557e66817d270de438778f02ae5588dfdceb0415379562cbadaf569c8cb001a6f5ea03a3282b7f70694efc6b2a7d69bb33bd33c6f8ce18bab7594d2bac9e1333787f3b9ff3641c46926bc0f2db64472d13f4e38652bb6082f51806576200463bb634346313d13ca3f3810819f710c7f48a209ef32ce6e2b9922fe5bfe2d45cbae31e17d0333c944d662b2e27f6367b800568c590546ca1f432023689db739ff514544eeec58adb72b3df4da50796f214944398ced7e024baaefb7c627fbd5eba2d5480bb96ae404d35782fc7137b05d1a105481abb760abb33f657623f675aa12241509455d78508f11a57ba4f7a10819fe7665257b459a596fcb0d3189973fb0082d318205cb57739ca7387125fc89cd0d17a5ee45670be8f15fc1fc1f52651097050678bbc78c7130137bfa37af46357deb94feff786145375e8525ed789877502fe29b23dfe7234faa20a9771ec8e3676d92c2602cc230774d5de5b7433d2a8bbe74a92cb586140c8beaabddd9ea9248016adde9540f140701fa2cb03ee916b38e69ee64b3cb50b23de8e73468e96155010abb89c717301807c5ad5a88b14ba2379277d301b0f9bea3a735b55ccf7ae29580589762663a7094f3c3dfdbac4f6692938bca7606c7db4035485959b9ceb2e7b6a35b9786b38bc0e9610590d45434c1e4e01dee984e7bb04220e4efa8e33f2192193bbe7b81369c3115719a73469b4ac52a813c569b97d337ac6448577c39d219fbf5b29b15bfef057321b5c3f987422c5368d55a2ca53ded7e91b49091b3efc11f5f64c8428c59821d6ce09d188d1b891ad051123c0b6a66a3359b0ec4dc7691c08a9d2df3beaab802158089918ac645ead06e667c81b099543516eea6fceb6346dadcc2b429633409406184e25f3e92813a3c732a1419efbf3bebdf404d96e5b4ca81036950ca4222eaeb62d3dfb26b35c74ef977d561c3bab6857b4ca5d226c84102a4068d72fd79ca20ed042e02f91db3b842dfa3cf6eb8cfd802152d7857ed7d78e5a4471702ae343700e2020fdcb8b684b0157c7fc32c295dd41e576f7050e3c278b69b3202aff620d6d3f8016c129d5649a0bde093a54836dfc785c8c3b230e1b8932d9bbb8e994fd16481e37d5a5fa4432a6ea375eef431553c5d8263e65bb790bbeaa0fc7b0f48a6d0fc7b4a5faebc306bc531aee36a0a4431b9da030af368bf1bfdaa08a5ec812eefb8abe06453e5526ac70a9aa68357ac191da34c6f025a9f11920526d6df406c6999feb16d47ed898bd345dd07b0a39e1ba8196647e9a7e2edf6269807e748dacb361834e7e2d24fceeb4eac69835644dd635d30ee793aafc00b656ebe1d578f5e752155aee8bf29890b63423a77ac919f8c3e7f08115521e85952dd78ef2537564e10bd1b2ff7028f2db633fec591341098c7fd322191f9db4471e191ab5e3cbd4671483bec9d356e71bdf7236e03abab9bf7cda60c315752e35c34319f986ee052db3050c426b1c61e0aac3a55e47c7d72131ee86164cbc5b246fb7810269ba4a1609b82db1d7da1174449bb2a3be97372e3b702ba187197d0198feb572754290725c3f32612a49591aefa04e112b5cbcc9427bda270d2695cd7ddcc9d9dd30deed57dd252724992ad9fc56d7735be88263f75ccd55a5f8224907adc333695f849b8f7cd425f9a0b9b6f993a2533ab19afff59a53415dbefaf136a32c04176419eca91355c80859fa13aac8344795899eec93caccda48387718c859b6d76b8550b8b2a5dc8309f791d5e1061bdfa20174a2bf5e18adf7a0c79fb65ffbe072f41124e146e89129825ec10429643cc26ab9dc0a0b6f1ec8fc6c5e12acd35da67d86b4ae0decebf6c12b381885ac5e5e46088db593e7a4241af53efbf48cdbb163d8b8508a8b9cca6bc34646d7841715c31889be5458c86fcb1d1fc33211a1da0e9968c85b6406b432ee43c9ff7464b44f9b578aa27046f19a53b1c9469663effa149b056eb70a650f5f609601485662d5a391ee409aac06d62a5fdee878900cf947cbd7adad200d7529601fb760551d780979980ed21998ee184f271007c98cacde1853c5811a5e5c6f34eaffcfda804cc31a1207efdce161f43b2b1d7d4ae875a9bc845c6e4595e32ae60efcd78087151df11f291626ec536a3630c2eeac3593379ee77145a92482ce9802674b85b6abe8cbc8c5b415e3fd3e80d94b82fddfb8167ddaef31a13a37579ebd423eb5289e9013db4a6a45b1d4f5cd2efaee63de4f0270eb24b1990c5c6e790a977cae27b812ebd766ff9175da24703a6b84f30be48d7a70011e6054227be4c7e3fd0e24954b5fe255c230c8785b2b1e4b6622e822e31a49e40bbadc72b30030746d60987e7b25f2e9ca7e74fab10530aad83a218c01dd8d384d8363548d6d7abe32fc1de493744ed2ac6cc24863784bfc939e2b98a0eb7f6df2494d41ee5b9f5e164b1ba516823ae72a8bfd6113ea8eedd92792016235a0caf71ad63e00467ecba15d016d52b210a526a7be8af3d26535dc1a01a0f2b2a2ea79c4c680a215eb63baab1590a0c2983dd114b387482b8c6b4f1f68fee6cd04846cd755ca3cc6ba15d5007512d8044dc0599d4ddb7a06c4981bee7fdf5844cde31408bc3137b9cd99ba0eb89f77cd3fcb4906bdee900ff70d5a2489a7ffd25d6b70a7ff18691e85ba57336c14617c9cec7061183d3d0efddaa42726b109076bb3231916e93c8068c02369ca10fad3099acc88040a58edac0b6430a52c118559b24be5053840e8b7f4454c505d3f5ddf95c6ece84c48ada6c721cc3d74db9c07355a30eb23f31e7db00553b88985cd3da4166d3a6347d4720c5196b16b4decc82f49f9dfb50ef56bc4520c953a0cceeeb8443758d5e1080b8d4bb83fce2c57494ac2a269d960146cba83bf751ba342e974a209dd721cbf2005bac0e2c5772d2bc8a01e127551acde53229cf6d116ce9e5914bb11a931d2739f5938426672b6fdb248af7b5d722e8edd0e3daf25c3108a0432ab820edffca535bce3a4bb1b71ff7f80cd1a96aadf2f6ea958948d065abab84dcaf850ccce442de3c72a6e1724d8c2532ad344458803092e58547522ab3580f4657e2217ed358c500c71a1806380aef3ffb1f17a3d6de56578cdcce16b84b60172bc0cb66ffe7741620e9cd4e91e3663072368529f98de0a5f94322570dbbbfed0a90df80f58c3ff3219a1b331dd20a1d946f8539e00edbe2b87695ea6ffa15b21daceb14500dcda6a8426cb10c2316fbab668994905ddf93b76d580e532aaa20f0d73219a2fb6beee65ded63cd72a8af0ce8007c748f47d1c09676d17389b0792604eed04b66fd29904198859a4649659ffb8ba86ecf17e9bfbc0196bd222d20cfd354128a51f98c8ea7d4dfacc0afa43abbd532513bb4fc69d209ecc2cbca6cf5ca50583d57443138971131d0d35bd1f79a81b9374068bf86f17dc6a36476a0f7324d7dca707a63af9e7348751d4302abd4f516f035d622a4565a100e01c1d81c635af6230ee19ecb0b6cd8a28faf35b3d3eaf4bb354edf0905bfb0391e01f03e0dd0adddc639d90a04d683dc64c4724c649a426fbe8c0647d889a566c847ec012fac608f47de47b987744bedc071604ffd493cffad7989f2c1353775400e959fe74a51ec8f5824bc8541f7b1f708bb186561885c5c9236e6528f7a86563ebc216eba7cfd9c83fc2fc7fb5f227be3d0bccc9461d15ad3ce592a9fddd7c8cfc39297d807f26bd7f23c598f55bdc7117fde855192697978d3dae893c5f42ed0b59a39902d6ffda741d3c6ed0980c01f614cf19fd8572cd3ba0f714dcab2642c7001f97a3dca662563d902e7abda085be10e35a237f668dbe7e1b2e6c24a5cd567f24298b24e8eaf6d3e621f3c2b296ea4f8a31ba348591349beaf896f21e799ef9eaf4a3a506f9c6bb6f38987d01f5c2116a597e3fddbee1c179cee6842ab4ace607d40ea43f821026b07001063dcccb9f50475eadff361837bb60c92c722e90cf0bab1fa0466dc12485bad0ca23be75087058df4931b4bce9e2e18ce08b3508139d1f445cf034009b4836a61823461b11f5b6bfe04ff6ccacba70f0fec4f389a7166035e1c985c93a439bf7167d4241105714fe4bf7a43062b3e55d43d63e6ff241606227b904916da55a6dc50deeff3d2d357e67beb5d24327145ee8721c10c91624e6d953c2100625b9507efb0af4762167e2d7405916da0d582c7e9f240cf5a93a7b14c76d486ee97908f530166ee3cd3d42f8708f6e91e9491163c16f5fc89cc86edef0694c8d416f6fd7d21491bf2c750b6f0f1ba31b38e844b1b3974f7288c94d442018c21d419e602228f75ae81d0f579244a1b520b73330bdc967855a395f1aefaecf689b5e390e0d618087502441affcd05112298b869e45383b6fce25529de4e8c3a3e3179b254cec91eb4572b7a2c98cc75474debfdd8051bebf3e16961ce24fc5ef17a049d135fb74d00f2748f47449918ae0339f90176f4e15fdb9e678d06ce5a3e674d78028cd0d4c5e9a3a91346d5b5671f4068f57b60fde755c31da32db18929a6175b701e3725e56a270a6a025747d9308e463ac419145606d544f1ce95da04778bddf340bf1db57aa12725ec53ce1c3be560a295ed378a55b3911c612e2a2daed8862917c330092fc046a005c5651270572ca739bec8748223c0f01151b05794e4c752219baf1e2744cabf3d538772ea2c1f51ee137a3ac1cce1ab8f5f07e0d53be0802f5aee5c6aafeb13004ce8f921abbe114fc560190209007f3d7f665988dc37c595eb02b450fa8d701319f070d68f884605a4e31f77d659aa803d8e4e180f1c39739cf2cb2f17062c3b782ccd4eb2c1b74cdae218e0bf9e757cc8c4dfdff0a17d36b253a9bd08d6e3536199ff40d6c334b105fb86c8315d48b8f410dffc33172105c9bebe909439a2ba224523df854af676251fce4ef7b982059863db13d8a5de837cc39846b4bd56feff4172c069e9b388741d5fe662443f558f2e787126edc58766effb4837368031af973443f8dbdeabb68c4497009ad358604273c386a7afc5686b0d578d9ccf7677a429bc90a0fc863cfbe677bb0b5be0db9a25896908f90ba49e4c1528b1392d5519b7e4669ab22ce202dce97ded20df2683ecc9d4af19f6431172cba497ed13292f673419f7da02d56788f796eac6041d0070bf87f90cd869c865721a5c61efc3a929fa5a4d3d6b7b5e54d9dfe793eefb8bc6dbf5bbaeab545b497154daf55bc0dee255177c9325ed0f45df4330ac3c4cd4a7d076b93e56739ba6d5ff748d8e35db180427a89d45b95023a453d34979f74b256b1441b26486401dc25bfe59f3bef1c99795dcbb7be4b985a0a66f8471e201162879c49e8fe503537f58be12fc0b30e37e79851e9609fcc13d64cfac4623a6a8ae262eaa765c89bd82193f57025a06658ed33a9aa9563ee76d7504e2d9f996854250a59642b9c00719a58c74140be0d3d92f5b6f08170c99f8f66f79f3a4058478c28a3f0f3274a8bf21bc9c9ae939e0167e00500b69c1f5669333bb70afbff63e68705d607b69aef63bd2a980e1b7c5a8d0d8001290ef724d9d4178db861789f29141a743f99514eb5807bcc0c254a9a2877fe762746fb8b595843564c2f21b52cc4df4c25acb4c6c8c539593db65ebd85b22873ea8ac28e5609f892018e229e0d99ee9a81130a58a08c9a554aebff55fc0477da82b6686e252f0679a1b3fe90fe1d7a2d3027095c864587c24fea574bb254b208d1e9d028a1ab39b9678fc4725aa49aa60b8d6543f11a0bfcb0e7fbd9296d7472ff0fee0fbaad866b886d1389d21714291fb8c84c9e4209496d78617e311f3df9a19e0aec8069e46b9c5de43659b9005c5a9715e1deaf6aba636e51b3b0d325ff1d230d7a1e488db68171c5805908011d708030d5e8437c68cd07eebbfae51524a1e8c6622f92b9216a5ddd85032ef23bc50a27577458182f469946e763e29c8369ddf2dec306f36f44b4ef6c6327406879ed1a5c6d7f4ce0c2a1456148aebaf387e2638c969dbf9f5bbee0d66b7e8ebecf5b805521ffae3bc54eeab01d403d4195939411ad56dd6019642779b76a32e223fb7d8e4ca1eb5697e7b05a20ec9cf7998feaa219e899ffdfc5e8adf0c94fffcb89bc249b38dab0612f6e6dcc15e653598086f566c743c3b3c6143ef37ad463db3a6dffa1e559fbcde0ad23b78c6aab879c19bb65a98a6edc4e00428775e399366af7cf81bccb12507d9ed73b7a228179740ac09dd95dc75ec73ebc887d50bd4260f42f51fbb710aa0be45d246f08862cc544f8b34a03ae05cac25cfb056c40e585e72fd437d862879cbdb8e8ba3a81c2e8b2af8dba60e1d4d8deb06a06fdc3d70dac34d6ebb6c6799a25bed594e186620b10599b895a85b318aa34032a24afea27241599477bdf7c7770f20beea82eec726d6b082f346d5d8ccea43b5fa048c6459aa80c372e7913728b2f5f04f2567bdf4aab9615e63af23db4ec975dcd18ac396db939d090fc0942cfbd503848ed6c38b0a3466d68d0ec480f425e67372b9b4559ab4aa6ed10913e5723d44c9f4ccf2a79c52c5a7d8522f6cfc04495af7bb358fa1f52d2bbf9dfcd81e9a5ae29581a5f363fd39c4d686b5877b820a4acf2646a2e3752b33d03107278d355ebaa95afbfeed8a3b0da3c80600f3b145f2eedc67883ecf9bb3ece2f2a6ee761bb13bb227d2114f3748d7ddd6a6a9fa214a9b6acfaa5cc89f59e3c79da90a8ab4e60d3cd7834a619eadc387a32fd4bfffa8e0c437687225efb0ed6b016d101b805159c7eed2e3d218d223c84d97682b67c4c94b8ed498a6a561377b9c71f390a05a9cfebf2aa4efab0785e3fbb00d93d4f163d51094f539d560c183ac5139f6f950d63c7b12b4caf1a9d0b85cadf8a15e8aa937585ae2e55344399c10cb3cbbf830dd63c04628f7e6010e1e94702d3cc4f0c239609cd98492259d6239e6b1e720fb1ba64ff3ca98ef3099720f91513eca5fb8d1602b7137fb2a3c3e07bdd491ac0e05c92411071f7948b0d8fc426ac44f176a625a7a9d9029bc1492f1ac00a6acb5eb94653e57738325bce6e3eeefe267e32c2a10fd8e00e8d47bb51a8822d766c101223fd62a16ff9b4fab27e6ee6b31d6234f34bc1ed4e23d648f7bae8eca6f516337639f76e55f4d883a66eb25cd0004b68add59f1c3d0a0a4aa5361fbe7acb988a3efebf23124fe040a93f6c74e0ab75447b8348a6d5baf905ffa16306d8347706227dddc55e4f73eba89bb61a1884942e2338db1717271d9b3f4cdc1b0dae64a702e6db6f91ccf4e613d55034487bf5bec98b82b4776b51f9c102108b2626aa3810ad86e0818dffc60beb4e7664032d1418321b39dd0562d99c71d972b7adcf9518872e72373f96895c55cb69624ecac9a2dd5013865356ef519d216491f76490a049b4e4a70fe0a0b34a7f90144c4fecd48e6ec5bc8f27ec14c8055875776ed529e2f28ae41408b95a79e5bc6eae9a65426da8aece636ba4d7be5580d666bd7eb0cdedf8bb6837954acad6dd0aa7af6610478fd6209d1831ca8868c80c6b855f5305e8c50a775b82b46a296c7a4f5329f5f6a10632ac2f822784672a5e2444c85586d67a7624e55ed30d0c13b70f218dc4b86c06d1038ed740e29ace374b05796510f525e183d41db8e8e2ab33e1afa59343705f35c013b08e0290618a507a6b83521c8c86a0f30fcbe64b8e42870cdb96e7787744e311e3e99923d0212507b266338c6311438da25502e34aa374648c90ac948399395df1f2a72cdda822a42260ecca53590b160363f2327341666401bd911eb4fd591f8a60736ce49b339693784a42c4b4e5f93e123a01a11bae46036e6e8d61b84ef80a9c8045ad5a617f655bd42e30f189e34799aefcf0b97ab5705dd72806f64dad640cdc7f9c0afa84244fee7001f80942bf1ef8cb43a5473f079240a374ab8d0dbd7ddfaedfecd89478b7521f0af325fe5999af0e6c08c560b7a99aa3f63530b8fb37796f223f165c5b0904abf7df05587c54d5aa65049332d0156a649f055c9545b1e94e4d5565ac80e11c246a43b02fc66c3d9434f5d29ca5367abbbf18d09fcd2e41429d7d063b5d226a01277cea994f386ada483cc7bc8a69cc2f5900e31ec923aacce052933dd6b329936ed3718d0c6df47c05f29454922417e2b9f4e3893a95c6bfbbf9e541aaef239d78db7c93e418f26eb81513a1a3ce881992265c7570bd05a271267fb1a789cc5fe53a4f81d08a256ac637f66b1772f9e28a396abd91d5585799f9f7971e0ce3e1096586014be611f3ad256855478e3e89bd294d4ddb1efc25e9663e6ccb701a78e208df2ba37cb565d2c81391ac5af06b870146532f612bd516d4ac82d764be4a7ead87d5ac66941fe6215a5ff1f8bf4f50cb73c8813b29c937e8434a84417aac2238f2384cd2765054a4d4b8a0ad73f0f2fd82c2b472061ca609e0be02acca6fd016922fa60c50ea0861c64fa6a972e555c47504c3ac23e2f440a0bbe4937db3cc8406e7c10efc60e8d086c394efc1b319170e1e32099294ea9c3ab03925daf5f93ccef0cb957715df336a6f30b1b1a4e967801f607ff6a2cef1be87135ee8edc09c7936e9000798419bbe7bfee44ca6fb9cadd81bbc644852965c52e52ebf8ef158600f0343634f3060e79823f45d23903330bc2915a1248a29b11dea9d8836deab47c167b93064620a722a60301135c6427affc9e49f62360ccb41b1e4b357568652aac8d7a7569f412ebb79f9efebff6a5d3ef84f8c8d828ac318716ff6a075948858ba6749013ec3639355a2244936225a261818111a21d7fa4fb21e45b65b56449e41e51fa241b1bfc5f8b24ce3331f1c21d35b9ab7c3f64940f99f884c98f538075dd6b553fcc04bbf774cea33afb8c4b0a027217847756a8a65ab29c1f2f02ba201ee15d2160bb8aa8b7b94bea62dd79a9f610a3b6c7dc7a9bdb1aadb247b2941b37928acf854c69ae7d909fa59dad1c0b9bb0524c215d807c4599b90d176a68dab61c76cb7b109b635bb17a9c0acab117882c2140130e68e05efa4d09f6ca6744e56c00f62ac527a9ae67877acc3760e979b8b75b9ae82657bd287031e5137e19890cd1a8b26935c3dd0041cf4077f083ec8413793c2deccb3f33fdc019798f6a6bbd9f48b0db783d3e77f3bb9bc36aba085bd638195384d68b3fb0445b98764e21b30c0d4a56842739e75096d60b2f72adc10bdb3c5c9c6cd077b53a414439ff77cccea7452f99414efa3a5586ec6adc13c229d2bc4cce42a028295b6d215490ecdb53baa8e9a5e80813a50b44d9b1a48f006a12ddf9d504242c201f920be58c9be1d1a80d0577c654eab75891fe9fa75e4bb37cb513b5bd45cbaa5b041cf1ea0e37864418eb518b79e7f24538e29dded07348ef5b4f8c04f0d2efc03678ad865d07c276d5bdf3aafadcf222ee7534444ab76bed116b341c89312fac23351ad0a67284997048844f188249c70203452ab44b88849fb40378ff598c61550df88a99ac6c237848de4777d98c736aea8de72b9dbda1bbf54c8b39fec3f6d48a5cc1104a0b2cccebf545d42fe0c563248366b1d9674e959eafd5bf3d544d24425b7dc947662edda6aecea5099f6587d2e6644bd6c695bd54c3fe0cc2e7988f643e615660f2f0879de3f79bcd1ccc47ce0ca03d4ea47f71c7fa9304fe1b2b36f56cf25c0773d7c50acafd56a4c8aeff656fae7257820e53ea67faf8fed9d4a6883d846b0c9f288bf8ec43606cb4de5a37f4010afa53c2721abb820f10d4f2ec3145f8c07bca5e3283c9ffdf30b17d90ff36a45ebc1beda80877b8fcb470332aab4d21b9366afe97889199d88c5dee21ef248c9af686caa161f027a60f80920763d245a21cfcae5381e472096d4ea70fe8ae33e9a3b2fabebfdc15a367628aa534eb551fc1132dccd0d3483775da65fd497a6d337ff00b64b8b72afac2c24b427cc9e3033a2a88e86111e31099f83dc3e06555037e152e5b899e05dddc9a5c1f8b86b2382b3e4f917b18b3a16382b7dfeea4a138fc6b75e614e38d2d44b61890aad2d93e583312a2e82b7081e9af8b6bcbd962f1c7cbc6e40ccada7b62294c70aaedfedc1225e6d5377e253b587d6f24a53a9e9ebd24f4fb2ba9560b85258a1819fb6a931a3244ddeb2046cf096bef6b7cafe1770c3f07dfa49a708e83e4acb39241c3ce2010ced41d856134b6ce5ff4c0674c17d88cd9e1f5fef4c953e0348fab822c2493e8f04437002d397aa40625b4de49ae60d96487a8a58bc38293ea0ad39d054b0651848cb591c9aa59e2aa06eba6c8274de901dad9f61be6bf25154a1e1d777392cb1b072df5c2e96947432f45d4fa3be4cdec997daec5825686cdcfeb9af2428110f62eb5a333f548bc66cecc84c3c25193f01c72265e7c2c420364906b468ba088c7d7f0f09adbf0c45d0f3e11d81f679a50d52fc688c0d72b59c4c64e245d55029fa85b4c326ac07a931bb8b4bfdd604066d7a4fa8e867b83148b8f4ebf5172ae0a9acb32f5d4d99a963046cec5361358d65df1be7b37f963fc87c54eb02f64c097a88c7c9dfcde3d7849aec26095d2fb3241786f8654ab885dcce8b8e412adb883d67f8d4ebf6739a3bf11e13c15f8edec3ec775cd29f1dd73580ae4edc6aaae4f02bd6c91230033342fa238ef5bfbfb40f72d90163a0540a1c31f189ea4c0b4ad450909f02047d39e346f35fff4d11f37a13a158811380316b5a6aaa34d2bd36dc557c89945ebc70fe3ada12c75cc218acd6e67698f4162f63efc33379c3c6558c2a221834aa3322df07316b90a0e34458fa772140ab0a92b00132e0e534702fbd7f9a3920069a1197087a76582d38eddcd03a8f20839b102fa70f132f61d3e1cfbb143732523c60be14303b1eefd964f470764cd13f8f8ec605428bc046b5a4301cd7f5f62e86e606865c3a59fabb1fb801799470cb8433491f4aed5399e4888dcb3003a969dfc89e97338a57f4ea6fc0a3ab1cc9a93bcc996f7a7be42e582f0792b45bf6cffdefbb9105990741e83162b63e4ca748707c6af3dccaa9295f450686291cc2447361cbf629682415d5e0b0da89d2378c2f968350eb404df7d20142837a93d023426599c7695e14afbf0e71029d4eb6f03746e8dc76ca40ec00d3d2dbce2861fc73ca6f650a50607fb8279d20c9a2ebe645ec165fbf932c068a90ad664e576738818225e25e631ac9d1bb8218ba448de2a3e97e76fdb1b85f60cc23ad989b7dea829d2d84fe3f14674423cda080d3d3eca53f35114f296eea9b957b160d336cabc9f25c01b5e51fb33f6942a88e2328f12283be740190ff43c9a23460ffa966eb51e8748331219836440d3b66c4715af4f7e5fc465b430acc8a49a12ff56cf4bd7f1d28a3e6e3d6d340f597c14ecd33163a9cb57c484b274ba932c85ea5826cbf52427d71e57d3bf05a174e316b86225892681f814a27059f36a0c4fadd2cf5c2d6c7bb950470462365dc09687384958efca46d550ec16cf7a7b527d54df149781d75fae66a96fa572f0ad00323d3e85fc15109c18109b15f7b06cde9e26ac017e08b34cd505c447ca6f1df8546d02b243655532bc60cf664a45cbe727d3671dd04d4f00b27df7203310ea62a1526f89e0445c6c420cbd2c7d965e165b52e9d364e163ea9772c571c9a0b48c40da24bad7c8fa1919c22e14abea38666ed1d2f9b62e33331166e872ce14ff98f53e709dec835267c694762ab5e88fe761a0fb1ec9c626509d672e8f105a18880e51ff3a7b544b3ab96ebff6194764576ef19513d6ba924afd9d36c7a1daf436f61a49f6bd8abbc03f0190e57fb39e592e3726fdf56e8b89c6660b68194491b938f8ece882388bfcb006fae33745ac53e4f9e96c4874130fe3019b7a73fb1e251f31876cda285d6195db836dda84a3296a0d30c872962c310b31a7155143b366a43625c0b3ecab20021cf2c44ab87ab2fed3b216cad76559bb3f6e436783d4a3ee3d43c28b7eac9ab8e3e173327fc484200673308093fab5e02e3e7211807231c11fb06809169a7b948f640da0c9acdfc6e54182ed16513a39c3b125b358dba07972e2dfdb14e675e474befc9584be9da623dcf401afe8b816222d204f6de558f8e16cc378c0ff939cb822b0d7c2e265d39c77760cf6e5a5b8832beb40c5ee84242e797091bb360776b3b9236fa83b1144c12ae0ff3cef8bcf32e2d8ced8a1dcd27d4d8b455d6788dd96550058e697efd1bb8c91d4fb3bbe18e5862a3de25c94a09bcbbff565fc6edd898718a9f086203b8b7fc17a5bac5f15b233daf20db2bd7468f2073aa5e04d73ad9e0333585862267918190e3e811268136cd26349c7fdb7db0fa25c1aee5779bf130cd8cb664f44df45e231f8fddc19218f1c3f64a652f623f700628174a7ffe2314a54801d359f2fb85abdbae801ee8fea61f8b42c7e0e4dbe9ede766c03fd36ca535e6d9a1dbc25b9236e2d2507f5ee6320dc8fa5cbc9f7a27ab93f393dfa3595139aac81c8bc428167ca467f953d8a93d0c47cc6bbdf163177074eec88a5d55edb6a4d869ed287b2322bdba4755f0d53d3937f310557c1c012cabb88190e7d500c9897665655c1c54650a324e78838dfbdfe61ff7ba55977fd208ad50c21a256158e58613f3b70cf908f37f2252bd37f8e14a0196c8f3686e17a7a97eccacce98570fc128988e01dbb071b85dc21affa0c0ea31b54090fe6ae063a50a91f407c000933ea1a6b24412910cd5ae4990f9fc286b8be0dba98418a1aa0fd54e749458e9ddb5842088c2baf86babb1e423d017d642b30ad627aea17edcfa3d2f141c29a0480e5411e1a6fb3eb6a3a55407fc97febbffc5952b6ed7c793d742e8f61bbd1322536297bb3902e43699ea5a1b69fb7d3d4aef9cf66defaef35dde0822460fbd1f15c193f48e62e572aee8b11c03de7bf802709c33da7dd357cec3be76ca1a6a81679bf628fbda87ae2e27d72381d0c50dea646e314cd85b825122a5401ba18cc21d8f659764259a84f0872fd6693f3e6aa87083bafda7e3615da7563893ebaef5a73bec50b963db0ea126948ecd88299d7053ec4dd72c0a31972c12171fb8a3ff28c2183eee1effe30f25ecaab34a2b7f7fe5a5dfae866d5d1752421bc082f55ad8e47e97b84df0693f6cbbf9ae5523f8d012a56275d4713431ba9cdbeb99d3ae58030445a944d4cc25b437508cd686bf9eb6e02f70de2d272f7a254c7e8086808d53a30eebe4eeaac8ae2968dfb3a22024afafbf63256dbf6d490b042bee20a9f17f1e4cc438273ab8465775ef47f8646b497b7e007a07e8c4dd9c2b25d4bebdfb23723265d4f4d6e676d83c2ae4fc5218f783a8c4cf33eb3f45e51e4adadaa7d2e85de23791abeafb86de27ad034f90d98b60eff200d49b9f27c2ecd69120088fd0d8a03d3d126b4556e97ddf3e38fb19f35d3ed0e01713fd5a673392229d2a25bbcbea9742aedc71546a70602bd2b0569d6f5c4d42f63b56eb9a3034ce9bc956b47b26e4f8007e306f40c55dcf22ebeb43dc992e9fb081321936a3800158497c7df1eb6f5fbc1dc931e392dfb1f542acee00b3a456489df2625a854466b8987edf230d326d43ed37a34eefba26267219ff320a67a5ee0d1424039d436de6dfa685e769ef10834a2d79c140b37a5508fe171ac69726915ce54434e4e8c43def5567e8ceb144ae969e1ba9a7ff028ee673d1465783d04ace7daa037f626f40d3202a1cff1ac87cdf84fe451589e253b54c8d230589cb86be7e070b53ffe7bcfbf684817d4c38362e5f71a048329ad1e4f61a7f403d3e999a7e7a1a30c1eb1e48e2f443c51d00873ffa6fd9e66fbda799ee67a2802da5a1e4d8d09bfb1261b306ccfcaa45efc7479263aa67126aae1717c8057f7c2ddf101f10047658b083c7fdaf29cc2743d65ae4afe967c90e3b683279dbe2715b260b67531b62861157ad0b5a4a919dff1d7dd5de75a7dc3376b17d8e20c92957b2ce70620cdf49c31e7cce4ad6e9072598ee005ad7d1c60e1ce1cd5f45f3b3916e016e3e4e69747e3f6946fdf2e9acc4b63f046060100a2179fb0dfb82c84de6e546bacc9a787d882c340fcb49a0deb3d0685836c4d809068e208aff819307b94eebea810dc30388d320e3a9f748e054d131a69e57d7f3ea9b17e420ad33d2dfbaa3bb1d961b5e03903fede8518a8ce6fcbd023e6965e7f40a7a31c744dd690dc7a7f2a5f8d336a65037d98392e5381f497d05f20a1ef41b8fe51768ba00d369a7f66d6f4a3aa76da3d9da1928f19992f4f0ebd9b4dfcc311fedec72c751aab383a0632c4f17a7145cda1a36e22f1d5319ab4f73513a79a87e4c29989a8c4b1a13fdaf6dbe113471964273085720b31c8926348f78a95822d3ee3f98364aecd9e43d4c7ebc0a3b53240a2fee9621bcc6ca2cd48d707c4c46a5db198ab1549e4910a32d74b92d239f54b00b7c7eb4f7a381694252d0c451449dd0568b9fad2091ac54f3617be592cfd0c72d2b3fc9ee01d2cd231fc3b4edac81d3e82af8e3cb53ec82383a6e7eefa20cd86c78bcb02f533da471460674b246002b49ccbfa7e55d31341df1f9877348bb59d528cb652a75598246e3b59e8e4e8ebc3926ab086a3586abfc94ebfcc854207b0d547fef048db3f2beae7035ad53675657ce078fd0c08040af58bb369d759dd85dbe8e54a111f07b84aa0c54575acd9da2127e898abbb834fdf3b21079975123765ba5d5d03b609bd1e4063172aa7e925773f9566aac6aa65169b4d487e5988d80fa82dd9960463b1d17d8c78767a1c776f05bd8c020bd891e2a88fe3c2986fcea53d3c4fb9015f1dc23314f5747aeed3d608776e5d0a9534fed05aa7b57a9b35f8f448c549e45cadda9abfbae3ed9d7c8ce9a9066baa71e8a91e07b8bcf049ce0994fe98acf1f1fea318001255b65f739a4374f06e95980d5a131131dd676ffd7cb72550b0c1f45e4b06129af496588962699d5800d78c3e01d4945498ef6441151a5edbbaedd27d8b3e730521e6ffec21f3b3ca1e6d2d999356099830e8cccf70ee620ffdc1b7e8e18deaa5d6cd3fe1612ac23ede65443968a99283426d38baa2935633c8d406a7e22066f4e98312572e8c663859aa048f79b3ffe1a3cbc1daba11454581594d08bc761989686ab6efc62c8255129e70998d79f7b9863bf46fd5ec02f4389c00fab584ac86ff80939836855f5bb286253d817ed010f4cccbeab34bb14da73718d1d7dfc2540f93bd828424c5e30024d5f197f639d7c66876b721ae2883a5d8413ce6744cb23e0528106cdb9ae97b4b87d95370b4e851a4ac4f2c036b881e63f20b0ea9024d026f7a3ef347eb13ebaaa2e56e8b152856f6ab59da52db3d7a43b09975342ef70a7353a2d0448669eed58e6b48282ec0d8ef2798d281a4b0a2c603ade4ff302336979c5801490fa1eebc5a284f17c2046362bf6bd23a00d5f3f3103c740c4caaddb617258d8eecf88c7510d7013f972367309a08bfbc7d477ad2b3eb9844b6d6c40734eb16891bd0dcf2fd1837b9a27e731513b52ee181286fdd60d3ccde92c68b378fcbacf3225bf266e85e4cf5154dd8e06b0df01b7d49e22d564cef843469fbf73be0f0e32d9bbf2a688995b2d888ad11d5aed1099be2a1c432f0da4892f894d4ea4d050263bbdfc52b3bb2407ffaf100af860510ba72a4c7d0183b116212a1e1d7233c715a6cf3d18923e45c92d14390b68227f7de5740af3a276d2f3733a45e5dff062bebcf4518288c72f4939826c3d76e74d84a55e985bf8e55d2736fbfa30b14c3afe1efa005317d94b8b679b026756c521b5ee85d838adfbfcab65d12062a3d90c2a59e9658c1359dc33d936291174b468d0957ab8c574ed77e66677b4f7175de6be127c5f82f56fdf0e8c374802f8318103cd40a8aca92e808d2b4d0abe04234b97b70cdee91a661dc3b15016b1ce15ab75e8ba6b3660957b4f02ac80d56730641076a8b1be6ceddede17866ad6a719457f9df176c4691201812e700fd66465c189e8d17e6840916491d68b4ae0ab43a43c64386ebf5308302213eb6eb59610a35ad732ebcc8c5f3ada95797e5bde6b452dcd21f076654f4a83f5c4fac06a4bcd1dc8d03d2af7357b0b2d98236e9a477caf15f0620d58865167d67ec69628527739b29b8520e08169b6fbcf64bcbd1e6099afe2384ae8fcb262d58508dc2db46ff259419efa918721f7d8951227d441f185ca7ae835b43ec8ad3bd67aba7a9b265c1edd166b22de3a42c81a706415840dd24d436a41283413d933de03dc873f2ce72cfa99e3e162f340d197dd0b3ad1b1d2cb27952976fa64f17f9fe58b05fd9532cd3f426fa46019127fdf0e374d0f8eecbfcc54b82c91b5ca031a1ec36be4179e787bded27195c04922c3cb9f08cef5a7423f59e7d78064630cba7aa7d3fb91bdb4e15c44ef6f7d34faf4e9c5929a919a4c7dd8732ef86f7981e5e2cae09a83db46affbbc5f112f529342fec44591302a48145c2b89a957bede6ec2f7e5a353f9d2a81cf5376daf09539dee7e960adabd84a85baeefcb080eb9d37c89e60d4bad1867f311e5789860d40351036ba7eaac74fe55a18a7396e9dbed35b09c5c1f70d05b27c80a0c97cde3f80132e8c3b7a6656a3162d731a426ce609084966a08a78f182a2af3e708e1cd506020015d936b254b8d642a82a5f4fa85df07c51f2350896fa8db0090fdf34e65cb839d77f1cf582f021933323cb04c2f3c38d8bbe8e9b29436e87a9ba1989096d6e8aa289a1d3e46a7de58ade1a2c226539260368fbc90b4f49b10f1c5242f5d0905804a22b025c3c282336eec178c1c14052380102cd79f271a438703008c6e55c81d0db0186e4f8ddc9a92831fd6368bac4a8cf0c69c4ee571e84da6bbd370077f18f0c7e9a3e9704b5f80bc16de19ce7f5dc7a6e898cacf1f5d02ce6e7662d81360b680dc8cfd67b4478f1000e194ff896e3abf2b979275b63ca28c54cf47b9aee5cac79d7efdcd18cacbaf3ad277261168a13dc205ed840bc78de544425849e140bb2bc3b7a538c9d379c53c70bed39dba918b8f6de9ccd0950226c9032beef7532695acb3128c075e745eae386537fef06abfd46ba1065ad4a6cebbbaee4525109eaf48d2efcd0bb46c6917bd1fd5130bd4a676539d913b687c733ffdadda1a2b3339ae237c5a4e7d1962159f8d0bd37e5b6f850836d0c9a03d89310c1cf87e5edfec419fca9ef3058523ec22fe1fe2e0959a247ed22e51f730695187e4421ed4fa6481e8567f7f4e9e9731474b518692153a3aea255ed85f2f6149512f765a1f43350891b42f847f1c4b31d678c7414a32274f58968cbf779342dff369d3d65f33d4ca893a2d89fa3cd030d8ae92fed7e72adbede255cc99d5bee9316d551dac40a24cff6b786ea6284fc5835fb83035ba9504f267e8ff8935894c226d74921a585b38dd8f673a5bd7c43d139fa8229c20e1893098aa2e829835893feab8b89d99853fd5117ae7792c1564cc1f840f8ee54cdcdab2f4b1c139216725d484aa89621ed36c61428abb5083daf9ef1d9936648933dfd91a2785e733be258beded5ead2cb75324daf903b1e418618b189987992d2cd6d35914f1dc74c0a1f372cca330b3d7e7fac8f690a1c6dd7d7cfe925a34e67032af1a8c03dc1d3d6206b335d6eef038b26e5ef02fa30c05d85be5824d3fc1b0e91ddd2949614ba2d8c45ea7eae06aeacb1a43dcafaff60f18e83b8e91a17bf1e7c91785fe0a3c74ce9cbab0c1a796829ab59f6081efbfadc85e35da450a94daf6cf2822a7f4cbda9ce1a6815aa2501eca3c25d0bc2fbfc66905f190de09ae5a09defb005254f7932c0e24e55f0b65da8ffc4c16aa5743b97153bf2fe6469755aa6c7342cc636556ce0a457cb409fe040f454e22d8e78982b004d32badd63a41a6c55befa41f8988ab8e2bbe846b01c27896899d7faa04cb45f361f72c0da6388411285217acb1f24aaa82a935349633a19989292f83f065778fb601ab27ac3d6429aef87ddd480e4a9e168867dd036c78f322863e825babef722f5a4a0cb6417c63b95ebb9dd724d9b74e8da31bcd25c6890701aa05a29a51b834dedc421fd6f413bad67207dcddf73e1c73d573b12fc3b899f5884e88d8a06586b5151035c1fcd2dd957071afa54f7eb4df1f580e028ed16d3227470b647b3c3fda23fbbc70b45209f1e01dca72582664a919332abbcd2c684a2ca39d6e4dc164391e40eab129f8d330c25aea26c0c9aecfbd5181ae1732d884344243ca19e3166ae0c56bf6db27a6c3c3faef52871f76cf778500811151a19624381d4ee7b2377545e115f4390aafca7ed237c0c6714bfacd5de33acefa848e93d5681b1204b68e3d0e31afcb46670b48fcda6cacf20be2f177648d083a19f63a70c5a8ad9f537df8c4b7992df9dd7787e0e9fecc2901a505db70c0bdede7c402125c0de13cc5ec964eb218cbc68af8a425eda69b6980113a7576470588e6e3bb6397ab9688136aaabd0f58e9afb77aae4522f356a1a8e6466cf1cfef0f7e792f503ef4963d0e440d4d6ee07f12edf71adc9005d0f4e41d7e3245c001581465e26a2e4c8b769a50cfb35304c5713bcb28fdb6a7e55c186566c259617f252ba2983221ce7481f08150aa44cf6748954f68b00d851d1c60328b157add717660166895a7fbb923e2e495a1f0496fac0df026f286ef09a1651bf7100f5591368aa023d8e96f98a1530e63b48aa325694f5c5dd0a3370376904ee4f00f749c8cece194a9f838302ba723ce8780840da81316c63c56393ccddabb1da1f573a1521e7f379010b05af9091f2294f63a09246af9748436e760cee0accde523625ec9d57e3e6386d6571f33e23bbd1297d98c89cd1e729fd6ffa092c12a53ad68762fa134dc21c633c6fe0b45094aae7cc06fd894d23138ff2e2bfacf0fdba2bafa0f2c06b1d58cfa585e716258b2b1d9441158cabadc347dec2157b2d3e68986f31ae6538b7074612c5ecabdef90ff6c9f331d62f79c928bdb1537f3213478788e52990b30b96e257a2c381949ce2bec49e6934e31ed114a7460cbdd37c88bb1dfe34803ea536554f1e1552392e2f2fe2902af1aa870ee36c0298c6b4385099c4200b67e5c5fe85af6956877a9198dbc597acc9bd16b909099043527c40b2c73b578e73c8031c54535848fa2bebd8156f6f4e36d3451cf9a3dd4b1c6775715bed87a40d6e9ebbf88e05bbb284260b3dfc86a151eed9922c9d209c31099e1617c440f9a7ef569ad362447c00aea80ca4c8b47a459b175452045b27708fec71c17368cc3c3000f703930b00fd9ad84f0dd3a798c6f163e59bd5b1da81a9201dab8947b82e3079f6dcca6b96f0f33ec652acdb0639a659136f96d17cd5985cf56f6410832a4b1a19dd00984161b8dbf385fa9a3d9aa1bfc3df48aa0f163a58438e6b62191d7b4e04e5b2b9848f245509db813b0bda7f73140f37fff9c815a5a5a929c4e4318d33b8468385379c803c9ca1e374b3dadb38078f12a71db4c0ef2fdab477328ae080169ac5fb6d3d77ec6846dc9aabda81cfbf26a6168e4c23c072274724d497da802ac7aef48366c6cd727f70129ab65d0baed370a47c7296323925df113345a92fa7229baeaa2699d4dadeeb51602799daee78f9b12f935e4bca9bc817e8f75fba2e58187cc99eb5b99a60c700dd946f0d1dfa41161a045a3fc175057460afc90304331438418677134af15b87e5dde4e272fa2f0337a041a75a17e3a476117df99f6a09ad298a7de580aa8dce3555f53db6bff535bad2835edcc377a47d6861be6108f7a7e83df9311ca3b1a935d01d8e7802aa40c1c69ae8250dd4c16e5b7358684f1a4b95d1a8bf9faf06ea506ba1ddaffc910a212e328d9089517b265e207886041cb05216680aebc3195a63c38a886e742aa098ac25effae88359b776b173b7742b5f79ff2d47d6c0680d9b4267c261d162708b520ff424103a37f8c6584d5a9da931d5300235d25ebe5f43fc090330aeacbc1ff83344f7dc2e5fe29fd6155aa91842015790c0755f96f4e52af2480b086ddb2cbd7f1df16ca4573718a7adfff769e60c08f07086b728f49d078dec961f6086245349577d282684095c13ddc00f01c37ddd7f00720b4bec7686aff112c09b4a7c01b8c65bdfda797ba756b91bbe3f7c125ac7c1eb581472525dc3db529c9e3367fc288aaf65107b096650db72a98a9657a2da3390382a6f983102a56515be0b1cb4a7455643392506120ec6641d70a51257d0e958b8008097fec80a313c441d3e282d068af77f04ca57f090e7345f67e98756a3b690d7c32fd70fe4ec73dcec8f2be1a4a8ac9ce0846a310b110dbd13efcbea8d92db6e0929b7bd410201fa523c009acf94f03d32c98bd4a35271ce0916c57e8bdb028f1d70cbf644d8fe2a5e8e532dcb96e8d4c3d4f523cdae7c2db148ef37bdefadf7ff51a749e15bf87a100b3308fc43be42a37ace26d46a3efecce6400efb3d67832ff4a63419a2aaeae06a0ea27ad3c3c05f430e509f48a49646593a14784cf77bbae0feeef0e8b410291d2dec44fcf5482e7fccf852c74675c2e2decef0808de6b9afb04180ea7ddfc7e34ab56fa7bde3c18c3937e44ae65a6b3c981fec2b964169cebb1cae9123259641b2fb61e41fbf925f01176712c4df4df5a7021f80a7b24c04437600a613b60cab89bc1e59c9d6ba915b0cd6d9a3b71f8a2c0354338766a702bd30f82b0205f49a020a666cb76e2aab38a10a14d0696ec2f2a973498125b89b6d9f1a63c27c86d43d5c9298068a083efd7557f3f9c6718a85eff63948303dfd0dc959a485caccd26f1ba9318c474bdf3309ff04221e2b60a920fe0632b82073214c54a8538f4a031bce4d76a6a0f72c737f07fbe5b45f961a1fd45464ae97748d1f5ab9b7afbf77abfab2d75446033376eaf482294331b8e58ec8ce5ea6ea15bf52c5ae22293e64000c0e04fdc63711f8c5fa4215ae55dcaaec54fcd72ff322dbe278f991c01dbd8b332028f38cb303e0576a8eac4fff6272b0104f6c148efe8236fe10060c5b80f398c0e99974213eae3ff474e61da7b97bb95dac0a5afb052fd5f1984fb248563d1bbc15a9496ff3a3a9228926ed8cd6342de50719f10acd77c366531d74717a534788ab6868006957c68a78cfeb4be70b1094dd67de6fbbab9f00cc2ead66b66f3cea5544d958e9c48da894766ddd68b22447a8d3b44390b84a810f2ef61c634e08779600ae1c45540ccd813ad7fefac635118de58aae46ef7f67fa0d6455227138b52e180ae91eab51d7b167f570c38d0b96b02821bc0a6e8ef3f5e7b633b3a8cd5ec50e39f7c7a7559a9ff8ed639540b4a454a14e637a9f56da9612b05c421da3a6c624c18d6d55f5958d054d6f508b9ff6be962410e7cd793eff50bcdf340bf3f956b46d76c1f2635e59d165d64a8239af5c7978dc1858b08407248cab082bd27d640dd9b51cda22492c4b77149d8db5e483d90fab05e9f78f1a89d1aa71f163058d0a8aaad05a9369ea1f4b177f470f5a27e455654b65c844c74329bccd4c43cffbf04878a90381964f0414ead5bd1c020d05ec7eb8817bbd041762a22ffbb7a8ffd62df442455ac43496666309677688ef427a395a80c123a3a96e8dc7cdfac3f5a80b9ae61e4052f420d117231ab6a4de67a80f70cc14a16699b54ea9bc59d3f09321f3026ca6d9bfc989f84856f1dbb90ddf140d443cf8d5fbe1f9482c77698402e9a7329ca3acd0c9f9492f8dc57b83a0ee4a865d922f1717344da68020df557e218d272435071ec0b67bbd092a1788389e6d99d4b994da87088e4a443216629786e8121fc75b9091f78f5db2cee1a2aa9e575471597ac71aac943713c94f8defebbf8dcf7ff537ac98d274579769642175b7903b69f240609332d5d488cd4bd3f4b146edd0afb0e879c1e81dad390ccfdd5df1ec99e95dceb5762220ad9aeb924472a7589f429fe853565bc5e1bb661c707b728c15e1e5928981e3ea99bc5b7e8b5238dbd6a3cf009de76152d7b4532827dedd8950759086757342d293568c003d8a923b19ca02db47aa49064e16041883c1a862add5e9ebae0a3ce4d718955a51bbfb5b4fd480715ad5c5378a1ed5b243974982b37c587a9bc60b199e822a0b5648b43fc7a764c9cb646a53655038cdb5971610b2df88ad35be36cf93465e1decb7d28111610c4260f6316208decd3cb39aefc59d9f362359bac17cf0316ced60aed036a58da470146fe972ffe2f832760871f5ce5e19ead7f532eec5cddf82ca9f84380a2034d069b4860d9e32b78e33cbe6ec72b92092112f595092c35542b03d15bbf6f111852a951a79e0b23daef0825579f19b30d36f0d93487a39912caafdb881d462ccaac7080f01dab79952c6d7a40ddc745c45ae8675ed24426738e0ea6a6eb76d04a6fd94d044e3c6ced69245f5b85173acbba59b9262dee335b0d091f9e5caff1141c41745b9ad83d0ab0d4df98d92264b73b7a03897dbfcd09ba3b707c596f373f5b6f27a2ced893a1181249348f35e25c53b0c42cc85c536f5a3605cfa3b1951e6cbf92f140461a156d19331482048ece347ce950ef38b6654ea98b95210120a05af535e52e289f552c651f3ad7d2d6bb794ae69f70c0a1c4425d010f08a7b83e612471e1a9258a0f2febb5a83d2b5ab7e686bf88f12742d44c826b825a43a6a5d8f96e8e5fc96dfeaa54eb1d797c60cf7ccdf65c2d0d1a3ee1dd3c006e29c549bf0a22913d0f75a614f65ca3873514d753a686dff222661b20832e7c4cf1150b346c0449afa1498bc56cdefa85bc499331a9dc19be81aca3f125ff7c7b35ba05859d8cbcc4b2c34cc73787420c08f0f151394a395cf25c0b4fa22cd95a6a1c1c7d020732fe7c7d4a67bf579f11d0bd3400135d508d74f7ce4907acae2d163e26c4d785b626cb36f4fe47e573e37a875fcfdfd4f06d9f6f8ecae532155e27e1a38c268f796b95ed1a3450b795f40a1fd419e6e8b92adfd1a0ac730b06075fe52f279a4671a0968c18ca35066fdf18a4e354f702d6fc5f5256884b691858752e18595baa6d9a49fee024bb5bbbcd062babdeaea23776901d6729b54e09c24d11b4b0c7444fceed25d2ba6fbb743d214c510b979f73df80e4e05b6c20fbb52f40cda9af48d5c75287155cc6cc9fef1b743ab1de205670cb0effdb4cbbc33bf92c1b0190483a07941a1be5943ffd0679a30a03e630672d1af032a34a89dd168a8a704b3123555e4d181d9b4ac1b1b0a3600123e74d4dec845e5c22855b8e52d6d65246bb263daeb86451af9e63ed7e672c2a83ee07ffb9a1ac8e272d3b3139e65f247cc0ca4092f817ba7cbbd3064c0edfb4777e7d4bdf615d3989accfb073446801c0015b3cfc3503e56bf8ea14f851b54b664606e39c39bdb1cba411e6b618887f1eaeb423f93330f815974635cb79a9395cf4dd4621a8fb84191474a87bd42c710cdf40d71af6f1ea048c5c18c7d598040805a0a42b6db3c55b8f422c8e4a9d89eaecf1f588af0ec27e735c9125a5ac7cfcce942b3eb2a0c9bb8fef86131eed62ccbc4f8504c16852b60f26f7e248510025caa752246729e196ca0716279b9ebb8da0b1cca8a45b98a4de352dddb4653c750e8e31911ef9daf12d987c228aa01445ebbbcc0ca4b810649d8cc199c61299cc2f93d822b020e128ed0468e98948886e515097a169342457b589423c957d208d0a12489dc69d63ac395079444e131223bb7ec3ca6eb3114073a7f83f0d4d64ec44015b60793957eab0f0293d0b9673217f1926104f3c604c98e0a017ffed2de4365561501248e4fba981d969b0cc6f3368a685091ba9717a7b3e0bb790ce0090560578a4632e671e7f45e673afd36c607528ca404652d7eae012569dde8cd8b2630531490c367ee93bc8b1f597d108a92f1d85f9fb999d87b16b2793c728683864ec6c49187c8510d9333e3e0fbce3fb1caef6106b5b46b5f3e2404e94c8432444e753ea1f9a6506d387804c4d86f307b7556b2b4c8001cf132406ad2d6ee0309412df35c0c47d1f444328c07b4936fec039a7fba13014695de0647ca69dfe204d8c24b715874fe53e928861f219f937f4fd3dd034c446397603c84af9bedb251e0354ed7ceeaa387ece7384643806145ee93230b86fc61dfce5344532d23d438e81afed8c9125d1453d64867d9b3c65f2c0246a16ca1d5cb4f1578c5453443b0cf10438a9b60d64ad3c5cec6ac3a9130b13e20713c0f907c2f0468913cc7e86b50440fff6908f9847fdab71ee2aed23b7b8090e8b4e01c9257f84f7d47f9dbda17426d2b54176a95f378dc1ee58db02e4a605586096ad121f90bcdec3ff9ddd9753fa79dcd3cc83b89cf61b25d4ef4690cd2424c649b48997497e8a4a448202b3dbe4457c8f823f39bf418ebeabc2568d7075c7e80a20b056333bf0c54c8bbd2657a8ceb0acc1ab628e678caf047a1c20a4d04b69205d62d88477c805ffb3ee96a9e72dec06d912bd90a06a5fa5ee84e9cbb5a0a5cf5362c26acee8f07cb24a7ede9a33b879c6a7f08804479fe27492fd83a04e89ce6b1ba36aaef7fd8075fb52390ae6463ffe58de0bbf66e049c67545bdb4a84463452796167b31d77714928741adae54688995b47e7b2220efd772d7f0740a02d5ca07a310c8a438acac16501fea2ccdc713d21534abcf5ed7ec29e292ca776f415858673cbb4c9cf41455f7a5551169a2feb69ade35a4903a192f508f402f56fd6202e1f1dd6e73b3c8785aad5730484e51e77e65dea2af0e0cae152a68b01cf03c3590f1afef8c8195c20d31338b73122f72b6cff5d498e6ab856aac5e6d7fb516c100d1127ed666d35da014ea5fe2d48f31d732c6ae5f68ead7bb09a78e60d3549a0c3a1ffad49c4390b53e357174b83eb3b9a76b0ca19f0adfec4651b6aeda84e46a755fd756b8380acb89dba741b0c48472721cda6665f246f28d7d173a4b4996242fb142855c277dc4f95129c5af485559b85fb136c743651a66cd42814593232003d7bf830666e12d76113416b446d7948da287034296cd68ac849f425126dfdbf5402af590c223291ba9f8003d965897f8a71cee4141093a5334598913651e1e81f0a1ea2f1a9c49e80fa1e3072be0067d20180d69efe16e5ec301775d01d484b87609d89da4cd8722587be0809780961aaa707084cd204d149b5e76a9f3ba9eda372965ce72a51b04f321b301681b7aeb36174e4584aee72978b39d5abe2d155ffb6fc4c11162977868fed54fa8c84db0b6876055c7bd50a738973fabfb630117d95b699a70daae3e12cfc9d027bcd6642d26ce0dd968482933b1429a85cdac75f3a10bf444ba34bd2332cd18c78e5775a1b00859c3a44d9ed0d6abbfec8330bd68afbae5b07fa20b99fbdee4bcbdafa9467feb5fa4863eda0e6d4750c1c35c36f05186abc79ce5ffd87663e04cd063bfc84d0cdddb1feeb70b53f3d877fe07b5a2ce262c2ed630e69cb600504a00fcaec21c0ac3975284b55171b6b0b93ed054afe344b3e4d0bbc8f549a1c2a3a7fc079c33534df6e2070aafadde88612eaf529f53677cc9679030e973ee963830b661be2c7adfc72e64c67ec9ec0436911cc2fd72983f749524aa1cdc9a8fab1a20744f614533c871dae1171d6e3bc90b8bec2ddd5d4b0b46c5aaa836fb5d69fd556e55e7166e6b5aa8d2b3184d43dbef3eaadca2adcf4b0ed8885bc36b2159beb02e8066bbf9f8843a87db6ea6863508fcccf2c275d7bbdd53fc4c3abb65a75e139157ca56ff860a6419b5a06acf31228a98b7d9a5c84abbd9bca903c8d3dcd46a037bb005b0a43ddc4384d901fb9d0f817809cfa37155aaca0b4010d31a5adf89894d3c4abd55ad1796b3c540961b30b07d218eab8ab7531f99b18beedd3f0d5c82057d2fa8f68e773dae960520e696b69254a071bc152a9a7261af7ab052fb00e4365512d108a93006604437b1d8b8859725917815bc7a84fc641c896f7e9fb7c60b4ad9e8580ef6a081ec81fbdcbf62ee1909229d75c6d06e7ebc30e516aabfa7c8a7f3754ce9f45986e8ff8d2b3c071a9b3749812534f3ef3ec3c8c6e596364e1bff5bd294d53a1ec9c630a319bd0bd36a7669834a9ee772b958b9e4a4c817868dd2d58eaf7d1fc2d97089855c57f4b382767fa2512454208b2edb57b48ad61cad511fe927b47f48b5368d1aabea4a0e7578274ee06665a20e0235763e52f8a80dfd38d146a552a1d2f16bf9814bbc5b65ffae9ffad2a0392310b908b13613b2c1465082915a607202d2680ef3ff9d1bb507f927154a2d050c7bfdcb8a06c4ff59f40501d8495cdd3dbf84fb0036b16cc3255211b3fab156ed2eb4641868cdf3a80009ef160ff7412df47f43c474066520eb9f6d6520a00fd27405f64424aa39007b7f5f3bfa3a6557f8552e1c3c2bd8ec97cd82acbf8781f72c7f855875d13bbdcdb9ec29e78432363b1c369d666033b4d281899884d47081d7863e5a64276c63b216025ccd4e6173bf91871d5da4d527eb9a1b2ed7e172a785599cce103c6d85166981e22ce977550d5425fed17ae41875a684581663c541538adc56f39e69e204ca16fc734bdc7717c1e6a22e0785af93cbd383c6a8acd1280cd518b4dfb9dd6c667e74665ae6e211c15077cfa6725667e6d3d96d55a6e3fa5973f06310dd5b812e4e3ff833825dca5aabc3c6e520aaec7677ba7bb86538dbb2f74afc8ea684762a523e5652eeb5764e808856d471ef7de9ed2f70aefd92b6877513b57eb78ffbba850ea85857f979a26076129c0c0fd2e69271c8e8ea9c0b5a02edc67a24844ff86f03e71223aeb37dcf4e4800e042e1593366df1cd29d6f16877f37e43609da0ad028bf9d73bf988cf3a15f843cf239b067a1442b127e2cd68f8f950dcfae75f696554a9140dca35426fd02050c72a9d0e012036b5747bdb78d71e1111b2d9ee23e0319a1dd6e91fdbb7e5a5734bcb1be0c87c9a42184df97930526dad81920334fedd5f5a1c71a03640477f75d6793b85093f292d235f304cb04d29e3d5382c3450cffd656f2c389a0ebc93e06815d76c46a446dcd2d43ce911391ce41becb807f23818e9fe9841ef2f65f77668e2dc65dc2a9731714ebd69ae95d5f12bfca20b05cfd63d1abcde176a54570e27d6b454b7109c122964fcdfd03dbef227eba564ec0100779182e63d2451892c78f77a18b54383e3ef67a8cf4538c418fe8ebff4868727059437d9db3589635a8fffc311fc79fdb086ca0ade74b698bba2b109a990a81f9fb55d0bae6bba71e7d1446a1a394c26a88c3ea97a6577d721a7bb8bdb3ccff3135ebd6cc23841232d4317782c9f578afe02f1cad2186f28d4df61acef6c5826643c47116c8aa3420bd47a820961c6e824d55159e090d9f95e805a26861ddbc56412fe347cbfedfe3a7086dcce16b019607e2989dbcee9649587cc5b295ff8f8dc4526a0b3f796a7daaa0860da4a21e350a50d9ec967348f445b4112906d81756b25cc194ad6d4653d4e2d454ec804c48b37907d95ebdef64bae9405f7e6f984597973b57578a260ff6a635ef71a31b8a4f7b635187695647be3c69f302d76a5a6f7fdf77c50a59f39f1efabfeae28df6a4d776fc8674e603f1beab08535809f7c552fa9fe4b2a342c708a4d1bb2461245d1bb6c02a9a070a05081e6eee598432c796be0f1b3ee1079deccb41490990ba849e1f3f43abd28495ff605d805f9bc8f22fc9093ef56d119238bf9e168d22c60799355034082a931e49d197c98ee41dbfde5a1b58e17e66e716554f91cc6a66f82c507797c3e0c4049e8d1cd7458e0d894515c1eafbc75e4cbc7a158f0859f23f38815163bce1828909c74d013eca2b603e889998fba9781eba7615d48d9aecb4b58ced910081fb94931ff784da06a039d8bc4e00dc264b69d538d38c782500d021cd6e2a957d02c2349dfd03b34a4645cfec80c0b9d988dd108c3140f27232293eeef0cb282e8994c24847a60f76adf41a17360d2abaa57b2f7ee420bd00be675452b171a720c776f8da2d1667429e788920055c2198b85620d26ab980b82b5fe6b53c3f7915bfffc61ec3f9ee1d411fd14269db9c8fd3a0a5d82e588684ce039647cfa452e3a63492a88e94bef4ba64b58d4aec3d9d9d4f0e8c9214d6961860b4b17e877b5e1f6d8babbcb0eb46c0b830af7d3f1dc1766e9af5a6f4c5f070b048a6c8edbe9abde44146decce548b1a9d4059a555641d8e5e9c6392d247b9530f79a322c2da563c7b86485fc063f6215f06be6765ccf710f600c822aa23cff774626d90f376d95b97d7ff736d2780025d7a1c9e6999542d703078cb39e79e2068a84316272f8d7c13b4d6333a9a3776002481d8764bfcc9f4e9c2d8c7d1a35a9584895d5b82d4c60772d03cfa78509e834c5498c6dbb43ae6c1350ada91b06749bd1b06e9044fcad5fd200db937592231e990b0dedb3440753908eb1b67738b392eaff02a7022344b8aaa843d334809973dd1e77c6b229c844caf590be35e81ccd8d07330941acf47c8224d1a1bf53cc582f5d905b433db057d1f10c59b471ca59d99611abb1ee61df56a63e64cd5114f23cf0a0d6c74755a1a937ee07604ae5f7632d56c1842ff2d113fc92e5bcf4a636ace1b20f841ad98a9d8b8dba2d840b6bb461cee16ece47e12792eeedbd9a433bece0da2d8fca9343be28959dfc87fc63b461256f505a1d8e4ae07acba4d9b06f936c71d5b0c5bb44554b60ebc86aa15492313e8a1d6a106fde3ceedb9e3d7dfee5c141e7a6b94f9c2ffe33f6d8aefb1609ec0953fe5979646dd1cba24ce149b7aa576044ee581014d47e3efc792e956845a21b4886f18261d36bf6d115a01097a61ac9e0c6de8641b215fc26f3437927056d7326cf694c696fe426c142cf16434252c98a7bc1863574aed057074ef71bce71194bf0b58b3ea0acfb9cb6f6ab658839d48a5883b9e82da0bf4114be88b91e855f7f59e09d65bc2736de0a3845f9e26c7ee343f3d4ce055cef8132107419c6600d35f649adc2e781b6218eae740be4d03b9ef179031b7c26d9ae498f5c6448c68dca38bfc76542cfd7afd9093b5c01737cd98a99d7eb8f6b17b4f12285f31b82fcc5f414a05e9f987f81c7765690a1cd69a3c967824cbebcb4ddc316bd66a7b39700fa4235dd7107b22fa66dfb698db5eb4ec1ff0cdb83f68801b61c1d18f72ff5192297b29600f80c4eb75202ca976726c5032181def3be0baaab37f638e21fdd5488fb3182b088849178d6c321418cfd44ec47128f435da6a3363f9a2fa8d4d486c90fdd9500b54baf71c7b4c0f3dcdf3f431e554ec8655f27cc9863a0a6a5f62f3d8802b9dacdd5c69715af4881e0f7b78b02c5517e6abd85d85978f670db2d66ef6ea74dd11e0c938ea9b97979b9e822dd7c24c480223f4b279d90091a41340262d374aca3f758511410c54e81b154dca096286c4372a63fecc2bfceceafa7542664959d3d1fc856dedabaa6ceaa5bd97881469302e8deb0243af079039e8dbc041132a91b8957a6dad2d79309db1acfd0a1d3fe550fca6ffa3c5a6f3e84b59d397196836601528f8dcaebaa8b5891cd2d4663e4b801dca129644b5c0b1fb9cc740ceaa743182106e22fcb1c9644051e02ff9b8df00f61286bd4d1be60079bdd60f13536bc89d8123ecd8fe6aebddaa75f96ee8ab1e34bae42ffa938c6fc3822d62d62c95d696ba2f0f8dd6c00cf78cbec0aa715826f2d7b92a3958754f43ffd506c241587987a37f350ed5b4e1ee669c9a3e26409fc03bbbba18830c6b070eac42fa426688499ae091ade32b110b6c5398e86b4990e8c52fe1c1436c584c3955a78082e99ad6e178c1be61da47628cb40a2f042cab832d76ec98fb09eacdbe487af651d6d8c65776def74f72a06e375ae00908fba281551563b5164caae5f3aa531c7d5f0392dbda8535766644e1dcd6bdf548d27dda8a4d7f16f7aef09fad2f75aacbf944310585851290e043af17a6a25d9a56e46c12851be75b25754c07b0a05e1b6b3bad8f03d0006544b68f079d836fbc6feb6cab48ce9d31218f1c6566ba787ba46a92ef2c390cf877a292a9d0851e093b08bce70043ae0952e254c88e8b090adbc9c67acba13bd6f55ff6dfe8406b951badba86dc8d6062e588691ea967aa16367427c4ea992b0d9dd308d159e9d7c733a6f078a6cd1e522a002b24304e40702539cb2053fcec67ed28a776c5e344f7ca01c5b7f01740ad57215eead8176affe97d92e3bd4d75d7288b93b210b3923c3df57f7f83cb8a54b241d46be561aca674fec745739eb88d9630b7026978767eae4b4d0d0f5d59e7ba892145cc6910d69577af2673cbe3d6dec80f0fdaedea29861bf59b2f810840fd7f3a2b3291560edf2026e5578464d4c83103182a2119039b75ebf16ba49052e08f8532dc52cf15ce8b0a75ac118099057684857876dc80a2fd0b1d0191a57c27f43856bd0d396257729972b85f3638d87808a766b9299035e920705191d38404e2e8808a9f314ef67527e4218c427c12ebd017de0d8412f3727cd9772c75dc9f0ca2a52830952179632c33a6911b4f310f8cc339f1b66036ee3ccce3a9ddd9bb41db09516c8bbcf5822ad4fabba5c0f94683b9935ca26fc44261160bfc01549d0744e90dbe93b2b36f17fd309dfbeb3497a2f5fb95a7b90f78586ced3970d2c6e603abb9884ebea51fb92d9245a937545e820164ace992af78d9161848abbebcf2c6065b0492718796bbbcd9407c9d3b0b8f198ffbb9eec39b3883bb8dcfcabcfdaa7f21a4af324646e4370a7480d515b4209c8ffc465f2188f9b55ba85d59a4a455e47d2633ff94a6c47398162fc788c2e2cb9c1346ae895fb0b30ce24bcff789c9b0c34b3d80a742138e4d8a11e2ae5ab426a6296c32a2fd00afb85281a072d5c2513db54e2e5978cada7b77b1bfe7c82ff72788acfe638c7fca3856ddaadb9bf846c47548f28195c9b26f1acf5f334ee08c9da605ebdaf5903558908b39f5701b5f63082a13686354417ce323955212771d6fed39ce7a12a2ede79b2681691e055caf36120c0153c0c8fc7d61ca3340ce11c2f0f233eaa3956f1be11b5ecc2d68e9c7062041bd5a7e3e2839e3a26bca33f0b7fde155ce9b6e044ec69d6527665d84ace42ad6c3b3d692bfc5ec2d0f3ce859d952f7bccff9c307d0750a9b76579cf4b279979a649f93222d5215520958079beb117d92fb6ab03b2863b536eaf91cecaf3ab486a024a5330915c37b6ead805c0d7c1dad2d5f351749fe9a38f8a99ba5a2304ad2acff934dabd05cae0bf3f9fed48dc4b7f1e0b0544a2c229ee25fea31f4e3e8bf4b0584127d301f5c6e040450041aa33183d568f9321436728598702893580c1931d033d8f8912a08d24f5577133a95ed8714c4da97771a7c8727cee08d119eec053483cc06a09fb395bc4cbb9da8fd60929ca36b00143d208625190d62ee13063f3cb695e7a463195d0f385602925c8df11f564e006a38e02477380f30cd7b48e91dd580f6fb22d9cca01c27cfd3f1fd5b828f6e8c2add8bb60d3a21e9c32e67dd7c2b7ef7d557fb26e8d2e9b2ea80ee3bcd60b1b7ce6c05211e486252f0061d7a74fb4d450039d2c92a6b20b2ca800f56b7afba12d704ac9eb4503fbaca12333fc1984e9f3e8ef06141f0003c7c9f1371c2ac192d078febc1f397533b0a5a51dc08ebf758c0c400f0814dff22a3e5c191909c2b9de1a0f32b626386cde80e81838ec7a27c3663bfab187efb3daebcb6fb507b3d19231bd28fe1b8d3ec09bd1f8bec373484a77934c7c6da0fa27173d89df2776e15184b6b126f7bcf466d3f6cfda2613526c77f065a829aaf755f4366c67d235b9622c0096b254ed399605cb736fdfa335e0bf8d65df256da9339f7c186566260d6386c6a4258046ba77a9f4aefce7c476a8568357e71fa5265e4ad3c7bb30bb83c62ac6a4f3abc7bb3758735f128bef716f2a8f2ea0c67de70298fa8591da3b855ba0004ce5629318a10cbb5c47b3227638aea0765a87d784171dc12bdf2e204d5c3a986b3d03bc9740527f8b97e13b220d5748713c31814db68644debc902f894f38bc71da0f27059757cf9e75aaf4dd99ca0c302e5b3675d42820504e8663a7cdbec8bccf2b56b6dc716cc2ed837071cd9f4c652e99dc6f0eb0e9d4f5938850ab38b2b413e30f1383db6c9da20fa896690cfea166f5fb7410638e5530af1fbaab558595345c857de39c3025fc82f41035a74dc5faa4ede35dbe86e64afcac872dc52a851607b97c03bdf97c3f4276fd91c28e995b7ad36a8a87d197457f3869a417205ea52254d96046d7e735fed529528ad22d893a2f88e9c5a490d0c42a096c08df7125bca314195af72b177d9269688e7d2d9fa74745eca32a16f55860f6deba7e4e589f9c4e020c25eca3b1c9627e3cd15c23bce572c513fc3fed3701bafdc68e6a53b84ff5cb7af3c2e71903f158873c02ff430b514f463acc951e0ce4cf3eef57d8e4cf02a0f058f716fb6c942b158106f6892c3d8a14727a038a02103d97fb8439bba1a83a90fa245159ec3a7a6e5ccf88378d9bde5c1350b6f4b2eb9e7a1acfddba3baec0345f5b6dad786fa761876e429dcefb33d48f51cd3e3002b6ab99396395ea8553d8893edcd8cb1acb75a245597a969eb1733b44ca7f6a02325351813392500a14b3f879f09cc6ba69659dfdde41261cf780562e0463cfe84eebec0134ffb8b6c90df53a64760128a41a5e52209a71c5fd17fb6d37f339b7e41f1baa85f4448c96dde2a829a23493c4562e6f3b9296b69fa4b4efbbafcf07909fc6c6255d0b16aa8f01980695f3716fd701c7fbfadde1179c4a4dd30edc3e360d39312f5d783d95089a76fd7f4a40aac6b3f73f496aea27d50fe13d0eecdd357a8e5f285cfc283535ffc0293172cd537f716a3c2f08c1340230cedbbd94e0cd2b4b402abe847f2fb0ee84cde913bd161950c3c0b9d4cf224491d13c7df0207363397bf7a13a10d8e28a0612e9df05f7d116e58dc437183239cbfa960ccf10db48369f091782e24376e67dab6f8a637a0ca0c04a26a34e202e6fb654424a3a02e52ebcb26ac27a15cbba08ab87b195dff71589f9beef35fc93be290e51b5a87477e8e813d8b5d9c10538b08502914519679f8225e6351daf8eb3cf3b6f05c69dedd1757a7ac5bae6778670821e8a73f747a15c3ebf9a9a7f6b9ee764b9a99512086bbe61e5ac6175fe5186986baf9d4caafebf952d0cfc2ed3074e8f9df869ccba8d19c79e44d170d748518fe475946918179156a6636738a356112f63ca0b53c52705528e75f9aad9c633b990282be9f051074aae50eb16e7d3a091375c1646b3a7ab8b1fcac3e16a331c86edc43a4913e9da309e17112de52dc613ef44278da3ab3201fa1531e3a3d3f04eb98adbeace165671cd62aea4bae65a764827489ef677f2f1d40c59333ba933b3360f2ae97a6cbe5b90600d7763de9dd1d47154e227bbbe63e3225354a945a0412c0d783eee87e14ece0278d7ecf8a21f4f962e8a13d410665577e622983b00ae375121e6cca25f1a48e983a864decabb44c73bcab879255e985854277d4f078a75eeff79c3e64f590385fac909877507f68ba451dd878861aea515778a71ee93c1cc0e8d11fbb8cf51ff72ddfbb39289633e1266e002dd3802a1f5d5e00ed870fffb98e7bedd955afc2b9c238991237110faf1e768f968c424c63639772de16b5a311eecd571a93e1399a5b04e1a5ecd600a88559744514ec383934594a83c50e23f8bcb97f75e143dc0fe976f9fd0c6485ba0306e903a0a41c6837d0728456c3d1736f165d9621729c1bc1126358966d844d04fb9eeca1b8faeb1a5bc544d854e5dc8885e1eead165283f7eaa23e853e18028976ba0baacd73ef72318072ca188c813644fefd8923a011bc135e429fed3edc4f2cc79d0d67eae3dfeb1079fde25cd9be2c654d10d59c22675bf77d925e21668077109ac8851d84d27fae0528c0840b722dcfc2ab82d6d5475b5b9232d70e0386945d9fc1e697ace9335dea24a06bbcbeb25785eb62182746ca115090a44a30cf4dbd4040997be6be2c3e73d5dfa26677a437f3a3241568f2a583aa07a7cff5f2baacd9e0e030ac837eb930372608d8593d5f201043202684416d14c33548142513d5bc6390115543d577dd86a12178814094a6f67f0b0e7e4975f4e09a4bbc7934d7d5b6a9e32fa5e1b3e61237ffe7699e074252b093acabab527ca4813c94ab476593ce7619d39f695409572c3e759fb1bc02de660502c9ad4e90d1d24ce888a6e7e0d59a23b36647e73402936cf4996ca59995e63674cadfe79a8b50894c04f997f4576f1cbdf0fb884d25521e09460f421d55828bfc110c7260a410be1ced2bdd6e5e7d3e7921b02d990df0df8ae2a58f859a1e079b848feee58d151b86954d8c6a2daab063f6937e5d8cffa6080d5c769f053ccc121247900e1e20a29fc103de56a1e971beb05da54b8a5e7879360535e8753806507207c4a4d0b329d56c4d725473f60796e3068ca61be449b0c3b78aed0ac22680d191f6a7bcb6a4fb5c78a35e8a9302fc24407d01491a4ea894d3ad19967f84f65ec297b1098776d503982db793e0a4b8038ba0334a3b277c55c26ce2a0a06ba094f5c10cc93798f89647fe5a91dc9732d77822c07960c68286d05b82dd6179ab64fe177ced2b2bd0d59aa5b2ee4c984c1b0c20300bca30848566feaedecf8dc193b3cd471efc109fab355f0a3fd1f74eaada1d0a897781f58b03bf78747dba4940ab71affcca84926a46b6c2a28d98b3de46dfd1419b415d53a056eed1424eed1eb492077d298f236229d763a171a7fd74010b552563d3b2da017d392792656b0b766b46e7d3fca375c148e12bb6d12b7a1f1f6ad38e590c0426af92b6f8ef74e38cf9d25626da2e476717330a60ec05bc66ba6ad9c2e90998bd0b09c4678b4d127c4f114ce72b6fa5e866876bf18b8ddbec4b850f5f4836ca5c5f3aff1a0277651010079096c179b199cee3a913cda8b962e8f78dd262caa7837f46668dbd61b62add457abcbbd0356df8832520524117c3ce90e9fee1cda68618d335ac77dfd13b29b72888679f5f9fb55b284b31c9601d882d0ee5b0d3e425f6ca94ac674f57d2f381e5ff2f5210221f2fadfa9984c72120e68c04bf5d0a4509a823a3958ae4ad85a0b8f38eac309ae1694b830a70a65a28549203760437c74b280e2a61c9eabf8f96404a1d262599c228bf6dc4f451b3cabebfa9f2ceb02c9f2ca8d8d023365c48ded1997d138004120001af8c51c69fff33f8c0519a56a5e8e052152c54b4c72e6fe5a2589bdd73fdaafd84791e6131767b4c333c800b5ba4ffb2fb51134c96095dd26d60852396e55bd2fb1be943fc906f2e36551199081573fd7672aeeeeecc5428c465ede40f28c056586c3ede14a3ab4de1fce0f400e338c6a8babe2977f464ae283af2c4e9ce90750c87f6d0385938eaf2c5503ab548f0e8506f68b19ca9eacbfc270b337ead66ceb4f5491452c0d40d9453b9675cf2039998f8a57aefff56523326018f3c2b90c1c64abee01e9641adbb0bb0f63797c6df80005426b5ffe3a3d1416948a6ad747b2b8ec681ead4c2449d79f37cdd1d461951081d781df0b14e87870ce2bb61666e9f629d0bea073b76e32e1ab60ff6034b025db441634a9ad3ec38ac65c9418fddbd9c65d0046da4f619eea50da9bd90e5d05bdb4180d6f5677d0062ae26625069eea71e7bc0fa12533cb70b68e0c6e16015feffdea7f9eb8986b475010a9d6e1d0c53047bf0fb85dbd98fd20f212c08384137e862b258341f0db38117f49ed3e459ca1587029197f3a382ea1df1a32cb2b30d33b9cdef0ef62d2e4d38127ce7bcfc7fe0b05027c0e0c3d950190a49ec470208f0c12d62ffc30f8a1f8cbb5f0cf0fec1b87d996417992e0e2673ef3b97c4f8cf11bbef0480f85bc672fd3525fb8ce6d5255f3e092bcfae6b7cd202f1d27e99346b2a44a33700456e29727ef72121ef5588d2b71a2a5a643b54e27ab0202be64254249ddc0c5b2dc50a04eb04a8d9fd890a8fc772f6aa12e8dcbdc0597b454789cc9449cb66f03bc2c6ebd5887767bba44762891894e8060f86556dfbdf1578a1ef448497877c59b6c20ffb3eb44ff40cd600228c9151940a01b9024123dca297384ac9859f371a68468a8828394c437a3e79073464641b428d1eac61836eb3c9fb9db7cd2c693ac5d08f52d34f84b2aac8bed15e3b8c2918af80477a98a5734742e08051865205786860c78857cbed22e6f996bb40aa4b2f60f3c07d384946e7ae1571c5ec603792042a4f647c1334685146c5a1183cbbd0b3a7ae17310d34f6c4f4d56292084564b902fdc2e21625429dd1191824cc9fb6f0f8382221351b33ae993e59b635f02da23276d91834369eb68aef45ea6ef4d71c8f5ac219aeaedf076e515a3ebcd4a9bb13c82b20fa53060a5ee47eef5610f2a91f17cb8a6ff2621c889b401cdaa7f329b3bc3b8cf9e7f6be977e15f670cc0148b5f3e90c25a4c149b00106042ab340684807e7b5845a279cc50bff517ab9c6cd8bfd1a98b4753a862f41916eefbcf44a47d8e744d713c56645fe30f1c2a4476459a0781288caf7e289e0762db8389b03afea6060e17a2433af980048597b1beeb1d4d7379d61ac2e20c7313ca45d9c5fbc33cae1bbfe74604efa30cfb2f10741f9c4a8e87727ff640718b4d1bd1aaa331dec0cee142fa77e6595343f622bfd4edb01d8f4b69b21135e9df8419cfd8f44508a3e9c2a50b0c02ffb04f5da5485bdebfe3c7bf76add78018ae3a222dd083cdc437187cae507e70ae53e1e1e0dca2e70e0ffd0a38c690c80b7b8edc21d713161184882e1176e9284df1d512c409934c7eaf7023e8b97e115457e1e3c120c61ace6562112e869283177be24c826451f2dac1945db57e202867fc66a6eff9e575990d5c3df212776c95e053cff3f001b6793d16be9fff22b52b3018e69f0a50ecc919c3c303a68d98963ea4e0a08ea4321b7b82b9aba76537a11b0abd3cee73588fb31a5aeca5b04487e120d009c9bbf325e8a2d50bb3be9c689340b43268d9910d99c5cfd201f15da527f00185023ea4502712e7853281ba6b0494c52fb911175431a41617e99f637b951dcd24b3232c9b9480d0fcdc40e0cf0fe2aa248be05b936091cfa13c62a0062f365249bfb15d622a022a4414fbc50dbe229c66433034ebd024862cdd0622ca925cb2adee411be2264d042cd5fa6b7df44bb03448dc0c9a5f3d7d5c2b1395849c6a61aa923f4aec7d402b62872b44d190c2aa390c4986b92629ae8dd6b3eae17367de870f114f31cb731f3681fea64a8457fdc0765c3ad002903324bb2b2dbfe0a394af4c3a420c2b7712b21fca4733d76758cdd5fd9519417709e9bc107291d8854cf869bda54dc96bc0bcb56fc76bd2d107f4e5efa95e431417509c0ed892d1ca8959d3e240ac552672b23d44ce0f83b08e108abcf979c9e3939b062260cd0729f63abd76c09631b984a308a774dac3cb58024c92444b92ae8edf95333b2e1510a46e702ccd8989711a43ae86cbb6f4416e9b80eda85d3164fc9b4c328a9f110b9966debe88aa4709fe2fd4c8895529035c805d13d852da6c7b51787976f2e97912823904a8d642eef1d24741071e875dc70ab526a0d75d54ad6b340e18451e52a07ee31f0e4f4903c8b4140b9f6e4286639c5926d5efe89fd494ab25d75d7867106b9f67f17c9098ff46677fd4ccd027de88edcc9a72f5733df44dfe25c82bce67babee268422bc5c2adb6b4ac84c54d2bde0e5b49623cd83d88da52bb72f41816e53fbfce868817c129843032635231cbf7edd8e34b981707af3d7f4373486b801bc7081d69ba30e12734d4f6ee55c13ebc6aa5efb46475c471fbc21565f65310896452ce8f6ccda59a9450753adbf8c9c382edb4f0b220e58f6eb039cffc15c8ccdd41458a4a446da2a96fc7d3d9064999e55e37a98c3d44ae71775e368885adb353584808d5569d24e60554eb9ae8ae7b276e8e0bf43923d0f703b4a5244edc23968f0c17a163e63f1ac3a7946f1ed81b87845c3ca048b9af02f76789767642b6f8f294ff1a3e29125b5610122767c87ab6ae97e1bd781dd280699be80737bf007174c65aff668d89e7cd039c259488c5d3fc79da835207cea73bf23ad1a393317545e83386e3d167c99456c720aa4bff079f6b13f2df7ffb753936ae5bd9f78c30141c3fca3a365f3cff6861d0490d7f8bae20153e71d5953324f7fdac76c9c3afba1b50c57befb34416bada26a0146d0424e69a02aacc671832cdd6d0ba8053fd37b43455910ecd93ba310ac46de985542619e53d2b33c2bb13c9909f7dabaf0618b9e674c5484f3480c6d18fbf26693701a51fa6d595e7eb56ed5c75a15190ed8a6d69d3e798216bf8264cb4c4e70041a36e7d5aef3e9afc1ef1d51c58a6384c5e82ae16b15fc8f78768c66c814e6d3c94dde89d96601aa3ec24eb6931702f117436ee83786551e3296dda18f624473dd9d93254888e80d0d453bf60af946ef4a067f8f4d5619efccafd6092151f04f8ad5879e51b37a0952b95edc3e65dff55c06eb390becb1b733d6f51d2991fbaeac444cc2d6ec03765d9b8db258361940ddca99f7a70b6efdd1108ae04a4137fc1158e89b6e93a38df79c65dd66062fb99a79dd71225482b8436e8951f0252d34087a08ccbcacdb7e4803514c31aedc96e96dc13b88675d55b9c9459366235bbbb87c4482ad2a82436f8364aad1ce9f4286a9b3e4ae2cb4ce195243cfc1b2c99590105a11f9f76c1b595af4dd4d53ca74d5633c4e9ea5f2b089ec15464094a14bd3907b26f25137b27fabc1903332715dfdaf9a83cbc2ee1abf8d6d4b5301ca1e8ff7aca3ba864bd8bb79a0a97ee7696c6a14c2f5b26fe9bb96bc6c0ce9b4febe4c486c2bf960e8a24c2b73cfc443b49cb2e81635ed02bbee4bcc4b96c313da8b91b694e24cfec4a8e4801183cf534f0538b5e03ca48f4d2ddf034d3801c83e783c120b8a8d98b0d3359b1604e49952fff080c08dc8d2689b33d481d71c7aafe98f9927dd4fe01249ce36bbb5357d912c87ad2d974f330b693f008e1a222acd7d199f0e1d052e34dcc39b0c866c33d0a08527b896ab3d9a3dce841e3df8834d3670aa5ce61ad92cc3c5cbcd2f5e739335a9882909076186f3ddfbb89cd165d0a70e0f0b0a070074e99bde3c77a4a298bd01f209cd5c97bc9be40a83f9538e0abf62621e7a7613e7a48558b66fad35ce91554ee62aa67b513b85139d836cfe8f69bb13d157019b9f803fc419070a75b05c14612e7104c9ef559cd2edb2ccaa5780e6344fd71ff196efec64339331c72afab39741470a9df7a0288ecd00de95691002511fc3a571f6e469cecdd192d005582b7593893cb74ed140232764786dc474032aee4a36138851b77818623961f01a5ac0a504c9d8dc9b09b1c5de4bbe87fce45b1f89223e462a07c3288350176b1419e657f6c2b7025c7a5f0b8add1af22bc8c59c09e618b14384e8326b14353e939b9f66e280a1292f37dc67fa2d307552573635bc3253fe954a328ce4413ed10baeeccc8d6aeed3d0fdb0d0241e9e6d6743158df11c8c10a8097857820a12d9625603fad8b8c45a9c91e9ec3c601f4ceb296cda87f8ac649127d99da3d982d9ebf2f5c03c0c0b7b5da3a26adb44121ed85ed72c7b942f6ee83b9db5c0237c93cf25787ae1209bbbe07a38ab241d91c1864578970ace0bed2c8f28e1bcef34c7695243da4575437645fdbfd0839c24f3b17e8611bec93dc9ed2ef606cbb82a3d216ea82275b5d14e3b1025650967e3978ec386ec98e31964c4d748910d51c31e622f55626bfa43baaacd82cdeb6c7a44ef0ac72b5c07679d5aeb7b85e284bddf7c97989738f10fa398475791cd01380efc46e7ebe98c82fbac113dfc4f3f56a266d7a15afb63e0e56a603dfec18e642e628231b1477ef49244988ba67edc481a5404c8386769a14fc00501a7bc2306b1fdad85897512d48b3a349dc877272e16424d9d787938310c3b802cf926d87d632b5cc90cb7c8f62d1fee5b42287336cd394681e4aa8ecf0a96a96ec7049730254f284b1d85c3392213c98446994d337e1be091963f0d983d297cc02637ef009fdd7f2e30395cedc2d6b13388000cfd4bfda3af76fd891e390918572438758b55267ef561c133ff859611ef9904361e449f9738ef9dc9875a6ba7c79b43c0150cad9236dba8510c0c22b60466a11fe748f19fe6c777cc752cb41f67ce63f3b90858df82d7408bab77f504032fa6c8ea261da21e414dfcd145769a368ad7821bd2aaf581cc0b92d17e05d6454d3150dd5e6cd18d2d7dec5a8aa5d675cb966d3bd39b7932736cf256e888b74b4bfc8c7f1a5fe7aadfce06ab9f53a63aa8e2f6c35c54e029433440023f213d4950f9858923b316d54110c18802ff8dba2e57ada04f42c735369594d9a787d1b439e3c15840082e8567b770a58ae2e900ab9581726838e85326ed3a99459ea2875afe45b2b25fc65b738b8a124e0823f2d00402c1907deef7b10d93d0df8c2f08354d469b569ddb86f9c3a188535a6917635153a5cd3c189150ac91e0cd92db4a6741a9b5be614f1da0b95da1c0c427692336980f2aaed9ee24d16d307bae87d33b5c30ae127f426528cd2a48d724932cd40a57f24dc991395314319423d7d87dd17bad4c70558777f48dbbffeaade6914a22a348deaf023039b690b46fdcb4f6e307c9ec34d4463c1934e1d8dca325dc581a4d2316e1cdcb860e0ab6eb74c072c05334e0d7cd4edd205a376826e9158609ec2587052d800c8fa0cbd6eda2f3a58129a8ab697d4849349ea5910e5c95eb95bdbe404490e9ab8289f306b04d9d43a76b37a376bd3f76038cf90d1d222590412f9cc5cc9341b48e951291ea1146f8f40bb91e80d08f74dcb07263d8c47b63a665f3f0c32c27028b2844b7314ca8fc2e89814369d56897a70100fe2d456b76b595eaedc8f5532868d0316f9061950fbfcb674e0f663fed9ac5a3dc47839b25b75d55eb7a85977cd4a98dde8b17c57f86b3dfaecd72860bdaf402020381a3957bcd237778b81640023ca71897470051f7e26a7ec95f82cbd04634a91b827924d55e96a34b9024233b3778d7dd872e5aab1e1720537d3bc518528247323aa42b57c2decc66aafc6bf8cc7deda7ccc9f5223f2858bf15a5ded0704ddbc93e318dfa2e54a5955fefff0cef1a43edeb0a813afee28349e7a2e44fd327f31a0a20ff812ea9444fcf891cfdb54a5d9f61f48422aeaea25226ce7af26cc20f46567acd01d1bd87aa4a00617c0c11142fc53e3c8d63523610a61dc465b01dc1f089b877cf5266afaa959e151883ea9fa9a74bdb6d081cac781c1f12cdfc1b4f95656a709e05a4443c609c20b33f9a4a5eb6b5513589eb86951701a3f286dc0a9ed1112973a5f135efce9e8bb0aafe9d4100bfe5355fcf3b92384c8b5441e6ffa557bdaf6e8733b9968b9e8adde0ebc36352464b1b5efae1898aa11b48433e1c67ec2360c4caed529d5f5f3b9343ddb61bef533e52ae54306e3d11daae0c5ffc4bb5a3433c1401e4306743f5911c86cd7f6e4026a60a19c5ce6ea09027641e1ffacb9e19abbd8f53064b7c5c12924cfd8862e0dad0f009a3339b1290a3815699175082498900870099f6880b009fc0c9c1035e961428972645527ff50dbb6ffc930ed457490f534b4a44a95ade4720c3d5d2683c50ea7806eb708a8f3fcb0b3e86bd76c252cad1b86ca23808b523d6e3513dfd64942bb4b54ee961b3683a530b9c9203039f30348bba85d054cb6e532cef79e7975255a354db187235c7801da09b2cb86f5e906ca884bc4dc03dea1a3bbf8a77768e376a1bcea59dbe1b462d2d348adb086b210d800e884808014dc63c48f88e0858f34ebac600d0780f9c59b129cf009fc65f8599ceabed89bb3185741fa5ef8d70b0cb017025ed19b949450a1498f74887fc836c2b62b1b749c025114ad0181dc810e0b2cf4c3c3a4a9be0618d0bdf16ef3ad6a95b16421727837548aa30d8384ad919fd93991deedeb2f3dce65dce572c32501e887a6fbc901e07312ec230983bff457f2bbaa5513965a10827a4aca0195b803dfea4489bd0c56fdfe2dae8a94ba91f05e151ed297d7a275c999c6f96fc1f1a5804b8eb5ecc3ce5228517a93ecef25907d6f600497aad612f4b771e5a6bf2914bacaf9ffeced2634ce17effc00a9439d7cdb4f11e46b5ce051252255216c5dda26d5bc8e7ea93a5186df97ae1ec2edae34f011de67542fa5b1afaa3eb601336b98fba0735e32ee1b916695bb2d0d046432e054739b5471e9f068dc95e8294b920b54a4fbd4eb0591516f9e6c1b32f516273c0f293a84527ed0a02b34ae57983bc3889052de449cbfe8f446abb0251b65974c01ce6ef3f3661a30866d24d3a7a1972c7a8bc747b2a4fd28b34cb917fc4384a6887c3675ea71f4c18667b3359c69ab5428b89c27d2ea589ac3406f89d44b779617939b90baa1bb3b00e75471db5a4317f19deb84b8419b21ef77832f7add656856d44186abe7d61369c336cc16a24e2f92a7d81c9356e4da4a419ebef9c115624bc592483137e7d9ef824c449b74847beb5b5cb9ab2f9b0ef6647bdf51ebfc7c2bd3ff8e30fffb53e7287c0acd325f429e097988784cf62a51cd436f06175dedf8c9097b3b4a4f11c578ba04f20f430c832a846c66623062e9616528e49e0948a19b00eb07d2fe27a8eb522688e8a42325016a48571c1e22691b19149c0114775a98942dd3bc08b48ae6182a1f4ca1461af7754853206d5b67ef0acf81b23f44ac4f0fdac04c6ae3cc4f539aa70e3e9bf1ad3b199dc6a73664cbfd12c436ab2badbb0c3cd6f7d9e28a67312b9caadce5802bc3192102621d6227fa4f08c219903c8f7b2406c504ce81b66200d6714de083bcceee3be65c2375b95b5dc4030c4a4275419344d4585b37689cc621e53bdfcb497fde625c9ac446aea8973956f160d291ae36a1d3ba6a75c3cee7f0f0ea5e61c5b2e19ece31bac5793977a89c3b66aaf7f770d01df3e2159215b143b614474dce38acfe1edbfdf8d6aa100c20b4459747b00121e6f59eb54da33afca2125ef3b15400e161ddd4922956567ced79f4bea8c581585d1bbb938dc35a90aabbb6276869b86b29cf8eff1a4d06f27e2737fc30541f8095278484910d0265af7ba824855f535680d14aaf1925d16db1187294aba0493aa09a87b7c7f1d7f448d5e4710e74f5320e38bbd1f0091ced3d68edae8313985cabed3b7e6fd5b3987061045d4932e0006e7c66206342e53c871628656568dafea332aa36d430fb2974793968ef3f6134053536bafb04d414f00675f102aca688f146d8de0fe89711de4a8eb1b4f4ea2de5038b250a5b64ecc1367e55dd85ed2e0e7d0008e9ff7e8facc129c700fe051356f4ebe7bd278fc30a895b361287a035a3e6adebc56a4f5818c2ed832eab355711b17fccc18ca82421c2540d29d1dee23a2c4fbcb2536d719a19391dcfe6e600ddd6707b9b082954adeec876c28b53b8da700998e82c40c37ea5f5446baedeec5b9a609dcf558f2df87f8ac2a975da90ee72f7f1f328ee6d26a0d7f36cd458bc49ebfa4d0314de4ec4b4c9e5edbc999a4df99c5b89e2cc111eb38fd13b4255397dc04987f2e70b83cfae3c395632e90af07442eecdcaee63ae32584bda0b21b2cd1888ecdfc44e691be3746310924b68d1c9105681f140d9d23bb2ab9afabb30437a5fadb8d44258e9101a7d40bfc6a2ce7032c6f9160e212350e31af9c2a13a916b08511b161e65334315c953f11a3dfd0e296959732596d1ac61f10102acf1f2b274c85655821cfa733f2ec726853227867c84452e2a3ecc52ef1b7efee6f6e687174c4cf4978dee2305ff08504ffce0fe4870dbd3e406a77e0f4bbe8f99d5d314c87fb2ec20e74bf1676570b72ec9cd6c258e74e32edc305d69d20d4fc72da3192aa0d16eb9f0f04077a6bbb572548499cfe79e138002f1442cf39a9dbb9d6437b3204dc937fb4395e35f12da763b03ba0226d1c863477150e6fa78a63acebf5123de21e14c62063225b9c3a4fef1eae52658f6e6cc26070f4cdc78d58bc98d362669eedf981d59b8b66f1b5ab416d0003e1daad25d0e511e52df1e861f315541da187559cabe63d3d8afae200fab7117d8f4d08d9b2e9b6d010d9a391d10d018aa66414d2b56379486e27ce469ccd32c2753910bb6535e0cbb07869a51eb96d566f58e984e9227570787388eaf48a64a295ac341653cc81ea35c01ab2ed096f7656b16f72d2f9107967f03b79b2bc4b7dba080f703059a0d30fd65d9b5a34e8b925b33a5ca4ed43caf4c90f2436b1f4045f91152a8fb845053d1fc48d102cc58147ff4993f0933a931d036b3becc34f04518c0e17c846ca7b318c96885727ffdadd33eb5ce85ca9d329605626eaa0f70320632202ebbdb03f456f217186605ce2a35c1b5bbe0dbd4542e530dde0a1429b4ec0b79b8f002fddcc26af32a9e4a16aeaaccdc660406e33d4c78c35122e77430f25a6c39f9ab1063c2f2193d3fcb2fff0b5b5fa9f645a9958ecfb2b2feb5949be3ce89f3ac54eec4718d2de51c0f47588754b64cb4895788bcf0036130e38138ba7dc4c1025ad92b4498c383f54424e1deb372b009a968735d2e74e81105bbabc0f2187155fdd324bde83865ce8bf01b4b4d3af460cd5a2880239e4516672a99b765db2286e2a6c3d2e11752073c5a25d732d0d12aab24d03f48b4e31163518c2ce589cff85c7529dc62972a0e5c8f1f39091ecdf348a9c83f8b514295d09c1ef0e0d8220dd832e19907130e4cd4960405a65154a9664f23434d073c7d9c092710cb607e72cfaa13db376b06b18934439262b0af9ed06d2a40d3f6a113e0079d6e19f4ef8c8fbe3b380caba12afb305b873739ec992639c49dbef11d2f477ce158c89e71b7ea65b7bf37641372d16335b523ea0e6f065d4bf45ca68caf984a5f932fc2c45d86fd8b7172941b5da852a4db0656d40012fec3d5b5a74821f6e1a6db5f35bffc8712de3e430ec2574749d91557606eee7a7c4c7a138107e31359c9f0283b516ead13567cb26118673e7da5f93a327bb2b8d09532d246dfb76a7f91a192e60dedc59f2d580e543107d4ffde7155d6df781b73e0c9d1d1b16c38a5fa797ebd0d77e28587ee33c242944c0086424e9e186a4a01ae8fadde6af0a05d4e2dee5af14b63407bb0603d284bbcb11921ff370f7ba59cf25715c5aad868cda2b462ba43d200cd87e0fe0031e02dd35a2610b2c937cea76d3e64ba8fe8b6355e240acaf7e5017672164be7ddd88e930cb973644a31b62ba0cdca5cf151cd1d6cd290e087684702cfaa2870312afe9b2f7da1b2e7d44ee17db9fae28aa889633e80c4747e796d3d11565d4f52cdd9e7b142eeab73d9e2925954c64eb3b27ea26224a6ffb24e53a8f24e0928f8343a063d8be37efa8df2d86ca0f473448c8e877215d1d81a1175ae3fd0a981785133951f9d4d2e26dec7b4940c48ab6b8f96bf65a62c799831c70c3c73a0d51a0e66255f855022c566161637fd58707e3f7bb7b34dede9bc1a2b71951974db44da00d97bb6225f38ac8ac1f23eea00607222a3b8d3cf89757f09a8ae0c71c88d91256fb9bacae78bc6acf20601ba163e67845f1ebaeeb1a581bf0d99169ff5c4eb508c58b6f0b08765eaf1465d13ab0638c0399dc434421032627bd4600d7dd501230b0ca7b61946b2c8f44391c9a715bdfa88c891ada7b9124fbc69503b791addfdc7289897a8756ba84e5418da661d314bfdddb49f44a959aed17cb8db90eebada46b95911685cb709d7dc0cf931bbfabbaff9bb0b6ea3b567a963ea9d6444bcc62766a6b857ded494ebd2c705230d18e95c601ae358b9ba119bb94bb1791ee35548df0d8e183a3cc32c6bfe093be6114453cb6525846aa31d9233b2d0e9f8740fe535c415756afb4376721199b2b350c3fc1cafdc92546e1aea93ed80203db090b317c852a51d11f7c885feac3f1e449fa4a78cf94be46a965596dc8a1e02c073e5a6d1eeb4931bdb66d5d15d307433c9ea800c181273716a4c0572ce70160c1e266791ece33fe1e210c61a14a6a418d0b6000870ea3d6dcff86bf7f62c309a3f95c341e254da4466f7fee463eea4b306a1e2e5987698eae1af78c4b2e598b8146fd873f8fef9a56d8d38762113393b87a1ca4f1730dab7387d28580d0284fc6aece90235ee45e561f58f2bdacfd04a111df918835e08ed6934c95f781c66a33974f6fb024a35b8f4113d8e53c102876d0c81fe9f55eec55023ca7277dbdd6e68439a1d936ccd1faea8d33dfe4f8ee923fbae485b14da3f85de12235ad53a4372df05970608e3ad763e90ce462cfbc3ef95acd07a87360fc576f9f9a2f385c2c86f05af228aa3af684bdd01f245748dbf221be135f389c224115356ecf7158b4f801a22cb1be12cb566e1fc261071d25a16ecd02467c5f88565970de2fb338f99ddd485fc1bc36a162082d0214bb5abc66b8bb4986238f6c73319b6638fc1ecac03ecdc423e09bfb288a69b65dfb16d50948de9cbe21dca009db568880efdf2fc835d21e27630b5af5162a5def6eb2445e8bf1d05b08fb996079b2ef07c67fb89b881853fa4d626782632c899e8f06b9a6bf885a761132ae32ff899105b44449cd837cf7fac9afe9a613e2dcd46ac2e59d30cf22c71f2a79af283fb13a3eecb35f45120ef315d2deeca65aede271ba68c6929735fb3e7ec7796c6f94af05e4e662608215b98c630819651feeba40844a2803f6ef976a99d429645007373b4da5743b5b3ed45e06ed18b1f0d30b9ca1387be4b2d32b0b8ce5acacb80968af50dbdd931910eecaa98273cee0469e0339b207c69d4ecd2a16be34039292fc2e7fa27aeb92d4eeec0e9d6fafdb73e920c483120379c5ff04763fd3accef7e06ac5cfb0bf138977e35ebac9d3db97b281ebb17423e757c145c744f75fae9b8b4dd9f2ffb46fd98fec225b005785e065d959468f3fb6134b91236d65631820b5a46bd1058dcb9da0cf6a8a2c637b5d0d4ad9efeeb53f4451ee96f827a513cf2d9adbd85d344514db48291e822deb9bfa965e7e20687179254fd35205ed301e8266a9576091816487874aa3f0062211ca9379e41e0688881f0e6de273482641e3a7fc6cd528f342f1c9a48085077fd29fc90e807e56943286909b7560e61d4e90e4a8eb4fe849a7d1f2c7c2522e6f01d6b51e42ea2fc9ba2e1827d35ac6a5f8e9b60b7d3f61a484aff28350e8aae4bb984006894a07a0d34eeddd6510fefc371966b5f31e3574f54a4fc9249d48668db435a61aa4ddc8a13a387802fdc74164d206f7d4a0e9c99ce47b957c183dbaa21c5ba8a934db4f8bd1fc4f5b643ce67953855a33321002a5ee34fdeb2d9fdd01f5dc35c94a87c640a18a31e031763d8c941c1dc8eb722dbb93e96d80f53c78f4f21191a0185deb310396716814f3d523490ac2284c4906e7de7dc77f284ca7b87bad8770266a0809beb888b26feb90f9098bdc1e379ad901578d21cb6fc3d99f2f15c0ef20b35f4a2df431c5f7e1ffd69f3d7516c3a9f3c0415d6cd2b23c9d102737927a96556b1ed0a94748bcf263763e73d4ae9af78f8a9a2fa17e3752a1b41bac64fbb39dd4631f7b88cc224c4c2e489ae21eb49a9c8fc58d13b9b8e3761c8cd1505823907a68df45e8e46e8178dfb7327e3341e7bed5dea1961221345e4986348490c59eb1f9cd016a9ad9a451057bc7138e6a4ec8373f0493ff32af15b905e35a83009b4564e583ad8d2bdedde89648ed46fa017b289c15bb890a9a8a359271b1037917fc15ae1061817d4ae6fd52c65a6344714736dc77888a47739e4eb49f568533f512fb6d6b20834c31e87facb9b59aadb254560f7034d8012f05ccbdc87dfeee87bb4685b800bdaeb6e41e7196ca5b94254cfbb8511b113374f3d534b31e477c7b43e317e561cf116c710867d99fad507165f2d5f17606ea4fcfba4c632ce130806c6914135ddeb6298a58cf49876e391560d98c671adfaeed63d110d4db10295a1df6aacfe32b10f48f3aa13342453f1a6fb7281a1c228c5e4b86e03526c847a861519453bd41f45dc9664f2a14de424d614cb873e8b5cbce23f151bcf92921b280ae09ec9850f41dc4f045d5a9291c12fcbc9d6f5e8d42107d26720cdacdc48c28ba36a4182aa6344423ab29ffa8a648417c3a97c52aabf7a85d4f01bc837cb754743912524fd6364a571e6c278d109d174151874786b1e78118863fe85aa8579bfad9451d551055b946a44ac579bff994e92315d6232f19adf8027ca67d2c01f423236a8a31c3a346d187fd4ad3a7dd7ffc9aac8f8b70eacba32b1135c8c1b38e7b7b7042d6892f6f1130e9fe926aea42a28e27cc438332537430f40d1855268b39e88ff2296e4052a57304380d24b6316a522e54ce5070770a2f577db3eb3e798edf1e80d4fc113fa79657c98d5ee91e896a0fa2e5aab8424cf98710f060ee4413fe79e96e188bd94a00a1333e5db03da9d01d13dbb7d3708fb3dab6d0a35f773c2f71bc6d2dbf61fdf6e883f921d6119fd24e8b05ab76100cd944ad1d869c9e5928986c568adc7fd0234dbcb1a2a6dd851ec7279df1b65ff2bc70c810076870f18ad39595f803222a8badfc217b5ff8427b525b1d42aeff2e751370440b4a9aeb232362e980f598196447c4c4888a6e679c4d83fbaad0f78b33239c763a1ad906958bff349c00c6b40dd0365df1708b21bd39291853279218b7eee8a21e04f0779548e50f2efe4b0aac8bc16f50c30734b6094acdbea813c52c89b4dbc3d10cf3d9c478357fd43704e33112de8693df598fac7a473b659c8772526c966ad3e03e8d11bd03eb787621997993e0f0f40cf434ef4d2e9005bd5a770c024ff0e5c5790f5a545b971a6a2a985620c6edb582a5bcad4463be42ce29a3f2f7faf7c957f16152797cb205ed46c013c3d88f23fba228b600768c7deb212efa61593e47aa4fb88aeff7594132a693161e46e165ca685063406083f7734c860d1771a3267a8c0544ac1034a5bdd74d8fa2cd6c8a8da7de716d0f5ac443b0649cd0fd0758e9288bb386615fd15f936b9e842e8dbf5f70c3cce7fe3b0c81d99def62c72027de15e83d1ed16b61ef103313ba54ad638aa998facb30b7e2a20a5443164a36cfd42540b0c017e5a6f0f3f49c6350c07fd69b89adf3cf1d79e1fab3ffb0fdbac9900959ae2335bcfd7742567b0b7347356b926fd0cc0bffa9d8a50f3ac2aa958421db21d661f07fffa588c93489473d6144a693f27de5971a1a8e92513b180a8083d84e24e1dea94e8d138de78dac5b77f280f9c7a6b8680f5c6db120b942d6418b9643c1a5c201a7306d85ee0d0cdbe2e3cd4a8eb41d206204070fb25358631a85d73bb7af52f30840a874886842b4e20543341a7b91209de6b4197dd7c5a51e1dda441b05d197ea3bd7d715e711003b05f88f3cca8871a26c0e19f0af632f14fe8fd70009d647a9cc883a154ec03e8ced8585ee44b7d521b0a41fb6c773b09ee78dfe2b003c8c023fc8a6bd72e359ce8be01b4b57eb9a2117bbfbe9463385729a5b3a0e44a4fceee41b07b2052362190fb36126178e5cd31251b4b1162254b3b804bb0fa502cc224444e6f6e79d90d9d7b7eb56a4bc1a55c9d8843f20cfbe421b40f187118518161bf225374e9e64129d98f82a33bc9eeb194f34ab3396e396e81a0f80a235a88777160264bdc0017408f9ff456e389fa180afc87dbf60d6247f2141ba49d2b9ff24da81332af8c24ca2260ac22dc0269f171a2e470cffa8dbfbb37ec564e38203df7c93754fb8df825ea69b06c61978b0e078978b5f58bfa9b3cb781957fc7f4e722762a2845eeda5eea814afc0b639c95b9a86d0fd948eabfc2c3d8a1b5dafb5dea196cd5f1fdb81d8e3b654c6e7d9d950a871c7b30af624d3a7c81bd14005d29210c587b61c16dbe0c29cbe57d716906780452f8fa1b49e1f0cd92c2b2301edb4b560d1c2b7e4ef704708499bb0e1c8c5032df5d7f879841e8995fb9c06fe8a08d9a6bf00b7d5369f44bb5a3dde01d9db3503907ee7b23216e92cce63e4f4238c95b165dfd20a4de19c1005e4b693b00bb32503a75cdd44b7f0bbe782766a9c3e9d49ef9b75cbcb90d98a5c3e8a22d5f2a5b7f7d1c18c34fef3e578b9e82942e4319f6bcbc9abb72bea4f703575c8107862ecf1ae0366e3169bb67855b5c9e995cf78d0b0820da0c23ea7216efbed135028d59b5b1a0bf28eca219ce96611e2899d319aa6851a3d18463a9beedd5f03c48d533a4eb953149e9333aceff20957eca01883ce710eaa81ce2ba26ae74972e373956662f3056555fe59ffa20b25ae3846cb3b20111024c7b9ab8e9ef716554d10134b2e8b0e71197d40a2c44bd2a1ba1984bf6f8a00ca880115848dfe9b60542ec07d83bc8147f79a1ed45b0b18acd14783bf315b5d3380e1b8422af413077f16bdf3ae64d708b3ef5ffb8c8ed407e91ef5f239609c7066efb93b938710d714e44320528cdfcccdabfa8228e1c83ee017a19551a287c7e5204410b16189861b0dcbcc30d09082e2fb62a5c8919092d51fe08d99b1f7c21e872ce403e3f6f852e51795e4a5d60568b91efc986dfbce65e652177f812634fe9cac3f53d12baeffd7d9be681d0a96e99f385b0fc91a6a5ebcbbb1952dee17ef81c9e1d0f4414484d3dbc1781e75fe20bebe87203fb0980d6eb4b8158bab479ced88b8665ffb6cda86df375db6b2ded0abf55df966f387efb8e5b86a319b6631d9f14f96811cf34788bd6abd51705cf954ebb5bc09a18083487380848143cf963df0cf32bdefac0247d3e0aaedfee4d1dc9150fce7227bd1f9ff33d5130632c2fa18bf696aa4d3ada5dcb905651922ee64db67b2ab013b2b6614e14b6c2082516e0567d9953e66c2cc41b3a008c6229ad369481ff4ef2b871cc37fe253964a0f09872d88201e2025eed1a844938669e9ce3e21a17774deea74bd6db968e34c7fdf1f1c41b75f7a49d5a6f720ab88e1572cb164f34feb4d5db5cb7ad8b206f7e24eee21d9efe71399a6f9a2e89467abde532d4dcd5c47f7a82d5fae198601a0a0fca18cf523ba667b62f0cc6239b34b5ef610f0c0e9ddcfa90f733762393b2b91c418d0925cafd6d08e991e6ef894a4dd4c0f70c957f5951ec817f1e9aeb730ba65f658082aaa2d3410760fb92ef283f65940cf8efc9dd275b88c7deb66afda2db4c689eacd87937726e1eff0aaf6de0a37680f6d4a0f441fc2825726549aaa20cd8545f08b18d6a2c485d235bc11594ab3ec7abff7a1eafe4b1474faef7a8188b32d1b559cf8ca841639f2ffa77855b0fcbc775bfc5d653e7d5f9bfa1c440c5f0facf5379d90d382ffcea66cd8e0ca11825321ab08eb954aad136e876147348ad8b6d2889753d417d25a9a5c144ac8f00e6974209895d3582164acf09eb4645d07802ead4ded9c2c92e4cd83ed5119b45e8c9909fe262c7694fdb81e7230b243090e77222d01a5d4273226ec48ca711b52e73ae4cb65fa8f79e3ce79cd08739eb034b60773a9f0ca578e2925e0ff2e2353f475a6a6f6f3520c7ec15e9020ac77edd12f63cc168441702aaeae0ac48beb14c529a426fb3eb6a4f1f768ecf110b6239c6f680876ef9280b7d6d2b250936ad0290d7b6a84dd96a4032823f22bb6185088e1f2ba4f1c73c7a8b7e0d5cae0d7166662ec05a0e3eac4c423126cb085aa08b3159fec25655a6dc279dc2d89ccbff04c8f396aa8eec9693b86793f7600aea383799616078bd1ff606764c06d19d4a2c57aca23a63346f08054f8225583ef2032a71aeb561aab2cfaf384cdb9f6c775fdb7961552bfd02c8a9037134ffc78d31da743dba236fcd0ba89fd3d14caba5e723e1857645f12353b11c698878031046e3e8e1fef1b4ca94fb38bfcb77c9de129eb2ccec79fb9230fd74ea3378117f1ae7f03f9806f15cf85f1c0e3a5fc480e6c7112740460dd7d3ad7bd0a825f6f6fd907c57e1f322f7e4b97fea0e9e3b8916310fb9d97327989159436ddbbb64d86fddefb11afa89cbf81d4f6543715ddb021376a82837b963df1055ce627bcbba91a792b784d4bec7a2b2a52f833430796ccb3e1a19ca793b7c740cb77185be4697c3cedec79494a9282b26e2a46931305fd934c38c2292fef10ea151e73651de6964eb288c35247ab6e3f19af9605fb3a272fa654eb8f3885595fd74ba85903ccb7dfc29fab5db0afbd028cbb74cc1feed30a38c915de73090f727b438da99ad71cdc4bd3bc12d455ad7de8ac3218892c0848969612801f27d1a64ad775ccfd7ddd5c73c2c86b5a0dfeb1164578c624f1387dbbe3539c1d31c4d329a4be1bd2459cfab0f03f14c2688267b840c5ea293be08bb8854f2ed542196ad46247d122f20425f99acff916ebdbbd5c01e62f4b9787cec9fa137076ee5d770ad3eaa89f89876d72e4b2fb4691e75e993b6bbd9a8400e768c3627d8308801b1b65ff1637e58576608788608fd56658aad24ebdfe663e3e5ab58c46a0a1bdc78513349cc125226591f2e6be8359a5eeeddbdaae533b1a26342e6da6fdfd2b222ea2381c00cd879c6cf457616bb50a2626d24a690d34e8e61d48f4641a1105f1840fd0038030b62d530bc259ba0f951b1ebf4ba3dd1ec1add7fdd68b88333355e3fa419e4738aac46d595d7f757e372fa8a567e83b86d51a3785351abc49d3f9005636ad668cc069a4390e15ce0bfee91a51ebe22a4e2bfcfce9b2daadd089671ed3c6ec7aa1ade352036999e5313ae209be819eb38c5fbe1a4e75d1793aaadb9afc24a86fbef05dae3ec6b148dc10480b4d83a133e9f684534c104dbceed7bdf2e22fbf66e5327ced435facef3946acc066dbcfcb68ba0d902dae4f371816bdde6e959ca997489f158a6b73820c34fa6c1735fb5021cba2ae6aafce51be9b69aa11a5880b011b164744327e63f8979cf793cc9885863e62891c883c9f65167a0813859f0d0a35272e3d500e4ceb850c68d1af4dbc120f564b14b49f12e5d8ad3d76f8fab009580e5da74acdf34eca7ddb09db116506adc306b7684f1a1c01ef0c6ea9735895290d495c61e367fb2a9264d625110d429f1dab6c7e2d3cabd02eba0337294d32b228ab71e9b27e9fdbaef4173e06fab0469514395cc1ebbb1a88916c8b4fa7b5ad5614cde8490144b950c1e670abfcdc0e24253525b3f52dfce5d0b647dde031870c41868e791083b1e3937e4a79e5388d54ed086dc30ccb514ecd4422fe641ca654bfeff1d56559f283fe062c8acb10f2d31c7459e0dccf1b6cc63920f948edab016fe5123eeac8c1c94d5a73e5b152853fff005e7492bde9fe98d6d3fd9b474ab723570b5d59046ae54811780c6d7b067bf2db12ba4d734518fcc57cef315d51af12eefb00d5ceafc0c87650484890e17e129c1e7f4188b371f119908e04288ffcab2e6271c2872b3dc8edc6c9d5e3c594a67c886101e6b8968c817a982e5f942f4a5b624e42c820d832a76f1468e9188c8ce27c0627172ca3c222f8af316847e6e51cc2356862447523e69afe5fde669a35214968234de8c050535b756086d0516f6a3fc756a94be94241cb8b98ef18374d14d1ffce44ae763250f2169e49aa317c6e2369b9959708487bd054a03da17fc01e912787ed8d13cf45f0652b158bf90f64eba7b007202fdaf66016f8291fe73e8e9acc90be987fa644560635e90586de5d22c76f047fd9b5b06c0b0c95168fdcd9ae820c84bba5014f56d07f49a2010057fa50b340846f79ebe7dafa1f7b62f43dba1e60aba20e72b91af7688c508a92ec3189a01510bc3a2514c89291720940904b739387debcfacd3222088ef5dfa8129bf82964fd7977bed03b4981d31657cf7811b66708763d0a6e4c45b4e7e67465f92eb4e7b66fe06fb7cbde49a4d9f951873b92290471a47fc22095e0ed8111f8d151c452938fa9e7d811bf811073a1528477b1bfe47f8b0d234a0c819aedf4423df5b7285aa314c5ec05d11fbc6b7cf68cc75a095c03fcc9a7e0fb77a865e5cec37bc25435c3a7ef2043d012807a9aebbd23bcf8a4e17163e578614ee85c7e2dbefe0e2b30df85159a2069cf2d427da36fbe379f6e395f34ad8a86e1d4ff1a00cd101dbd27cba627fa4c67fb85a7dfc25375d851d901b0b02d3c85d81a51289dad09a0a9b5d8c26f6835165d44e65412dac63b2ceba8c2a59706d92032ef0510498449309b7190dd7f6c64ec8e34cc2306645bb1a855852744895b1f46398224193d2781752542473ef86d82ad77fe86b6f70274636c0ea93ea2b6fb85f8a094b665c0e620bf3a344e2075d96ff122c67fa90471b0ed6ede7248d011b83129e9c70fd197cfd91836ba0a9a2f2d1e258a7fc50d0eed33dde682a7333a498dce321a006c1447b366125c1cfdd308ec89cfc2c8b87618ed7ae1edf0060439de2136b0bf5c6affb9e8a4977cb541b9d277c03a05424fa8a3044850a015433b53017931a27c7ab382250f4ec21cc7bb1fe6727f08d04842fc393e9ec888c837ccb8c43aacc5a606e3c76f714987fd4e508d6394a2e71d4943a68ca33ac9b88cf5580a80c7da38b959fe837e0e1f1c35e17966ce5c47aeb8ada855e4f81c32b1170512f33de07cc6ffc3d5107fe8b6d4b27cc2c67e24149912e1422af95411aaffe093855e4bc4cc18d28a02b452bb6da4b7d87c96aa3489c6569abba0eb530256eff219cc3ee27d850e90448886d6c886225018a6d4de2b5a1ccbc16ce2225912a2dc864b617e80ea0231b3baf69785da2625ad025319ce3afe539bdb689a150b4065561635638f5f5184e77724118687170f610daecc6680df890e691cac26b11af49ed0b1610e38bdc043e84f3c70d67c7dc211ee8336f7b7555062959fab85bc09ee817e49cae38fe8e6711dfe6d286a3a0d3c194e6d21a6a1b33c0e1d856f0688a4b0d1d5c279895507110ebbffce099689e7643957e0d9bec3495573f168b667f86bec401eb1ced7248f135761084c5affdcf0007ddef39742608d5a003c21de263b1a96c7e80505b6e1e487d392ce673d1cc414f9df7690c7de75cd9eed158e1bf56ea8f54b274ab9b308bd872198caad68ef9fbe5125f6420cf4e06d9bb51466afe67a628bcee38c3d93fbedf004b58456afb4c2b6514f61a9201552fb1725ea2389621005925d121ac0f47870e08fedad6df2d26a6ec755777211f82f91718c96b538e3b53ae8ffd17e2a53ca3bbd9ec8bfb9eb48f65b0caf840948e2f5e87b873358ee1c37d1a9ccf8b915ec12905ed00136641e430e4da619eda70e450e8f9c0d3f55cdce6eb53b95ab8c0e4e75b5209a8c22d9d9d80efc439487b270dd56363e06bc3fb091c22faa67d7c6972bf36ed2d1d07a7ba3b022e240a0c83bf01b4a10125130b624c7662a1f52b82ae496bffb7426d1db78236a290ebb0a85e0c95752cfb385abbdc94e92d7100e4f08358e01fe48cc2b0abe2f081f76db8e37eb4c30ce0398ff7551815fe2a41b620d429b10bee61ec0a5ceb4383259990ae545574b154ddbaed604b20c66747a24f5a7a0e1df79a5bef78c087a49c782e252ae46c54773c506c0216a77126f53bdb9c078a1d1f201c57978de9395cfcdcd163aae40e186430bc9f6f8e8eea2d5155ae0d1311c61013a3d2ec2f91b2b817935f6e13f37c16f01854e5eb2659b19fdcec069cda5bd7ca5e0428dc28b7fe637ba168610789b3ad2eb7d559fe800c26e1dc70fb8f35a66e86df4475841fe91b06487389c7ed71fd0e8eec2d656627c750fa03652fc304a3fc01719ceb6d5608b8202aaf346ab0f013cb4394b007c4ec137a264a2367edca8994a8de1c9469b06b8973b69b84402661293fc8e67006eb1fb711d5835448118cd82739edbfcfbe447950534d49df4d8e8df3f0ad40373423d3626a9aa0ef22a30e5889512d47d0439cfdc6e3d546c26c5a4293cb1eb96ab8f05f8f2d3d30b855d964f339c709c584a1ecd745fb08761db74acf791805ce234c8b348841c01daf217475b4409e9eb8aa03df5d7310bc36f99dfadf5f8067ed2939395c3a1d01a7904e22d80d1ec845a92bd5dc44835c9722dea7c22a1629757619190b76830a59d484d45d0e90df733348698864c4a024fe2e27f93e6ec01c7cac22d5a3e26b1beec4f2615695470593c677c32897160050a984962161dd39b72cba536f0f18e8d845147536425db9dd877d43c1a22ae062838507441820991331090bef34c686942b849c1b801997410a527321748c2ff9cd08047d7247188d0744bf7320da156d0cf4260f073ecad15cc170a7a6851116991821c2b9ce9814fdef408174a42200fd49fc453edc020a02111c053bf06221ebb768bef1b72d6ddff3744cf022e1ebbc595a21748b3700f0c7037665fdd63f4d2fd3931f9f088e20d745345b6d0b89a4233eb6d45329e83706da38a2e136f026863c3af34eb5fd5d03416dd78ca5f7433dc2729cabe65f6d369a78e1cd2471f933191d9a3635625a2a4be18f8ffcf90b4d7444be135562199f7ad689e5a958cee6af6c02c1632fc5066f210b1e892d2ee9f3f8ea8d34670631c9ee7081083cb3b2d0fc44bc8983bc40966d7d22047d41bc52181ab36181b0d4b568fc8728a45947e09f64db426e85144c4b16299bfdceafa0622463e0b9058a02fd1a3bc0d760cc673f211f465c04142f27168434ab33d45c821e4b543183756bfddfb00e808df7630a3835b2c0c05e6398e3073a1fee291368576291de4e3352413acee1cdbe5012635a74aeea2899c9a8211635e711d65c9f20461ee6b751ae24d1fe6251aa49118e7e3fdfab8626cc4c095497d80086c3faef1cd30f500d661c814c1e9b86e69b8965d5937f334b02fbb0fdc7c4472f077b125ed989a22c56ee6f965794c330877e953cff8bb78696339c2f562857701835f29444cef914cba6d8841b69e3cf3e77493561aa4785e4e007b3a7dcef6ed7a67676f469f80986774b00969338887452807540568bddb660e4165d1259ef76806921ecdf3d389eed0b1b5e60294df709538b8b372d406cbd242cef9d221b5275100f51794b9276a2c2d2c6c8f8a876377b1c76bb9cac3accc051e405ac17c252f5ae50e1bd6c88d53552694f552c4e14444ffaee319291e6a7cfb163aca9abc26bf42769fc88a873fd1ca1c23361d5b412264dd3d4e14ee7a9033da0a1a4cbf96354148c1e487c033adb8b325aac924d7478482a6acc9a1a10fbf0fd88c5a726a15c9bb481fc71df5e1ffe472224e2fa28360e969a06a60b100907f64cefcc36d5a86d3d42e6fdabb899db5239e9c4f201e35f2ea9bb525b29ae47b7e5ed46f54143e72fb0b11acc0aed1aa7f0688c117d221e90dddb8d104252e0b1a638130f86a2f9d7a4b052062828be736a091ab1a982be1e6037c1927c9d440a6cc0fa5975024ed1bd88a5519ac7f68557dd435dfad0c62dfc933e2eb818431d5ffe2fa1691d06f679f2b494bd4295e849c7a173174c9679daf8b63c5619b16b13a45bd0541d6b6e7177a7725629eefa02bd23dcd85af4b4a8c1e442dbf5db0b455141663f18809a4da1603ce5e00d0510511a11dd1845d35163ed5ff6c3467788656a05cd765e291ee077da7583bd49b64041b7d0a407de90a5796b40385dd9e393317d6eb50ffdb13241a12811067cd345c2b7f284c381a7f0882b0ee1a089f87348bd81a93848b92b63c1744924c253645b65576e4411a2e787f7433429832db07b04d2ef88e9947f50181967a31d3eacb035fb553f5ab147b2c74f5fb86dd0b8e79967cbf364f6e5c8c348c527bcc86a6b23115fc6343704b44add4736e075a36a4c34451d12d269df45e037c112208ac0058194cb8d33a9fddd1b5c79575bfecbbb91a06fa45512f995d01287c53ae97259bd16a102fd795fe9dba71d37fafe04da298c7f67b6a6159d7ee847b233327e6c05b1845045a68ddcc34914444820139380cc3766286dc68f8576bd08ea7fa0f603ece3fda345a3c23353ffd18254358e5b798c3acd4715a3569043a6c73b26f1a8bffcc5263b3ff5c16a71e63abe68bbd1b19879ece84952b34f7ca11d8fd898cab964e645ed1301e9ca46b690dc891d39ba13938646757df69d967d47d6e14e5e4b6d0cfd238d646289e10328beed15061226035464339b7c69e0bad4fb6f4ed375932345e035d0b139283ce13f481ccb91cab1e2bd51bd43b370dd3e3f47820f58be5d0edde692a57795b31446df5d01920ca11eb01aa691b3095a461a2d59d27b44a5fedf90cd7b689ff460eef42e78fbe66b8305ecea545a4149c53e22fa8cef16768ae515131c43e1d72684c51a0fa87d73a189e12faa72ac5da41f4ec5cb602d8000019e723b2a3eab482140c9e675d0e6d501b086514e55a384b2260e85fd579899978a3c7759b228bd9dc6d6f61204a115e922a7672050603d7b4859a520c7ac92044f46c891751276ea62f879c803fff8c7f30be1acf9e6ca376b43f4c594cc307241eaa6faa4857d0616e9acb3267075c44e6f4040cdb91effccba0bd5958dcb381296eb6c1a36159ab1ce0b84c5b0a06c4948f78ac962818c9a329e0771f2c2f9cc8eaf567eb187d6530b5bfa32a13952acc8297bf3527c6a0c63aaf15b16199a253e6d290f4fb598f37756d52c8413d9f37baab64eb54ac37368593a50b383fcf03211a881fba28c5d65261e9accad501e31b0f7b59c45a3ed62b7786f906d6d73d4cbacd7e0361883639f4a61b2c04cfae4bf7cffa51d173ca48f3ac8771031d6b7dee96b79bd5e285ee33792c1b4a5848b64ba1e9cef27aca85215445640f69560546953be4b69326cf06c92d6f8b488056de563654ed74ca5b04fdf224a906cefa4ba5d06225a09b19fcce9e092047aaa225e71433c3dbce5a437cd44b11089306a1a9422abd7720627aeaa6e1e2475b3fa178eb4f0ebceacbc2528e6d13be119f713b6280cc9e3d3ba3bafe466a65e85c2ccf8dbbb085315c15b000729c3226f20948e1c117b7b96dfa592d7aba7989ab080295fe49a347990f7f210dfbcd95768db659a728a06b55ee6e4bff5fdeb42b127c01ccb8f4fe34d85b7d9e15d66bfb206df03ae873f4e7e053df1210a53bb24d31e3d4e8778088b5e3d7c8566bc373985994c52c4813ac8eef572bd4a7677bf7bcac1eabb2af12eb14d76dc9b4115c2cec2f9a958367f382141a71ce172b52c2c5196a512c0335191a59cd9c5301b9796f35e9005db0191d6a51651f744239c8caf1742d804540ccd0d2a0b3242dcbfd0efc11f4edbb8653eb985219fe8e65d4aad854f9f32ddac550c05b31d83963778d4cfd99ee455f4cef8a1d58bbd822c2f0717f65ee7d09a7303fd2038f486add8e344d53cb96692b77ca19e99e7bc42d5acf7289f3058a5041faa0f502fcd298cddc8464099929e00ef63051bdd2795f71548c243c797eeeafcdd8070971f081cd04a17be32ffe883a7609e512f80282955d3f98f31a3279e7c237d2a3960dc3f89226f853d6665e09f531c9eae88447c29dffb4a99d8f8d191df47317feb9aee37faf97425d2903c9b1779b6abd87f1d3c9ffb680d0273abf60dad77cff6d1eb42248e770c2823b5f91cba1ee8771163f77d3b515d6b16f78735c329fa8f7adf7cda42718001bd4a6ad2a20e4a94fce21bf14f6f5b5914c542f55a01c857a95db0a83e679c2c3d3e6ed1bf92b6ffdc54373ad3326b7bc63c15809e777cb662e44f6b9e411efa4b3b64bb7fa1582f3199e9ca515cbdff224918ac5885e07f117aec79e7fb885a9e0799155dcb6872585859cde4e9e736b558bf8b7d470076757b51dd3e9fbd877d17be585f09813d4e7c8e0d7ab829d7ef9bb3736ef5162e7acb5f3717e4b469aa11027af059aa7781098f660e95acba0d3a3257ef71e24cdbdeff1862ba2e9cad97ddd2e60d2049684aa26c661f78be02786d450d70d4a432456ec64f43edefd5f612afe5aa2491d8a4648862e7f0e8f0a07b0e6df899c059c03fdb99c148c05d147f18747e32a2e57ae59121c916a33e9e1150504d76b43c6598476ad5f3c292f0a44f7070124f88a11690ea31c83e292127ccfae89be30e2d7e0e1b9331503522b8ae23e19fc296c64fe852b3d5cef0ab91d2a76b683e66d285a9c1c47d8cd8eec998079b885ab8b921939aaf4cf8813ccc07abc0357bc5464ad27c4049db46338d280501405817231233561e96c5ef704c1d2d6f88d7c8efb9544040d968e8234f813f50efc5abdbd7d40359e2b22460c417e65e64da407aa10b0f99a7d375b45d32f267a8ce6654371ea77ba55a404d6514cc23bd7c51bcdcd21d5ace543970d3ed7f328d08eaec38e61e5485b9b46de696afe5dced9597eb1794982b5d5c4a6158bb77f81890213c23a9a0ceeedae179c285616254f8b6e9e0860b8d929db064dcf007fb8c1979fc5c3067f90b54848fdc85ed07652ec36305085c2889810620e2f98ce659fabedaad0ab2ed2bcec2be1c55f1ceed793175be3d7a3db0338bf69dfd9ed5beb44dbabc45ab96c2532859754371e6adcd80330286d0f89cd9ad34c85cbc306a7fdb91bc7fb47df2d3f96eff53a927e0f5bba2cbda62e3c7e472589780fcea62812a45ac74d1528e20d08ae14d246b1ed6b2e272f6c67ae16009a2aa2cf9db6627d587371f25ea54420298db686d00a59c2b0b6aa5fa63faabdbd65cdfe6d1722347f7c06687d9945bdd54e87e8d93a111be278466505e3de004e50e2520b0db19599932f7ad69da9efda101f2757032bbdec46b81b3ea2df3ad1945c24e1a61a25f856d35e38e94be942ec3b17ea541bd63331a9f95c7c19a7923c604ac879c4bf7957ecdcd106bca4b6966c6a5e197885eabc827b9c948a946250498946856251c674d6cbb727b1f56c71e8da4c93c217ac0b0d30e797f04da6f9f68d8a2d0abb4eef428ce1bd1cf4d37a740a60f454c7fa7ef16cac3c41f23ba7e6ca535aa36ddd170f1a182d4a1cf17dc9882e8ea59650a9e4befa1a7a844e98791ad1fd8404209f4e19ca02da1660afc4073aaf51750eb2ac79fad49e322b59d10989d8974ba4df838772ec6f192f99edab35512b4f1428aa794cc908cec148b8aac57885ad7fb974138b2a736781955650990067b021b178cad1b0f1047efe9b45b2b95325fe02b077162b46d978c03d281c11daa90f2c312d2f28f875e5533f9c03bbcc36037bc77f3997e3641d88e5aa01a2b80e213cc587e267b410addcb0a00e935bc68f35796585f9131bcb81ef45ab2471dd852d0255d31b57a1ac8d4391e4b45dbe505300d5493d9f0af8ca19cb6e6a4c5705da101dcfa362298c81721cb4fdfeca6e7c2ed782da40479589c0321ff7c82259db36f91367aa1cfa780b2e128f79577ddd90fcb393e4bca4fc796bb44abc1f52690c9a276cbb74a791ed80ddc7e675991b1eb3f779eccd89f51a41bd959a232e39d23bc5d71c7fc425d75294793882244e51aa3968ce4c3b93f5bc8b0836edaa6351f306de3b194642d39d752960068082f343b83fd820562fb40569fe9374595ef5a21eb418847e040f410bde50fbc0005ee11696781cf4e623e3145ea45740c6c1313ad814e640b4d01b1afd554a4e8b953de3b20ce9c35e20cb0b84a4ecda3511fea4cac1274cf379e606daecb27c998267a7f9f963d82afe4106c9313727bb1dfe868bf602b3d017b06b9bd6c9f35f0dc5b3e8e0b85dd10bb2bf746d6bfe9f2600dc9366b291e5d16b17b84319ba836e1f82c39dbc3aa615b5d6a438dd6362f865665337e64730eda2b345e9e0fa9849c557819ccca67ae8d681ef8d715b304804dd8ab7a86612e42a431d962624fe529b9243aa189e73f2754b99e9cf52e4da3958f76601cc1fe4a209fd22aa8ff8eba0f820040e6c07d92c1bf388a0d28faa54b6e0e7a27da0b0d7ab7ece6630fa028436bcb0abcec87f5b6263871f24e3a042f2357e6d6a38b93e235db893fa6edb96e3e219be6efdcfe35940de2dda104a28c0fcd21ca3cdbb8cebd4d9f4b3684cf3b993fbea10eae11cd48a375ac831c84481d1de941646dbd8e0707a0682b212f201c6af2fa7cdbd351c81f2973df2b069a4e3c0502b73ce7d1705d4e2624076d64674e3cdf7f233956e1bfe4885f2bf9042df1ade392e4dc885434837476d7d1093c9c9de5c51ee6372b905efa3dc0c93c411444e9072710ae4226215820c846c30dd4f4b6a1814db1fde2ebfc8834e2a3606c08c4009bb2371e13626067e75a92666c51856e84edb4113016743c91c6de5d538ac327acea1911cf22c24adb593666174867478fc659c6bb54b95479678279477a8c5b97200125483be13f0da413ddfa2a51db9fe16e8b1f215550a28ddef4ce56e09efdb64191ce89a785af43f7d6db9b786698022abd65a5f578339df3656b0c770a714d180b99566c3e6ca444565dbcb7ed1c30e0db3281e978226b91a5a306d4059e908d31e924370ffc495ad7247ccf8283ebe6c01e5a7115342bfc0c24fcd97c3306ac56fabede97c6e3adc8eaafbc86f49c120ee58ceba9630fb1dc109e8d6533929c39c0281610eab1ce1a9e59a23d201caf907326317c97f00d0e3218e4bc39a3da3a2cd8e7eb1d45adbcd7097b64609654217d3b531a6a811eb7b4b21e93d81eaf7b1245cc9970f3f73f786437917b6914a599e4e8e2a76380288a4c8da38ef0219d80fc48e7ba7dd5cb0f0b7703750fd0c049d994038a65ad2ff1cb98fcc4e0a20b3226701befbf7dfb0ccc04483bb1e0d6e4411a763b365d07756c5b8681ddc35faffbe20c3e20ad756afe06a073aceab0ae041afe196e1185d85934552b58a09a1ab33fd20a461c3ecbeae57c5041418a4812bd12cff435720d4f90fda573802fe8043bd6ea25afde4cc7f83e0466a0d66ba1baba67d9152c5dc5e842ca475bb62cc3badfd2ffc2d11a4da50ced4de2ffc089927e7ebdc6d7bb7d565667e130a3a01f01f78da8bbdb19f24dc5293ec65cd1b180777623b90583b2ff0bf20f5db031f15efcd86dd3ed9d254ec706029b6d337b644e41f5e755b0d11f470161641b2b9fb8bde11065beae07a78698fcaced4a4ff0dc022dceae06a76484ce5a172a9ae5867bdc1137bd3bbea77389b93e35987e76eeaa1f4607986d596c3da4b4458e121c5e308708618f434a8927c2fa77a8611eda3661c3373f05b98ec377fbc9710acb4fb5ec9c6363dff9ff171c5ec3cdceea949468b6b92b7897627d9d55ae871ca314dcccf064df607291febab6cca84119118034a959515bcb6c52ec07745d156fc03909844571b2a0625ec1b12c91f69b043787d54bbfadf54883b910a76fa6dd706cc8ec0ccd47c42317d5144c58bcf3bfc393e6dc5d2bd000986895d1ff4103f4cfe2c6ee99cd8a1e7c7ce145216f3536764fff7b9568ebafaf8830c4a5ac7bda99b8e9b09573b3c040a2718a3b92160b8d94eaa23aabc4bf200a91e04385dc3cd0e1f724227272877e3693a0e46e84cfc2f7558132800f7dafdc488f894ee3a6af1583eb8e036f143331ecb12440db28d36cb379f5b0eb0640d890132b75284046ed87f3b79b454d46dd26f5fd87393ae50d7c141463c945a79a267393c54e266176f72cddd1169267c5e69643869f72ecb4bfb5faa41d754e494cca52f6f3ddcaeb3399507372e3b3165cc8066f8d64eb166f7621f19c9f1b99ce92e52999dec54090645e7e800b52c80f539b588ee22c91c7b0fe03325825a27d4e00fb0ce0bde48cc910c0e26e593caebf4f99f06fda7e55733e9917bc83658a6b3962fd50ffdccfed954b360eed0405cffeb8ba78073e510315fa81c2d3bbd7c19711c8e9902b3c683b791117807b3bcc9b430bbc4117b9703b9fbed8d709f087a8a3ba5998ab2578a7d189828792ac2eda5051636bf9024e028a3c5e3b260a5b8514132d679556a9f5b3a3700e40a01544be8639da69588ac53e22f33956ac4368c5d5af396021e981f8a955cf8f3ba5d841235b04b784204d9270532d36b517b6393820befc8889a3f6bcafcdc959e75595bb31f9af827fcfd695eb42b791113c8515234a8324958905348acaea33694ac8e940558834d65eb9e4bdad5853118d093ec8bd72e0570a2f3ce2be251f0221f0c9a8f93cfe5bbad448867f1cdcd84ea322c88d8fc9427cff0e70a79156ef9ad176b3cd82798ca2a7e40469ef7107c78a0bd410643cffedff1aeddd1d314e2b5cb009d730c70ad27525796cd35db248965b7fb5023de40f075b256bf5305c14b378535df4b5988b1e094b90af1cd95eb6255de05bbf0dc90061167e1cb29051730065664a0b040466116c216cd2261840d5e08b263f0eb5f8c5bd1f47ce3cb8f7565b5430402f1fae16d07709b0b18889816087b2c747360b5cc654e41e212b5c4f8576dd0db7f906f563b86946f7ff8812a64763251a571dfcd81759397475d43441e6ae94afd4b6e118944fadcaa36fa66bff37ec7834ee0a1eb492b730cbc5588322b6aab171e708ebda0d30429128c7d1c04e8b2b924b9f3acbde1a57456cbce40432cdc365e012ea7e527968e47be69b08079d74e916aafcd2a837e4f4c497ba772ae64934c4492239fc47768e28eed0bdf851de308aae817e8bd252fb18d550dfcd535c54808067cb4ba985cef89d3d196c726abcb3192a6aa776a6a0710a198f88fc37e4e8bfc9a3688d19410007e4aae516980b21bdb7b1c6e87f647e7bffb7bba560781c97d8155dbaa275e6eeae1eab4405b12894f3d7ea4fdd155c44389c71c4428461a91f1b1f4d9253d222737b4213237d5421ab5fdd5d958922a50c9321630f85b8d22cf73feabd019fdd74ed88a17763474b294000b806a81372b9dec8ed6b9cdb108961ac9ae45386bbb38aa81f7f69afb1d84765736d4b8b149f5bf5a31bf36d40c0f3ac83a958e81e436e9fff367a876408ca3d72e341e492833b1d48399107a0fcdf2cc55327d29fdadc36b1801ad0587cf2ca66b18ac4a3bb65a8bc00ea53c9d4f847040e6915669470583ebad9898c5578f2a0b8637f78cf43320b302d0c3a8b7297b2098c804c000fa05da953498beb8541ad1f3263594cb1a9a942896c85ffd2da21cac1619a22825fae5c503a0d8baa7feb2b064bfdbf56bfd7c91a45705b2f024c6fa343dcef035586d85c7fc22071bdccd9e32704d21b482c5fc69ad9b23ccf3f13bc13032f09a9795dbe9eb824f50a185ab747271d4a25829bc348ed3e636469636ab3df621eb49470d354c01cb1565085e7e94949fe04ed3ef0f232f0ee3cf9516ba263d0e4cbf9dd9776fc98526dbf5b4e8821a116e3446e4719412599befb71183009d8ec194a5154c69dcd40862670663732170cdff64b070012b6dce6868eb7aac15f6d83dbae3b69f009f53d8c77a9b7cad0293f01ee90d6e50b8c1ca43092655da8d0500efa9513f9a08691c9a933490457cf63bbb7cd95bccc26e7b37f75ac36491abc9097c4e74b6616adaab3f106cc60744afbb0523aaad32426346400826762149883213f10dc3feacbe1dfd198f54993c5a48869d0e24caf5ca063959d01cfa4d66a436a85d515b03afd6cd64dfc1e11faf67cd0561795fbbe1be9d8f840b96d05733b66e5d997d0b679a15eaac70adabce38fea70840d2c6fa1875dfded82a90af3f0be135d4b92f0a432a51c5c8d1f27a93255ad1762acfa1efd746f3850df70dec33c81344eca192ce6c2709b4328f65f3e1a3efbe23fefb3eb8132b6079ec008bdff3588f75d1225aba914758785b5a501357e0c954eb5adeaf2f15dc3ac9836a49aaa15e056db55ff58eb6604466cf4cff22165ed414a17df53d5c6150983dc84c1ec3d8190848f05ce45e7f38a2f6b64c7477db397417723281af7f484a715a80514748158c4384d419962406ea9ea7b73d403b69d5392fe0ae94d64317f5c38ab6ab3a23065ab1f9957ed8ee49faf824fdf94da7afb3c375df401da449ddc56f1bd44c57776b5292a8e5d71aff2c3910e141e3fa1fed2fddd1748ab05211984ccef4e03bd1fc86ceebed886e33baf93683fca7ba947d88fdf04bc5cea8d35c72165e9c348fe9ff7b8f25e9c15daccdac5a3573381fe2dff1603e04151ccd54455576642d672d3a2662989bc4df7a3ad5ba0298259d0000078045e26afb92394388df4c6916b2d7db5a91d423a92c6f5adc6cab4ace598577aa3367ffc733e04153ade97f6d92da020f734cfcd306c8333976bcc2f38b54aabca3d1e711eb66aaa1e3662d100f16c1e52f57bcb03a3e39210a1ed1c9ab7929f3153a24d158be96b1fe8187843cab8a0e63b543d5afeaba1ba30b648e6088521dae2fc10a13c665090d947f4ebbc4145632cc51ceb74419efb8f5bdb8d01d5e0cda9cbb55fc2157e88e4dc73ad4e7151bffeda9b1f14b973977097993148c2a501d26dd6c772e2be1e56ef82a094b747591c45d62cac74ba2f7a4113a495a17d911e92a9f6417c3e07dee41f6327ea1816f34dd650ed6a106b5e952e833b1bd33cc9d7e828043eb3a9bbf6ff370b8a397ea8c51757908b0ecdb0759da5f0d1c35f98faac41c31ea634189ec34f8bd5e1473c6b9c259229cff2c7d90d3a1582afe5997fbbb32afe08ecfdfd1502ee621b845a6c71e7c3debba3f9ca1141c5192cc33d25eba85bff7d25c1d330173979391580f1f5a7a48af7e3a1c241bd4e7bbe8cda51c8d5de2c91d9369f1850fba1d688de9e5b7af12055f1aef2240b36571d9e51028b88bf1d386d401b604b9eb4498da369f972e7f7bfad2fe4d09c6ea7a0a3459e00e17bbe59b3d7f202caccf3fc71c8bd2845aafd2bc3e44122a1384ed6a117fff04885d8206df3420b0d19d82c879125689bf57e0767aa162b0d78ff2faefeabe5454fa85a9014142269c329f75a02415e26868030f2c6d145ea42b6b59ad1f9f12ccba02d6654381711fbd01fe9e09c461e1879558fc0b6dbd628e994da12701c5d82c7ab2008c6fe88a6363141a1f37a4044de0771380d12bbd5933fe544d85b0f8a6418beb5f8d73b5f8ef0ac2f90d95fe126a59f281ddfbca17ebf0dea94ccdf1bb6cae1ea67902587dd0307e25e1cb1caf5d3a5c5ee1ff04c58a0d7bdc6b56b043a3796fa97b9063c03a0b468e2c3dba840d117fa4f3db677a5390cd40822da2c8c708de4cbaa3119d6ee706fc1626e1ba91e1ebb2644708fff83a79177119be201df71a6be6808ecde771d866456006b42dcb524a2c027fec1fc9c5e9ff17eae7132f6738fba28a208b9b172aaa91baad55f60d988c1c1034a993d6b5063fcd11b1aed102ffe5fedcd2fc6efbb06767dab3f5dd4f94f2866dfb4660c2ae1127c0dd2f1869af0f6eb5b15adb35d99200e31c804a9c277fff86786097ca49b0cddcaab33e7f5fd2d0b0c1f66c57b576675fd8e44becc858231f6708984263361b739515ff5ce84cb1b71bdf8dc370af9a85e46ef85a84aedfd03d64f65df5e3cdfdb60442c16e744854a0bb2623c203d8a93134c93e1db6eeef89938cb92227be23200b2e8f2b39143c0538cd65b2cb7b0859d1a22946d0c900ad0977330addf1cf33835b7dedc82be0edfb2cfde8833472f8ac60107d7e2071d4a8bcf4a3a9e867b44552efee7399629c3c001c10367927cec7695375b0e46fdf99ef828fd01d1eee1338cc3d1b6b904eb9eeee0f5288f8d00eba474394875eef59c6e2d78b5ca132b0bf8477f49d8264f344329d3d0719fcefa9c7bea0eeeb47d6598ab0c7ab394accec67c19e2efc97b1320a75dda82f77fa3c9151c93b48fad513a5b4b40d941a906793452adbc31d99b0b3eb7d31aa4e0444896cc50dc2113b5e8a3660cc1d04bc652bdf4e8d1228931c4414aa3a7022a18c3edd5c6eec96152dc3733bd6a0e891ee2237df13c642b72ccddf21a9dc1cd9a0eca77daa739011f8046ac42a8f622ed12933ae3edf2429bf9268f97340ec76a77f46b0a3695ab42e3c8fddf0e26b95c985c71cc5bd450c661674d5170b2f3a26e9392f2497562e4b5260755928758b2fe62182097dc7b8cfaa42d4185caf16962ad0ce42e3765606640f8bff0e676f5ad777f2bb70e70cf146374e1986d6b062310d247169df7a1e12852d8e0425ebf49f54ba627b5b93fd90caaaa999249b74ed8c639155be3ea302f80b6a2a2935b1f722a64341b8ea9dde37558c28a97742d0d5931c487d17711ce939291c2016577d43429e55db629a59f3bd6364e32ef94bdec095575f0576403133555dcb3ceb5b94ae7cb6f3d9b6b7cce6663e6c2a5ac0534eaed36a01156f0a3f60436af1e75080632b6ea18c574500965b3129dd97dbd240526d4cc6e1ef979051fe13619116794bc07eb89d560d3ea0ec6b14ea1401ba3e42e50c7db396d5906169a904396474a661061a20149817572f3873ec0ca23f3811a728518821938fed96232765502884dd7454ba7a8083c5d43a95d591900f6fac07ac7c925cf3558dc19a03785102cb1549478419082a5bfe01a59a287262503da418860d70b8a3743efcbfa5928ed0f87ee6b69157962d425fe7ced25669ff97015f895dfe0c2b983b611f0654ffb06c27719798469bf5e43de67e41dd975b279cc9d05be9e5a5e43ff95aa4422c2a3dd76de2f22f46586c99a188565f5c3d45a3bec7d4dc31a8660fe4036d559d2f70d1f8919e22d1be9ac90ba7d250404ab93325c0e6b8d1a01a6e71e2a8a530ff70b5ecc0b5399fe7f930ac8555e5c3ce09d1650d3b412f482c226591ef86292f6bb3485b5237455ebe708fbf95c414d23fc0cf7e85154bec064c74c3707bbe081e5eefbfb636fa87eb0449e9801010f7c89fc58d5984535faea7474d3dfe70464f5b6e579da186126cec6b2d00a380bc93c158e80078838987dde768b3aa868fabb684350b8c2064e0dc9f7298ee3b4f384e146a8477250e5c53d9814e5c3118b1a59f9b5f60fd90a7ae91fa5f29ff293e37d95faa166a388e2a4cc87f5612336643b424c3872ffb120292f2178bc575950997c796364c917b69eef9e5e2f25d339323d7ae5a2229fca738ff77db6a9e10e86efdfb45e69bf9827e5acaf9bfcb6373e1cb8dfc5bc675c1d205540f1c161cea6a0a212864055e8a886764d574b239708f4a4560a0c093245c7f3fa2f60a72fa6c39fa7652524acaa5491fc723eb783826bcf7c262e2a464bbc643c41b0d28e0595478b8b49f865bef645c7a9aee776e0acaa978b16c1daf1310a5294a962f358dce253f3ca6ded72ebe5a97f3717c6620b61c16e082dfcd629aff6fdb4333fe6b41d1ddbea48b8303269608c40a7bbcc7059694da17b2c78d7c4eefb7138f34f5aca804a65778612e4600ed346a0d91cfc72d358e729e68d7adeae7099b3fc339ec5abf54a3a8da55e0c5b0c7cb2a8e7e6664a8dc9e5b38d9a04d78bc9a5f30db4802c3e79e2fe11d5a5b5c8c8c4110dd446632123321d7b113967ff0ca5e9107924c4e219b7959432682ea0e0c795c4cdd4831568b1059255f022e46c8cc61fd5ecf61d7fd8dc9df2acc006936e4f6663ccc52f7ad07559824fae356f192f14d0c14d823b33ba2200e021d72f9ce88427f48c3bdcf55e334adb4108f0441e395af42856b2b93242351d66fabd668aa50b90231ab0deec989b0b4daff6bf18910ccfa34b1883dd41218073cbeb629b69ab056976344a0409a6717e84797b11e02bcd7c0ada4725d4c5f62014b71082545eec5657b7f0d4a3dd08ae35982a550922aa1edd96d3d6fab97fe3ff67a5a71e78567263f2a00595afb2f4cdda07a50304cc64a64b7481d4e4973bf6467bd8763c9c0274e33ebdd039fd330be23bcee1a0a3e5feb8e74fc0a5820a5cdd302dab759f4b9161cd5f21721a92efb5fa6e5330f71c4c698e6f9fcb3a39b1fd4761f4aaf0afdd08f80ca185ed7c1cd1332471086dd54a68eaca236da93d303798664b29c1f7469bf764fa2242cbf982fc1b86e5f1f18bb3a87f40a99e3eb7fef77e4dafd6c824b8346e3cea55ee5712e9f690f21c0197bd063b68c99f633374ea6a67d86d45a797715b1ad70fe371de2a7b010933c1aad65c3e0f094555d43576880c71d070121674ee8bfd44753ba92714e7ce58a4866d1c77c42aacf5900d03ca4e5e5173c940b7f0caf09fbb8cf4a4b43ba994886233606dfaafbff870b94301fe447e0980855b127f15dc61c7db3d3a5c268554b529218f70fe85ba4f24aa2d1590f72cef83395743b9397935482c396d8a13f6c28fb2a39fb590860b20c9d29416b537568c903cfb91f1e02e7399a1f3da9c2bbfac3f95fa53c471f196f054dd67b174de4ebc7962b3df456653a4c4d65f628c335a362250b66d67332d43db2753ef516cbb5ff92d1490c7ef555704772e43f54c7744f1a06557ff958f836a49c6a252d7bcfc6782cacab8383a1eb57711535bb0d8016fd892731d4d60d64100cc741cc1686fdb3f93ade96194b6f45b42d2d91088725e5e47fd3b160b0ad799e70086ba1418fcf95e212b271a9d4404e5136d8c61f7dc0a9b3fee9be25f7434fc3b9d485dac456fcb5ad7dcc374870c822ed8831122aa325011901a15b0973c6d9f74d44ab1d52c1c232367eef97db564eed9ed8c435d698f7bd7153d01bda85a3975510aff8e654565812fa8c38e6db99ba3c6a4d9f29c41e77d1e1c003ee58686ad44ab015f47ce20f56d26ac9144c21431664025a5ddcec0eceff2701b8b0f0a88a9524308c54743873c1f90eb5f073fb3ed787a26a3a9ce7c87ac39c341a66321980f56724ac30990dcafc6597540a59cd6b701c17d3cc55a272b4f6d8ad81a51829d6835019eebcc9040d5aa25b95417e36d43de81456682774da953013a352080587a3da3355ec50a9f0d4b1511f96cf08ff32d257a5a5c939448caf6000f172b47612aec5b8c453fc6d7512e2cf4966ed2316b5240adc931a1e82480e7530c4e9f58f697f1ea0864970492303add65abed9c3d49238fb1d71a4ba140c562516aa83833f17dcc87dde261a1057f684692b1fa800374ecf051835ec858781cdea6365b7e8d9260fa765a068e657e534d447c7e8982c36fa013534443d9cae66302cb7a14372fb8a499d58adab9dd34f36509178ca635d4dd5b1c283e64069bf72ca788b528d736ff4469fac82d6fd568492828f9c89b0baae18e369e9f9f4b25b2b9d6926510e735a1e9232513b3565da03e9e8ffe964cf186a237d9365f0a3156908b64542efcac863c1c0edb9a9ed32fef53f7ebdcf25f26c87c37d60924223ec6eb7776b12fa11e4672910f31c2038562266f625faaa0d393aeb12e21671b6d4b47fdfc1da56ffdf5fe5abc0b698252cffdd938c716207f34337ee551b4eae935775d089a7e276f8e933bdbde61e23c2045818432939f0b94c85269521829a485cdf4e45209a13f148fa59a1df84f8081fde25f9aaf2adf56a3cf57869f091c4c07be988fefb67ab93ce01904d1a253c97887bae4122876ef0d75f1205e48cdba318b8ebd0e06bc5a4e7bd9d92deca11688bf20fba7d27a3ef5e9fed210e97ed6dc3629da9664b6efe5f5c7db91c6137fb2cf23c2651601eab7a331e23fd565bfc05feb961e0117fb02f6e445c313df7c6c31e7f33101e8182e5c64aaad02c725b67471edcb027a6862a91ad099722e5535acae3ddd26d03f524d4e7ad265b9fd0433eb71841b941fc1df2b7da4c9d74c041246ae5a8e39a7b6121c35b337f1cbc6d17455aa3ea2196789859a6f0c01a05c5aca67705696767e702ffd085431f80653e71aaaf83b9e87e200df415fe53c61b1f93173e45a1d0c435ac49db82bf0d318f9f3735326f8a4c22a6c7748306d671d01e1fcf4f28c1ecc06c58a11d3a5e24186050cef582f6e3da3be09a67b1f6d7fa42f339b0274b3dfe68d69035cab754b20b8eb6ef8d8d7b41bad3cde9c3c1c90ab8699f9ccd902ada72e43edb00e953100e49cbd4e496235212b4769f7dadd4836760203756dd82b22115c9c159ed18c334c9c27fddd3a02a6f834c12aba21b4842fe5e4553592c18cab1aee51873ff2d114f58fca54eb545b5a7990446cdafbe923bc8d26ccbde3482c30d4daf507f44ac504cecff2278477c39a08712a1c8eb491fa417ccce1c2fe880bd83e8beb9db8c4f3ec1ffb6606e3dc265c039b047aac5f5366694f885eb4cc410d4b7768371d017c754cc6a1220594cecda02e27312cb4d1f5cc1aae8745407b780eef3f396af92553e55ceb1d4063351b359b368c36f7f461ae255bf2dce88aabb97e1a4d425197904dbccf77a328150975b20af20c8dc0a8decab91e708a455abacaeacd49453ad4026f268b5e26a1b598ca5461c7c370aca9828259044f563dad8978aab2298943d6c6065ee166c3a408b1fd41a19dc2094019782981c2c1b55db7c8364997fa9a546ee7b59d9c46e5b1dc554283a269e97066fb9e4085fe721d0710b8df8a2961aa2bb4a48e0fe02bb890d104bb9243c810c8b136fd9f0484b3016a3daa1c87fd656aa4fd256f1afea9bf5e95421af80d1fa14b7ae211968ba4a579f8c6f125eb3f5e4731e43962ec0e751072d0ca17b092bc44004aace1dfb81ee48cf8d5e24d7b45bfbb26f5531f4c345398741eff021073bac3c7415aeb067b864eae2442e164d76c08d8575ffc199dbf83fcb320a97c151c108bc7c82681d3197fb3ded2c1295ccdd7a9b7f6b8f3b433f5f5faff60d6b96e2c8d1ad27c1477e85a8e57137dd1e6b80d4bc221d9edba2d1c3c5fb9482357053b8fd0cb132776261e46919606fe5dafdf87492385a3905c3eae69bb7c060adefcb527f512e3a5b2c4083d898480c551cf9110fcc1c5c7f1b01db81ef660503d04ea407cb2661d006a8184309f65fb3ee03d0436159f25be1927e02f303628c41ef12ee7628335d04a189fc3eeb1dbf973db17a5eb4282b22788deb2b453fbbd04d1f97718774dcfcf6c2967f1f64ac1e3f4680a3fd4d7b607a72b4819376c0b4a64d7c9ddf9ef8d7703576e2b7141a2f8a5feac5da009b432614e2948c314ee6a27ddefb7cea55383c97b6b06742b60f703480f0d693955e6ed7fc9ee925d7d61be09495d1561f084bec8f4525278d7c70421dbb80d7ff6117dc6d07bf1d539f8228517a13e5a59a9633177879f59dd3e1fe05a49cadd9cb5b96c8f1f3180511979b725b2b5b6d83020eb4ee6fc4b669104512a671446622ac00f8ebef3b4bd022873f3c6a34672aba6358e5f15d1622d02d9ce250bcc925f506a1dee0e59eccdd47b62af675973b5bd8fc66f49c4afcbfff515eabdb87632e72152834f2ca141361b484066996d86fdf0cee1a807324c820b1cd04c3b152ede2e7b2bd1e5f50ed503cea7013f5d52792c858cbedb5572890c91d366cb60be6cedff84924e184e03d3259ed0f9998f4f8cb453b3eec42a17111ebaf185054b092ae750ce16046366b317dbe9690a27c3656d17ada32adbc6615af8f4086144fa18eff522bd00827a8e680553f3b1b3e4deea5cb3197524484ad44c1fc7ed3675f89b97ce1cb5e31f847e02a460650bab5de80990833d5fafc4e11a426127eeaad17186ab29deb4ccfc3b997f0f2ed26bfa479ca2bed469e2a6717e979e06acb6d5af893b20969f22a0268a4ce407c0529276e5991f76a4749e5b70adaef081c684808135447ffd8ce62ef828c4d2212167c1139f8e61912271b50e0dcf508d3742aee227b0a7c0d9add891682c61042e07a8e926b708e0bf635232bbc87ade664816ac814bad0f6f8bcac94bbaedca2e09881229a68f3e499113fe27ca28d38880b704d6a80865ad9bb1784bd69b49fd8cba21a95743890f4716466720cf7831264919ac37aa0c8a1055bf65a2649f815aa7b2126152047c9bc717f51f2e30fe5f6f9505be220d1568b6ed57c7840294428ba05426a5138eabc6a57033a8da321d79c544083383d1fee57f4536ffc139f8569ef8d32e2cb5b134ea5269979aa2eb84ab958337dfbd672f0a1790e02efb01a58d5123842d8b8424de4c0af1d6be50f36cd5ec9db3bfbe7315a12bca40dd9751e7610adbb2ac0548d946e1bd5f922287f886bbb3b402136c711e1828bf679c6ca8289d57508daf567bdab43c0d47c4b6d3582aed5a13676466fd8e9c80940140b03e053f2ffa304644378f773e8fdcefe38627ab0ac4970ef95443e52879c3b9b80d095ea7dec303dfd614d49db0cd5a6e5609bbb50eb058129be6ee93ef8a4d962c1170a6c3cc3aaf9939a63a97e974e6b61c410e126da273bbf38433dfecb8fb9ede92753323d9b239bad3b69df022208dbe6c1a1b720f31054a8e8c455b88e00b95e7b2cb4a75804fe9f2e15a07470f1a63621bb4cd37088adf443e0ad171bf8994830bf6420e420c19de7cd48dca125b01ac788dcbc2db96eaffcc77d1d5a281108b44dcab27e1b2cf4638cde8753607a3a631be802019786c85c7fe0a7a01eee22bc5e537553e146de63a3fd284d81949ccfb1c4989418756c4ec172be6bec1edd414a73becf2d9c49cd244d388302826501b3276b407b56ab30037fb7cc2ebc546d145813b3022f83fd3ae2363229948ee33ca064e1fb1c0d2e8e344c6be9d9c0a6a378cbf2295d0cf200a1e64d089f1b33ab796c742d819a8abcc97890f1698ef02f61b68fa2c82d333bb6c1b97483ccbdf1f6d3f71b1cf9cd2c60969b79655c45a55fa0046f09662c0575e62820866c4c72b085435a4fea93f8ec8559b1e3e3c53ebda9637b236cac39aa6412ff91c9916e8a3f15528313248e925fa206d78f57d8865095340450b6b20fa7a4602e89bfaa687709cd47de8c3f871b5fa2f3f4f0e577fc42a0bd53874ac4e29c3fbcbd7ab84fcd93df7a77d3715695bc766a53b6c9f5816649bd91c3f9be5b056130769b24774b1d15503082498536997a673a8024eafa115ca2e25310d18ba15c58f4032b2be59149c513f34bcb3959eeb05a1e6bbe2b065b731a9ebede5aaa9a86f0d48fa128eeb991a640376df134f43603be6500a2925c01bd773a319f3d7facf79168968b82f7768b7b507da24c56e2e96ce36770315d0861e7cead2a28ab26db78db740178806bbe21e40ed969d8e42cd2f2eb4535dfbe836f7e2fd40b0e71aad35c40ef2f996fc8eecbb44c2fa50d6450c862695f7c466858a824a6f438312aa6ebf133330de6bd09445379fa416627655a76004497ef7e77cfb7d8b681f66fa5a9f67a17c616f5cb30f4e09d787a432ddfdc8b65cf0c8bf148f55da4f256cd9ff3fff60be33f652a689ba686debec02fca21a217b3064eb8af4fbe526dc05ead8eb9fee0b638e6443be729289772c96dcc53f0f5ebccb85e736ada43862eac87b86c001160b60937c13e2cf3a591b81b34703f1f9d86d69ed6bdb8eb434c554b186d877d0750fd6b50af16479b793c12840d7f7a3eaefc846e2c4a9da07aa18c1cba4479d6e44744aeeb79a34ecdc278e6a09a117f28fb66a3f08a6a387c1efcb8caff041e96bcf160799c4fda82533a762166f4e55be25b6a57d920388997c32ee036ad2d37dbc98614a65b397a95834d342844aa544221d45a31c261c89e700981ed415a26573a76956bd53f766c9208197376b2ee821a3f1d50dfc6fbd86892f3244001577564cd615e455d2a2a6ffe4aa300fa9f397dc40580980009ff2625c1195afd8ea327efda814dac28b5ef9eecc0adf4f1ee06076fd5ece377e124c944d8c17e02a68598559a22b28f45f13533fbf2512e5e8784db3dd79bfac9d9fcb01f54b1abdb48cc6504ae85d85d002b6d74e23cf0be2951542c99b187ae3a4d38f57e3bf2fe59ea7660b77def958d286af391e99dc5b2aab4b67c1e463c45ba1624927f58e4bde7b9f9fdeebe841fe76d32255f4e69fa66d254d7e46d99fca8fb75e50df5e931eb154c4de195a2ac8d26b4eed3ba7140957314819f35be06c4a571813005c971a289b78cbb58bbaba2dd00ea5a9c1b860eaf038f3d6cbcce2b2e7e6844026d5d1da4a19630e56ab50aec5fd24edd9dacef9baa461a3a37ce3c66467601168d66e99f7d3c871820e487a4b04e05af3074ac50904b4b656562fe4e684fd00490781305511fbe7ad4677b271a7075647f86a6455e58d4afe975a0649f9e70ad71a5f48834233b4fb7b21e7947c76b2c743ebb89a9030a0679f685d98cb990933aa4c3944aa89587e1ec90085329f887e3b686a87bd905718f92fd36f3bded2858c7a49648c671a8f9364bdef1ff06b9c4e78937a5df2e11b8480fe1285b1d362b692bb4e8bc9fd26c4126d2d514809f71248f36f8e9c1848dad4674af550817f51ea4c6840559a385d09503e8f1ba7ef8e667c7377b7e5f6f283ea58b24d9fa7eb1b7e98850cc295c5f4eced64b4adb92d75205d7027a9d331c91aea3eb82267346f3f9c3088a46853576b421bd96fb0976531580196aa250e9b68cf5a5c54ddf4dbe42dc1c696f1f34a4161c999bc7a3f6672d527058a246e5ab38cfafc0c68e652394a7cea6bf3ab9232c40d508da03ffced66b6cdda47e0e4324bc8217fd2cd9cd9c8e388074384863184601558f4fb8defcfeac250f10c807c24b60d1d1f852e9457a7703edb5d3908a77eeb29582f4626e6a0d14f91dcd882cc736642334786f4c9822420ed4c4a0c5e8e70036166350ffb7c92fb07c4d74365abeb0779d4f3d8889c81dc3f30c7bb2050a71e63d1e04a8175adb4699ab252e2d0e688c3b456359bc226102edb59e7d5169c5cafaca49da0a3331cd85512f1c449fda81c1d55cd4ff2946e18ab9e37958d518fe430554e81b58af41aa836e6e2ec9e015ef98ead1b9805e6c98f8482b0055aaf142ad98373b739da859d6a18cffce379b0bc55f44842c61c067ef3496b68090164a172f65308fe60c81be2bdca328fea8603e99abef6f7453d471d9dfed88f8ba8c7c295e513dc69ad53e3c3e6e10b69ac287c1002572bedd520a9b596335f98a4000861211d5c454fc9ec3b7d880906c12e7b6a8d111c0d73f701bad11129f2bcc65d69544d55cb9ba3b3273811a225caff0af5d9bf27924162a300c8104c8fcb5e8c811b83eec9b747304132fa246dcc8d60f5483e41b51185ed554bf40e0bc498e8daa8a249b1a438cd37ff4890c4b9ac2c83a6ec3c4320d5defff3953a85869b483a7c65664c8f1959615e09e50c328a3e8df6de4151457c3ce5d951b7839e2243f31eae2f495bc84fffbd203dde8be0fdb4438a0bd7444e8a1f53129e95298a085561665dcc9d6498fde8afd0bc3b3c9b5a62ef6a142407109de51ef118909d71b27fd5f23f319ca26bfd9d07c1f57de973def6ab381ee8db185077b896314b589f03c31033915eaf7d1828ff291b0b710b1d62fb0514785f4b4f7801c33a1cae72ef296960482d423cea8c20bf3392ef4f56f2aa99ef7c370bd1256e31faee3776c36fe0c3c61eb458e478397b483f05870f393c1bafed8aba02b859b4f02489228d00d6824933715346f0f3ad4d5af6bf6b0057893bda44243bca3d14e229bb43f2ef9d18134c6596fdf5d8788576716399ddf9d0a24a9bb2b551109e9f7f2276ac9a062612f193a4fda36fd4e1c786ebd8063a6325b5554ee0623a80f9d7693af46d133df63d59335ac1e4f3394f176609cd0072c557e7b57aee6fa35e83e268548a01095fe942fc74f051872121258b2ab310fd4b75e06037d7f5f8454d2086da14c90238400baacc533d48ec1abb18e1affb4081c2f8980d7714e458da18b80ca0797b994aec8c0908ecaa7eac8916d8e4ea40089e2d42acd5192c18fa827b36d55c94145860ce2f0fa6cb13b174233cc15fcc964015fae475d57f699f115520dccba589b7dd42c72d53f346ea0dfa1380d6b1f2f44822b3a1ba6d0e4b4702d4e190a93428f10a9b89eb91e7d19f40779b81133bd873595b24724c6c137989b56a06789a4fe0a2db43af3b635ecadf89a8560487e0900eaa77f078a1e7408216745fdb3a227974348d53f6429cc66910bf9fb60e867fc46cb372246ccb4d987b8685596e43ae4c6d4fa8e0d5f3b18bb9ed1c7fd6672b5c1252efef23c9537cddcef7c4f0c958fbc7823952b8036ac19c0f41d96f39b5c59e1a29ae3bd44e665b057bb6d56e7f454ceb44f320d5fe918e988e21ec7ff435a47a82722a68ed62549fe1aa20cf5b2e493feb46cb1f44dd9c17d84c06c38afd5195e24ad7bf3380f5418a773422697e4dc45027c6462f090cadd210bd07bd7b6dbba4ad177938453a3c9d5cffb2c06e75b264d407e347fcfe5c91afa49c39484a94ef74ab5e56bcbd79d4ba6950bec50a454387defa7c8b9281439b52aa5dad8bd845ce69542c7237b61058bcfee34632b29539da40e8695dd182d8600b1ef9245ab2342581a4e6bf39013521418da87d87c5b9f04803c2cbb5bead982c092d6a322477f93cb00b70f8a4a7628dad889849f1abb1e32bb5e8d437d1052b923b5d49eb3c4deba39a0cd29c23631af39f38937cfe3837003cdc49ad1555ed542f0485146cb722ab228af20b84bc2f2aecb070436c595d7ac2f3f8f6fc8d492e4ba96e73d5d3aaaf65eab228b15fcf1accc18ed34f93e609c4273b15bbc1a9c6feeccc882aaa2dbfc66c31ad86194d5803893aaac987b418358bf93c1be95749a302046cc931e80b74a4a26827b952ce9a390500804834b16e7869a804cac3f19afda39f605d09ae17a1473adbabb3148390a2d006baa93b28d876bcad0c06c60c47b9525a3059982d70a5019d8cfd439506df571073198a4e6f1b1d908ac3b14e40888029b3178f342eed72c3a0d9e798e9000120e8f76a0b406dad03f73c551e91281c2b87a589125aef469bdf4fd572218c7a681b7189c1edd9b542f6ebfba8346f222b77f50d820c5e0e793b7db42121568b5e9dcef7456d283fe4103a1327cc653992247d84e6d0e524a337e9f706f607e0863e71750ea3d108ca918005b8f5134a3289447933d1e2212a62b83f017099fc407c718ecddf4ea19ad42dbb952f35af42b31320431f4fb6cedfc220159f3d868e89d354ad6c99813010a4c03dd57e904a763bfea48f04f0b1fe26ca8ffe08aa1e230a37a918056628cb18e4af53383dc975eb7406eb6e6787756eaf7066f309eb4bee4cba3437854d52ccfc59fbd82fb10be9ce7f09ee71c0df5eff9329508389b3949af56524956cad4e0a65402d4c95ee2f4ecae4bcc45c348bd5c6157fcf63a378e7b0a6f32cdf73aa121b22c0d228f5adf3a065966127473bc59408219638757799918a54a40e9620fdffad485af875f13e29c942dedb60bfb64abc420e04196147a337449a5461741a79003119d7ec68bbd645a7e2a424baa028fee16e3e0d112eef5480dc0740500ef264a83b701c7fe895e4f6f2fb23631cab5d935d6952864a139c05e3306bc11af0e7fbbf683e15b46daebd6044cf00c2d01ff2ca8a6a89c167ddb2fb02e7d80bea5ceb9c330cbb8de27b447c35d757cdf12de8b9f1e25a422f4941d75d9967faee86f576db9431c0b9c3ddc8cb20112019338dabd960efdd8405ea6f351564979f3d76ac2bed85051083f0da025a17ac812db7a0f92d3c1858cdc9519fce2c2e0521e4266c9ed47f2978f585173bd18c90f997c07d430207f99eb58d1ef1f4e7b16717eb56530ad44024732e73fb6217ac1f29879b7b5ad9f54d58f1290127cee75a0db35ce7ac085a2b13518da54c78d5ed8ec9c8387896b1c29c5ab199f0baca456e08a94a883ec9800bb994465b0b6ad0f3de4707fb0c6298a4ad785f14c8fc14b1f32f221b391bcd4fb27727ba46ad4c4534e57db152b129691d9bcfb859008795066fcb8a920799f940025927df284905d500331a75ba3dc58a6a28cc830b246b33dc370f400c7b0e3b5b650be673b79083a287ff39861bdadd31c350d445f97f8222736192a94b111854cdf9cd1ba6683ad9b807e80fb4ee44e6eb70b3618e4de21f302b1b605428bbfdd66e1d773ec393db11151b649f3f097f104ce3b80f77790a008c22b1b3abb72f3eb9355a536f78ffb2c9fec9f0962ed5e8b55f4792c2e3c227ba3f28388ccc575635ff7124d0d465c4b490f7a5cf8a0bd12ad43af2b070bec6bb886837290f14e02c658ae685731a3c1d9ccf064cc9800b7e0c6eea2021d5dab6ec34310b0668c30c39d749de5fe237990e4f6b5747bc086f5ff0f5990ea23e5c8517efd3ccdf747a9e93e873b161d6fe29083e8b382cda54f473372b4c9e44df0f0cc9b7550aff3ea7486b43157548af0fd0bfaf1dc3678364e17fac706e0a93a20f8074184531ea13604932438cabf1e24261657f53b808151e5812332b28cb01408a6f559087115171b51f1e4b80c1c3dd890152cce7296c0fbb094d6022077a9556a9c3efb1b0354744e4d6597e00e4eb9a1fb2a5329f439a3e5ae55070852a73a9b3ba1a46a360adb11c51d93e14413bda75a47ae7892188e8c3989c4be7405af85c7dcd4ac85a8005c0073c6a4d1348bb63e3ea0a2200ad01b7698d0dcf0dd77b3f53bafb3b9252c901959a27ef77abdc98886cc4bd1926c10202692ba1531c5e85c7fd301815c18aa44fcaa9d46b9dd53a05b3ddb8b3ded50020fbab9354011d0efa6778c77cfb292d54ab0a44b4d77bc61ef4226f22704df5ef7bcc7c8afc68cb9829e4d3ad47aae98336c45ce771f7169895c14f8c8e4f9a45679fe3f9f43a8cd9efeb81aca5cf9a8899e5b98de819e4d333e4984898d3b7224936753f1392ee147aa2274150f3df451b6008df9cc013b366a023d4c65686b8bc47e5daec84a868989f7e9faff18df04b7eedee6e7c8cb96192e53c2d27a689a9697670883588e6cbed440f73336b5a77e1e6cb058694a770cc7e05fdb689d7d21bd8322a4bd01677d82839833fd6b0df3e144a5b6e787413be7f413da3c09c242907df0b8884f5068cdcd669315fce74aa863e16eafc77de2f0c6011a3c828f468592f78ba393856ec2d42912a29442af0c6cccf80e9f8570d453ac4c8ebc38d5a4da607cf81ae3a018245c6d8ea2a82934a8cf4e77b2a9e84473d77c4b2e3fec995f1928cae638896513087c4116f2b409ff69178e13fda14d8c8597e84b8315639b07c7a6f247e301f1067aecb44ed11c7e111e4ae22827df900391d57a3f9a9af6767b9e8090ba9b4dbf2f5eed8db81147f9d1a0c4f578243ffe2b45e2c1ac8c97d0a1c3883ba833172e8a9018946966fdd7d4b35a3733dac5331334f3468ee9bb59fd6330ed99099058196f27633e4341e14ad8dc45bfb79f84e6948683ea33af494260bd4e70a1cf26b6177fc809894dc05bf99e7d9a35a72274aaa4f5a3b15512483baa0a82a838fc1be2d5c3faf9810358d5f691a70cf47be39bbe59b1eb182a878d4331f6035831e12e8b3034d98a282f659b6854470d00d01df81ffcbfdfd857d4ba0fa183329992e41119fb87bc9c8253399904a28cc833a48bcf1fe483941099cca2530974788bf8653ad6ef613270e3fb6bb6a6047e26d25d138783aaed586d7d1263d26a35319f011f86aa50066e824a1edfae0061bddd05cc7dd4b4dc985f900385aa6e9287c77c2b58a634841136338e4f2d66f392db4277470dbce1489039f330eb76d75a37760a6907231b9b89c2bbc319107be467b3892bbf65bcb1cf42ce645ad6dece5190e4fe4ba3ac367da0e217a92d0ac2b214d3cbea4be54f8ca035777cc5e04d0ed2f8c116961335843e0d8343e26367074594a5452c331fb459503921f6ec96f519a8a8badabab9a9d080dd90dc2a76c367e39847f45b0968dde711587de32d033416e745a1149cf9a14a1e1dc84b61d4631c1479190e742479c211c51d3e389905c0c6318f99268034b22bbbbe5fd52eb573d30d2534bd868842e670b97bdaa90580d398ae1f84fe81dea0f47e943c0a88ddbaa4eb48e87536413b2f0607a2b44524ad0b7ba8bae416f02196d6806b865b3381b09073459a032a01b169b820ce727966c5020872fd4a963927998ebbf252f78a8dfc3f7e6b7aec2c21a9f4b462c50f7b6b5b5c5daaae8b46c07a1239a5e8703e5db6177dfc2bce159f40b267c6f619b75a2638b26abb56e981a14250b70b674e71915330e95225743303e2579e1887fe286350010697f57f2d86764edca659696ae5b0fb25323b6557a9d60da569539dd162d64877367594309cb9a01f99051f567192b5ccbc000e97c283406adbedec31a46cb1f58f72b313e473c22ac343325db42c0300116f08c090935a298ee1b4283f18735230262914b2fefd7425ba7f6578541a35bfdd88bc32111760f53dd52db7b895c40d0aeaf340e07762692b21bb0eee6103574c1f95f7114401334456d06d63de6b374f0c2e10f9977b0a2504e7830da591adfbbbfc1c81826a08da432dd9d1658b0da6f325bf3da4b46cba34e4b58ce18abb6f520379a53aebe85f690dbf131ab0d8299c0b59916d9b4089394e1577afc25f0c610ccfc29d4df8e645a4ebd890664c9b66f3d04dfa88816e51be94a41de185915eec1152bda05b7e8e4d8a8dd566d0b6536f60c1ebff5ae2dba2576e036ab8c4bc0c7e3186aec4ee9c08b5d21d69ec4fc254054e7201d5452bcdac9f9ebdb966cf5301329665677f9f822a1371a20321ba4ff3ecad7651ca2d64afa8254fef3c9d146685b982ea9a3aa40546fd59215398dc0c69dbb8b3f542cc3f2a2766b8fe198dd232b3e648c6e9e6c29c95533ff5496e3a8fb96a2cc7b5c39e3ee63a438a84bdb0d8a94d8c1f53c5c32c4122e4d792fed05b7c7617d522eb5697bb63ed819da254cb3c52edea3a80fa46a25c4684869cc7f430ab21726e8476ba4b73fb032132cd032438952aa8adde0bbe1e15d7673ab85393980174139c02743a95d559c5f6f19e5e6a35a2a72fbc37ca6961d216bc52de1f75a9fd6a8680b15f395c8c12ab977c95d4d84079d950bfd107d211034340c2683d296c63c1229bd1c9eecf14ba78c88456457d13f1ea8e1c6b0a263d0d73b5e60243900f06dcbb0a924f194ca34f59c5b58748900bcbc810d1dbd88ce484bbaf9672d0bfa9087a4bdfe6f51b0c38de944592f37d5f67ffd9766ca4697b0b4fee2dee295c8f9ba267d4c71633a0730358475a1c7b068f3a33cd2626c827cea9f3f52342f0f1c36b74c449d68379e3a37d7616a1ec2fa304080196674f8df281a8f786e82c35f48c8895c9bef3e0e00f09c3c5491fef71226aca1e091aa76cd6427205c00d2b9fce1942d4b68d83aab3d2b5c23e14c241a6799e9f5af835328e08e57a791b4258b88208e189758dc2f29bbe50725419af5029ea0a3e127f7b8e9d5483389959039b8bc6378ba50c3d9b6d380d6b70f900c772ded5c7cf26bbcd2ef23b639921aa2886a57ed3598d8d1d69548f0ba6c06fe0be468e42cc7387d9eb392e63c0f72acb4face65db39ad3515c9469ad0853a0ae59ed88f2cdf8737ea15950cca00b93f2c9c20ec64a10ff2e3cb289afb0af9ef52828b8e58a651224a73ede686418022e2485b16eafa549758cd4a609fb393e2399f94607d48f44229005d8367ba15c2b159209eab9bb9da013e81d423855ecbd50b67a2b6e8f956a5d0e8f37986790935ee4450363332dc1db47aefaf76643a219750f3e3158e9198c71d33b6e4d2cff11596dc4355c07489292fda997a6080cde57d65cb62a34e3522b2607f74e8024ea7bed8f2555583016861dc1f513f7936d9dfc393a0c8deab2af6141d64b46437ea963c76544d67701d32e6df38beb44e8a0ec13d6201417780423f75598e372463bc447e69acad7496e1ec0f044f1c0bccba8fab91af7ac47334b6f8c85e87616270b93ab407012275fbafaea32e6085087b0b359cd59abc41b8ef56fb2bbfae12d007bfc37c4e09292097770f22797e2ef9fd0e9d8c4c7ffc3bc8bab0aa31db27c34e47b3ffb9adcfb2099a0d93b900ab068b2bcd0618d49782fa992ae02ef278c58c7b6f7f65b7ff8f82cbc16b8bce64f426b8d7f4b4a734a74ad839e146eead03563cbe9d91ee240615ff17a65e4a3629fe57ed761465ca118f9b533cb660937b544b7956970344f400b17cff0e531bdd9143fe53db0dc5ecbe5c0af1b8d6f45652752f46e295594ac61dd8d66181e08c01dd136bac78feff270104a27b6dc46551a07d7cdadd77dd544d23c351bd9dc219cf01378c4f36083c195920fa29e18c47dd97713423a7686e7931f1eef292ad191d1a11d7fd9c6466a901a05f4a38cb2c2bec5e694e2ca5512213d06cd54e231cd43ad6fe7ca5c9fce95dcc5fe7d7cb21bcd569ab6664c94d2925a4df9009d205afc4cf1e0c2eda94685f5e2f6276e216bb6d89efe776608ec2f5a0cd0a1ef1d4331eb58bab7f456121bf2aca6fdeab8893a290cfeca5c33a0e62265b8094f72311c8e2740e11df0a69564386e873f3118a461659d7af79279cee7158ed89df9c1c4d60d0156a589eede3a1526ef2d9783649c7ba5142a57a98728bad153a8d93ff0dc923b04bcc3b60e6600c99766d71e6927df21dfa0eb37dfaa4c242f00319a826d0c9400f83e28131976bcfd821ccc304a2e6a977a05a15185ddee3b680f1b27210938de7cf0ca1aa7f75dbbdcd5cf223ef4fefa16beadb6f7eff51e79d639f990ed2c0e92afa77453ce7add61b4e0dc46179fe334948f5d58c0b840537b032729419599acf304c46c1e716e36c30eb4ecdd5b791649517f97021685b11c34952015753392fbe85b48c9d8aa41122e55e2e6bf643456aa42d7478bf1d92688e7299e65535885f3fe67fcf300cbfebc0fe5fb57053fc9bb1386c5b741a0e97f573430b2fad7ba86e446b7f4cd77410ef971466d34a39fd5cef60cdd40cfcbc9e3282ea9e6f0f856f430da0ad5efd5b9a76aac15d8f4d7512c053595d15f9122f9b66683359aa97b775c94d73f3544d2095efaa999753633ee875a845983a6f23eaec56c244542d49bc76b4a54373e11fd3a3346b4ba128d815419dbc0fca8d9a6f512fc2c1675de35052f2032d5c63e4c6f04962c873ec95ee6794d98625109f4693385246b276bc94b360d2f40d4ddc370b77210e8d0356662edccc3a8eb02f09e68fa0616040fd0c842c28c7ef8756dec5fc8db47c92e8fc196d7b276615ad37952ab5c0657614c77b9cf671747073ec1f3e7e08ca7f354ecd3f5058a82d73364dfa4601a33638fd28c825c63555d6626cebdc77d48b2218ead191907eb6fb878cd00443d20e373d21855b521397135a00260bd99ae4753150473647175c2f333eb4cf69c80ac73c63cdf14d8401da4cbf8c585bda5cd5faca9078d4c097464778192ea5e5fc952f3b82eb844a9ee6f91def24140cb22093857610dab743c411a5ce502c93dd9d8c5102c70808429383babb87c096d909927b20c26e5f2bbc7e3cc237f6304bbe5c45e330b0f3557571696af27794ed3130c174e43538ea17f1607d7d248c552cfc7c3e8b202f08f8687b05168dca3ebad6911055ed4fb1c6eea78cfb6fe139c4190d6e0f103dd1ff62b65d303db784c1edc1dc2f24d9191e5e96aa7dd1ff7173afd28cbb6dc82bd303a6e0fe75f8a2ef9364dcbf100904049a9ee81e06951709f82f997cfe7509c3abffe4b1c2bb8a366fe2c1d510a1470e4675fba7dd0a71870a9925097d3d0947b15939da65442886215c5c345ee93caecb2830f5a63002a3d963b4f2c3e1c1922ff5e19935d33379966f0b14f84d7f40f45b1ada5d709853a77c786bd72521639410fc616537630e92559bfa29d61a3a6d373f08cd02886eabec8aae3e28288ea8cec7064c0e41c480a4e7a55ca3d6646630fca3c84333d2a9a641305201374970803fa5c9f94b6e0b224a3418426d36f2ad4d9d3636273b6ed00defeb450de3b2a970f49a5891b8339745733cf07b575f14f803c240159a1b5af409b0dd563e44f325155c184f4feb3b49b3f502fc99cbfa4a57587b702536804c4fd71ad93ecbf7927896ed481654cb3999d65414f675a96ebb690eee2f476ddd4a711d177cd8dacc6535f8ae6234d9a286d4ed548d6aa7d3024f97b108d0bb09bd5d58632becbf877d9f14360e1d61e68dbdda5e8b13ddd327455c4aa142df29cfafa8e1f5c034ef0340c448304c82c6c4d32c4e17360fad3e3d2f9c8335760a3dccef4c8944523120677fa52e911d5df51c9393920022648813265a499be37dbb3e795096375bdfc4f58234eb31e04700f368a9317da54da3acd310364ac772365ac48ca9123e3cb9b03a219e569367a997b3d0ce698e69e8cb890258563e5363bacd8611e280f6c90ba3062eb3a93f7100721d1eb9f54ef57bdd04d287ff94fb508d51058178fbdf6a1665a1c92a9df955b046704e47839e5421263e7ad3153e451188fef19787ce4dea68e6ab5407ce37439d9a74a88a8afcb2d7707df3d9cf955a82a7cc776b5eea6bb159973e9d8681ee1e5126854f2aaf82930040c0a072bd7095f21eba5a9bf47d7f7cd559e45886021218b443b32f1d66bc0af6d0256169d2e896b9206c492eec252109e4bea154a07f7d7d072fd0a24829bf7265f74f7bd2e173754a7d9126978fcd0783ced50a7886610a3025b17ec9888ccfd5d26f2aa0669bae7e7fe4b890d229fbd4aa7fcdb1bc8bcf6e77ad7ed8e613f2da71cb98e42f5a28d648491bd8bfd324b4c130dd7be2f5b2998469d51886d2927a6c739b25d987ef1f08b41aca64ae9957bd5872c73696a6f40fb2f83c6599ea6f67d99df7ba7981ec12d714f06e0c384ee066d3d6faba533885f306f0e32cd737dfb032ec504642a6b81d2e5324951df794964d13f85b8b881911a113594454e167199e847674412052670731fd82ed4368773727dc94603d5c1adee42d726a905a153a03b6576463b01f3f63fc49dd34ba84fc3749b2966fb1530a261ebb80026d0140678b82a834e5c85a73fca1b86e205e8e7a985e11878f561870ce096929a4c5027bfbf5680f023d19b8144aab2d207233436ccf6addd018d69e449301b63511532a56168db2decd872e6e849fba8cb6e54bc83501259470cd29912edecbce1194d98a957ce6e41d5ccb844c42a078c7f8526d0deb7e8b4f4d3066a8afe7dfe1489fd09ea325ca31c425d80071a6e0ea2a29f45fe3d6de9e48309312d3112dcf356dbe2d5bd60706455adda3888336ff9b1d2c2f5c0230a9aaa3c4ed40d4f3fa4b111a5c98e821508c08b12fa1aa602b3cb15d31d4ae1fd3b64afd9660ba741d071cd87780aa60b94c4f3d516e17d7b970b71b78264ba1e706bfdb77017ac0178c8574a438bb548e33480542c4f80cf892fb66ee52d56a4ac4ba6377f6de5129c2a4cfca844eae76785a3c1f2f8dee06cb1b46ff7ee10f7b3cad68d2ccab837691213abbefa9bcf387619b2255ed331a36f8c717a1f111cce5c8bb5fbf58f2814854fccceca1d2a1a7403e3a41bb7b4052ad9a7c46dcd627ded8786a5a37a0568e5658d88edf23400fcc78e11f6a9fff5c6141273e45c5e2d573f3596d560ea36a113a4efc429149b23a2d6f9c64857092a8014e372f513b45fbb263fe82d2d389228a5ad5c61fb5cf5d6370909cfe67b55e52b21c1253eae4d3611e760e12ec28ed11382823324a8d39c543ae96ce378986c42117b1775fc435962422db19f20b470105970b4aa459fa9a03071e938d15fd4e771359f90f40768aeb55cdd0e11d3f0f916aa61c1e037eeea828e870b58a6f78fd19736de2d88e3abb142846b46a377a27ec56ee9cb9ad9434c23511ab6230e2dcd1315dbeb6140cd8b46ab153724d5da0dd98f3e046d22b170dd07a2025b07c94522b926b1c385ba75d7298036d221a6bd96a139ea332b5abb6b9a110d9a2a3f18a77c9bf7da89f637971fa103d8ee04d0758075c7a7619005774d9485bc479f43555c8232cb71275eb9ad56d624eb72e3b25418b6e8ec82bcde899398747ab21ec82bc1507a25ab8ac6840805e45c0e8e4e1880bcc19b0ab518a47449c18e4981c6fb61fcd4313fd8ec96efbf789411e68f5b642999a7a0e8d79169556306426ed6b98fed2e289c9f76f1ea190522dccb0bb0e0d206d5078507e0f2e6444d7af2ef736967552f38ab41869164449b9573cece1dc7fd2abbad72a3a312e6bd4d36579b9cf53e72c2d1eed86b773e3769ac1ef5a78d7579c9893064e0da7045b19884d65515fab797cd76b9070f1f0838c955c20136fe05eb5733ff148e8996c115599eb3d0335da50c9f1d468b283e486b35ba1c98a4e659736b6d40ce5e647425b4f5f40cdfbfbdff465060a04be693c835da355f944eec98bf5a42f4e3e98a17db2806ef57cb30ef40724afa489834622cefbf48907802426a8b65fe632812389d1b8580b8d79f91d4357a242a34696612d15cddb13bad832364d2bc0ce9d21d0e3237de5f730682e9e5e42e4d38f94c17e71fa66be8e6e5e53a1ee71ccb5358bb213f7993f95e7a21dfb7cac9f907be5e8bcaef116d5d9e50b617f1b7ed55f58d9bfb08896f5e492d024dc60aae5773e14fa55878751b5048ae4f6fef505d5915abc02c005094350b6ea9cf8bf841f944d1602a2ff57f0c2efb3e3bec184e8ad95b0d4b64dce9b8b972e571eb568c22b2bd40c0e8ad68aca7d0484e761680208a54d34b19a8b7f28cbec8094dee7fd4657162e579f5deb311796564770d10f0a6ba8ed3976ad5d40eb61248db4ab66c0e7ad74c11da3eb5b9aceac58ac4de659ca4770b6e8496eb752108bc053d7e4fe07c9e2f42cc4112c71f81bf4f870802434d1762b97e88fca17838be4d8d2923a2daa43b2d56df0fda56369e063044df281876926b20988d636e4e9f516574584ec6afca68dca1818aa003907d51385914e7f6ba9f0d948f7fd35e16a18fd8e5415a616dc26f0055a2dde0cc0bcc94cb0ceb3ffc4bc2c7f93ec8ecd9c5296de5f176880bd1662a264b328e2bc76bf5251748204dbc6dd6b8b0d6afee02843018ee71a79b2ef65015cd36d38161ea55d3ab214862d8f6baeec10e8d5b9203d8c6f67a688f8ea0d9a90dcdaa342392224de53889757bb1e7b9ce3bff4f6eff329e40fe24efb00e29a407c87a83bd26fa7bde62e18c3cd0f168da42390ec71aadb5a051e8d7ceb7c902f64176ef124c5c8f2a4b989c47937e8fcf43669d9235559ec0b823b8a43bffa26764ec1759e952952b79bfd6d72af3b5971cd0c61207125eea46e88181d5391e0868da9ff319d883984318a897a2bd0073fad330db06870f595666c26ba2ce56bfadc4f18a389675099a04212b936c0ca4ea43933bdadc8381e0fa7fe15799e3bce6ee28368c445d72f0e6c07b67066a39380c5ddb9c1a80bf56dff9d5a36d1374a4bdcb18f0c42fe7bbfdc96b85194e74291d976903caa458903e34da4cb87d2d84e66356db1b013a2c02a9977331b202eeb012464de93909e4ee7ceb24f101a30889873a3fd5b6b6b8e2d8c8229101c408c3bc679befeead19dd0675f0a36bd5baaff6184c9f2d95835f0d4bc898f819e04998e960d66920855eb100f01e64077ddfff55a1ba3fff4555e32d51c03874d6db9d3f8346818fe705d2b02ed95a8474dda7b1f3bf5c990984338b48120fb4af5b17873a3d224537e6e6448e27be1df627f5252c724ca230b605dd00aed6a447b3f196ca70087996242cbb6a819589e93ce5ae686214c5002fdbc2377ce8ceb745f0ec960ebf3133e8492414e8e41ed4db0f9250d8efd53b8d0228be86d1ed0e45c1357bcb3757eabe63e87cc4b1b6853d59a68e70e684fabe16e00523f93fc6a1b939b51524e983fc869bee787c85f0804e92457382ac7ac186929787df1f62d231743515aa9b07437587b3e7c80aa36c71824440b15fe47f0f853c365067360c13017cfe80e661ebb331adc7970e038880acb3f7a9a004133eba33e642a772b087987278239efe132af4cfd954eb7eca9b3f8b7b4e4318393169766a3b1e8e7ae733e1260c68de28569c4d034e016dc8a949cbfabde9c24f750f5c3bfef40c7609b51756632dd7fdf6e2660f40e3d51b40bd4967dbb144f53649126099b81deb05fa77def5d185f8cf0426bf101f0a4a072009ffdb3607a2586e02118a82041506c948f265d45669a3b7b7cfe2cddbde1e217015b644848fa3d060119060901f695086cdfae153a58ed39107a740aad83d6e2bae8824329b5270f2b017af0bd7cd1b0fd5c2b085b03bd54efb29ba3f990ac61bf628bc3234ae9ace82b57cd5c13aae8d74aedadcb9464c33853f1445bc4a8f72f0241b159da4d82039e08ef1633ae0b189bfe19bf5fe2f27c4c17638338f6e6bb4f9f118f2c7c94e652185812243452dda358f647ec45b8c9ffec642e077c6cee71385c590ff305541650a7be2e055673fd8fcd1d232e7a31596f6431cf297d9251eecbd41076e2ad24ead3f358841a9615db5244660cc88f33f56086453b48606aa674412afd65e0160326e11a1b6f623239c9290f7c7f03cd75ba3302356281c9984f2c6eb7a9567f587a5d25c072126fdf3d53ef2748bbd57c206abb31ba99b270e157d87b32fb944714e043fbef9f6fea1cd602e7c9793f1ab30eec1221af63caaf285eee9477e02d718a227f3eee24c9819877c4a852c8665fe42accd8665a03a4c562c3ed47167c115ce7beb5c1deea440078f1181c9e327275679af8f0c98504a3b7e80d318013ac638ff077391bf3f0e98d5f9edd121f1f70008d9fb66016b7cc8215a5656632532c95d4185bec227fb3417a43c47f60510975dbb9c229245e864834011e2f2a4dd70c089c25572c13be4084d3b62d280bcd4cca79a720d51663cea51a55c357164e8f199ed611817dff4f09c06f5c50bc49329c903b933a301d5442d78e1d8bd3758a57050c6c0270922c48d1e9f41740944ca560e5702f895977d3a9a4051b6bc7ca56a9fa3f8a4ed4a6d61a3e869057ba57dc6c8b38de873eb9c757a0a883e7bb6391e99d83cd22bbc3480cf8cd50f9049269533db99593097cc4923b547147bc5d1eabed248ec0250ecc0bb71f05bd820222c8b83124557c971a3b6d4acbb26ab7433bcf7071b32cc52027d8f8623b5772dbe39b0741a4b6ddefb53cb8cfead025a1afd1b74c683f95cf0c9c9030dbed890bac89fc1a50fa02b3a3503e8e7b7a840ab1115da466e3cf70dcd515686b9df9bf9fb13a147569cef81efed52f11b716ff06ab342b9426c21afc3965aba53f9e4d15664724d223d81b8166e1d9dd7f9b4e7509bd027e453da4c2654d7a32729fbbe9e912a4fd4963496c4059f9bc00f8f04a805311ffbb2bd084a302b8c1ff6f87f2f2201c82e6410d568bf09e9b4f741df732783cde80de05a731184f5b52a82540a037482603a6d89e294b2c2bcce142e34e468d47d3ca3cc09126d0266b03f35a03b5493e2f49470134eb6cdd9fc70ab6559ba54c2aea358836033643baf7806bd01904b358a7b33d4bf8ff902e760dcec3693e54d5c4eabeacded12fa1f617bf5d43c96dfb00ee4618aaddaa4984febb7443c5dafa64aa53a7fc63cce028a0a9b7dbd36524f65d81e23b13c6d026331337d973b179283df0e0d66896720a8f9d8c6a2a8ca038fdd1b8cd34cbeee3a9e8b5959b4de66c5714ca766904e374cfe4bceb99568a35726a768cca877013252e68a9568dab583f9df221b3a705744415635e010ae2bcf6ad0d481b5ff4301fa8a8a201d153903cd712fd13b1dd4531975b845813d94e2a42aeaea80fdfa94119cd8db489125f4f2814dce056827f07863e3c5a6a0dac42df3d230aed86e20377650cc42ce3c3b5766a3793dc9203adc5bba0f9dfdca9e4d7ac2bdadd704ee7fac62da5e2294aa690958a416601bb4e0b73e5b0ccf276c765c3dd3387feae7bb7b1a9faa6f8e2ad700e48c8dbc74c9904af34e25d4b69b8e0d3c6e1946fd8d18af8d6c412aae0de8933f962f851463d1942d300c8e13a41d6302d33df68d3a9cf37dacbd4acd9cb366979d588f1c0f974df2f888c952b77fd66eb8094e253b6e16aafc89da977862e2397ff81af3e78ede9c34d1d152166441f86a0f3247a4b8e048c34c868c631ee7f99f6c17861ed80ddce98c1ed4af476d6d69bc79b222bcca773cb3a7d1151d60c11398c564e174d1a1c327007f2783e349600d3510617c1853f12048c635c121b149f83a33c9c68e42334f8c9830a4212ea52d48575e82808676964afd848dee96552e3644ddc0fc4069435dd981905ed55903b84a9c6a7497ff0428f8a552c6d96f6f580beec7ab1bbf57d0c06d4e964c14157d443a1e5eefdb0c19aba620e45d9a518c186b5ed4a033b67fe2993993b0bb79464c95f6c4190223f65a0650dbffe49d29762484a00f343058d8d501093c7035820ef506ba59d67cbf74dbe9bbaf3d53cc4f69509faa30f067369ca9486a8ac8bcb98a87f3e5fdd5065b5c19d97c928b035c4a0c35015ce2cac4e421633470834dfac0568e0a2cc6c039ce41b9a60612e9968b1cabb423b1e6b18217dfd7ad273d2d05be5fd57045fc26b45e358fd97f8a6577002135cad1a706e972a4c77cbc9dffdb3905d1da8ed4568aebc55d77e75a6b4e5113e9be66c12014534a539754e19269960e32a3255dc9b521b5ea2be31aebe3f18ed194a9944274c6438712de01787cc72b7c2bcf8d8a1521b018941609e869fdc4103c77306b8db8b52b753f9778e849478f1e72c0b2ada0a25a29605385f421869d2909c52c50cbd4a5add509fd1d504789ad801afbbffe280989ad97ec33845a1b1f61044512d2213fec2a647aa05bd62a6ebb7f7b5882e948cffe0595afef95160ffc8fb73442557f8d4ee40b8afb71ab5aa38a4ff0675d702e67e4c88668edfc72a5ae9a050cb3b6169c60d863340a0883bdd26025b79fca20843c95ea4b58cbcc87ab7c1c2106ad291e55e8f317ec42af95856899cf94510c0a9cf6a518ef374ff15014befec58e26d285e65f158bd5e66e2718070a91b86c1f0f61ddfb5bb4f05ceb39ba53ccebe8ed1ffdb3fb135baef0d6e2e538a5bbcae54471bf6ffa70ba50f4bf03693454b46d22e73ebc3bb26d3da65f41a25f4ffe5008ed438a16eda83809f8a8aa3b40cb58eddda0c9270f2e3213304996fea778f041f9def86b729df24cb4e4036c3528ebeb1e5d90f255c329785be11f984407c6ef4da8772e131c35c08797dbd220c12946e0a9aa934093a80907996035e0098236cc47d04ad5cd7aa034957ee12289b5c0b526afe0b45182d0190eab9afa03a37ac9d72ab86c34f1bf7361f1676ff9e81996dcf10fe5f9157d1f574b59eb21921d4492c9a401a94a4e44c4e47c4c8dc5c22ae1274bc22491e01a054557892c1a8d67c3e1e63a02ad7f3e57651a7d7e8ebdd00575539c6815327691253e59ac3c10c5e2cb7573351fdefef3eb5101d1efa54c544d502108176502eb99f0d23807b00ae1ae1681cddbccfcdd710d818af35aeb605733d141d1bf84e082ad475b5dc2eca33bb016eaa45a6ddb05a2e8a632ccfeb218cceb4a52b9ae3caad3790ec2d5171dd62ea33a7d29dd8c8852ad60e5eaf4766c76a6e32a3ad221c58b4aa1681493049640b6099dc4241bcd46f9ecb8362e499afa66215c698a5f51bff4afac11c67734effbb50481f0fc05341e0e95fd38daad5ab8ef04fca916b5218b311fe50b28c7779d87d1a55c9b385f504618b8cb64f9df9ad85daaacdc6c25bf8ed5c89f7238e18f7e8b56390b9e436379821033f6157212e6d9949bb573acc47ab65b7fd940e555b0514ada1d0da823a07b2b974920ea9ee72c66db4936eba334a60520fb4cc81af78a2387c06f0f83d46f2d956106e56f7eb270b797545209db85c9ce96bac6de09a71dcf83ad4ad6e34cfde65b05d0a9bd9a38c0ccae9eb7404b5cb2bf3084a8cdbf4b4d78d1e4a00e3fdb6f2f70b590ba9ad757acae369fc8369ed3dfd1ebadcac5932275100dcf1e0088a4ebfe751935c9c8d27b3d1b2902fd5f5a4075c7618f35a5ab64765b32be56c8d2a399462f43bb968dca65bd40ac9335c928fde2492814833f53762dc31096ac7f3a0615557fc676dba41a5bbb66b1fae0dfe565b523f4cedaf2f1061c32025a0f5c70ac9aff8f33921dadb49631b6760d09a36ac5b0f1d2ce9714e395ade227509dc16d89efa88cbad95dea43d414fe2a8f5cd02f1237b355921cb9cbafa4b19b4ac63000e2f75242ba3cc76e5eb6131fddddb53f034b88a9fe06f03358cfd6f71c7fc278bbd4341df57dcbee9ad4c8993b89213922cf21817743ac733a28b9d31c7f34f82331d49eaaaa7631a4c54614bb24eeff8d5320dada76dd8aea5a1a3a69365dcd88491b28f0c752c7f88cd8a38ede715032b5c5df7cc39b68fd6b33e4f22bd09847ae2e03529d4aa68c538a9890c64c1df0f0d907e97c3d4800168003d9840aec96224f04f0c77e50f77ce44d2638161060596bdebfdcbfeeaab9a25345853722e9e7680ca7f4235bc55cd135e9ad9eeba7dbaeccf69fb4fd1fff6b8c3ca22ed4df0abc3dda33e488b5e91417b6aa9421613c79e12bc3451b4575f665efaa7a4ca01c6f1b5c5e438b59cbbbf376d5792ccd866bbda73e91160c2d08ff5a3cd9850da1638cb26880da579a0b6bf56f4b4fdcf74b1d5d75b0390f74bcfde64726743df74a20d41bf6a9aefbe2b1d8ef800bf5b39194a25fa7919841eefc26d49b38e186819c8719a7667cf058d055487f3ab50ac76796f1b68a243a2c5b6ab00c84d33ca28993db7bed2959f4e4f2e5b11dfc4ab01bf62e4a1a080dd3c183eb5276176dc01cccfec0c04c86c434f2e19c99ff3e1ea58d822a3002031ce7747a6e423c57bf5a86532241961c0fd073f325b05c2fc69dfc963ff2ba20e7bffb14537959eb998068279fb925d6ae6c31a5321a72439e5f455a42527a65cefd3ffc206a6bacc53e584d2f8c59cf3d0cf4d67dd0219755f0b4c1d22011c31779ffd6594aa4a32afd634833777006a168c5fac369af7b4d4a3dda86d145d8d5791f32612852858754a3b539ea5b1c184007d87c7d74cbc49421a5ad3d444c13c4bebc23ce84dfc967ce3b0e6ce50efd92692b8dd8264789533742ed1fc37199848ea8d4e16062cd1bb6d902be0ad16613133702a0008c63bed0ece8aa6e1177ce45254d1f5b3498fe489f641c4972ab7bff002fec16c9d8e11f172af841f43b7a0748164923bdb8041b6d25fb24f2c0c1f9ed904c7eadb19cc335ca0958c0f4f7a261608d08397f994b3565c6b213af060b215216be4be6fe937297fb6eb08fc77d9c67773f48cf37321bf2a2e21b32fe2276fd3794e1ac6d13b56cfbe06dfc688fd84a6c403782aa0bd14525cfc6d262e226a75a2a8a6892bea065ef38cb4f04d860d2f73f3d3ecd99dfe21e9172e710da76fd0de501a0bf0dcad94db576a25d90e4282a62b20a72ee4a971afe7cf21a1026b134d603282399d929072af269554dd2eb6eb5ced9f5f70a8300d7529ccd2442c1d60a100c1322b3c86a7574a9ae612eb7244aa7db12cbb1044ef2c2b4cb817a2f18d8da2dabc3fe325c1cfd8fcb77fbd697180d108a9f1121591b868a47a4ec12c8187e4bb92d77ae6519875fa1cf8566c4c8008cc860e575f35e124dc0cd45fcd475234e425560c26526875a452c7813c6935795d0cdbeada83c68d2e8cfe29e64c35d59bded0e5eb39251e1f723795d200fba95e0c12c63e42ca4bd92e9af5ca537b70d479e986da1134688f151b927e005635594d5e35d972623e7747b9dc668792a0b509c3fdaee67cb32f8627d39e0e1a008b5871287fec4f40af7248cdabcf7e06d164a26401412211fd978ef8e5463c08ee791a11913432327adfc4ac6a40d9d44bf954fec8a5189f2856035375bf49fcdb28f96854ac6cf33aca866ef4bd4a12183a1c35a4a0f3d7a240cb460cbee38bf893e6c49c64dda694f078fb8e53664d354ffbafc5aed889dbf2ae2b2aab24bdb7f0555ea29c321a55cc1b587e0d5d5761bb43286ee9f5d4123bf7763cc7f3b1e8156d9d067f2d88354cb75d763b6ebe8c3f17598a9f415ed0a03227643884e13e1ff282b6dd3bdeaa5a8ac46d53ffe498dd20163d59f62c3f3095f44a61b227f1b8483f6e542fec57cec799ae03681d190da5d686d7553be22751627c13ecbab9d18e2830eb5a0f7c0a17d4e3f78fa4fc298ca0e0321a299f719410451eee3126c32e45a97a695c78056191acea13f87215499ad0079d35eed0586e531be29f1d86eb3aceafafa08c6b77b65718ea662fb77a44c95cb53fc1d25ed4d4353bcb0e96f78af01084e79a6dcd10c5878f7fcff7d8a7ee02da340314a7406b0fd4f85c2490f23e61ba2571247aafb5dcc7b8299b13a13a8fd5805738efe6f7224b3ecc4ca9095484a25d444de9454cfa8ccb7124786ea6c6cb57a39ba80dfa6addfa5070ef385c48f5542fd65699630817edb3428c26f0566c576f3d0d30f4806df87f8ae455629a5e5a9cbda73182b94702b729e42bb4ffc7653c9e220b7b99b4295269b1aed2227fbbe979ac9e8d48f6bb09cbccd633a6b222b4a5cd3ac8467d8c4899df4bfd45f3627547e0c3381ad9453af8aa2bc7d35b78a801455cf458a98002498984fd22ef1af43e557077b2293ee4b42bef48a3bb8e36646ff4f9b94dc0c650a101c2c519294ff6e1ca5c48b47e39b5e71cede320b02a92c30e5a52e174aadf61dd0eaaf341a54a20e1a456d8ff927393284a98bc67a17a1df9c62e45faed7d9b4ac7d2ff44a8a41079beadcc092c26b4ab319b7c6eefa0bcde68512f12497fa30419e52858d38ed3239a20f93ca81aad06599a57c5750fb271ea0c6d517ad7c7d64ba4748d4dde567fce5ecb88a2e508e9dab049a1a7b03760361a9e7d7c9a39fd73fe424b7962808d6eb8b3ec1d1dfc12983df7b0c266a1b9e54d8e29a813d3e48f701f30889afc166aaf609c4c51b8dbb4bddbc562f0342f6eb27e3a4624655f1e2197fe077678b9388f493c2a6c2e8ef1c4838e9b460693c6664d3b36bf4bc3601c7dc0e8269f6225dec0590dbb824377811106647b8cc57238244bca429ef29c1e865f53843f3e40677437bd71d419cf67a61defa7d486cea023ed10be0385d8664033047b0aadce95cb9020fdeda89fbb498a743465c017b30c789395bb7620ca5db3cd69b1965dba0c98a16d94c4ee298dec7490823c9623d780f8d1fc017ba8b2d319097c46d3be25ae05b1d386fca55f75c2cec4e16213a3e3bc8994c417b3fa7102ecf07c21cd52a8429ff38106ead84c11e7b262363d9958b35f0b431ba7f3bb3b1b794a73df14c553a68027ac048b82fadbf0bc2c62eeb88ed889e774e28f15486255c9774e607f13fc303fabccd29bf340470a46ca7fd1ba6ba8fb530703297a3bd00b5a3f26e1ed9413072c96e44247298dc79a96ba59c26dc29ad230138021798867147dc294fcd39d29d135a97bbc347e96bc8c34f621d30eb5c3f7a351d2e01b3521001502c45afcc8bd07cfd6447bc7e15d2b83608307b4ea7dd11a9471ed9679c91f708f5b422c4a4c09de7e825ef536b9dde4759217c8a75325d89de96fe122262bc563e9e58caf866426b9b049eb65d141e25b1c9fd95b9884de7d0d1ddf12e5911d2ef8ea0efdfc8d3f2843274983b3b9233ff1086f2e60bdd808fea3a4767acc221ed66506c50a3750d08ee56e3a439ff929a8b6965a9d8f9f677e5cb3e45518a16c5dabe65f3eac9e608b9fef4f9d0f41e3a7439457eded3b36f9a08f53db115add2a9bac22bc7ad0e693bc313f8c1878b507c5d82b503c13f50377e3d293e20d48888cd3ed560057fafc3aad8136d53ecaa82e4371ffed6b9b38a3fa18012764dcdd6509616a6c82496ae608b02bb5708b22199e3b408219fe03f930c132b7e2eaff225ed8fec7d3a384a5c5d82ff8429a58171deb9cc37852f5e054940e5ebe5f961e516b0c5f24d04e562608d2188fb4cf7b9f2d6b8ee11f6a43558b097cffffc6b81ace120479ea78e7656f8484cdb5993374bc84b7d8b2491ffb45f1cce59cf44fe8d16f1bc03f6d56e6e41b80821ac86cdca7b21079daa079a21f875fe032d2305342925f3b0ee8e362c148283b588537e4684b6255f0accd80f0d176d01b42e2d589a179819ff9d307e47849aa71419bc33ed61867b3264066102af4f5ce998a8f63640ad0c75a75f1a839161ba368f7ee91a9241e738464eef59ee28bb8fc8e8765b097fe3a04f01a86e6f4cbf405902ae91fc9bfa1ca00189a92deb29ffa2afc48d801d61bce0df42c6104258746db15d8de7e4ecc1077f115f5a2950b36721eca820bd9a97846509a8d507d4ee6b6a891414a0dad7b75c7a0e278fc3e30b3d2d91f6a45a0d2289d4ba82925cffa45ad69f054368da8b4a65a92f96009818dbfadd5778f6758ef1635303f4771e5781a241815b9b549c95889bda45f6db6191cc2ba92a8505077eb4c7b026e4437a041170314957d4345bb74ce3564cd3ac527847ae0602ecb21a78fd396fadd447cede07a21271d1f01564007ac0dd6d5705a3d04f1008945f62cffc7f45869b82020e0e9c4e1f7940b49a02ad52961597fb3c6b14e12174699a131f45727e2591911a14bbdeaa98333288001007155f7c5999e165ad827bff350a9749f8546a9992f53fc89df744f8512fa798d4e9dbaec369285606e24eda447a2eacad38221623eaa9b369ed1bd7e173c3aa8d475567c0e297f222e8c6867019053f6578939cfdd31244b2f01dca13d871bb1f28c42c3c321d00da9ee3c9a233a83a63f3fc600a74fce1a194210bd737b91b7c0aa1edf925b9c31099efae21960232504b8a76398e6693be06235f63b6a2b1b4faea71f3aea304a728c9ff04b21ab1d28a999a449863873dd588f7a462e5d6d3cef4dcb192ee9b8644a73f33417592ceaf965546c3c730e1e43c4af3d8d7cc0a15f658f763fab19a31626aa155df39d17bb227e05ddfcf350149f970d533a70fe54b6ac2590060afb87a30c0deb3b0b36135537ab4abe416c2f5c4446c5e73e5076f7f057eda6373cf442789be52d9a3049119c3ed203264c7a202148113114e9a97808ffd0225b9037ee3ab2b0ee724aeae3cb6ab9320ddf9db1ec0a33a595e43ca22cac06689e6cd7da63a1964d939fbefcce1e895d953acf953f65c3c8f10705d1ddb453e266c7f9c94a5e420cfd5844d15579caaa5096245073844552d2003b72c6408702a2532592a894f0874330f7c5a98f77e3ac35d80cc228322178e5bfeb88d4a23dbd27a2252b703f4390000c2d97b5fa08b042cb643dcf12f20b5c848fe7e3fcb274d10ef79e27e53dbc7fbf70542386f8bc04bd48cbd9e4f895447e0d50ccf279cc53bcf304a268faa53310a866a2f84959f5bdb768b5ec910b5b24782bd5373e6fa4e6904366b7158d95a1b1a83115ccb9441d421e4523f1e07d3f4f7fae217c9f1e7ef4bb5b631b1921ec12641c5a682cc48422a6829d96ff221bec7f6e096325d0513897f5f3c411112c8a3f83da7f0b3e072146a7685f625e7c677281f34fe0febecc199c575b5717ab3235ee18877e6e1045afa953cfb292b404b7046bee48cc4df0df837b98fdb2c8102ef138381aee9f4d94375e5196004b9aef52bdb4f5f75a76d22e37798604be0fd15e730508b433868c2aaf68bc5f7bfdbfa466ce5d0241c68aed2439be9fb4b94e8cd27813d035d5a1152a15827059b8f6b8e12034f74573fe69ed854cf0218a34fe7b2b1f08d2cfa97f11999f7d3d47695023e4383e10bdea5cf4abf5c946d495d5e93624fb4587a8bd3d6291c09c6773b57339bab5c0e16108a04bb6b7690314072d2ba183546a371fad502c0762a3df402e67c63021bcc328079679f9500377f05dd1da995721a80ad41b38a8db65740a960023b1886bece73a1e988ee4c4146d41f8e0e750b0e5509aa9beb58fdec6f9d5b258dbf635e6a42ad1f2a5aad2e425da83431aafb0adae8d62bb0571e0ff4d884e50558e5520367e7d83a6c6b931790b0ce8fbdefe5c9dffc2228404a9b7968dd33bbf2821d1ddc625093273aa6c5834c8cee5bdd0ecb095bdaa2745a1dc88888b51a1321f0e5d433db8356a9d9e14f50656ce5a4cc7cb1f6e9001cc117bf8b42f018db3491de965cc84fda07a80459473290d27bd09b8f7bf84c296e6f61b109094d7592b2f22a851b3b46e276b659132767b813247b6d9e5a8fad3b65e909358e3a0a9bf8e92a243865f09f346872eb01e0f0ab68498a680985320a756361f2e85f70f3762ee89690868e399f36059ad44d46f2b1b4f7d26ef4dfe76599e9f770bd27616258514be47835aa0dc5513aa6e8841bead4c0dce18905a304a03c1bdf95417f4460a1ca4670a03a3bd4dc48fa43fb88525c270793dd2953b9a9045b73344e69f5fd65834c3fe86cc62e0d16303dd002a7fd011b195f4c4b1c8f86b9c81fdc8107c5ad94cd604cae16a8109605266181cfd2d6b36490df28721b1bb139d8e2055ea56fdd631c3ff6b9fc02bb58180af8df100a0606dc144292087ad88e2e5fab8b2c3a7e03f989c9f83454986dd656a5a782adb04a1cd6b0cf4aff95a8330eb7b1f08b44ee74d078e36f9653422d4e8b6c56350cd3bb27d15b744f25424ec82c4041e3b20493a484aae5008305f7d7ea3db365846365c2890610aa5bd83c51e03f2651f2ebde7d7cfb8e1d6726b615f1994a6dbf926ed4bbbd8c577ce1ab215deed198950396031b277dfa444438b0095dc1737303fb30c279ec95c66732682ff8cb8bcbfce9eb8754b8a7d2733f28e0b7b4345d3b2638d232d6d75402770d61944b7182f8e97190e6cec53e536260b3f364a8aed3c176839bd96c6e4bf35c11d5762ccc4df029aab0df929337b61119061a44bbe524885a8f25a1822721acbead4a6e6fce7906f4174286644ebea65d28d442da84d5b498e62b87fad1279afc9a48b48d6cef67536321f4742ff703fcfdae72b9d7c89cbe59d523eddb6833e7fc8f8803a6d58ec67238705aca3a61285f6eeec2eb6e4c971c57d09e027e4b56887783b84e0fae060bbe5cc1347423edab891481fbf13b2a0394334afc440e90c43ae30fdaf0b04200fc1eec73186bd7f53c359ee436379bf6dbfdf2ef8b356d446c5369bc3f05590be37c547d87094dd56a39dc53bb9b38b3b73803e3503150fdf6b0530c891e12ee114b2cfef9b3a0e55b1da208d0132f087d445726dc6a72bb31281170ce08e7b70e936df9f483c82577b054380aeb4ea8736e453d06a9fd8cdd29d3783251ebac3da41c0e26f5c741476a4bf37fd42693ad14eecd1c2b10ac255191521884ddae345f40b80bffedc442609cbd2fdbb7d50a22c5a3ab0d0fa79e8ae86c0057ac6bfd93067be023446c12fa46c3eb28e4ebbe5f69034e9b1c83615bdf5395a4bdd15e01ec696797318760034cbf6121c989a8a8259961d587e0d170fca042f52346fdec70c2af7ee5460823b4e02ff14d8c62ff1154ef351c2b943a94fd7283b6fc11eaf0ee3a028f84bf593cda84f3a875cb33e286523ef154a88ae178e3355b32a4307784495ffdc03879eab867d0aafa9caa5100c7276e0a308bf0d130aa16660f5994d7c7fd608a435faaabeb50d99968dd43154d946f550a3c327a1cf07352e3df2745fa39355251bc52abd2b08054a7f35a2f8b0ca55561473c311475f8860daef87ba2418e576453f989101c6c781f71bb7f3550a9dc237bed46db91c433f7fecbfb86027805c69c161914ec208dbcf967b17f7f659822b4cd249764543dff44371682f7f4a603d16d728f1d5677b6faee658b5d8cdb6440070c8f259bf70421593a94dbdea080d4e1725ed0d184a6c2455a2150ada656819f98f2eef8c35005238607f8c5bf946bd2ebe0eab1c93b739651cd550af13419cfc30992b7263c6abcf5e92de0897713ff1f8788c76940b324bca03312a53ebd823df2cb3e74334144e6cc862f1f8214f61ae95f3e86801f9576ec6657bbdce02ff96e3644801b076b82e18bae4dbb72c67e0a09eb6804a301250ab7d0065eede94ece2d7996c3f1af484da10c450122e7b46d2f435d7c2432eb8ccf029335da39dfe9893cdc964e97243561551d9c85e9050ff78ef23c249f0eddcc66f20d13360bf71ab504bd266b729cddbd94fab366732cfd4faccec60b97db20697754f6258e0511d84e0ff6225cf799174c077014ab33091835deb4f06d8249515ec4f106c95f6c9f1d16b3274ca779b3ffd47fa200fcf6118454be7d1400c638dd3ba97c553c0c0d01d0d6f97556cbd23ba80329092deadc59d5c6bf6aada28567b3ef09594b5fd97aa3479578eae45ca9ef98d5d181b04f753911d6f99afd39ce4a3f7d76bc7e836a487f30610f197e7dbb627a0896affa49e366cc31f2a5b5d90ff44385512f9f32c8d79c327dfcb9e9eb5e49653cd0d070118ec62fda87d704f3840c49948a70045a56826cb337245332fae2cda113fdf1553f827c972e5b5f50506bb266d4a4416e27b18d8571ad5fb889c0a6908727b412823638db485ea5afaf419a399f7a47e939d9ddccf54854cb2bbe7d3a7da7be7fcac3844d1afe4dcb7c8aeb49efca73129366ffab7d905eba1077f498d630806c726ff04cb96bc4d20a34a91bb763c795021abbd0467fd13ebbdffb16b03b663d9f39ede41df4089b66207e3b578fcaaaf5abbd8066f76293af15bd5618252daf8d51afe9b70c5d1dc64e5dafa3006608bc016296b202114c14d1f209c9b388578c1749385c3a745ec9a43d03b4ab6f1fb58848ce7023d5f63bd67b1224316c61fba18fc0f50967ca3ed152ae3dd8be814c9026f97e9efb135d749027613cdc25c0bfe5a47be55a35faa0f24dcc31e2c08066c1c99f4fc12a9300ac7ef923d5a97c9b1788c02dc53d47284b624a3e401c208dce2f09c9e4662eecc8dd38c5f2fa8126a783c503ebf8ed0e6d64154a96302fbb49d09ee105d0ca7351b612e189440dd8c82111e1b86713f8b9a315d6697406a507a02d570cb5da8275750956b2a3203eeff56efd16c571f2baab1eb7c0dca92fa27b449abde45a437a5371f341337d952e04ba02120dd3e29f9ef7a283d17482543166ca4b91f54cef9d32c30e57265547285b5377cc286183af004e2269656424d69441a128fe7391f8fc6b87f22ed9b62923cb0d4304f111b004dc723c9293d5b5b4034411f7342add80318f9c9882702ef081e8d1082135edd6bbeed58462db90cb74a8cc8571ab96cbea8e5931ff36c19c504f13d2d5cf2b10679fa9207f387c85117a679408258ce5ea799ae9c0dcd2bb64df7e8c11f3479bd6221a140916308c4a31a694ca9ae04919c6a97dcd530ed7ee1c8a9c2781ff5f67d4737729808a8c25f2d5c307706f566dac32553040be55de1c6646c655519ed266a6abf2105dd98a0ad6796f5c53624c79bbeb00ff0ab8ce734f88df3951159eeb2b5e4d5dd15e206473144fed80fb0ae8bcc90be1a956d27dd4608302395856ff310bb37a1d2035b849430b6ec7635930356f27e300de915a436fe1b3f44b8d1050bbc6c067d62f0f76564efe103488f0954f8630d6f15a402312c0bc9dd4bcefe99fd18d9058aae76de79b1d06c86cd9dd65b5b52e93a70fdcebdb37847bd11d7e54842b66d5cc32154279338af24d585969056ef8f218ec8a0295ba05aae14f08a304ffa8686f7f1f4b9be24c4117d211e9879134dfcc6f1bf2f487a37b8ca0377b3e884e87135908e0aff0a42ed29d38d2cc96855fd47e2c7dbb8803cd1ed2333c83c4f1526f6055485304bc12cda872c5743a45222f76c3688b48bc129af34f848b25abded1f0082c2157671c4f7d86bc6bcd54f09dc279ea24154cac00a8a2ee0aebb4b3643774c793ad0017dcdbb13ae52d85184eeb81d603cf3133d093b784b5bae74829bec66ab011704c7b15f6bfbcec20eb2bf0dfabf6adecf010ba93a91331ce059da926f66a2181c822ee43a772cef483b244a01990b77a735c43cbe01a7e45c7692aae6515cdd2505f760a558bc1ee64dc69f15588c110936bdd3f06d603b78859290fc086a5784069ef897e11aee5f542436feee00acadd70b983e28c2c5e9fe33d3348a48fd53305e45674711097e343447746c944c20410e4fc642b482d5b2cfbb35c3e7d55d54b1d791720d7929f19b95346a1e62aa4041b0a630e8ccab69c141807fd342eed8f897a9e7f62a5451d1615e975dc09ce2c9b29c1b72fa472a0e281fe58223222d43ba293a2c9bb2a1a609a18fcb33c13fa8a77ee8d799a68eddb75bb47185e375abab6aa63014ad62551c8331771f8ae884e3cb42a00f09a6ac42d8c8a66a14eef98981d4a64ba1fcb5822fbe9efcf07ee825856fc8326b750ec786a622fe7de473281970a5342a3f392a18cfa311f3786af0dcce6dd5bb417b2a95c04fd06cf3ffda1667e95f76339cd29e0c0d05fa7da75575772115171f6fbdd0cf9906839203dc181131afd03c0abdd81fdcc3bda7c054986b29ac9a7de1ee0b712fe6bebbb32b97c4003e1326f0e614c1da0a7aa042d19e089d7a2b200a15396a7fc21185ca4d9f50af99f606404dd2b8e3806c41eaeac1796bc5dfa8b113fbd569012ec461d7c980fd18817ca62a09cd8c4d78b32cfda355a77ef85bfd9b656ddf097af23dd1b08ad5908cd4cd0fd5f255db55419bcd7551d25a60032295c92fd4b68be238435511e2c0b998d59a79e87e7e2105beb42a53d87654315e8fbdc75d8c3cc8af88b77be4e183ebc8c87f4a6d06da581a2a2c83c348867b56ea2c59f3f8d9095dc908ebcc6e56af6862afae1a8caf8828fc4aed5e4fa83693b5585400dee14b283fcfebc7997e792590982ee9695e826be2b14a3d8e2db52180548b98fddac85f3ff6b2c2c1aa008603482e9d3192aa0f80dd7ded391077a9e1e80ce6fe1492c1db8fc61b8891ac22e560d768046e9280fe59918c37c6f3745aafe2d7f96d8251bb07f807fb6a88bcb989f8a5a3dad1f3aa84bbaf3538482a1c01e8f044b786d54fa06b09ceec181233a66fddea45b84a16f42b0bc427a8d3da8accef8cb880c1ffd290b6ffada32328a9b89d2e9ec3f270b7e6530ddce899f5792ed26cca979c317e4f56ea16a9901b5d82498909376e7c0f292bbbba7e1ea23662f3932487dbb17cc97c10bb5f5c147056e5d7a0a80806a65fde547b575cf20619ce80b51fc989a219384a6d906f40964845414e7c522334974541539b64eb21d9f2abfcf7b0f620731a91cc5f4e6b5e3a397f7bf970f480c3add92bf1e91cfa4a7e5b4b4ea10f773b3f3c01eafa28130cbe1b6ef9f2d8576fbb5a993ab31c26fe97031fdba3e472587b4ac69600ff3fcc48521ff21b114e9f2beb96b6cb5a6d0fabfa3114f63ac030d90bd6c129d85fbf33271072f19c24c94428c6686c4118f07481f30db70c96ec850ea2604625108c1dfa47b50c8c7d71a2355f7105404043c76b1faef1b072d3cf58f35b3357a1794dec173cba792d34000a67f9aa12f6aa53599bb832b114f0f2a9a58fd4237fa56f8995bd4c0dbc9d63a02f480f0a481254ea283f56d783cb3b77559110647a8165317b7066d0f5407ad3b6fa70fe2da446e6a7a6b0ce5c151e32c9e1dbed9515d108adaea254b12a5916323fe5b5c856c7e3098d0d12176e895c696f581ed02bd14d6721deba9ae4e1725758ca15532573477e56e74b31e6e21f8431bc5370f206cea6343c60ef5dd69ac497e5aa64518fd03b8fedfc1531a219d8577e3a92b9b0f39628beebf97693aa82fe234ec0e296c41ada7b4f014100dc1ad9055aadbb1e902d6c1701a6b88ae81a03a3c8f868deead3f9bc9ad57743919e84fb723749360cceb7dd81f7a7e6315c39153327eb07903aeff0c7b127909abcb968b9fa4e10b3b64715c4abc90e7ed9378a9b87ce8d6252d35b4c599b3978dd21188abd6f1df228a25828cd815a7fd8173a2e2fa9481bd3a61d1d943a416e0230c4e4b221c7c90005018992daa560da287f09b32bfecba79923c215c4473bc1172e431e17c6dc1b7bd8cac163a57cc37d4a14ad2842d66b807a0a500c6947993168a446ca354b9fa6de20e5de822a8a3c0d8b63563367db0a0b33e2d9e2d46ada5d3590be8f3fac66d7006cc4ad7fc501d70275b3fff01815932eac5ef26e9da7187da5c1f1b3e2237a33c0658b80506f14d2cdec61e0f638e9c77a0d577ab0d5c3294735df22be7358eafc04ac81299b2751fa3c59530f966a791b24d6d162a7b65f6b072c8e6abb626c271afc1a6e17eae2732b698f0878453c776c2396d6d784923fd2016bbb5aa6535c5f3a668dbeddd1fad4dea9676fdea2c4e4edc843ddcc37b8c21d05e5871e4e60ee9b428b276bd0024943c39973c4e4ac62d8449475d6d493731951e33ce20ff7faf6415c87386e3beccee4f7ae16ba4aba39905ebe058bd506910d471f15fcf2e08de9e116922a5db8b7169c738718d4609076e0d6f2e7d8635caaf1c7d29bf460c50a34e10209eb15036bd694b2e07ef8ea467ecdd9813bef349f0e4613038e9642392cf9450145ca0dec008c026b004e50e00e1c4427511e1ee2a5bdc800ff0b97a9e50ff4b9960a1a5da8b36ee2d4eb54296be1cba1278f7a5bd71a0f68a8010c07e63b970195c66429c4be0174759628f5a3f2817239c6da5ba541bfc66058464f506f6c8e1266b0dcd4008cca0994c78550c00734e0a12ed8f4e7a1684d76ced1a3e76562d3f42a673a0a55a9266ddd362c2d5da92a9136dde511dec585a9a7c2e6ae206a5c83a478aec10b8c7539eb02bdc1cd836949866d2a1cf408375241ecabaf3f55f4e7f90ac745712b3c3e19ab7af8e09a5cddf5b7799e790b3159f015a18037cef6921abb3acd181a2d32b7f5438161b9f15f8c02456739888cd8250762e7a708b010ce8d5c428e12407cd86d068041340c4a48aee4d43a5624b08f8fd5f41f0e0a5d304263c2832e653b26a7941afdd0bdd37a377b6ae745c49dc8accb61ea4cc98c5b0623e7e20af6c67dae3ac1d3fb3a61db8ddc1aa4f54b169f418eda652feb8deeaaed5e9d9436d69f4bdad4f1d960fe35a6c83a61d94ac4d7b0685149ab421673b0b477587438b9811aef831cd33afba0678f065b9b5a43c960d79fd2d1200c0be958bc7f392e62a68a64779db49a6cfe8b95e1eab3beb8c9820388ffaedb7826826a7bf276ecaf8da65afbc65d22ab673af4be465a0d97f334d19fa1f99dab18403e14fc23466b074aadae1d3fbeb3210ebcb0aaa9aa0be44227ba03c7d30e79b6baf894f0d3d2daa28f7e34c0a6652c6419fed7c70952dc99ad556a4d6056d3d59f611601d4249dcff186aed72f46f4d699891e3c55bcce50f56fbd6064ed44933794e46f3fddf0c5f776a72b6d5aac10843b0db426c8aba15a82bf7eb48ad29e550965d5c304d625479cae8d39c48f3736ea859885f58706f0cf1f539e66b0403caa846e0e36162d5b30d92fbb63b974fcf9aee5fa938f36f0eebdb70b4b650ca73210e5894523b863c1f74b55485d9c6718a1b05fd0a2c26b2618cfa4704cd939ad66995b68d895eb1121b0bfd316684af0558d0efa1df9942fe84b190243ce775d44edbbaedd701e7c73bdc953e1f3864743420a46edbee7486511979624c18ea53942a5fd695bf24d2f01c1a9fdd9abd6cad127e721c8a021b971f5ee83b072455946390c3129c73c21a8a0f3c13f060875005d3adfb2fe2bd1f139f907046b81fa9bd9868423610526ccb2075a055dc4fb38e5b93d2e28e8f5825f52eacd71aa9303e8f9b7aae4a00546938602b197b825eba37df7e7713fd803036f0c89e68bc5ee6bc7678912afba36425ec43014c254b3e21b9897e89ce072ff0f5fa34e519e301e16c80fd11cf5f3960232138a2032f6737901420a73d05e01c45d1b8a7a2595302ea94903ed7ddfd62ef378cc59294143af41da48e7c4feccb49bbbf12d516077486604f628960d8ff3b51bc2d125085fab0c5cfe9f2374b3236349c2b8d4ec5b242859b6d5abf18412de951d0ec6bade9442d8f7fe5902a16d676ac6ff6dc2ef4e2912cd24f6e3faf2e9a8b4f2a642cc1905233b140eae1b9016016ae17a8a117fb15f2bdb2a3ff105bd2cf90066b291175a636fec02008f616213bdd6c5e04d1fcdfb8e7aad1aa83fe1eb6ee7e0567dd81afa43c23ad1f75417a955ec2211057cdea5ee13a8dc46eee355fe0727469561bea5f7064cd5adc64d763cfccaa8fbb656dbaab305b6acc45ee84f1bb67279d8c7b832c926499fddb7455dcec46447928e6ac44151cfa76efa4226706618ba265602d53582e0bb0bae1f367fc844430ff9749660639f8900157b3440a4c8ed7bd72c1bc4ec014d86e4519a2241f87b2e0b14adef7ccc9b59bf149a4027812f9968b13dcd7748d5180d5625bf1bead48699f919577b722fd5f48c7ac9659bbd2d43fec22b8eb97daf99fe5d3f8e9cee61f8e4db029e0dbf5c8e874e2771cf598257f34ccc2abef306a150590218d972d8d8c544716575d3cce89111385e63277dabd10cf79219dbe98c6b7ef35152ebd4ba518faba37f000d8719a047fe59c35cd8213b21df9d8361b2df95f4509935980ea047d1ba6aa90053c016c3dc92445bd39adcd74e931833248ca5bfd4fefa5adc29226d8cfbdb421ee8a47113df0e7bc6f9ed06a69a27017ce3cec67f88258f8fd89b86a3e88de5019e40404c12f8bca66fa2210c5665d349e7618c000f2b62367f3d9c26268a0aee1fd3d171000eb5a2059ac34b78b5b1f0558f33ed3acec2515edd6a71c0a2dfcc6e06677b59cc6528687418a4e374da22eff3e7da52df5b8d8e02c42ee1d1d9434a39fc31e012a2ed5a80e231dd6fee2232a6715fa4d4d35d527d704216d2fb8312bcc6b22c14c06ed65ec6ed15182e6f687cfb2b08ed5864ec0b18b7d5e42a422cc7123de9bd3c2d1dc04891fd6879d4f0e3757332c3a977891a4a7096e6415976dd02d6f4fb8dfa6ac09613ef088dd1f79ab26fb9c760618fe6e8cad4a6cb95e899f76db465b8ffbf8de123d1c6c7eb58ccdb3694f00dc514eca50e30e3cce85fbb575ddbef01fe0302a4b83781eb0dd6dd7ee444d49dd87b1693ce1962620ca9d903380839ad353f2c4207699774bddeeaf1591f924e2dbfb6c7364b0b5705a3fa3443ca5be30612c27b220d525bb43f352a7fd279b56d64cde12fbf22f763a6e2f5ba973c326615513f1fff494ccd731a971e92ff4166aa54f0a0d85a65f00ce9bcdba19a00421a2b40bf1365dc1201b97a330b6e2511ccb9f0f002b85de8f18b1de8f6cb08d4c2736295aaab869bf0ef6fe586532728ecdd234d5d4d7676ed8655fcc72f5f28d66910c8f9543f7f4c5d58a519605d0b31e0c3b077e4ae343c77e469ff5bb29041d3bbcc4c7634ff2f0f10b2f36e1691df80875419432c6facc341b95f8eced210fdebbaf91d4bacf1dc9eb5298dfb327bce54e13ac6e268665fb1c1e2dbc6493d0b61bd01489036692607aafbdcdab895aa9e38d305ddd6484759bb5b7ac0874163acde4efda73ffeef1c8613ca685c23615c758b8dfe332da44380d2c25367b7bf21af7ff845475322e22f7c91e01c631b1bee73ae3135d3f0bdb8be955bf4640c0b2f3ca4da0a237e8377bdb9cbe4a0b49f267e527559c5d90086cfc6258d96e223d2400532fab876d9bb6d579397ab9080a44f30c06d896d0ccb4ef46a0821c353f3196d10f8765e0f470ee2096aa49e623ca07629436429f6645054de098153269db44f071e0677c2686dd565e27a1f50ef73616e93bd3dd32cd38d761e3f7c705f98ae51080ca1258c15ad906d7da4a8bc925320acda805c0e116b7b993762da5d07778cda1c893f5eea0f4d041db77ec7fbd478f5f0b030fd4a3dceb98b05fc1e3bd83e4948e7ab86e20ada3ac24942d493c77ef54d66e8e01628f15fd98517fd5f0a20e02b2d811339b8a27ba086accc95b2223baabefb39b7a91b4fb8bfaeb2551a40add78e2bd4c5d3ecfd433c32d796f6aea6d6213082d0a15a7103926bf477bb32b6f9ac675d7ea36659b5c854c72cfceb5112e5479700e972dff9ce4fabcdd90739ce177a276f7588a57155f276b47197f9a89e678925342e3f1af2396437a8c1c6c43a41fe08218420336bb9094dc24cd7aa55ed8c347e5f9e38b43ef8dc1ef92059362fc284c8f5e439e4065746d89527723b8e4f87395af5b1fba674aaaa20120d8ab60f348ed3c0fcf0abcdf25601d7c25e7666dda747d4412fe7500a76738e5e44ad0d7163e9bb000b9bed2d293da600abf21b09b72570f5031ed508a396fa93462a85c0514c93d816483a03dcf6cbcca8e979850b8b265871c5dcbca8ec4f696f3388c842da1bc10b3e4a162f1b15794ddfec96e6f87af5bfc2c242bbda7c78461d1c4f187f9ab5e7728c8cbf0c08e09d459cb2079917805fe96dc45d14e6f425b7787581de6e3760a51c90413dd1d8a66783de409f0ff096ddaf79014ee11fb39d4e1c0d03e5b7f04ee320ace75bb6896ffaef1c79f1761ab544a779a96daabcf53b298e100e7981b7fe98edbd3059f0b1e8de6f748de515d9972dca47de04a0fe4eba80c62e1ea0e9015d6dc501d3116d2d6e5511d74952d7c5a20861894d2fc7e6663d99bcecfeeea75bb5b6d733b69b3488958615e5a117b97a6aba66eee9f47b7fb9a22eb6428a5104edc83db973886e50b3383b0b1b4cae2358fde38f1f9fa31759fea9cb7aaa3e69fe7bfb301200814f47f32826bd964b77e9044599193affa71b7ce60ef986a801db0849cb89f36a180d7ddba2f2eef7085d1d8211f46f741dd036ef62a8758c77b4dc7c56c62b78393bb77b98ef728578d6550d812a80c9e8199d632c060059a43fc25a06e121d951f950d9d7f9c798d05570a076bb66bc1a055d3b557f39b27d0275e9f887c1ddf7dcec15d9c4fae053bb2ea482fc74f8cb8b0b0e348f5eb76111c66fac7b168ece8d0c94aee0172621e374f63290f487029cd76ed2340b414b9bebb99e4aa153ce112b6ee299ea9e434fdc855aed5afc5d75aaa712ec15edd2d73ca4a7a0dd3c2dce45a1a507607cb9369a80217e64ed8e6a0722583c85c275ea4027cae7bbae966a9220d9dca890a35ef0808c550ac412f7489233c8b567f3cec5d4c2dcfc669423cd28ac27e155e8d08e717d3bab76d1653617e0988eee63ca8bf0499b3c22cef233e06335ee5f6a0f5e396647643c2f4a73091e33d8bcc5d9083c1d3464b70a221150df5637d8dcf94c7f8157a3a951aa030c522ba4c77d46ef1330d060441eec9f464b9080fe2feeb43dfa64120b5f840ed1c4f381fdff706c6a4016fe5d45d59aaf0a06100a8108b859f92af00aa2287c495891e4995d26621e7e258d3bf9a0720ce688f2899d1a7ed3c1cff99c03f5d2c0eef1654605df5df0f6a17773365241bbc79e5dfc39a0e69c8fd916705ed0a097247e47d058cd52c30f43559fd8789563a55fa5de1d4c9f6c2e91f169e5a82541366788dca3262294cc3e1361995b0a6d434ef62a1410198f8910aabca0f75ffde2c502c98a5daf6c071264779dbbfb134cb8324fc2070ccf96db431acdee73670a5b4afac758e6d1bebf5cdb6cf34c398c0119c95631b9799347e74437995926b681e1ae5691a2ede95ef0d2c6cff9a6797091fb9505447eec1033ce42086f26315554f78bb3f27a10258ec50832d785c7328a75a445c60188c8a2993565cbc25e89b59a5d60c9b64653cb6d1c83a727998c183925c5a8a501658335254756734db4801b02aae210851f073a07a6c9fe64631a199f2a463280850da3ef6fba9bfcdcaa8b711612768a4cc59f3ae913d9f0b95857339e134762357e1aecf7e8ffa76a47210f267faf9ef762b4503359291521111757804e4d2a48bc330f02932e8dba4123bd0f2212ce0fb39d0c1faa3c0703ce24de114c74f6663e917317cc50165a9bc80792742ac80b175b4da5b83acd32b1b7b7cdaf732bf926dc62fe9e2c22495dfec78311dd09535f3b243cf84ca0042957b2e5ca0539566d347d8a3e86c7017b4f42a1347a6a67bfa29065e781e7a345066539096f4642ec0c8d4f34f7a2ee72d982139a4190040358cd11a5a9cbc7c96ee98992955bfb3d3940881170360aa261f4d28bf4c79f029cc0b3a9cff5082bc97cb90ab62dafd6e6a3c62b0e03acbdb17b19d04ae5bc6caab5e7c08bfa183929a9264446dd8fef93c6cd7299b2984361b37d7a134a04a88e96d75ca757adc86e3228e5a24dd77431dd56e5e20c4129ddd5cb4e4301298925408204838e83009f956d5c36504bc8edf63bdb1a50b272a1ecd1ccf9982f6cbc578a4ed1e7870dfecb92b978a411103464bfc168facb675d8b438559f8a06254bf2e22fd7360500d1d554efb0e7fd35d551acd63c8f8188dcbc3a85047684168885192f1f336da1705f391f6526c50ce286a3c98f5c2150fcea6d03a989e9bf005ebf3857cf6e29374abb0b79e9b1626a0d3d2555d6156b8eaa94f79e4275fc3a8fe6488148c02a5549b887ca94af55841b2e7a22b8e372351983a6e0acf97de25c3634bf9d17e02b57710c5f47e695f9dd7cdc9c1d555b9daf8e425bcd7cccc12660b8657349a49d07300b2c315806abde99bdf5302b5baaae70a8d377ac112556146876fa8e4d7dbcb33356d9f67aea7f85699193398d6c904db5998497ab098c93871d18df01bf16aa6383811e9b5d637e906a20e1bd859a25e779e917113e0d9e1c14c3a0cfb2005bb440d4615392ec308c9dd230dcd4f855f96cfc569460e5ca1de5a679c90fb6454c5b3c8ededf589b97c0fcdfa5ff3d24d9a0f7eafbbebcffdc05871b8bf2dcb0b75f9645b19b37afbd3a9c633646ff06751383048dafdd0db8312efe320008f35bc0ad115e3c6f56b33188659132ec81ff6346a7755de4c813e4afa8501c77bd3cfb71953b1ca0774ce22626582d4055af68bd70f5725d94c92c18770833d67d10ed0cde0be52ff5c57c6b9c7a5211a90ba48c49a393c00c874830987210c1d9a8f81d74fcc23a002084b4807d67720ac4bf8816db5d245f4d7199c4140060305bf8b841f412998cc6356a26e5050ad37cba992d118ca140074159eb770715bba3fa96578198ceaf8109adf4d4093f7bbc5888511acd36ad7861681e92f76a897ec3117adb52e382e2976fd800ef2ed3f2c241e1f7425fa525f594abf1e8e02f5cbdd022840d526d8212b91e3a93e790b96dcb64544a25d2660f165f301b401fd85888cd9a0bffad22f8aff3b06958969ca1dad8cff18bc46b332adfc5ed15e44cf27d589f1b5d733715d869fb8b993d286ce116864ffdd37577f5636daaeb10d51ea13676b234dc3012b0108ae21e16b0122cb94e9607229f097f89be6d96a43529ddc980d03c1469850c80bf5f2d093fa20913bffb9a891c5668432e39735b2d7b1a2f6aa66c8fc7eb0a32c4c9aea7268514e9aa2bf5cfdcadb51011afca2b7ce8e8664528762b2ee8daced183c726a9d7b17fb7730944eebe718954a8fe442d45ffa12e3b6cc3ff97dac8d24f8d3c901ad41fca91902e3b85864360f819e4ed764a59f3fb382bfeb4542520ff6fd7a81c909ac61cb7567c303ecdedf3a5bb8cf58cd771444669e6bdff9f586094643086ff6bd3581aac8cc1fe3c8e75007c5d0bab9f3dc4fc3aef0e728b222c94b858ecb2777e1b71ba31c22c038da8023d563623e0ca05e85eacd25242c329ebd705e851e8628f7bbbb8dee8bda94daaf2e2a8ec97124f087300f5df01cb4b445f3dbe9394b384394ee4445fac801aeab04a5f7f657dab5e79f93e327e2c6ca38f611b2cc731166e3250d74ef76eacc61391869d6547dc2b468961aec8a63518db2aa8ca6d515bd49e4c6183f9f43b79d573ecfea603b56770fcc95d90b9ffbfb7de4608768c88f6485edcf7afd45f973902f83a578aa51c17e9078d04f68d384859e80928eb7c7d0890c978eb395ab07579dad2275e491be035230bc469052b5404a49beab950da87592eb927dbd96cdf08b7479d8284c7c5a87dc5cc7f9985e3222b23a46ddbdde9c79b90a714c59ab54c72bb16420d05059f23aa7d73dfb5fb0fcffc38d3c100d9839f31b2f01643fc32db054c8bc9e9f1273a09dbfd6a28e156a2a197cb1791d5e0af64cbd6b8eb7128a40bc8276780c0247f6bc6f980d05a8c8c1dbb318c86e1bca816e6ed3df9e44584c26573bbd74ff35157d8dc38972e9475dffeb76eb2f743bf989bb338c3799c89978742e46bbc7ab9c1fcd18aedf23a8a37b4a4ebd45732568b00bfe7263c0538649391bef3efd5e4f2eb62a37f5775aeffa900d4d0153140836f692ba361213ba72974f1a60316819d7510f534f30b9c2809a167f51213331ffbf2a52fd76e4d246374109adb2390bb1add94b38c3918f72a5a70673a215a9b7817be1a8856ab825ed854c57b1f192f4e4d4bb357be8b9a5ab225e21baaa556a62d3d47619977e737a0624fd20ad8f69a07328b38cdb0c874f45d885a2e41731b1341495bbf31a11eee79f533d839ccb15072a528e9eeb360a3cd636c38443b3e4a0f0c1ffcdd89628daf7022a12199ecb219b25aa67309982678fc64ae979308136dcb7ff94296b93d4dc08a3d69509fb84a47e87331c336ae9e674d34d210484318ee17fa1706850d89ce29cc851339c5c6d845055be5d11814481a8190d67b1bc0a218567dd5e3ea30e549d687824e94077699cc2cdd4b378dd75f545c9601548203ebe4e61cf1b4e21241ff206a79359f2f578d424de195b0b31c31843102733e347a1212af053cc04bf690d842e7e019de005d2010fcac6428b3ebcc40b4c9725a020f484c6110fa9b051d4e6b2ca4bdedfb9e2af4bc7478acfd1974ce3bb01c21c3d5ca6c0698a4d61be62872ce63163789986a7a964b2b7f0fc50868bf97a743dd382b969883355ab0bb6d363ec0001e704a952732662fca05f86853b2b6fb9e2976496f9b32e16cd9f391c52398cb864b44eb2164ce53abadb8bff6c233cce7db0bfe1a470af1e2e3353041039034d5847dd5e53e2dbe5aa9b44a7b733551991218355a3c5851da52e737324398427bbb70658e5f6a5fa7c39ae0305bb170a0bd55bda862672315c185a70b22f79c0cb5075895b11934e8a2cef7cd13f92de2d9216dca9d8ae42247275a1da76b95117c7085fd8c8ad231663640687c6da1ca526ffbacca0e127865902012961cd9552090ba9ec35f5cecb5326216b8dfb879d25fc623417ee8f4956e1508c9dfbca3f9cc9a2c2fa2f1c65998c0fedc1ea02990966ad2e4d2cf10b41c8b962330ea9bad02b6a4d591597255e247528bfd2ba94826aa2d022dd74d9b18b3ec32b004481cb0474c96c1be0495f44f1b629cd7216892a9b3e5eda07a764030fc8449038ac6b9f042b8bd654b74077e34d5eec2aafa1dd4d5f4255a5be4e2ffcdd3e2e0967d1235e62c1b7291b3740084fff98a8af0ac494d28bde0baba2b5382ffea27ccc398fe650a8a5ae204494f503f01d4e0bc20f23313c881eabb2e1e76fa5d6af6aec6676f1b376d56ea67919e3dbe1d5f07b1ed07cd09f93c65ab87ea9a9cb883223e99d91024e8426b7bf9e5c20557c6ca1452c83c2a608cc0cb68f511ef16602d1faa5068e9adf034c4128dc95ca5d48fdb3381a6b0abeefb4f9cdbe13d4cf27af9aa63361caaf111c7b73dbacf521217b37c9b9fb78469e00b4478ebf7b8422e67f67c090874b8d3da6d2e8ee8dd7f30d16e7237b338649e0957ece9fe0bb37655de22fd5146ec423b7d2f5585d179b5817fa43efb9041fa567df7dd78d002dffe91142abfd00a2d7e455d4d89c1dd342e1588f3c28122405760a218a595f2409fe8a5712aa7005c80ac52cf1c032b901560a5da9ed2b9a71a01285e03934d4e10de9f861db8fc264fac3fb8d10333a1f4db1cfac364222164e85e3840b5728a0cea1885edb12d3dee197cff617b636cfe672ea4aaab86430c931e0aaa05f843c38431889505eca878039aa08ece41f6d4a2276b85ebec901f07992d99ada140e6781997628e21ecc6d17029f1cf36f52740c58a20386b6d4604405652ce4df7ae303e314111062a081bb57a59afa4aa9044c2dd7b90017014c961c1d5185aef44fb8e2cdcab91fcb7f735f526745e08e03fa2c6b30b115351420749ff5d9d62a5f5c29c1730b435b081c6176a191f145d144fab98b994a43e707984a93f269470bcfd32dc84cd0a95fbe01690152152db965c8ac134c8fd53d12cecaf12cc451d151b5af194a7aaae9e7cf04872e7115de8d548a4f548adff57df2f1978bba7ed1d48b08b24c1e8d829ba5cd66845e51be715c966306dbf3a3fd530a9399e7ec3329b71ec605d80d5951de48dcd617c7e83ddf699f768fb8dacfcbadbb72d6a0857a7098a30a52a8ade94e5425a5392a058e994d72543bad6a17f1e29590c0227a04a9e444d398f24e617b6eac9ca7d7453278c90a08e7c83f6960a0450d2e7cef5b16dee39f3a4a8d0373ef6110158e796daa49ff077688c83429f595a8c7efde3ffd46941805389914da738efd655600734306683c8ec9686d2b3a9a28e405086cc2cc9d929cfaa26b390d14aa56d96dbeaa2ddf1ec82a7602b1baf6393f0992c2b440f9fb6d9e41be894877110d66ca9ac6abab22ee8ba0e7e5421eaf8b5106e0f4ce605b35e20426fc436f14edb1f144bbae1dc04f73fb53cbaaeae05f10fb77b23b8a477f7ff3f7d7f37bcedf05974397916096ea19101ec1b19b38e14244ad214ff1bf7663d7898249a5f6937bf02392f8349aa22ee022bc79daf4b512ab6a3791a2553854b45661b6f808fadbe122fabfb4cbbe96338835ddaa237e3b7a5710df9cbb9191bbed9425cfccf21e9acac242eaeda35c1b61d1933ec5ed029b144f9ebb6cec625586a8a510c3f83725b34e7dde7d0a095bc4f004124836616ca81b0fb1569e7ca68a5a1d36f416d562180daf3e528b6a8cee79a3a1bc486cc152853d45f3cdf9098e982d97f400f54a9a4e75cb1da171059323a4286e4ede6b28af4d59734ee7368a45f1511bcd18a42808538e0daf354027ea2c813de0ce42c070d0239fa560d8233953c9fad9b11bb10473593d3914c6b27c553c1d69fa892de9f7df6f150b363ba113b00e62ee323102cd53f6bf3c026546f6686def0c7648c43796924e3ba08eaee7a7b0986935891f523dd270b94dd32305a9575d362337eb50b6c8f281781a18872af4723d583967c7884420ece9bd60a5223497f69ba98414c39abde3e351c77ae6a4d46c31ae01a226d588ba16b8a72bb95b5f3074a3a45736dd270433be834b4226028c4ed8f7016b758ae475e91fd5f3fa6a01a4fac0d3fd0c88bcd1b3eb63f1641c083767c28201397af3b7c41c985dcc037c35f7190c5ec2f63de4898e227c3e182f7cf3ad5241532989353b64664d9439faa0057ceab3808cf2d4faa7f4c77a0845df6f71050328ae1276d3d9d34728eaa15e30710c8078c6c6630b6c889e542dd9e206f1391dd455d8f5eaeb429ab4dd8c2bfbd2f4fb5fbe60d5f613e812199330fd5ba0df7781f9eed1f0683a2d9efc86776be621b25df3fa293fe400cc67bbc7c7a73615cbec09eeb1e5afa54c978940206b0e08a89948e99de69339c621d0eb4d07c4044f945dc38838c3d64398db3e6315a97de3932bf022054b883c2d6f670125c75f4a6a36fc0e32f1582af793cca1ffc695103deb691b0966d101090631a3148b945b87e46f40db0fab1319f516474590b3238081b1e727a2c2448ef990897dfa8973e56f2e4f8ef3e1f35a0c47e424628a71f5b3b62b663c60f033dbfbc13d217bce45668441b1655b56aeb29da64c246a6e670198022e82fb314acffdc1ec169b68b9ae0d7c2c0d3008b226c15defdea5cbe188548d29dc21cb12394c2ee330547465d9212f3e32739d6238de3725a9a131f90204f90ea3aedfe152ccbcdb0bd1b2a595116762f543fef6eeae0fbc6f082d29937902fda1c830172daf012612c1328abe8654f4b4d920ff8b918cddf012d6a47b791140d2784e23d010434cbcc5e31830a949d04cf10ae2b23164b0f5a17aad8a785e1dc861aa8652d8e3c8cc084d97d6eb993772beb2796a917afe85b0fa8d0e6c923f6e40abdb371cd88db13bc5aefbb87b48a5475d59e656b59d516e6821215eab840d9a0cc9944ca63555a11d75ea6a2eeb170671906ff47e59b1bc23567d7575cea0c2cb4d20e4b7665dd43c1b70b8e8e2eb704b5131dec40480319f63dca3ffa788fb849c7bd52ade8116c94a1e0022b8b394619848c7be74802d1ee80890a89f05991478dc6c3ef98d9ae994faf7032d76cff656ca8044a3f41dec85401ea78da6853aed532bc55c2bc98ae67329689c16fdaf185e62ee9082e7a3d5a9d65f80b44abe89ee36a547ce208b6e8d8a38938729ed89518958ebf96badda1ccda2db573c124bd697c46ae4f085499848f8124313b3b7030e7cdabcca177c4fd7254aa3a85c8b885e8faa9b0a0177c8d00c07d5c1e7cbf33b0c475fd9ed0b862149a69fabb0fbb4b52557533c8c4b03e93457f516d01ba9b9a734927a3d8f471f1a05b8934dfb8f01213fd85430253f7c9a1ec205caabeb183f25f094a397dbd56379feb12e55f229a3fb61ab9aa03e9f17dab101ccf7697d6ed9737be5e7ac1889902689fb6e791b6130104c3e217e655902be24f890ec04bd8d2bf25102fafdd108a9e7404037249fd0a1f8f20144ef69dfdc7c755382710717f567e856cde18f337fa2bb54a4907b7b2784bde4837d0c622fa2292b8aa40bcf5216728f8729534dee13e523e9337e06ba72c6a267a55db29724ddb1649af8d2d95cea4230fbb1685ab341ce8112e6058e861dfad3a227d2d68c56a8a0146a51d544c1840bc02e719ec91e35ce1b3faf5791e2a2304503faba42b0820026ed94a08d085e05e9336bc62e9d2c08b21dd582dfcaca0049544c5133190996248339647f29f8c66689403b91463be67518d7ee83dae0e0e9a0577a81917fa3bc93dd693ab12dbd2ddab0092a748a07f88c5b40e4e67e18f8b3650fd5253c122f9b48f96026e14610d2d37f4e629560cb7e6a9819527cef141aed24e678e65f5584bbcd10517a7d7cc3c66a594a777267085c01da466a62044aaaab40d619f82445a5c0c38d57c9a73f7a93f430db5b8277bd01296d4efdc6abed348169962a54133b511723f11ede1a0e59db89949039c0844699983112f9c9a836e3ce5134efbc91a388b6e4e0afba0616ea0cd349191d9a8b863b469f122f2d332e6becdb76b96f760304faef82b01cbcef1d2238c2034a5bc4fdcbb017de03dab7e18df364fa3ebf831c5b8c5cd687a061a65ddf69a00e9d0d78bf20bff53a2722f0655542a0a976e97192dc63603db6a6d84c94c19014627c7cce556cb7731cbb116f980cd37bb2e77986dc194626b814b44a38b2b1dd00936b33a1d601552746698f212ca01c1ec2dde10a486bb27d2042ff016ac787a8c96b4632d776aa198e5c8eec25610b309db3c6215bcf824eabe3cc8512ca2bbf89d93d03354616838024892bc93558fe0fc0a2ae7fa9df93b293813e67a93b05d465ad9a93b170e6840ea24212615a93cf98556196f6eb8abec848636b866c633e725eb47d761459b6305bf5863ab434160e3d919f1a9739c4a5871405438d140ec1c03924201743af7425d0a4fdaf5107664ce1c06fc23bd25212305ac078883d16fc40c8f9b06b91610d5e80ac5c7754330b4fe3a18dbdf3c38ffac35a856e77100e6cf1253e5febb26e3af8fded3a8654b7b09d1216f3a43d1a183b88800f96df69f4d2ea655cf7b273768f97cc734019a25dd111f38e5914bcf3eab18562dbb1370243b59ee1635e0d5770263d7480d01685234ae76bd1eebed43d169d2632c1fba8364d4063b42fb9cc1af97aca30b3e17626537f1edee0aabc91a731000028ce02ec0dfa2fe5f296ecf38e90c55392b310643e39eed07569d7e1db1d6757efe88f5933b2786312f982e10e212f8b48bec449f479bb70e2d410eeea07f870cd10b924a08cb9dcea0b48549aa0a12f39c1be37ff33935ccad05642a5364d00bef525c008d6d34838f1b177fd41a18d914605c74a91398f3ed2c2dc043783a42bb8b0bfa1f96c710df05c1abe8496c7d4d103de78602660190c320ae1679cb1f86d2e400fff98b068f32dd1eb512cc46ffccd0dcb89fd68e0eb0f3c46f7b6119468c2f374376b45ef7b5464523e0230e985593430f07cd4bc9bc999ce18474b0e6f0346e10824c6ee216fa0143b59ccfc3077726b013e91f928cc1c00976fb7acbe52dda72a491b15309c12e43607e20f7df1eab3417954b3265790f0ad5fa9a755d8c55b899f557b4c67f4084347dec3a48a4d59b85c715fbd7dbe980c1542dad978d23e40df9aaef41b2326ac0e4ac475f279bb25d3104db55c3cb15578dd332df3910494f87ff8768925e9a497a46d9215518ece67d8165fd3400d8882783ca01ab8719fec67bf71e8a8bf1e5bb660ac150d71b1f5bdeefa35bb6d56d445f599fc8e6801f0482b4679741574aafef4f4555fd102bbb42125660ffee3b6ada415d03fecdf5794b867e7844cf26305eaec80ee3ce9e0687f130b0d3ed74cd7604af07e33dbe44a7c35fa337f2f40cf6aa595fd0165ef4e1b52bda4615bcee3891cd2e59a0ca32ce7f41684bac9b7bf0524e7ac2a7a8eab81084bd6bc9904ff97a6c283976ac37b4b0313b57b0db590fda92888a79497a3fa83b52017fa14f5fa7ca3818750819635269aa47e7e5cb051b17672b634e7efa56fb33cb9cd99d3e271b5b08ec3ea936b11a4c462646d13dd06641efdd75d58a3fede4fa77d971aebc5b4f911a962d0c9d95214e6b8927bc77439296506f166b6c8e3c20367377ec3409d7e74339903f9fe94c0e162cb3ff2d88fc8b54a0d57e00031af2b91201390a15b966292759d09a9245b1710de9b2f0b8b4ba2a16315ec0e3ecc23272dab5b52cc434ec9c8bd79069c687345d42b0a78510911e0f0a23f6064fcfd3035a3086b4b4d1c3929dbe546c71e8d170e9bcd26506135288ca942ebbe65d0486834858c5bca9d93cde5e02f3dbff9c7e73a4901aad982da2c1081e8e9f030e1b308e98317d2e3995114af6364e3b5424a450b8fa070abce185360fa97fbda6c19d456440e817ea2d6fac481acd4e6bbd449b78acdeb9bf55db8f132da319252b0832186ca3dadd73c49921ce00da268bd39776cfc323efe555cec0be0ea279ac5e1569f378648bbe054bc177a1e5024e8f2de9ce6d41cc48a8d851df480bc4b6ce635e73f911729f6385312109853374010ed800e8d8affdbe08801f3a284017969ecb6f6cc81319ef18ab0ef7e1f2b18d9724e5a19daf92d0225912dee0b5b7b62ea627b5d3ac35a88c5313bd857a8d5f2f71c2d2b4a98f8b5d1238f0a33d05d54f1780d9ea72039b01604411162bd485908009e623f8ec8741661db38338d0d5ab81a15c8dfb0ed0c6830c23cfd12049204ae36ffc68b2513f282ac188dbcf08584f899c725a4aed435adec34872fb1ae970b7e6e94f369b54076ccbcf7924640fb95ab5c6e0babb8b0c33f6a1bbea4244e6fe7e28e0361c636930b860cbe81e54b06b3fa787886f21fa8dc95c4df1bfb5c286261519b8417dcf471f7e4a621d8a85ca6d49d158fa05ee840f3e9605fe41bc9f22326c8a66a126f00c8caf3eeba6537cd9cc1d536ef709869cdb5e12d814e237036073341b89b1307ecb6d50f69f74031ba384700923c3f2677a7920f8af9dbe27db05dcda7786913e6e54b7fe6b4c17da7b03474f50ee4edcdd5318f610477aee6163dd9933e6dd4017b1695123ec45c7c037400420e523f874458656451e2a4532b6f246f9b349e04e643d6e74c7f5b94608e76fb78ab488b69dbe48facc7cefbad5fb601d0a65c32bcd680f43c5d7f31c84f7a2afd3b438506339945b51b4936ee5e7cc7d5b48d6586ffc2cfe4520879296235e8626f279fe451b0966e27809d6d2ff4c47d6df00cf33337e54c4d2ca413755f6e520d87f089258896d610f57db285da174394b841a7bd82c951e3e908858fef343916e6aefa859dd42790b124a847ea72b3abdbd642572012f839842e04ebf23a4478b39ce6c0decb6124c12c790c572e5be0298130c4fb6f659c98f147e1aa78fcd3d301c007cf4a9d5957b0148501c4bd3bf123ba1090f37ab538024f4b1b1b188ee116ba15d20feaf85cb7e4e6ea18e4d6ba90d4072b8c6f6e303c763e652bda3cc5820b11fa8362b75aa08e5eb5ba7a43f784a862417282beae833f7bb395dea717e3782acc435636ff854a9d957f3e906498c85042e488ea66de3100fa45dd52eab7d70286e4d9937bf0522b16331d85a499d02a1f60d06d0fc3d6fafea0500f0ae91fb95a01b2cc99b6eb96fbe22cee07930a61b9216ae21db9b4372be71b1041762764afb678582d5a58fc2c7cbdd447f518d2b76b0687a82c6f7146d91508824e004bdf5de08e133baf60e59c2613ace7becf38f5cf1ccf57cb412ece0f4a02da32bcee6870631ddbea76c2d2cf4c1bed89eeb794a489d5aea0dc2d54ce8566456489a2f12d936a4ce67d4604cf7994a329e90fef78a42657b01209687a18f335120e466bbbba827f644513e18910f5af0f7d321a3ae45d6983d5941cc1f30196033d60334e9f3a0a09480baadc76c262921b0c34511ca010e6aa9d9a893db6fd5b714e1de786ae5e7bfd4c29de01a326619c9c839e2f6f7886453bf94dacfe7b8faefc8bb46435e813a42a644377f50e00f491bc504c66b632ebf1d76aadf4c31c66fcfbc2a535e5cdd6cacebc117152e7ca4c92d601b9851ca8688227073e48667f88a229504adce2585869b0c6cb0e766d6c964432769a1d25dd9ac2e761a708d54d7ff06b38967640de87ad11e8411fa81521c6070fb214fb68193e901d38a01f9c0448f1d4966f3412aae6bdfa0909d7cb7c6cc4f9874d10c95e44ac50ccf4d69b1c38ecdff153757902ffcc562e7f8ba4760fced15b9496ad3cef97df9b64b625f844735eb2bb2a84a81e7c00aa8a35d20243a2f8c2bfa00eb7e09354cc04db04c6dc06361d308756787e54bbed2520beb1a8ee876736cafea169b5b8749b4dbc3b74c8a516002be525280566b6d2768e386008dba092d171a425309ae29690e137e74134daf0ee81f760bb7d9e1b86374abdb95e393a23bb47adc3738ec9cad57e0fd106996e63260a41250030f0df5cbf02d9b1f59c6a455c7aeab5348c0d462e7cc9b27c7b05e2a39e2823fa6b21271f1e151fe27369cfb317347530efc8a881301367fd45e05701156c3b975ab43db732799bb52790d5bedafff8dc3da4598bbd4027852ab0937e80a71e2ed8ebb0e4ab7a985377133ca687072cd41a9ff6b1f206811bc2b689e165e59ea649ccd869e2a8aa0c40f903404f8bcdc094bdbdd9ffaca15b23f00ebf167cdf664a19ccc0fdc4bc444f4e4fbdcf4a9718f533077e7dec624798345717f40163ff8c2d33bd57539aad3a8d53f1c07832cc4a528dd62abb5032fbacfb875253b839f17796e5334bbaba18f01e6e4c7db9bd2635d0d533fcd8d9db4f5f3808fdc92ed3d08fa02c8e940181281260e875d6fab4316062b2dfeb2ebf0da4a729469c0aaa5189423a854f9b316e46e46439db3d1170c46c0678b08fd48be942b7483af6411517f8357bd5add58f20e873efbd2f2a4865234caf5d67f9872eca75ccb27d3230c2f211bd9cecdfa34f3cc8fff50786245acbbf1590c73385eec91c55087da7122b5f908c2325f853f31795a1671408845d209cdb22f8cd6d388b03f7851c6304b6299ed17a0ecf9a2b649221a3282a4323c81b0a68ae00c1d46128b74d4f4d69445846b49f556e6ef81352629251bee802d1354440d186156d784f28b64c0f1e945a4e73dd1a49828f7647e0e8faee21b382e6bc9e0f5337e83265c260f2c969cc9cdf59fe1cda523d1a0d60f8dea63168ff6ec3dc93a8771fcc5a795bd6d49069ff85b3b6cb668557138ca95ee8b76073e6b5098614151a9c793e35b4a8d9e24540d191e948cb33c604cd444a3e381c1a94fb0def426f6ff76ac8e561d446333ebc99359c05ed93f6abaf33b79a5fa7f2605d68028a6b761d37c5ab86301bd6d9ba0f0b41066ba62c8fe1d2b4d6efc3c6fd4c88247d26e2ac7db157469e5168aa1986a78630c1238abfc695d3a7daf36685dc1c7c208bcd4a3246e70d459a8d6708075b48056f1bf85677602c814a00c791661b54d709c6c564e7f5c77f5198aedff3ffce84373802d5f049c79a423c8a01f3ccdd2d82faa1c14282139abb9dbbc8cf92f796821fffa4ee05a93f2e2667692946050e88e621fedbda7085e1f61070732dda9f6565987f8ead4f2795428e89220163838e84ec0c02186e6d9fce0649d9df3dfc164670b92b12cd9d122cad120907947b0114b7d9a6fbd13615572bf861d2b5a432a7b58010904cf1c9fa6be5383b9cc9a63c6ea592db3e17a0533660b073ea927b41c11c07a8af1e66dc8de430632a797dfcc3e361b7d8f316556b38bc0258abfbf4fba3562dba50c35447cd518cb34d42f7d37a04cbda394cfc7e1c8c418cd4a7f55f8c07e45a17da955f93e4429105cd85b8ccad98e6c0eaa7587fabd037059b4f5aa54e68e8a93371c4745a16154d8085ca56a6eed19ad6cb7f72d3b80be8478d88f33ea6dbee4dac5c298b192e52fd8067ecb97606632e521c682438eb0c831c1b2b0c2b15beff00e7b35ddd312df772b26c533f5a4e26f0fbe271a63258bcd97b2ae523f1facaefb2e9354eb42334a45a5a6ac17108ab3439c1810cf84be643120ab83226d49fb3bee39f488dd73c3ab841f6ddefbed3e690b5f009f6dc6324c265f3ecb56d4b32e101ad99dc82b611ed86e40fcfde43a04794e7c1a487c093436aadc032afbeea2fca22b4b459a362f9ba51fc48766328eafceb2930d1f468b89bf8aacf2d1c99eb8e8374e10b57e7a02aad050cc79e1a8262dc380274cca54d0ab6b14bc9ddcb2787cc0df8333d58a2fa0dd16597b468b5181da24cb59e738ba479cd42d416bd158b354062002dec6cddc013a63f4133df166154fc516d438aaa8c6ded50754e724d05cb6a708d3fe6428326e6b2071c2c77c061aa7aafd3bfb4293a540fac0a56ebfc57a7da5203f40cc4d0397b4549675074c0b402a2c67be21347fbd05508f8efce6458ba7b772f11d41b3a1448c70b98f4b1d4199d502e16942e909d14c35773106ef33e99d13b9896aa145ac2f078434bf74548fec37696930de493269a132ddad7d49af94a22599d26170b4249cc4f0e8e4af07e27b649499313f70fa4554b2def84a673ea858530a8803efe4e75765e466052671d0b7a2bff658f50d301b7fcaf577675ce3f8487f784473f8b40df46b096ae8bf24fa3dcef7d6df64f274bf68e13f1ece1fe1b5598ed4c7d4aee1279e9dfed5232d0cb102041437c511de504ddeb8c311f3d08b65c439b98d9e22847452d57300d5545112a219256a02bfe032fe8dadc12583ff625ebf250266037293b6123e134ea1fafaa92815829cfb96f1a1917b3af5ac8d24be46ba9d1c098701111c05e347f3efbb57eac6f6b670084a6564efb1d9fceb0f50349191dcefcf29ff49e81414c5fcb9d5bccb7e15a7a82413af50913dc323cfa4e08500ae41a5b738f0a66f2e155e2aff3b43d351b7f74f58244014a2606995addd77bcfa4a29e5fd0bf2b5771c6e4877e1fc0ccf403b9e84213cfe07694d5fa0bbb029e01c176ef8036316b370c9eb8a464197bc4416913893b3f2d2c7a53f7f61a627f0759e622d735c67701c51b87f44f566afb85a7a2b3098923425f0a36c7f11d6797bb54990ba1d8f5ee51cbf00080f5980c690925c624c78e05a331972140d21e6bd95b2d55e9e097e135f9d34d22ab5e914c32d083b4e3c78fd41f412784410edd8d9312ad859da9de81a4644600329163d99a39e2479dc693f84db5f998f210fba11f8b5d80379c38ed36a82ee228aebe62fdff6059d903301c821f5ab8c77cc2d7c5590a96178dccd683639a92296d181c0bd004407648cee8277368b45c8d6fdda34adde6c7b7a0e78cdc49fd19eb27d1ea52871e126492ae73a95e18436459a3bf3c93481c7e8be948a51ac9528b8bef634634fd9e4d5160e7eadf062bf7e25c88e36f7356ea0b24e657b9ec8efe9dc899d0734866dea0bd8b785ce319a37cd5d311f4f3b44979d4383033982ad2db4d48ff37677c5420a9e6aaa9fb0b988386f05ca4c3f5c14e5514fbd2818d61514b39a555a56c5517065b794de1126f0d701f88d2d8d3c64cd13993906b06d50adbcd3bcf6f8a6711477a193cb1c0b708f7901bb62402763202e42062200fe299bc8626e10234a75ddf2ef049418d8149a1475ed35b4ad71310918fa3acd18fdbe7021d9640d2fe715851b01d2aa82ffeadc85d76e917f2bfa35c51167c6798d6acea6294bac36eb47ef91a5e5c535a0424b74836ac144807a62cd225658e4a57902fe6433497933d5ba3f618a373dc9e85dc41e103058dd10ee2699317cfc117560aef6db7dbdf575200b83360d162a9b4e45704b293de98cf1321358c01799d792b689e1b0449505dec233fe9819aee543398b2c9d20564a068c4894363e9bf16cbb99db4a8a1d5e4766843f9c80220e482965f92015208132da2b29db57980a78701796e45faaf2c59e917de44606a1dade0adaae6a8561e3854368031b4f6468b5c02839516f055e53c681dab5b0dc30d2a66fd1fa235652de299334b746c8a4b8a9284cf6f9ac9dcd475aade7f68f6553d32a987ec5fe4f7dae14b9564c084ee1f25884c08bef4c3166cdebfbf9b3eb7ffa66fb8988cde7258ac2c2f1881da884e68fe8363cf4506ff0bb68bfb6ab09e17adb37a55f75fe41a92d5629dfc9db551c44343174dfa7b7bad6c6f59a8ce66818eebbc4969a8bf8e7acdb003a4832edd8b727117a88fbccc08adfbefe959b33b64c337c9ee2f7b707df882f69747c12072439539beb0809eb6b44869e4695819b76b1f920ff58e258552493c6e213bfac39617ec0a53d9eec80fb18b74a19c515ac5c22630508008771b66f621ed4420eba2637eafa7386a3d48ab42e6d28b5a19e055d350dfb09f3759292deb133c061cbb2a0f873757cfcfd76e447f742804b06ae2408c5c00c575f69f4cd1928f532052d4310fe0b5f18199397e10de86606c39b57c226cdc824b8fc1547b9767c0609a4298dc185f75733bc1ac0af78b0ecefefa7ab51726fde6b211ebe3c446453f5668a3fe8b00afc0225718af2bdc1c428bed31a2903e26cfbb6a259299cf15fc98d735c6d74d63277e99c9f597bd1dc024bfa369e446dd705308c4d9a446e3ab5494242744fef8c6e56e92656ab0921ab8078bbc62a28d42b73b1718853914f684cf01d718cef3b9aa84c79ce9edfc11e8e5e84b6df0410dc258253aef32d8b1f5b561eedc1652adc74b9d1043fdf101ab16a1764285e64142842162a9589457d8e2532c614bdd7b23beae974d4a272170ed5b13468dcc15c657c1687464e533e762fe417a1e058cbde317fe0120abab8f5e35fe782656b5324180b0dc537563ce2d579b207991313c0d4e8796b289694fa17b1651a9a6f11f6e58adc26dbd28a3e280b52e72c366eaa87f57db9de98983f5543e92db1de25b85646f0fd7bbee684dfd322768c8ed1d0ef63d9866987cecc43aad6e60554a4503b51579691b3dfb566c68420e352edb5d5c6e8b886e3a361279375f139168dab1f42b1f93c84ec79ba05623dfd935f519695510b9ba3c283edc48709771bd6a302b4c79c6f6d50e73e9be3a25bc35a7c14dcc5c37498f71c7d5ffabde847d7a7e5bfc767f5a6bf88ab54364dff9f87a8badf6abb8af9e57578511df6225b16a5fbf8fc45d931ef73a019e88473e6827cfd421f3735b5f0798e21759c764428a9520f6eb29312aa40d02d11f92a189c676c2a62f7366407dacb8fdde6e34fab328fcc1e4f540e9abb528bb63516f4c126d83c43b72a89426c8f25b347f3078f34394e91ce8bf08713c43f0c34a46364853e6524898de87a477d168c2ed6897af5f7e85276eb158e31bd68abd37131c83cf50a0923642056d354deef3da392d6d569c44d90c8247e4c25299cc285f5e65a6aea98cd300124574f2229d066d0010a8882903aedf48e234a95521996ecd31d1d74152dce8f928efc384d821d2890536458ece037f2d729ceeb7e8b8a2573a846c6d72b2a716f90486e25fd5141f8ef3395ac0b314847be3d8995e00c21d7fe6b1b36cb0a5f55b5042e84e0d15c2868c9d91ec7c888309c0b49241e92e7a323e88f9e79deafc5f84582ee14fd378e2eac9f5cde7e0fe241ecad191f17df3f3507b1a09b7d0a9e03f5c563fc0a80db2ba8b13e1f919059eba611a6a037c36ebb9e6ada9d66ceff5961e78c01e633f42ceff2bfebad66461ba8f4ad93ad13c6ceeed63e6ff46395261937208e2ad69ea74bc848ff791801ada0b0bcca913fe12a2e739ecfa6567acaa00d7905dba1c8c6884af8ba5aa1afc3adb7a7ee9d89eb45bcd5620cf88830df1364a43532a7c4857fed30dc0ab50ea25ed8d1de4808ad6d5ad03d9e00f6701dbb9d9014fc6b10f04b61495ad8bab10f1a2362b7720aa1f93126d2e72e52075ae363453f2e4a9441fa04dbb28a4a95f0c4c7750847c55a037b485b626c2f8203ea52f82050f446ca230181a1205bace837aacd0b1e964cf3e75b7e58b94d6a1991e211ba17f7277d61463d4dbafd7041de234cda1ab80f4887251fa2a9beeab42cb799ded90a3bb4a8a747db9f8b565e26d9bfdab22d699ba18d51a9bf11355ac72b69416d4a36644b5d24c836b2bd6b0b97a50eccc87f19d2d899b84ec74e5b2be3cdd521dadd2b3c0dd932592c1eac86aa99b0c3651a2e53e1a4b349cf26b1cc1a97eef9615a33ff9d74acf93f3e133817aaadbbe41eca7e335b356fafb2561d0301680e490ebce67dea91c814e8a418f9c5ed748080ebc2f05bd46c5bb948a240a1250308154b2144e50923bbc2382a5a6adf20eafd9a261c738ca5e8fc5781df111a95376c187b4f8c6af529ac055605fef7e4601ec9c6fbf3bdc1ee7f7b1bd4a70e121738afb01c6730e5a2f93e3536542f4a3c5eb42d913cf5e9ab71272800ff8979d3bb12c2d140d1dbbd8e84aa57334ed13fa5be1cbf57b8d8d8d1dc11669b999d084ac69fcb4e3513eb85bda3dcac265f3f378aa1d6e847aebda51c2cfa7848001222339c569880f2e23776351e70ba449a20ecc0859309b0ee95890e82e72b33215327ab0509319971055100a5a6e6b792c67ff56cef935c70d9d7908e3a5a3e39b045ad57b7cb6a06977445ce8237ab2dc479646c114082562d29d29a01117d7f318505dc95cf7eedb1364d688906ae7355397bf1ce3116367f837526c5568aa2b8e4f3316cd1247dd4f11af6bd50668d9290dcae4883872020f417b53185f40f338e9de2b9911cb28a35a1ee84bbf5e69ea7fa5c26cefe2c389cea5831efca9e381dde5bbfe636c0eba609f4ee2a20b79a36d67e45a38efcad4c5ce8976f1f9659ee9ef640bdfa2f019457a80146d3b71851acf7b20256a00a67da7aa128c491464f600b9087ecaa7000f2b48e5ff9d791014bb9a069bfe540631550f4fadc70d9643e538eb46bbd11442ceea22f931a0140b93af2cbd3bd06c6b829663540a0db63088e09f61b0147a51691fe0ccc015848a540c0240d785a1091dac31db5a5f6a120577562ebd27328d46a5928157658fc03487ad902620d702e3a828e49c9fd21ca2cbd73d20129c1dd2bf0132d461bdc3dbb8dd1a44556f672babef35386901e2721c90c72c6b5674dd4aa3b3d51b6055e71805bb90668cf32fb6d490ffda9304eade06349759270f8494b59ff05d67d207e6933b3cc6bdd6fc6bcc8b2a63c553f9323f5ce87530bbb66ced013f7247dcf6cba0ac59bc68e626d4894fb2963dc7148776a3f522a7566df8b900e2158326c56852176ef2e6f1287ed5eec0412f159e9671307ad38161ff765603e2abd33674b4c396e270231762d9fbb1c40d1d1d75982627d553764941a71e10d537d241e39498316967b23b188e4066543673695e7f04b35b71d468a9a1ee0976dbca1ad803fbd19da8d6c3952e72a65e7ae8d5829e5f0f4428e842c6daf7add86839c187b0a424498ec22e81c62ca5b4a795155b4f2a142df7dd8710767af97853a647affbcc865458144c59bcbbb96af12c04d8b54b641b50264c28c162b9430228fffbd86c844038349f460a02cfc35f3a8acab48fff3e7b798574b1b5021981220551fd6e63bf3b2210165e55c50ba524613915fd8825bed83d118a37fcc59ca5582bff35702aeccfe47479255236cda4ecfb71d7a8412481794482939812aecccf16932d5d03fe6033c27a6a4cbf4b1367310576074b059175cf142a9a8ee74d824bb67c092d5186b34a2fb116b945ca6754d04eca0fc202cceee45a35b2026df48c238bc41f93e710ad9d9ce687ca7240ee96c7ac5188e7c89e04b22e496367dd0d696d6c4ca3308175ad5a414eb7635237018d0e6b2fbe5df2da38d584e3686823f67522c7ad679f4ceb14b66c97a7f68c43f891c7d0dd65b6b2ea91abc562c7d83d3c3700fc21db7413d13e8b6f6d056f42bec1afbf2e2a0e1515614368812759a75000c46da46d100a71b0a77f3a00cfa497f2419c8c4ecbcd7630f91de9db2817f78059894fd75907866f776d73025690ca1d71cfd51c4f73a70a144e12e0ec47a6f6912f3eb289e8ef6d55e36f2125cfbf79a3524b38d1abc916351c4e79641875fd16f52f0f6963c31e00c398f1aa27de95beb9f96dcb1e2712fc27cd53a82b585df81ff8b88c4814b6e90343dca1dc975f87688e63e9287337f5ff31f357c2b331ec7b03ae1975372b44538c6ad0c4e657f2f5dd86e9436521ff359e1640bbecea0bc8cad0200dede352bb1332d0480ae6a1b6e79c09645e1509dff9eb6ccb3f1b28a5927daf3003368015a18ae3174cc735fce9da79db279223c65ae4c82ebbfb218431d11498581c4c5a3b69e8414d982f6edd8443d5cefc3247a74ae3cca118bcc1a6acff89a9e505746373d949015e13acd021f00a62a171c4b1dc13615345e5d809d7f80963bfcc6b6b4a95ffcdba383e5d345f9f924f67f355104ccf57f6d8bf19a091e7c4002480d7c5b3effb13a06097bda138f3051271b2b5685464e30799130032ca38510a2a3efe8235483c767eb7aca719ea04ed06a993ef0b59a6b3ce9299783a27d0a3438a7a905d06a199a00da5c55b7b3dfe06db0714dba0a4ccd5469b0c9f57bb34c0ff223cfefb9f7f13ab92a794c34fef097b109f041770edc6a49d1cc1a8a57e18d66327d086daa19b41f763669d1972c450962d5ca6ae1687845117900879f85bc55954abd8229ef1a0ad77a6c914a5634f9350933822e0b50dd9283f6393be1730140dd31a70423670a9abf13bde403422ac524f98fa326486bd8b7a489fe7c4c6bb6bc7b99adf2f5b1a94d6523aeac2312c71540d8c18061987c9e21230d5d898700b10589cf7294b522d9a0b891672f39bd502b75b9d9106286a582fc40e0dbbc1a6ea99dd9ebebc1bba89472cede561f05facd070b40450b3fec330506d814f2835bcdfaa11e0e379c93c1ac0a05500274b3fa9c11e0277be93f297eee6361a592b4f938fa9e08585d74fe06ed93efbedff77516ae00e1e22b988b654eb375653fe006b81c8a55f8effc9a8e53be06f47d6ae1d95657d53ed6a9a927789441ab1639d7b63863f074719c7c916efab09252a91e0496d2ee6fc08e7987720950b35447e232c953b3689d6bd9db549ffdaeecd6b31b6ebe6662e9157381ad4c98a6c9e412a9784f704af57dd242f50723266f89911d65db7aa4a7a182a98c7802f15d8d9bc96978dbd11e6b70282c9892c89e998d2c217035199682d5f69d5283a1ea39479149bfb40de026a04775184517ff66e7b4dde4f699688d789f6361545644e2f5bbcb296cc898e08a1c445218b172c359bee4e9151cebfaff5bb3950db8219f9266db7e0792d2e43d2f5be2536d0d0a1b9b23a4e97ef58864df5a8e20095129f10cff79b82856e49190f2de30bc2bc19a77363dd25bd8e1852bbb851681c7ef7add71321b7f1d4f32a4fa011ab8dd5613d851fc984a19a4d41c7c8af5e5b3720a7ffd310908c290fa30eb1ee1bf216d40a758dc9023f8c6f04c715b23cf4968a2a4bf8c1b65e3a0ce879e6c0920e43887e57920e3387b6019236d6b8d01cdf6a2b4ed656c01cf77eeba6b15124b8e4257e684b5d96e6d557c22784482384e9fb0e370100bf28157334dc0a42c12168a552a3bf6d9247c220bdddde7520cf831c3ea0c4fe0955a9bda8e687a72acb7bfd8e78ab1bbfe987f3980dba3b2de47086afb252a1eb92ee2f0f269c770170a829db115da45a9e95e8536dae63aca9ce7c17750a58dd8e9e669c4f2f86062ac1d8903a7386a475531111c448204cc663329ce63b79f636f66a76b9ed35f5c2ded0d2461b999aa137111b4397cfeb1c9378e5bf869216f529d3a5b5b18cf2d5ed5180ce5fc580b75320fb38cb8342db62e9304d777e0d89f4281c2c42e541a060da51383e805ac6eeef2ecf82535226709ba9556d60a7a1ed504ca5f80754ee4e1f052cae7917aab831e0a1044a11642a3c6e5a89dcf517f975697f806ef64d4e00c67d3811d88efcbcf1f2fedccdc13e83400d6aa127652d82d81b99ba88130163d981d27f87d08028a8321f15534ade13377d8d5429039f4fc3d0799b2da6f5ed157a684a6c7220ae7a3e3e9a234e57bed2495900a988524421917a335fe5239777e7f4f78ef7805427941d315cb27a165ab2dc7140b26879e5c4f7ce3615108233231ecd4fffc1e995b2d7498a0d7be64a4e1f8461411f57d07166b55c3dd78c3780aecc79e6dba8f479b90eeda45f269c1c561f4274cb461eec43dd0d64a200ae80f6faff882714834bbd88f2e948c7f83d6222a35da58713e0e0d5aa3a4c497b82d51787f7e90c1d3864f992b5cddf0af00e38e48551f448658cc82d6eb6b3de8300677ea1605a1ea207ea1e303864c3676081f7cbc44dee2a98f547660245ecdcee2e9ec36f238e4e4ff0f1e9959a1b39fa5a1f5c08ce4d9246358564192c9caf287d25048eba3164cf2431c545476135f2f80f7534675367f607759ed2ac751210bd5e6be73fb9c148a5551bb4e36750160a7af5f25733b9537723be04de3d93bb28b25308c7d43755c2158a5be284553221e273e8867e720bd2531fba59f1b527f66f1af217d5000b0f7af58e07f2c80837a3bddf3fa6d65c84775c91bcacbab08841c1fa7fb3240cc0b21985f4fcf7f4b22c70577d8ce2941c173e5bcd3a7249dec7f34c5fbb96713e43ee526f9eb506b265727feeec2f216264e0cada535c9cfdc3f96495d30fc7b70600425f4f5de6b40eee6b81063507fcbf6546688d5bc703c4c23ea83e7221f3f43b99e3f26e7b3040723adeb152238fab4b3f041db658aa93ee98978e96f325ad09c69a9345104fae79817fee216218bda44a3f890a9ded93505ac5f5981658fa958398bb878dedfa72464916c097d038878823858e01909f52d77a15b2a69f25c115e5ff745e9b15cefe21afe3b33dc48be141d8f32dfe9d3bfb430cf7db7bf1304e4c6d86551d02e3177ec817d810f52c6ac7c2a2f8301b7b3849f968291018f78cac42f47b07e9f02ad36f756e6af2e1eef685aadae4edbec5e603113b1d6b04901d619e0fbba966c2788b38cd4be64f833069d4f5d288996ab1348f026b49209fd45c12de27fe4bb55c25de431ab87939322dfccd842bad3940c2dad92a2ad93d48a8863df416c1e94b9c985022135b847ff06c027f8d5afb4eae60bb94e1751dae7871bf2167d9b8ed9a684f431d4896569122b576f8583b4d664474d115df21bcad82aa6c34e23256b045d2666a950b9cf90091dca29d28087f5bb6416a01ee93549224003d5bc40731ced52ef896ec7a46ff83d804f9f67436c50415981fb51c9401a3bc767f867d38750e23fe16939b25948eea0871936bb9896dd44c2b47e3c144f6d3e5ad8c0da52d7b597cfb6b31ae36e502427922d5d97eb3a3329762fd0326829161b225e37a7f33d0892e254675265c916d657f14c8528ea84cd12b0e4b1f46c806aedc9cdaee8ce3072ba9a85a613bfaf5fd6ee46828633f9b79ac978111971880a395c32a3433910d86a5aa6a40c2a8a16cbda71d7eb5c138a920be90f5e5b6b6048a7d5e6d14ff26e06d6ac9ee01cf05635aab6965d872deeaf2a2f18c72a66c5deb5995ec2431c00849f18d13708b0dc1efb5e4eed456d00157469d17253d0f98958b712a033e8c7c55aca2f7563b7a89c5b3e2883e63ecd7611dfe7b8b15994df94697a549982769af91115551d8107fa2bd25348995991417c7545dbb0a61a1b9c42244454ed07a3dd90aff1270c30942ff896ed036ea8de23bccebdf4c3ec725b3072935524c62ec73863324f1b2cb314eaaed0d90c2f95e1125019d98dfc8c694068266d1c8c0512963df53d550972714ee281ffc70e05d94e99e69d38438015e32420e2df82a2ac813db055e0df7ede0e4bb2806ffd1c329d4c5c5c4ea7ea9efe7a72b0fee2333d10d86eecc7fe9ad7067da29fca9885182b86cc7c27b80c0269e540136dc9e0bec117194be830e0a900a08b58d5cb623c650d862860b84da356e0fdfb326958ccf4c721ef93b081829b3726af6a4e7c9b077d6710a9838081d17dbdecb26a6eac0c7733b5444bdab93389b3033bf59737e49ef6fd295138579f881d356d9ba8dd4200cd604900f07a5a91e506b390b09bb09b28bad0f8d9d22d285878f83c973f1f560455b1221405bf82f747d82b684c5e8e89b5659851bd4c7afed2254e3265e334ac747529da4f91b58d5a8897d26a8a48193b0d41601d394e7a9d455a25ac9bb822f848f0d96c5c67b96adb387174dc3ac34ded31618a2773dcbb6058509ef0bc422e3f0d383083e4dcf572ab5b6b21cb4dd2f1a0bc5c599fa4654d583dd704052e8ecb3a54217869b546d62b7db76480b4347f10d20afa457f35ae873dc8d48d03db572c78edceaa0c65873450007ba9255d713fee9d697b04091d78fc6f6fe8f2d8c6dabbb769b3317ba667268e6b5e0d1f180e524bfd54365b90bb57da64d49d8a1970f307283549c34853323fc2662a500d0bccdf8855b51c0c3443f38ff32816e74c368e92604bd3de10d147635f7a6221b8dd1fb55349ee6485e40a89d390a43435af94004c08d353e0e2790a889cd9da2ada9e1e35466b467289ec2307b30fc8e2e4457eac6b09ba08cfd0a2853dc2de4de87c073dbfeb5937397199377d007e190ff316eaaed7be8e684db0eb99a7bca0fda95c1e2011a9efa6d5454c8b11f659c8b056c110ad32ff50aa639f8b660406cd2203ed854cacd6b851d0643e7b0ebd869247bb039be14b4cf289ff6775e3ce5de0d7d6ad2dc7667c957281f1f2a3aa45ef9fd6bb00ce592909b9bc19027647f4e71f3d91527b6c52b8b597706de987021a0fa7a38b2786e4ed020a1eefd033811f546907f0dc0f71445a31e18db8297ad6fb17675128bbce89e0f3244e5410751c0721921950f5e6be20a68733c327cce9ddd639be644743902fb6237b93d3155dbfaaaf939ee4cbb69cd06278e4fd7d4bb6c230a86d528e473ae257f6c2191dcc881b5446a91f0dfd54b0cb38d21a98ee54b86a0e9189b3fe3c98fcbd8e8d4939b3ba51e1299f40e033aaa9edd272f95f33e9c1e4d470d71ff281b9d28670688ee4a392bcf38bef47732592864ba3c5b24b75ccd84d52dbcae0af86af3aab51059a71dfab97674efd48a4a6f2a180c13295d7be82573d601ac97b52af0db8ae3cc0a6489feafaaec651f2d26d33d63345c7953ecec138bf2ec2ac088ae3a41a0dc18848f2d8d9ac24e70bb25c6d3c6d4d6822c73570631a7714f979a0acd72b3915b92e82621dcd1cfac9714afe5d10e862d22efd56fe9d4ee33f40dc26a49778d40cf214a1f475016fc92c34c5eb53486c7e9a01999088e720d19667822fd0cac13295103239b36a9e39dd729641e5ac365e2a8caef220454d9fcb51bacb93383a43001ce73c710915a11cc2540953de62d4e0ef0ebb8b344e3ffa7c86e7be65efe23b5db06e897da0f2891ca4672a85caa414167b5630c01e5fb1fcaba08924fe666992f4733cfd433e6c19c7168dae4849e4183d36aff136abacb06884a211ea6a2c8fafcd1a762899885051b66c4e9342cb94ff493780c8225123519e79dfdda3fb287123eba4981aae9ffac5d762cc85054eb11861a69bd8d7fe009c5fb8c1d064b89c66b525b6e0ccb0a7f8c114e993759a2eecf398ef0352e93d4c5d2862c3a634bb869ccfc38e2f351a5323f1dd720e7cd1694fd32986813629c4e78be5d716f2068cfcb696d3b1f7997591e4f68d99685417e24624d9a7e13ebb9a7dbc0e85432f284a61eba18a34086c010f7fab23e250667de628805018b64d2bf191a37e22c8ef4f05619e4d7db9f3fa3f73cf4cbcc606cc5dc6288a454d813f284ea80f4eacfb130dc87edb23faecb6be5acbbfbfe4683af148c90d312fcfd679a981a18cb4e82e5985d1ef4fe994d2c0021646784c9da7ddffb1546fcd24c7801162da68ddc137cdf6e2874b4922992628f36cebb69ccb8a7e2059d215c7f4ca378e16107e2ed61213b2028ddefabfbe87d40e98ee7b17e9a734fee8a04e25dd8b605208574b08cc313e2bb49385f26ad23fa91f691fa769a59cdd0d7fae21c917cf338e9d1d9b1c0602d1aedefa025a70e33a15eae0d75602c5749f36d6cbbea78495f632d04772cbbcf659f3cfca86f3fb7d88323904ca0f569faa3a2decbc35acac172837e9959d7b2cc0af1a289f3185bf94ab1aa9499a8a198c7cdd1b213fb8a5ccc920e051d4c7340857041d9e5712e87797d455c821a882e90432da6bd302cc88a339efccc079f09de46822ff6cc3c1611b96fbf63325107ff44c129070ec64cd305b58c4f5aea2369bb32193f2baa61d35605474cf2195f32c4be949e6bc4572a78619961c1e9e3739d8fbf8135bf81f9cda0a629b8aea9f44bdd1efac607bb63478207eb4572dfbcccfaff2c60f8e55361cfa641b4f3946974c174186011db27d93bf787abe48e195251f0d3d879c42997a82d89eac52fec8c2dcb6a52107a3b7fd3bab5a2c56356a8f6c1082fbd51fd6f798f4e325885212d7c89a1761d5db1f4cc675d95c4933bf73b34b0440d69993cc0ce33cbee7ce799b0919def4c67a5b0a17a483f939631b57247ae12c367a501a8f2323baa5d909f36cf411c8795b6d6a12c5b4348b68217dc7f765d1d69131917276dc38562bff13953b6ee5199b3f59753317653681b7f0ebe3d6151fe752405b63484fb7cdf438255dff4cc80e52e4da46f3ceb1b0dd55196dd9333952d55e419147ecd25e7912473e5b4bcc5d8a564cf2876b25c3880eba51c826bc9a39e2b8488fc9efbe73123f2785381925e5fbddaed28c153137da9750690833b2637e0f9a6bc76e6c85b2824cd9d3612ccfe121ed71597d7ba590f44faa3c06a1e16a22b270c5fa3d13cdb9ec99a946b80c12e1096a841dc49006415bb212fefb96d7175d4f7705b1f9f077b2aa50d1155e53259042904424f9e62aec74aa77de14cdd2d5fe8a66b060204a807e78930263377483604799621beffbd79354fdaf4bcef8eeb5bacebd849a7f3b4a0391f7b489e7b1d227c6ec3509c5f5706f8bcb4521088269af6f706c4a43173a65a23892b60bb25583518bc500e16ccb95243ab8bb8890d846bd011bd0a6c921cc2a0ed90dbca84fe3ac241c51ac075069916263b501d576f6de14b6dd0c19e32fe049abd1123cb8fe7edd9d5fe33ddc516a161ddf2a1ffde1e04018658e7010b05bf33bd69e50e35031619578c6991c7bb0a76b6ac5eb55d8cf88a2ca1d9bd96f51bf6ea6bbed2b53e20cac007605924ebae29b1b4f26b0b855b4f7286ef4c88602b2e0775ce081895b6ed815e91134948761a8eeb16337ae733ad90cd7caf4c5eca163ff158f1894f4f6c5dc75079fd5751dad98bc84be26101fabcc2d8d9b3eded69a0db22601f1eb5cd8544c3b1e96ed991e7af2076ef814a44fde2519711af41e652fbfa1e298326bdbad9fcfbc711e82ebc4e9da4d91780a8515caace63b6101da58aac24d13aaf772f3a50269d7e7860b6f83095a3071e5bb91078f770c400453b01bd7b10b57ce86a806a689be53127fbe0558dd3c0f4fc09431773d13e53ba44e825967d2ed4b17de6173303c4b457866a980e178c3e00aa6ccd9421556f695efe96c2f502b79d0eeec76396f3a00e5da3f5f49fe4ebdec112d104d8836e74e5571d7f90af32648b526bb478c0249d19cb9b5eee6e09a1d4c6e7d26da7083fc12fe9e10fceea973c4fd5ac19306b65cd369469fee413bdf0f26566b771c0983809ed4d93108636e85ea799d8a640db75de18427985755448451719f613f6c6b561c729bfe4cd6b56a6dafd94cdcd7089c6e1134256d53b5760454594c6bbf7f7ade95e900240a48645f7f40466f5bf44bcb4fc9229b34ed4c345ba401566210976db668c9dcce030005130677ca7ad019f3468f2a876852da261b6c8b4c569a25e2ef92317290fc0a79059e728d4c63349ebd2ef2d0b354369de9025fb40359ed52013a807f870bff50e38d82661f34bf3d9ad00dbac61ff60f37584d9afd717b006036bc9a32d9b12caea1e34375319887fcebea84e91537bac85632a27d31392c89fa4482958db42b2e83c563b48a780efeb4855aaf2ef0fdc836b249645331a3ec5f9446dad5f3f0ed76baaabbaf425da38176e650fe583fd59c9da314cf5fe40204bce42c7c4c273f33cf5650a87926334fcb4a8408f613b9371673ece824112a223107ed76ea6dac0bb104346e53c4e33f08a7ca4087f0c0c945229524bec15872e5bec41eb1317fa4f69715e757c6d0554cbbc6da93c75309dee666788e6ac1e31de5f3b5c8d17827f94875ea6041d5e62288a0a6921fc2e1e2fdf94ba2339d7753feb1fbe09a1ef72e6790a4da03a48f7d62af8d017c031a2f7831e3748f4a00862e04fef07d43fcb0369e255b88e5f4ef51fa092df2e0feeb2e5f0e23e6627009bd59f1425d977c08ec184681a2fc5f9c64722d1ae428d75c8d7f22f07f611e34fef610c329a09d6dbaa6c9bc86a623a9cb0e7dc9f6038cdeffac0e2c5996da1c5c337a3f53ce0ac645c8ee9507b6ad396d98efdf23f865ba4353f17b73c37977c30964190052652fb89ca062a6c33539eba3b9947d2274183ae520d968c6e23519d418c9b4ee5eaca8cf516fcaf3f0991fef2a330062c9c5f90afcd0a24b6210c951133f5320400241222740166dcb6221df605fb9f0457a421149627de1550b22b6918abdf5c867eeb93f32c661a5a8f06066209a8e870be8971132d7002dc451c8921473e8fcb8dc38b2da21a6b5508b6a5b6ddb1fc329019074ae3d57c693a9b3aae82c1e6990be21fca05e3d5d2977ff759a2e185cca53abec12a02281b3030f02e596fbe50e9cae16225eb00f9aac3708375584cb917f261ebdd7aa1bef2913ff7ae3a21f72646ce19d3a831cdb72c3f30e5068d36d175b9937d3ec3af5279a611793e444dccdf28375e75a8d10dd71d84d09071cddf4101c4e0beb67d670e24dd73cc2e74000447ef94581f74f98446f9fc8390c60c182b463557463d7cd3f582ca0d2d7fbbd6d84bfdac7a8d694dd407c47d08bfbe192847be40374140c9c0d75b414c0f7bc690652923043d808da1a54cb35110c00941f9d95461100a7362bbc31b4be72a528542574530e19a58846c60b3373562bf4903b9e33dbafc14de7f70fab2e9fc6fbf49afa9f208fa79b92746728b042f9d46f5c604fd3fe784bc1d5cf1ff1e1cd3be96891189df8fec3d8c2ceb1b1027ae160c31d4bfa2caccdadf88fff455a5d1dbcf5b0be2c1f343b160c1ca0874430f2f2a417b41de8d3a025e46ce70c4fc9b03c6d99d51c55f7a36a621f0a75cacafdbc27ca8972048a6faf3f8e0a336b191e290fc6b2cdfbd8f5bc1ef63946c25a35fceac7b48fd2e7c1e938ed820b3b6ba606f6077777e58a58adc91f0d3d19fa388180c9e4434ebbe508922d5aaec2169c132a1bf986ca75bace0ca840c3cbfd6a5c678a6ec41a43aafc6110d0be6d90f03ea32a60e9101c07999b8df39822d2d47859ed12bdf8b9cae2d1c40bf59b6c03a41a9193b7040953fc84fa003f88befd4b398a4ada4aa58e855324866a051d9cd959ea52122e74dc8b9a0f04a51c48b150291630fd2fc4805490422a6091181df28bf5a9158e9cd73d5d6a9b592b8b68c214c69fedc74dffe35593c2a2b8263e0617d32c6508c1b8b8b16fe00b00cf641f837645b6b7636c04c31f49f47fc7df43564159f5289bd57522c704852fd83e750769d71e71ca33384811f344a7c1152982fe83a8aec5eb4901c0a9ee1c688c96d04e99e851741257b4901eafcd005094f6b08c75c6b55cd19737580807770c5d29c5a861370ab31dccb58ac1e87b467c79630d9dddcd5a24745064bae466d0aa6c162afa8e87a2237b5e0b178596b9e3eb230b1b406a47a2d2bedb9194c313ddbe51a12196e7fe9c1be0935a84e56a75059d3e5b43620711636a9684e41d7212a57c9f93222a3e3c84253422f8d6904ea60058df32f862592b3bff052b56275f0ad9507e302a4dc73c9af79c8582e94bac80fd7f7f0ce5b1919af0b89b0cc5474642573e44c441af956fcc3120efb3efd5bb4ec4c5ac87cda1a743959d8c1b50eab676714f2e5b99b4e5caff0b9fa0a1b8a509d2f70d5dca11fccdd8e51b29e5f730c6f58d56933016552a2a440cddca7e313ead7eaeaf79f3dcbe6bb914b78c9eed325b9fc3b3676718b1bde3a1c099d624f00d030ea2c2426c4a196604444e3369bb354a48bc44be3dda36aa7c9cf71b12aa4ad4b3fa88d2fc3a1c7dfc609d03550e9d6540e154d93413ab1fc15df1e197b76f2418b85d78dde9f82cfcee558535df69d6e4db3282a800472218a47f595dc767db98081e6810ec320d05f2494122f0d68a6b93e138041ffe534126db859e3be0280c9d5de81375b49eb1a926d37901de9bcb6a0b787fce24e2e5a0695c72bcda42d524eedc12095a1c3d6d4b7cf8ada762d00347d4bde82f5dda4719fea9c2f6291bf0e51e2d45a181d48cd6e53538e49d0437eaa758c3183b43f8ecd81183e2253e7ee4ddb610ac8f606b4f69f66f30445cc0a68be74af11e1c208f35687d0a9f687038ad2cd872e55db594a4c2237a2bb0bed4dcff5dcd596df26915f1deae39585281467e4df56495725df20ef9fee09a49a440192e5702d3a382ed59b98c0f17f89d1c9ad09a5cfaebcc6d6df36694009de3a874a64005ae9f429658c30c9c0fb3caf95a3b51aef77b5effe846f37b3cbbb4fb2d8e221bf6b8bc784048ea6a85532b3ae1229992512d81f881e44d53fef799348d7d226a4d4e6844b20f902c0b3179955c5dd9fef78277e1b07e701a1bc1f25a2edb1afee4339b0e3d9d452a9a42c001e892363e19298a016ca63cb3186e9ebc74847042c1af88dc102dfccbaacbfb28343de6a5f501073bd4d8af8e56e04b6ecb6e110047bd44a338c479c28e8c35ff5f0d6b30440de1fb92727ee9b220020d24ecb09437f64381243b0cec29257499011157cd27bf8d5d992db8d96fb862084f9673cd67a86f99262a860efbd2b6253a860566728803835f05462ac5de7d0d4403d199d092979c4363562b7a4f4a99624ffb93c33e02cfd2ae27be43efee14b4a71f04e0118b3ac7d9e90e0a6775f06515288d1153884c363e1271e463492149681d115d9d16c90a9b175e4f054f00ff404459ec345110b3579e4d594ead6649f9713f4b4de549271786bb995d16c63e0c029f797d99b46afa5ad5c24b888dba4b0b2d472946e843c6140448a231f5b81049b613a11d85bda48154d02ad14f484603c0fbb755da68a2036a39ac35afe26115331234b0092846d53005a45e63e576e223b8814d41d7432d61eab7a301fe3fd4c766729d2a8d844701c66d631bb4c0227bde0cbdb82af0b3da20ce81b4597a54447488c1317864642817ef65d3eb85e3a58bcbc78781873d4d153a180ef722eb0b71c7120c1aee05f50e8f37d5a594d3a72960f3ac2a9a5657a5b3990f99be4e7a52922b6f4922903cf884f4365259ab137ad36396e4747d50d02595c490b9122da4f647725efff4595b4e8daa51295cde2577bd2233eb8dbe8a767355796e8323075a8151fce68ee34fd4110b4808ef7890a10f4b991379d49017ce7c7c06d3f3b9bac92384261084bfbece32cbe2c95639886b0e7d2767d8e03c43b2fe9655103f2729e6242660b4629018cfc34bcba276a327d9bfc9e0d3bbb615a5ea2c39856528aa8190a0708dabdb975f5c35f2fc569eeaed3a426e2a50577b7a1c7534b3e883a07624022029ebe4482a9c6d1736942c2f80619f06c098e45d048ff3475344a9e75a864b4f1f1a5689603fe01fa94a916e6b55859c38bcef3fe5800e173242a226b0d5087a02ac98d3fc6aef741c4c8678bd73abe971d1a9cd0e0a43cf3e74966d78556afad94bb3e886f1de064d7a9b9bdce69de20c15e9054d5a99c9e448e3ae9b09ad712ce424dca001ce5d0754a773aaa7439997e6192edee219b68da5af1b446b2fd4784d427e1c16436dc0ead8b928557a34d4ab7b1d906329dea265b8f32e1c433904d4ec1d0c422132338cebc8f9e4eb8c73935c4f1bcd80363b95fbd25e0d3124d81cf8db7da421c472afab2462d2fc76501440d3eae43531f7230ca2a42801d49b7bafadf8376fccfd97ae9ac5f1f26504986e003b3535039f903ded1ae8065afd508fe573a576dbe10b9f7a7192c724f4c52ff0dbf53b761aafb9813f9f56268139f5b5b3320b3ea2da6b38baa255b4eadd40f1e098d8df1fea56344da3a4ab0a2af8f43bac1c9536ab7e483101c33bde0fdefde7d941dc3140eee9aab412bdfbd63c50eefcc862054aee605215ca79c867afde875382f71450cf478d209e464ba1511b2ad83b504a3b4889ed9c899c046e7a5684a932eef1e2cfd078c9edd39091784fef773f0a4ab4b2c3038afc21221837f31b4cc329390a11b6aa46f4874e2f57d1355e42f72aa8d9d43e95eafe3b9cc6aaedc289fc99dec43c45dcf1f08f1faa3e5928fb6a9267c5080652d845816def04e6d2bf78a97c81eba2301ed313d6fb89856f83e2b788e6ebf320de455d013c8a68c068d119087288d52b92bf47ed34780624c689141dac43146922f57d7f6baf9aac7974d848a037711df2fe6fa9d5987d5e48bb5aefb4462fcad2c1220888ba3a6f70682c793402d8b8076a4c86778a8425afa31e116f7a40d90ac93c2e6f5ce10732d839d6109ee17074d34ff02bc43a4fa4fcc5a4ab582e59ef45050078f3ffdf7b515139ab9c921706ba8f9f9f13d9a79a4c455c57c25d3b37abb01b913584c37b01f411d92661fc821db56a489972cf7f21dfb653c543e64cff852c8bb0b590ab3a2bb144ccd32f0842f1c7ea23f8b24fb4c60bfb2241e97e7bbea08ad1fbc801a0325a0fffc49e5b1cc789200cb2dcc9ddcdd8e87bb552b664bdc772deb58d0ec7008e6a8ffffca89a00777c0eef66ee7f4621aada1f2a74fd8b08b28f9bdccd74a91a7fe4f8b859cab4509c9c8a6bb94d9f7bdb96ea8b4f31ff783bc9222234b493e0d02308ba8a363253cfa4195113d55d49e80237d06e5a31fe9181909202c35b45d20b3b7bbe2c03df84524057d847e1be1b0e6889b8d57965b7da95b51907055af2f354dfdaa72e6c9b14caf69c530728ec20dc130887b9f681e80dc0c208a92af1bdc3cccca87486151a1c460744cabdb318886758d64f3e985279e3631a1e5f8d59dfa3fc0f4e4a55bc37f7fc04c226558c045500d18e54c7f1008cd4a74d901a15dc6b14577101d9c1ab7bddb16588534bd94c0c1df90534200bc491f4f7d271e7df2c008c347757076e19df0946d0269704def20dd4cf181d7493541f6afed4c19448ebf0994b5db5af7a060bb000d25ac93dc660bcfc73c584a201cd6c164063ab2bea219b717ae660ef79df9bc88f699d8dbc32f631a333d8570ceebb3e217f0b5e32b2a0b6a9dd889f7cf3b92fc08e8bca1b88d0872fd99f5ea09c9de10b7947464dfa84adb93d9ed0b3a389632ebba1988a3232b91d36050e6efac352bb7a637ddc7418531c725aa0b9aaf40894dda96005e8d8f553e0ae960e63d059576de0dec7f31648ff7875ba9fb3edbbb3e5c809d067f3d402a7e4a69d849202fe8010bfd902ac31e725f741bfe4901c01622f225f5238270706925d1efebab0d414b356663887de1fcb543d907c96ad8193fd5b4f087d74aef724f41aa14915e6efcd2f9de944a0b4476cfe411b7dd9e4bf6fabfea2596a2eccf1876238e8b53d3dc89392828b698f7cf90584c27b23bb2fca3af757538f8f19576295f658f837708c1d666a52374da5a926168b46d60c4c4f02d5450477c5b4d781f799e2b925f7950805e2ddb04dea5a6d94ca2b1ccd69f88e11a66138142422001bc86b979b38c83058068a15dbdfe82781edd8269d3eeb20c04e65f1aaf24623ead1512e4b778473d868e776857a2c8cf1fed123da634a65f3049055771d2b166937696319a6a74571d8bb1e8e1cbc48911bed13cf8707e7846a243747240d5166dd02889d6eafd02d2c06af54db4e57017cc6525a1893eba9b267835868d0b64128a195e6c55d2f3ab2b9a2caef791392135689e142ae634db79799600c4dc9efdc1074c4d013b1b2527b84785edd1f33bac44ee3c515644524f1ddc99013620af83b8df59b1b857be7d9356beb2065b90739def271e49f308db094079b640da2a1ea6ec50e7173924240db65db4869d2887a0a615cde1e57e4dd66a5a101d85a97e29f60c111579502f21f4d21fddb01f0b47a9db90b0906f39dacb87f0631ba40520a973e7d31ce152798ffbc75d58c5c9b41f5097f9a4a2f395a09cb0ac10b9015b244ba85fb905da3a1fcd127ebe017207c25852175d47037bd59eebd5bba336ea4e320df51e8e440631258b3ecbd07b8ac585af81bd4354908cd502048b02e654d3d5e76b26fd2195fd3563331186e377ac2d9844ca92220a8def6b8bb53c748a75f97f03b4e2d247f5f29a1a7c675b3ea2a4da8168554a4b5ce5d9e327d19715d0ab755c2fb1e1f6992208eda44f9f362d509df274a2f521ba6d949da3517aa70d933c0fdfd29df651c9819c6e3ede02438c1ee40c0a2ff785763d9a39c89346a46baa32b37f9b964178522aed26f4b0c17d35c27a85bf3edc8cca10f9b7a46f87a5ecab4827ab0d25df9ba1689b2487cd0614c75a91c1d34d23daa2ecb582d88fe8e14d3429fa90c7a9986870f4b691337eb465a6cac82908a0104142fd16534b18a8ea6860976248235482319829b18458ce4c831ec7fcc8b76ace4921dd010864f5c5f7ef2e5beda4d6224f1d4ae5124ab1be6c4462f772588f19ee281c0c5ac72adeacbbd8d5374cf44e36249ec2701afa572786e8d3ac8af234fd02b9c64cec2f3b9d91accee753cf32b5e5d27726f25071ba5dc0d50eb7f88cd2a48244bd26310856089bd6c376cb8f8d010beefca21c1774cc28f5437e52bb53806bc1d009d3a790a705a58c2eba9cb08e7c6ddac7d061613c13a2ea4bd5f6d499cacd1adbfabf98c26c49030713eeb2e48f6d62c62edabd9c3c084cda314880051fe8108afcf5344d344b5908d1abf9c563e38da73418ce53c61ed3a8f9cfc5da86c2f464ce4b4a59182c468ca48b7ccb0156db9e70e3bb7ccda9d6b4b715b977e010ffc9261bdcbd1d7710e44dfde00e85c453a74549dff38615f1a8a461f1d0bba6cfab10cc734e73bf163840d3d20dd2dfb271bc41d7db166fada4b29c970c31d5a0f7d4bb16eb1a6ea6e1d4922837da82402572472d81c397e6137ff58dc101bd650d4625eecee1e2d0a9d6c072f6142ce4312df1def6aa7bfa877a0c65084dfdc6493f8b04b62100f69822024fb4693296a597961a829045ae3c34b2446e4751e286431c8c269d32490345476641287fd90a4984416045873fe0cdfce0661c6281ac2e7291e63ee6d20936bb6c76801408cf13be6bcbb1f6426f22f035fd22867eb6b015483115d39ccc257bcde3717b3ce3d92e7067ebf8d8e5eb11e490ec3b0f374170d311e214ac6f59707298827dca51b7fd9c46c84bd243ea0dc5d740fea30347d75c42742b178bad0ae7d8eeb2159730701ffb18d629217cb9f8c13e505ca1e42651e4cc4c4f43def074349215286a366f8bd4e17091254925c1c382d2ffb15fc403776bf39caa432986bb171213bec24b19dc8861c09e1927fa80fac96525e7e801c0b2813588065f0fcac1d13778b8396142f047d5186002b69f8a2a763e924795bbfda9ba5e6a3f135ce036ae23cd5c14e1c39d6d02be589e1b1357f01bcf5332757a47ebdc2d23964c1438c92f1f96dcf26b93b523079b51458db29143a4896297f4dafbe4c8be002c40e7668de876d91b7080679bf67487144d8907281391f2fc39322c70fb2487938753180662df0902fc46de46d8f2f4654bf049eed14e286fbef82243e50cc5d955de441b48a3375d0babc2cda95d5d9b14c87365cba7a9dc1fc197e886a5873a70c9d3c4aa6f87f50882b7d3e163184753d943cd3a71658ef73d05ee04e8fe9c79554823ae51449fecca2e115a73f34cd9fe425e136fe8b318ae922462d8b18a1d6a1e39fc6ac80a461fd552155281d43960a808b47b400f009eafbfa02e21f312fd8b7b90faeee72776a4ce9ac3a46545a8036315ff94f2df7a87b3738a13b93e7233e159f9f348041d4546763cbfc7f36dc78e9f1b00c9dab5c3d6e130055c9047b1af06aad9bb004a1cfddb78fc265478ac057e35d8e24e0139f5542d18092a53d890ae8ac516515e2fa1ad0c5e264a386e3e8214dcf49f5e7221bbb26d2a6d469f7c91ed7cf39b4eb93d0c25ac28d36bbd074b9c136f984f94bedd4289fe61fdeb97716bfe38cc9f9998e80addb7ca36bf143a4ae39e84fcbdacf82c7008bb3533c21d2848c33efdad48a840594e5b510b4d89b409ce72ad1802057db5bd1fb3050705aab9f92024c28ab6304d36a4628cdef36da9e35434f6065b97b60dda916f6846242b44cae2a73719d631de724cb5c518d4a296809075f536375ff7334aa9130ca0aeb1d70408cd5e75dca38411cea5bc224de5cae9d9b321c16dddbb77e606381cdf107685f6c71e41b0495000d449c3600fe447e859c5c198305741e6323cd7e38f2fe6bdc4b6a9f98607889fe3977b0da0071ea3cfb23a7e8d75b391513e58045168f191c6620adfd563bd371f7bbe7ebf6c46cb18d9265c728b66c7ce4217491370dc9009c21f5d286e96114c138d41fd0cf496c69fbe487a4d0a186f9ce1228be2ce711e6ffbf993dd05e8ac7f14a1ad40112a6003a977f9db56535b38f7c75a047266f1eb0034cafcaad0f7a4c928421aade6379a76a9810bdb823883f9c93a3baf5fb12421763683b34e71372f02f2721d4c3dcff92238c3fcee4d80ed9d19635706621c67d7ca8679cba7b5231c8892d41701e082a7dcb6d118e1dad44af748e12102602d495d3483c112d5d102477541b86d2827b555f13ec6be3848035207d000b340e6fe105ae96d6ea6b5b860397aa565e29c6732f4b527e0abbafeb131fb5f30292d6cccfc5a891a75130ed4a82041d8dff5fe1a42eac2101e7267b5c8a5ff6857308d505e168d72dd097eabd8cf6e2a4d18b12efb812ee67e85c40ee6e25cee52b7f2ab4caab55881c00a475fed0cd8e8af85aa82d6668c859766bcb61ae706d90ce7b740f678ed9b2c1d673ae64a6fbc54d91d20e289ad8c562755748cce5ac70d46636a607943fd5a5c8fbdacc080e0b6a5812fd255f1a3813a55f47e93710f198b22f1eb9f09335103daf600576b13f43b3cc8282a29e601f92d427de5e4d67c33ee39fb2c07838878181c9353085d767b31b44f464c361b8f85da9986493c0caa3d8315005caf4b5246cc67dc46c9a119b96767d84afdf4a04997a83330cf4dd5c5b20e3bd54544fc366e429c26beecc38d43600609976f57c5cb0e5716c42e78ed0401dbc04c9cc1b1d132711db9c442dd4fac81c15ce90ce276d88063cf1011d720e97d9f8a3142f32803d1e77fb6f526e892698462f8fc4403bdb2978fc07ee0cef8a11ac258dddc1149c62424a456c3e1caa33d0bcdf841fe3266290e0fe1b0fc25f31dcf8f0a721aa0c40d47d86be628bfc1b80517e9678e71f3836242d36ba4aeb63e33a4d2ef214fad40866543cfe879db3234fed6c0875c22805e8dd5f9f2a2738a89abf6bfcdff837be02797042a6ae571bb06db66ba16c6299efe3d69f5e36febc895a16c511acc4f7c86f14484f2941443e429fabd337199b561a03c9207cbc145313ab33dfc340ea35414d4a12933b38a3bb3a2561db50d7ac90f63c87afdd1e9adf1d7fb074fda05c1166a152d6f109afed8cd64ab644133bc05ac335e5436e7af27b8bb4b9cf7ce6c3a65c35ac6c119ea74ba133c2394596ebfb6a65e803beb6390c5c08d27db5fb02330b394f9f69a7c439030a7be7521de174eee35337af4a3eaeb10461181504e502cd53d37154d15f77123de131e01b238f76144f60df5bbd4d374b8e886ec670d8217976d6960fd711eb8271896facc5cf2471a5a792340f7aa2974154690e482e604ca8bd0da286389c8cb997078c58a3c8c465fa9479e1c1a73d7312edf14623e0bd0e87eeeed53d60b5557ea01cd6964040f96ac144eaa2b9406d9f77b95d68c52d9c7be27e1ba42fa8ac844c644267f37fffff8ba5c392d53a145dd8114763b3a05591cf6047b0022cd397b9d0a82588c071c2f0d895e1aca4036a4ad1f3d16467da80895c4b0c8cde5abd1798992fb03d0d3941c86a1d565818789f3bdd9a4a90e858b94e81b3f98dc5c4600550edebece2608dd6e2d5732a11b8f0a1e2faad68cfdb6d712162adb8efad4e865f032f8f3d94d40fcf8e21f6303cb560446dbdc233da0af32d044e9433daa928ee8924a9fc6c240561386514e557705379056bf4f305e3de71091b05ee7996fbd577756314fd0ae351cd90af0cb1b8fceb992b2e3091a2630aa54c505bfb5631578c3201f5d79b935df2c3b52522b18d5c06088f8219fe5aef812d9709108cbb545e62086ac8869c45b280b195e6f6b4ec3588cde70259fb9ca796d3b5b8c4ef021d6ffd867755d65c5239985712b9dfd6753b2166d1bafd387e4519387245c1142c835229fc80af6e6837e47c76fc7904ec5271c40242686ca3cac36bb06589658d151b3d3205fea5bd35cc9b0cac2d4c46debddcc71ee904be52c0a0fd1f1adee9849b8efe282d52240c0e385736ce0701954254db88f8a3f61cc3e4ddb7b1945273aa20fdc36a0701931060f949555b5a6aef3b427bd60b494b566596a53d4b3107978088800c982a8312a18345c01a6d4bf9f0dd7b587ebb4cd540b4bc48686f82f66bd0bccc6561c1cf665425575e89aba2e541d0493a327edce65817fd6394e9b354813455d8d63e71a483f67b8c0bcf3e20712dd1b8bc126243799060a83a611fe0928a735854e8af6790a4e58749dc55b26b98312d010c60746211209e673e419321e8f339abcd906e54433dea85b10b74bcc27f6da3e9e98e4265db7581db215aaac720e9f598e25ff8f9ea1536f70ef68c48a6b321c1d97f0d79a80a8b8fdad7fdda3c238a2419c8434423178bda545368ddacbc7992121097c2e6810b4f5928eec245e7a6934aaa99b615f44b01f1bd4ca4c8e9df69da4755f35245f34e1b6a7916c4c8971c0ec957271ecbb55d16994a0908aad22462134a89c06c7178031ac0e5c5dab024873da3bed4174bf5ebbf56afa96a936835880debc6375244f8b9e3d99c9172145c1a382a7141841260719c9dd1219cf784408e4497072a9f0e452c3d02bd28e0e25643b27eda986f2a54bac210e321734c3bb2c37ca1bd0d1937f67c3029d7c4ed8907e2429d63d24d142288f116bbdbb3c36056e64e068a3a74072889d84c2c1ac0aaa762cf34fcd24d09fcef67fe9828d2e12a13ddfe7e412cb3a9b132db4d4865c3a8bf0dc3be088cb39114399f91d5e0397ef5c9dfc2bf92688519a07c0532452b063edbb9b227c999380607b0c1d711d10e0cc2fdbc867e324befc38f75b415a0bafc971da29bf382d7f84d3d3c3e9b9aca08b6e33becef9cdd9346a07124a86ec74db4d8012a4abf841922cb60475e5f36dd6802fc31f0d1450486baec071f33c96951248ef55217c765dc86f27f9fb66bc8605c24aae436f62691988f37e2aa5a22f9116a60a9d85fd68ebd397014879e575527a6927b1b17c52f31411ecd0b994f5ab6ea0efabfd7af7436c174397a63bcc575657af8b29695d3c8216b28b120c51d7159af113731710cb7dde310c297be2996fd99f8054bb5ad5798ce0c347b7145dc5801d6b4be17fb1f2d807373b9df791e913451b1747cbf6c76cde10b28a8d13b7bec3bf60057a2b6318ccade24cc674a825592625e92c12ae1bb276ba973629cd5e8de0420a698f9d684b20a85ab3bc4249489664f4caeb9ec6db5690c2ba3aa9a6d196ced7f70a5397c98c79dd499e60562ba3f3b41487ce092c98db147c67ed36bfb4ba885298677b7e53ede9795b068b00cbe715fb2e49aa08c608f9a947485c3a5aeac9e755a69d14446f353263fa19c7c4706c7768f528315fd5a4718caab46289ee44ee59e00c6a4edb2a8b66064de9c871dc0b1e7b35b4c610d1b1ad11c7d9610fb3a9fe6fc12ba607b60e27c5ef38f8ce70bf4a1305c73f4f8f339a57e6909a4196062ba49be03a936b8e49ec8f0a5c085792170115fb0d2fd5dfbfeb96c2bd64f52fcafb24c9c5fe77699de20e3cf711dc0813e3242017520b2a14d51ad33ff34426662ac9a729776c6184e93d3b40c4f2ad34311f467aabacac8555195126ea7f5ba91480d9d24d80844e8a9171c078c25a2003ac4c1913dc3859421ce8fc04dd3be68d453ce3fa663452d39a3e13142219bcee98a803a83e9ebf22f2a454ef9574cfa690366c8665ee629cb4d8005ec917ec33414dc4a208dd57dfc41f7150636428154a5fbcec8c5de12323f97471d4fa348c8dc3c4f0491d4cb0bcddc3f8d6ed16962a6fddccea1b59c419620343202a3300e99d6d7b017b36e02f9eb51323fb233de2eb35a4153ec530f7aa363ee971b090f2deb9a057dbd959c1d15276b22ee4cd8c82d36008eb6a9026fd7a2599873efad587d45d1181031e6437bd87007b6c61ef798868b4bd8981dc8a397727834d213f707eb40e9c2f339c164439497045178d0e6d44fe8d598e7147363ea4cbdc66babd105c4d349fa409d36d84a31ef10e769e29cbd478a582b9c7415d9d3f867aa0a98a0bbd5e38962a10d934bc3b918f5203bbe6e49086d3639668a8e89ca835afa03dd64b3505c4d065c2a3ac06481b478568ed4656bc094522d776e638f471ecf819c495c1bac34fa49b728b325751a54290d612315dcf4bb8a0e709489b8a0bea455cde359e1fdeea247da8748ae85255fed7805225a313e48951efb6fdda83ed1518ee810af02a4f4cd936f7b1f1018053abd301a446f5342ef12e90f7629229b7f58acfdd4ffa5f33b6f709087c6594451c697b0db52561fed0aecf69ec454c3b2f4139450767c3724c7b5150a92d9c54bd50bc1ac79bfd11a71fb05794d12b8bc805367f625a4f1d292f45b55c5168877f142ac6d92a50f5afe8ac73ede6907041c0141dc80eb9788572f0650133c2fb6ba337937c8c87b7114f67206958df57cc9caff933bf05ca1af37ef351525581b8ac13745e739fb7a6701d5391c3502f970915d9521df059f209d52796ca16d4e32bde510ef7f237ce1500b7f2edb8043b36d521e8b32a72c2cb6b1cd1976caf0efccbae66faa9f16dae222d899c3e2029762b1f7320ad3044c984983a39a37cca07430f62fd4c877f1a5d92e9d4d6e0d32631769b37d4efe69b6b0f58e2b4745cc09348433b717af3dcf908161fe7d0d9282eb8bbe9b7a4d76f51d8aa193ec8056812151cbfb5ac3eea01f6dd88f95fc9f498dead9c09b34c44188bc68f1b791323ab07d0879a878cdcec4eed6e1080de05e679e1647bb0d280908a353a73f040758c77efa11187b9028d962efb5ccf7aeb775f0bd23a82b04851fcc2baf32088994aa6da79e82fdef7a89a1861f769f1471e62988d220c5a46e4070496acb5b96e545dd86782248d01c0cd6ef91d2899995ba3b4335bd89e22e9389c371df2326aae5cfd0aff20497b16a4cd9885186743ddbbf2f0251d3358462fd980e03f2de3b4d18853b3131daf188eea84c6fe8e1374e3fafba058e901d1c582aabca2a861705d414395249454dfa56d977cd1145f2a38e5656b12ca0321525cc956caa022c60b8e97e207f30cd395fc13487ab1e80739f2edfc2fe669c8043f7ee7b8fb4c0d34ffe373882914057e33fcddcda4b57b7d02fc900b12504c0febdcf2ea3ace213033cf5c804406d35e090b8219c8b014df6cca2f3ce96962b4644a5cb6f249bfd59d9c65d78b03fcacf15abdaff6701becf6c597b20c9c36b260b3271b257591f8f31764f581763d3dc96c7f3feb1c937abd0f8951c185efce189bb35905cd4790cbac509f96c26a567c91435ca65391aba1e7f784780192baa932b3e5699d373a6bfcee081375dc3811ac2377d2551d4902a5061744a93dc947d3b930f39e472d7afdc43f0e1e842f8cb0f5e51f40bcd5c4f7b64988759f40d6f7c1ca3c78835f25b693cd65966bc3d3a527812457fed1979200aaa16ab85aea65272ac6e5d433ef55fe13960b12bba659b5e1fefeb8a8b1ee72025ee43f77628344b4fbdfc515611abab4fff438009a1aadb3a6e46eae0504dd04f12f0d93ccaaf69c53fde3ebc8da8d5242092dcc08fef227a4d76356302299d228c5fd064dc1b348c9cf9f702e3ebf6beac3960d64abfc728898ae84cec66fceaed3e02ce05b9e79ab819034e8cef5081081d8a09ae55a5933593207e27432ca1c72ceb67c6afe08fbd93859965431ae804d9782c693ce8ec1ccca928af08394cf88b5d36a8b87127f2c6a9593aed177040b6a36b9329f9dab6545cce3bf830183d7c20aef4958b572428b696c19abfa14bd5360f93c2e7a4ef6d09b5440942b449f6d6117d1a57aa0cafa6733932777f54d740f9b87fe2c0ae54faa6e1e118e596126b004640d6c5369fd6b1c2625ade5b2f66b08c2083658d2b0c44f7e34339153a925532c65d0ee0a68823670048d03082fc019703b64f76094c1cf2f5782d565246e4b5ced899519c223daa5805e8d1d9acdbaea51431d5cb0e7701a79b4d11407357aefe76785c4f4b16d0842e92c1c7d008865afdf26551f717b1c4deb8ff42b65ed539e4f3cef49fc61035bf6b522935af88c2b7d5bf4c46f2431a6a65dd4ff3e0c576d418e12c47c3d3b7033109df63f556c661ce54c37b1b5f5c990073df8a81c0126a1c36bb46ab781e468195749013d4cfcb69ef2c88b162f9481baa0502f884bc98809b2ab1af56b77d2ba344d0c31c2a68cd41bc8d36bf2170c184cb131a15e740510a046a570485e790955556927fb9cea3c6d5e112bf89e3ede92a99c9c291d557701e58860afb5eb84f0e8492f91cc4d95b423dee009ab992553eedbef0d6b3b5515f5cb40caccf5b96220502f009c5deeb0deaaeee5b2aee81619111a3503f2ba8d2a4569c4c22cb0f81ef47128c7f2c9798d3fa3d60b32a5f05fd2da492da484aea88ca49587259a7967b8bfe9cdc3fab8a79e53adb124a5cfb18247237af0239bd062c7a39944cff0ee9b9b8fd4e017f0d53af35a5bb8e243dd751fa4a7c7cfee110d18a32038c5e192e4b62d620fe4f076e324a5bc56c28eb2e5b973266d5265405456f41d189a5b8c8cc3814f047a10ffd89fbecf6e302dc17dbed0f627e4354ea9ccdf26e9182fca91df5c57dc6b5ccbae320de838fcd889bba827fdee09dedaf3ce89426c754c3dc974018d16e3cb3911ce4addfa717f240013119dec7cd201d70ee53f3bf80296ca24892778e0400304f6e1005cedfd950804c4f8fb4757b9e5ef25682e65dc3fb99499bd2e4449cca112e3d9f9be7bbd6290ca6a9230df72c5f56f70f50da2327cf2c3f98634598ca55aee77db3a5c473411de08fe1f8d8266f984503ffedaa38e55794ce58707887eb75e344949ab73ebd0567b2b60c2821139579586490fa82e240589fad584391b863944fe3e99126b9965f45b88456c81c885acf7fd60c70c8ae64be02f6ab1172c070378a361085ec528e606d6d6a87d27dde5a2900cbeda0e494e4553a9bc5682ea79c8097fed6e719efb99b276c489620567ff32b8dc07f7e11464bb571b9eb003aaf6679d9353ec101a67bbd1944a296b02689f07a9cbd0c1e40386cdac871e2ed60e7655cd201f31ac9c554791cb6d782e55a970fd97f8373321df7a3668b45fdafc5926f832616bbdb49a730d67f6fb6eda06d8b4b32d40caa4bb7062596b3eeb2d931bba08f52b98e762b58813e24d82fa01c570668aa432616c2aba6cbe2a54b98d6d0500ef2a7bcd10a720b22fe70660d59256aa5fe1a8edd91a0975fc470ebb9629525bdb87d137604a7a9be65870d07f9d2c38a1932aa2bac64a896e0bb8363bd6cc408eb3c959bfcd772d6802910f6d9c36015f4eef7a96590b8fe08cdf14833409d55469786c833ed34d7e65bc150a56b1ef59bd1bf917816b94e0d53666227d8e135e6e3fe9321df720ed466014acc85dcb29f71f55979722a4bc6b67e13236d6231ebcaa3dc482373357e3c7963ad6c0d8920eb3e0c8c6a18986a163354e30842ee7cb66007302587ce69470b7085243ea2f751f8f1b817d2f33170635e21a7a1fa96accd50488c41c62bccd4200b43d6ac74c26520f6b6ef8679c36d7cb8b8b7e60a1ea244604537e74b242bb24acae872a972a01dbd88cf7dfa5d8d382e3d9d910d1997a86959ef41e7f65d6af8a40830230f8660498f67b25f85bca9444eb744786d805a88bb466383f96d00af17f4d0db4c767cf9595843407077b5057cc43b2c1e364111a6712c07aa827e4939e8d959505b6167b3c1ac5d8d008a0f4d3d2bd2530017d29bce2d7615e17f3e0aa9983cf38398d98aaed6b1af37b3b6826801322701e3656528f58a02a0edf0ccddcc927039deadac08a6ae2bc346fe60872522384bb66d88455c41fb3a33556d25db2f02934f6b66aa25e1c686ef2306f7364352d26165ea2168fad6a973a43a2ba3d8b55abd25d6d638803e449ecd86c018eb18e9d1eab1c292f2acf55719c0a7aa06ec428f8febecbf3d3ac7fd4151b452763ecbc4ca130cd94208d74975153368fbf04dd1153ae924e4f05cb3230fd3e39ce5a032fcff5326becc2f85b61cfffdcc63f65bc757dc9a1354382777a50bb029f908eb375bdf98b9e82d9081a0ff0ad0135ed45e5df25b08f8bf03f2c20a13be652d501a86531c241479c4993ead12c893e554ba2e4392625428fb04cab8f29f54d27b9bd9b86a5f40841f226f1d97560f084792836534e840ea8e23daa902beb637aadf731da6cd4582ce02d962dd8a1f440acc55426c27c3451b41d816a76097d1e150d800aedcdacc0f457c81bf02a007b71961126282839d524c8e8c3fc26be412573caf8555045a8c9176fa514bd08a5a73fab0d874e24ee9e3ca87063f228df4ad467333a8c0bdc53ee0cc03e7adaff2db92512c3149420bf05866a26a5f2e52e8900dfa087d8c776d6f5fe1c839d335b6acbe2b4c0853b247d6536983b33f8be212444e6e15c3675925f346ab963b3d36b1e53f5f89b5f8770ed9f5677e397451a7a1f616ea753aa2145b77982633eeff0b168a9931cffcb00dbb9f7ff382714bd352fe8aef4a215c87359c40a2e8a1c6374a115e99341586a003a4a4b046430c7e63187d7ec2fcc681662c084dfb7be74c5cdba284543cccbcc42964f29db0a282e3f72b403ae0305660961fedbf65717fbe4a77878fa60e1a94e4e26559d6dc0432773abcc84951cad94159d228ff6456a031affa17393b2642507ae0026d8c06a92e651d771fe5b276eff740d44135bc4a32151519a306c00b538bfb2c078e829629bb9088c2205398ac9b495cc21c90bb31d1c319716c5f62f431149e18b4b5ef6249b72ae58259657b178f4dd7adc772c92a0549af37e2144ac891f62f6d13a2f9064d9984d1e6acea180159468eb6c1dbf677ac9c997c19224e0fe5675655a0aea66b4e914c5236afdb57949ccd54af61f9cd6728dd841f451aee39a19f9ebd4827ad58cabfddf3cf5ee33d80dc203aec76971b995eb0910c38eb84b483c7f656aaf6539de624d740a71f5bf40f84395cad363ae1005e25f6d51c79b054e479a920f8b03a019eed1edaf3caa1db6553efbbb4520795a58582c24ca09232265ac50973c3d0153a2ad39ddb3d5a783792dc3a34147a06c8f29b4d8133467c1542dc36c5d01009a0e9f389e3e4de21d52c0512d323d7efa8e8e997b60163b331c558fe0f9a853b654963a5f7311c30961629ccf6627f16303bcbf8a3d7278c089eb2d033e01275f18d77eba7714efcee1547f1c4957144f8ecb09bed0a50f88e51cc478eb3fd04ee0e6a4ae2d915faeacd7e8abffe3353847b0444b51337fc710e990124e1440c8226c2887fb4da1d92fde2104cec72f5e8b66ee261d53deca7e272083fb6acc16721edb0b6086c50e17b0c7bcb200f8103907a44b454ce190b2d46b2c5847e740da99da661f1a35fad746ffc48d827f28474df7f55db7df61683f1abe1a683b1092a7b5a2ef195dc0b5a64ded4c292f7e4b47f223345fc634ee28f03791e16ac8c800a96a6513ef085b28fc68bccd8af14e3e2db1a3a1fbd08df35d9a7bed28a1d78d256a3af55eaae6ee0228cc355721ce1750aab063ccfd03bfd51ff04db2075459538158b7f4d44b848612e6f9c719c7889b5c63a87e21f870709c4d3f851553c79243923401e7fd5f59594037e8a5f6b98b056042621085f79ce7e4062b26d9565f186e59ab2c7f5dc785df0be6864f8709e80925a9849d5c23ca667941396600d80f5fdcac53144452bb2149100be8c7cf70c6291fe238afc4b6246d13366c91fa67687e8fa74cbd5db8c13d090953dd9d96db8bbe415b5c8af70cee4e86b0ae2dcd8e81ac6df3fd6927b2dcbf16cc32b560d8854a1529e49850ea473bc7eb5674f9dc40f979fd5a80bbe40c349de4085e3ec9dff21542cf4a5e32211f5705a54e4517e37bda2a8e4f113a06e54ae80729d5128b6faed196f2f097670d54e63f00ee0088ffb79c639b907a63cdcdbd68ea1af96a374965bb478a29bea358a89fda22d6bb9da17d5b3c7e821534694ecefe4726ac42de40278ebae04f0bd9e68db8a25b8078411d1d81420548a379cb333bb846c37ce50ebdd7110a97eac1c257cd55d6e0ca59876525456c177c2f0dc55ec60a03c214cede1e062fb00075e6cb7caf8151041adfd23b3a39f44dad1c808158f0f0d9f3e8b22409f35f9aa24c937327b6d2abb270f4b542c127c9e41be5947ae440fd32bd9bd8ac85dbb7095cd849316ce3b796279cb07ced8da31de54771f15849d7b38c91d2b8a68f580ffb7058a5b45c633358c185ad33fa20488353ef0c548146fe7328b4dbcbe634ddbeb11746c5c971bc2140a0b014c2cb7b0656232553046596d911b5cc01487b505d5fe4bff570e71e88a6b5e5dad33aa31d84a38f086e8257beb3e63060ceba34f0b56348fb84847d5e2774d3a6e8a6773ed8a64dc41db06cae59eaa137b05787ffcd47670a098777ccdff0191961ca1d2476531dfb08bf61b1adf77999cd0deae6d4c95b4e6101188f265458c56a7e546b3cf4f42a63cc6b4aea46d8e812f85f57e611c01be925654576b725ce74c29d551852b52cac4df5117f62edb97784a1c6d97813bfb841bd0950360ffb36bd82182c49afdd3497bb3ee0ef13fb920e68244769f91e57b936b1bf7373f78ea3d5a0af5cb8a4be0e64ac432a891b7cbc924300c504a8e36f510b662f70d9dfda6013e80ec756d7f8ea753980a3f3fed8a25b0dfb26a4456b264edfb69376876c366cc1c6e3d114486c7ca377af8f057f5c78ac5e1bd543d1ccfadfbeb69079d533632db08f820c33d930dbb28b960cdecb6f8b57f2a136d659fdb6706164f2d27b52342995b510ca8d3bc85e82fb4667ae4d865e9e1b8d391c6f04dd553e27d257896651647269da5076b7002fc01a8a6baeb723dc7020a33b25dbef0f82b4d13f3d9c3834cca80914f8a9d7824f692df991954a6ce26605437cc0d50053afff271180ef3bc6c0f1f899098c72163bdf582f8909e8cae7866f8c0b56e702b18bfe5762db2c3a2b751c41c726839053dd170d6b085a45cb9fd077155312fd962588f807dd61ca41139f996958d02fb35c883fb9010b9f3cf1d9b3ebc37b997d8ec1f41b34a4aeb18bae6b8e5c3d4a034e9d3b47ca8e63af9e6b0e4046a124231a85a631e2c4f5f2ea9297efbc67fe989a6d7277c85628cd747da184f345ed9b9c2d4c5ba40b9b42d2e30c38f25d20348f411f2b2688d8d054c4efbd33c15814dbc1e2047c925fa89d724b62b80fb2caff53919fdfa8e423adfc7850cb24dd489db9666c16e53be28e85f2db8c33b7a8e1bb05afcc6bd4ad6fb2d46160b0913bf6c4fd36f43a328108c51e8a93a4b99960a65480c5c93eaaf999e1d4d81b0ebe37baa3c5d6e2f0826a7c3b114d9b0a6f7f9a93003c73b75f245de6b001c16c90380bebf9e187a7161988f2ca25fcb93798c20459156a028bae4283cb82c776740ec060404e144c0c984cc1e8c26156cec75b49a92cd665e53e18900f735cddc9aa6df5492ea69054c0fb3efaa26dd94b7e6a17cde5a5f7d57e35fc9c9e88b9c7bbf53730166c8f6ab6c9d3857854b6d8c9423d183fb7f8cb442b049eb8894e7b274b446a5a36e5b3b84ebe6f05c128fe8ff589a3efb158061912f00958bdaffae29982cdd32b3efbf8f27382af4ffe2687477c81d412c002af64b5931a34c440ed8f1580f735ac4c6cdb8fdac73b8ccb276b0d8a1c6cbd4d1cf950c90ef9d2b5830202945b8986c25685dfba76c1839b134d53cc36fab71bce9b0538ff4a1827eed3b579ea81aa9d97f2679257902016d803765767e95f5cbbf510f1c8a3b67336ecd3a7245f52274c4d3c357b8378ff3a8c095b3b7603474d82b9beba15885a67835a073458e695ee43e6f2ccf12da0fc974abf6f45c7937181ade48cb020709aa43c248bd0e18966cc0d58ea352142db1c4e46d02a17345007ddb7a1609c8c7ecc38c28010d10df03235a5fb23a134ff6cf2740970349170e6ec8ca75db3cb84059665bb26b92565967b9e5a6ce78b9d251d15bd40a3d953245daf61d990653326c54c89524783c1b54d1cb138e6880876015055a4f92c5eb08bdad5ee9edef3c895c5e6b0dd517fdfe2f8538d2bb7cbbec7f29aaa8a95e349a2f3cba10cf59eb6cc494f2d48917519ea6f5f97ed9718029d9d69b619b6cf819a33d27f13d2d661f55e74934f75c24ac0a3d60eeca300579b105864400df51bf22978c013da70e0ef38ce1753014a859496954358b3a1ecbb1e1d22e0f0b6b6931113b10688482defc7592c1729067cffa9dbd50b97dd92dcb31346868e12b6b69dcc607d85795d731c1c297232f7775715d85971dd3911a2741240a70eced815828b1522cf6a038a72b7e4f15201c8f55de9daf134d68958db70a15ba44245aaaa58d3ab6ea5e87deed288e9540cdcc6237437b6610923a13e40c643e15e7ddfadfe537835f43130d44c46fa52239cd820fbd624a57457b3570cb2a29f81659322badc361bf720c04b9371d57712847a1d8e8c0502783d77ef2ba22ca4ebaa302ff2737b0cc2cb19aeca0ff554758dd2f52b320f2b6a6b6408d58e6bb8fabf25e1c4470cbd3ad30151db09c0a4bfc63536b6b15f05c966dbd56169566b55bd262884e09d47295998cea228ecac751e6dcaef581d9bbed0e9e1e476229a66ace9512bd667db2792bc6d03d275e4cb893652e8eed2be385b330df210c6c8b288416be791792d9f7dd4be715e8721e69fcde826c4c894583db13270c5b1a86ffc7a030d4f7d17448af492e1fb90e23f9a20a2871678e9096458c34eb25e172c6f3ff4a3add161c37345b669880f71c18d87ec7303416f3196a18b761a1f373bf3b8a41793600b52094518ce0b7e18a4376a8d7e563b0647adb7f161c18654b79ea9c177f1d1bb4f216855f75c172aad715048333b1aff762543e1823bcf5a325eda4ed4a7961f804ccdd9420e8607d8297a8bad564aea68dbb2368b54028a5c43a43c1e7304207aef1c9cabaa11eb0ebef200bbf7f5a05410c4e022622ae4dfbcff5ce49589781c1a67e8b7c9d57acd00d4f68bee5deae4881893a78ffdabcd5143ea36ecfbc649b3a09f7d3aa1544136ee714a504574edc27ecfa8892f1af6f7a56f95f0baf3cda3a6308b7e7404b440f158b5e7cd1db3d72641bcc45472bd5b3205d569c6f12c8b319af6c9abf7da1925a9e46e3c24fbe96c5070279b9d6630fa9f33c79c811f5bb67468607207746b18c966737300aa616ffe5fd9a75d5c766b17fe50441849ae03fd9eeb00dcb35a01fa0d261810e196937ac1877c03000210346ad71d3d5eaff83a5e93cef10326d7277b6c0fdd59b8f4ab72320e6d3116580e6464a260212bf783ddd7c3c27b0458f2c022d188bac4d5e8caf9f9631a442566dd3c9c3d662fa761dc231ffbee1cb52a6075cdbf7dbd738af043c1e20b2539e7015a4935443bbff103e95e4320b2dde125bf5a31ba89c0e9287cc050f29d544eda56b6021cfd7f813b95e7ab5936b42ffa5251625bbe204bfe97f88670c278ffae983130742cfe1324d54b6025bee54fd3d8ef4e19a3cbcc54fe3038077603be9b39f79ba3a0ee95a10a9151dbebe3d0aa6431970665f37ce303bfa6c1edc67cad3d8f8aec08f7163f63fdfbed5ca9c94412786da1d70a7b7c72c8ada334312e9f22148f18abd62e63d8a987e6703a4ae547acebed1b07f5880574ae6bbb6592c01be215036912a76fa832ca0981f2cb62e639298c303d63141c40fbcfd01f511056f72bd0f6d13d8a6e2c34f3e73efefba0793bd4e0425482ef59037f0715d759b822699bb2a694b8df0f4a26544d644a5a5e7a2e9abe4c57d4129152ec987d0b1166dea44c60fb88cb59ea8448f3903f274abf8205bacf4da88bad865d37fd4c843caebaea9fdba7a6556975f2392230966c7f92ed22ca0f1f670e0c398889e6c52b65d3a70301f6d2a7144cb2b99804e4d29238671a3738361ba821ca211d23e7fa0d0d848ec9b76a3eda51033b5fed133febbc6797fbccaf34264c5ada4f31aabf3213d3ab43b443ebffc5e1574334528ddd4bf1c810183a2bada7f9221b75c68297d8e37a4cf890e07b10b56c5b4c1419b452bb5d26095e78a8460c62e18c9e3508daaaa1c9a736d271553db7cec93112ae7b2fe2e8d864af5e827928c422948931257c7b55b285352117b63b7e111ace242f940d0aa2b92dbed842af1d24eb199262331a8e9bdf0936fedbcf12e736a5f8f1d8bfbbcf9cf2a3a5f05c8267a59d1c48135d447b577fafea5e1c82a5deeeb35fe5eb4f810f8b9d11396633a6b5d3ac75abff5605c42d35a484131cad5d971ff61a6aa20a49c7e6fee1001d89949bca869a0a21b04474c8bec1a6068ae884889d8d1a78787679980af91d35861795d7330447ea80d2f61aa614d39a6b1294a706f6a9ce0caa45dd18316bebd76f495482e4b59edff09870783464a56655ea9e92a5245517c2530c5aa38a90c920f89ffe884bdedbc8f10fc385a694d7392b861d6f409173cd140b8970ce1baacc87e202ee9ec1315d7bb09965ffd516a820027583cbb9baec566c9ec7ef738f8da1369c0a21fce627df9683d1e84ea4a1da40a9a3901ae48175afc09e0faec65a73b4fe600c012cc9150bb527b5c1523592bb9b61fd08368c63ec7353ba0240bd11a08cdf7c4be661c8c3c231327a8ea4f7c4495f4334e233eebbc54cbd167f122276d1f5173a3f95afd5ae40e6f69624ea766812edd56567cc767bd1abdd40298d42ff1ea102c796ee1170e4f81e33b5f15f81c984d625a047d55a4ac144fe699b9040cfda5699f67d9756cbd20bb0f0293ea16216aa0c8fd50a412ea4b3e879fc5f022f56f6e09c7ade0499f90d7aac18bd3ebd6cd3e915c151a62aa811c64176a76897a5d2c658ff40dc11500e6ea0f4ed895792a22608fd8d169d67e4844ac72b592820f8740295af1747d092698d23066db230a52f700165ad2fd9de3e72d00b17f3a733203d66e3ae3bf471462e177de0639b28ca984ec84fc3db09ca81266a23fbc20a90412570494780b50f0eb15fee18f5083277f67d4188ea91f66616d761d42b0e01b2e6e8196b78659122f7156d9a2393fdef31f91e24868b9a70e4c4b699054b749f8043c7a7f8f9bf722c32a7948196836a984ee9b7ab5e35d4acf43b9dab5811b3522c2a41c17d2fc93d376dd373ea95cc9e592a47ab477556304e3c8b3c719bb193c449c6249c86dd8a7a15eba491dc054586b83c21d5d1be18a8269864739ef77bc5e0b53c1606aa94ca886c429263043ac6adf9fe7850179762873b33e21496beee2f750f1614e9b1892522c057ab354763636a4713c71c73f3aa6ec0ba759e08ab56f6e96a3ab7eeaede4dc85016dd88743374b1e6ed5c450bb04ce060b652f39354d02aa35faeadc30c8f55c2307d2239b2dd0c55e476fa57112d0d29afb5b76524bd0a888432e700a0b3fe6dcc1f96636fd5ea909026ab85fcbc210cb5cb798ca26351a3329bfbee844dec7c2d19e4082172ab871a0169dd32fa0d60c33d248d3cd524ca675ba8f766ed0c9cf564011ca278ab73f2971dc95bef7aa4fd6a921068afc9322440fe1bfc9ea48ec8ed523bc28fbf4af677bed26c0f5e9d37ab18ae834aa6f8ee92e33b45a1d9f920c3de463d60c54aa26e850bf1ab74ad95f5c2f9eee982aa6cf22f81953de5ce2ac5a5b7b3f97b924db7b09a2f8322ce7cdc1644dfd10f317c056c6792d52d2abadd763f14b07d1fc2cdf32a70a53a863a16f142529e90c8b987ce6468ab8d4531323ab1dc935571b8142bfd9982d7dd3a58b2d3ade64077f0a1c71e9aee8f6c2288f66be25830657a24f645991ee4cd0e93a0b24b38e41fe0079012f0d29541ce7858a281febd1f9beb4314c196f279542947543f7dc54a308646200212a481f6952726e68386861d6566b096255ba4669fd74f2ed10927f1d13ba43eca2e83a20e0af8f7a64edebd7f6816f257a92f4445a73606062b02403b3d2455d96753a326e89c122c4f4b3fda8b1f21fb9c97c2be63f95e396379e48652dd5b76877bc12a388b8a4da9be68f68cbadbb9a64bc0393708ce6b370a4a382ef4a816a1aeb7028b8fb23f3fdd6d666373c7c233c4f57f2a5ed8a281457d9466a3536ab2a081f535477fdf1c7c12bc46f1d5caa0eb8c43e4e7e45945a4bfb26772bfe3a70beb333c0a29068bb2789569a28e3cee4cfa95f507220332f00af356a24e36c8dc39bd796f80726d2f828c6271493aea53f0d418cbe20aa154bc0ad03354249d87631504da0249d9039607c5859970d26facb963d38305f75109c340a2e943799321516ae930c606e07d3792b18ff5e0bd0e6378b54ebc84e5b75bfb0c6d5f16d5e3faffe59d127af27528879e3be6a8ee354603d42452133bbdedb1e4f08cfe212d7b8e128596a65b56794df784e42c4ec36f19ca4808ef14435cbde540ecf865aa33a6d4d032b94f79bbb2fbd3e010e12d5349e4412afdbca08c4baa7ec6fbd3f9e34037063fea4c8d64bede12bd30ae5742091d0eb9434b5a5a523642e1454d20d229d491de70ccf631473aa1e06a8ab23175b40456714cd939cce1dd626732e91d404f10da0be3f305f284e006f391113ebc520743e0ebf54027e13261761487d69cafb63016e60433fd459c6df5621f84afda07e7e23b64abc12798e2b7e75dc3ff979ceee087b4b31a337fd6b975bdc8439291ab7d0cdc7b515c76dd2e8b13c5c359605ef1544acfb95d36cefcf17139b053d8d451753ffc298a6b8ddf2a321851eaaf1c308fdaf18167e46ecfc27722e38bceadb47fd64de825e1415d9ebafe6690036c8e740936a7a0fdbc92153173fea719e801b6248ced26a2c2622738a038c2ab5e2a953b42ac7f6e147ad4f5159d75edd69e0e84b65af68a654200288d725ac32ab00cb99e822ddcac192f211ce9ae6c45beb23ffd735131fdab948efecbccebf0475cda83e24f2f6fc609cac38fbc8335590bd5f1c4042ec1aaafa99fcea2a26dc613f5a40c5d2281319b4e5095aa60edd44407bf396f6d681ca6235b06b2ac01be095d9029dace7b460be5b9b37938223f87f2b6a396a252fa6376e4addfad92f7c3b16c33ae93e9fb8ab3dd896732a8693d888350345a75fbcaa01c2f38ff954ad406727308a981b520cec6a69c322971fe44ed43bf0503e183f7b4b98a111c96f4b74d0a46a48c0a3ae1597fa82a5dea01430ebf70eafd647a3bb61d0bc06ddf5c3413df6e11aaa45434598ca0c6e162a66ff00df2611bd817c331352309373d36b88793e0b3425c397e5efff3f9e01652e638c9c755b364d10281c9b4ad0fedea37c4959da0f26d653f13f48b09da669b5db7e75ff55fdc80b5901011be28988e1f53d06e1a8aaff0e71fcba0ff747cbe1bc7955c6e2dd46b23bd70aa07152e22cdb204dab305ec0db4547dc2f7f32e06e41af6dadc6ed5f8a9182c09bb8a1c9a7ed764c358cc3c20b27c047fe180cd93feb1b5793552a52a245b4160262e4eae4ea53aecc492ccfb8189286e6b466fa8e21fcf87892a0429cdbdd5dbbe333277a9670c541f83a6b256d0c7e0e09acefc43ac469907a226cc5066f24b53d95804ecd9805f6ba36c57598c36f35ae16cb4e566097f90c1843d5cf972d78cfbc28ca9ad7b168d301b12eae62304fe079204991b1d5256f270fe2e69ff2b32a56df1c4d89c1afdd847e2df0635b20ac2d69ba1d1f4b232ab9d4207608c97d5480e2f1a0e24b3fe57179acfe411ae0a3c175ee3db93465ce18f04b71f44375a7c74e36fd91c6526f15587844a90c1b6d80fd32fc22ca952c8732dd24bd35e6072d3d2ff61eca6fc709188e3e71053fbfe8f1f3683f3ae2124cae60a78e3262cf4d05777f4f02d1da0186b4105236825a8406564f80460ad42ecc174fa4d299c5fae2452a95cc4d187808b9477122419c9336cacccd22e67cd396be68e98c50be92030741e7452bba65baddcc437a2f228db81c1cf3da6fe5b4baccf8e72888452eb54297223558af336b0b1c1f6596c419f7ed7337fa11e3ce886a8bc826754bd9078dca46218544ea5be1b57b7925de64ed01b85fdd57efd521151122c9839411fc907ff922b0f6baef2de1343ed1661b51459d530c2eabc86da994178ecc2b5b452fe9157046b729801aec7eeb9ad68d5cfe57e061307e0ccc61d7becd7724b38fb086f04f73fe99fae2ae40808ff41e2d6d6e4c015c91a4e37fcf76647db850048cd352a84eb40973af76b6e7d0f3fd632335ef3b254dc9733eef0a4eaee9c9da0998206a1372d4663448bf6ec2a39e459133233a941508c2dcbb3fc5af69e7bd5e970eaf7fb24a0f3a148ada29a9266bf4f3b204c09164aba13eecf5212a7ec1ffd08f1d816ef40ff9346f3ddcfb12a4e49fce7b20e58a914918343b496e15b0209fba653b7d06ad46af191f69f9a675c301e26b74f643f2c84f5cba22f582d5ef62700e6e505f235c1923bf876372ed35969dc573821e6b19e7999f8bc09a212b225736bea47810d906526b2526771136d3defba421f14de46e543ffb2c19d8530758ba7cfd1e21b792f9cacfdfa3464cadd2b0aae0fa936255ab4e3c68ca128091de1edbfae45e836e64927c39f4164fc84ee55d1a48a2fce80e1771b3d0bb0eb6cd3bd87cc05fec55685fa2190994a05a0da50150e2b268b6995046015becec4895f0dd7b1585b90ff8f33ca60de6ebe5fd17ac8bf2cb85407be1a544b01ce60999080724dac37c6f76bde576d87cbbe641c15b60d34f38607f028026dda5371d053b8060b58367d69097a53911530f50477a332d4dfc63ff11cc8d35c3db4349f880190b3b4ad4de095251a23ff7f385dfaec9e8478e817fc92b60db1831d902ad154f0dd9d105e195653a893e487ee729a33ded0ba760c67b2958d049a56a85afa47e351468bf33d2c11f258ec8e70b0ef3b046a1883f7cd27fb1a7a0d02fd43300049501fedc20bacf0d1d5523e13b57571b4e3d485ad770d5611b721ada66286eafda5e24f754d8d9073c4bfb12557ec55a251be245c605e3ed32a56bdd12fde0d2c5f7c25bb8cd383e2afa7112313e1f9d306bf0af66d645eb42f7c2df25c56568836e69e8a974ef650a080517621a1e090e7407dd01d373f963d26f3b6b5d935e8337fc3e072a1679617a1ee65fa4dbee8ae787b252079fbf5904d3d68bfe6862eeaaae68be30e2924da052de4e4a7c16ab835e188a8305d240fcc8e3988f083e5d34ccaee6fd28edd9a3222d85483dedc63759f0285433e6d7e9a8c338a748d48bceface6c27cd0bc416bce0b00b8abdff6d30598fc72c99d868918f52978db955146e1b66b3712ba257125c4a956c9bfe1cadb5f7e0a7ea4e677487a537d61ae4724f923022dfc9da386f9e288999fd4d39551d7e7348f10d344ec12731fa4d055df5da7c92086d7db0f40bcfd2a7048a053d0d89bf5d57d2992dc11d53abd3716724b30ef06bf84c14894b66ef4f4f84416494a6ec1eb1b7acb1359674f737db0af141db7647cd6f80f281bb9dd9fbf88f2b45ff9ad4270f1a567470926bda7895c0af45d3e02a6edd78f4c16b3e6e25df2c1c341bdb7a858765dca6472a68346d396c05628325ffd4a159cf14fd3907ad31b7430af7ea2b885db66dd164b60f6894fab3f3f2272833651000c76603a48409b231c2e2670e4c6e68b8e2fd522b1b84879b0e1d049ea197e1bd726e7e1f2bd2a4a60fa17352717baa24878992a04ab89843d7de71eb8c89b1492c378f0b6bc25fd893f79cc52a5ba3636cfa517ce990a21c182ceb8ba738eaae3f12697e4761af6eb4ebd6e135665468e1c7c3a9560f40cd015bbe2af1e7e2727f4d99d58782e8cc0544143ac12df1c8946e7029ec7cd5b222e2d8098147598784058f44ad7b0d485e0ed66fcaa6b9a6d49fce3289f45c64f5c6beb1e0a75fd2df5f7ec7ae41e4eb3ad5c827521ff69c62ca2377d65fd332b9042c55dd64401ec73f9645f0fa79521da0f332bdacef0d757c88e6cf74d5660de96fb414e839514a9d781fb6cab7b2f03636673ca1a50dd959436134e9f67f6074f89c48d5aa244f26aace44207121de7212089dd48d6853f37de89221ce835c0e5b731eb7bfd5eba2c7f0c7863e1818724e9b015ca218fbb13e6eddaafc5d50c95c9f7242d28aa027c75eddf39ca5eb9bbde75d1fef016807186f0621221b97c034617555a2bb8e1a120b1bbf31e96c40bac89a2f758d4f8e774f259287e4e673c7096df8d7d0c7d785bc30c01034751b59a2f7f38da593e8265a16a478b5e5ea1921f5681d0637b83135dbc983f64f002040a867e2268497e998ba70793bf3ba88f4eeae4496eba4987cd5f9ee84d97ed047ae9ebe76d2a21cd14a89c2abb921f1f08bdc1587f13d3628fc50f19c4fcbaeeb791533cbbecc2d02e431fcbb0229123bcfa3c6aa70eef6aa8a2aece0c246a02d0b2faf8b6a4709f6b1a97cfd901d43c5b78175ffe783b598a34e15114f0515320d7a91a52789bd286b2112e5d8d13b790379a03b580e8dd18f2153459d7e94fb5998ba7588fc97a93d9f79a82f5d3cd77e741588287c3320afd02f6b1b7ed43df7bdefd54f9efc8aea6a9bc27d30f1d630091e27458d3a9747df6d02f14b67ab0f038c403af67a7a2a302372771afe8d6eecd546db97ae77ead10994a3599ae1467be09ed97c07b6a1c3710d853012aacb0b0c58afb74466fac5535c4f7d811be1efcc82e49e1b5874016f0a4957770399ec92a85dccad559628b5bc518aab129ee34f6f2d3d3531988b2aec1c31e7589a3222f07c94437e9f13725909413c92a35c9629b6de180ef0e4cf9e2e7514d8bd299c42a91500bbb7d48fd7f05d433526bc76e4c91f4212e81abe305fe6c9a843770bea160cacd664866e0816cacf7ecfe5eedc9c35e13d021eafcb567b990a4eda9c80c41be2850729f99eb311efa551c42fc3b6f9b85410e767d017e89fa4f26d37f7fe304b9d93bc8e25a5373ec711c44ea642c63beae945b87d9abb5b487c6434cd523a212bef315a8a113dcd17e74501e622bedb255b634ae8bc356da4f10bb49c1cb3859fa167d357c550c28ac4fb88660ebc73da0fd1d3ac5b3a7fa6c997e5c0e7a8ca740b78e1982f7f16db14c44819ca5564c15e32ecd9ec7c972b59ab7b1ff1ad2ba2bc9b3025b8690ed0f2416d3ce74ddf55e6aacd3423e60fba123a6eadf04515a89f4477036d31a7ba0fdf5f035174e4ba97ebb9ae7c83870a7eae177c559e02bb9638d2eed51e410225746d6ef0eee6a348b07e2e8dbf9bee9c9e1e22603df597e0b966e78bb4d377e69c2f132f9bfe2c67150de14e1f35831cda942cae0ce0ff6bae28df4455dd09dcdb85c3e293d550426a624910a950e1d7c805a3764b852a02da24a1c7bd436279f165812c356c2537bad3a37695b82b0db07efd70a191d95f7fd1d619d3c53f711b25778f8463d1fa07f850abf01ec235c209cf1ed92d10b96e0721e2b60c5afa10d61ec7c6404ca668f731ae2e67895ae6c4e7e37fd1734216d5e278f579a56a38b8bdd5ddce611e6b4087282a95dfb6d19bbfaff386d2f0ec4b242744cb6d30ef4cd2fe2392ce47bd248549a97aaa0f9af6e175fa2045d56fe6113dc359aab982f34d912a28a0344e27b9338f99b7a82be144688b1873bb1fe8db4ead1cc62fbd557ce8bf6cef497ca7ad55c1435f511cc1ca2f35d3e597df036a385188ab935828d19941248bc6fb1d6dc3be723139f3f021b9d56cca73d1691fc07bd1701fbd22c25ca03aeeeed609d2f309e7d58d5450f958a7e515e4a31e46de14b9ea9efb452ef717f3f9d8c03013c425bcd7b3209bd4c85d9cb9450a6e1e3f9d998ed96034305a09c11ecab0c8aaa703b1e0be28d4ffa11bdefdec03c945a885de5c4b5677a8ca2f7189792ddc7eec896943c1678d548a0d9681400e032a9f2168fdec8e44b4212ba78a4d3008292e201708fc30bb584cdc7d65bb529515452599934868613e5347ab11a26cfea72ab10dbbe356fad0a9baa1785e49a1183de432e92190091b7f7228849e197c3e104ae5bc986046236aa29fe9887795c58c6031b2faa734f08753352c8f67abdd83c7dff8f0d23d260c9d1bb4904344d53d454c41c714cf07ce21740e09cffe5ff21ba8f222ed32ea9a8bff0c68f91f209bcacf7f6c37ff210313796507fb69a16a9b45f8216e3406c481ae3ee5aec9da6d20ee8ad17982422389e9287535f7cbb7508618947ef73a355c26791f00e204a9ef1fc223f6bc0056a9b7f442a3ca59222f5d5f7e8f6632acb1c6e7b7ba7dc6705f65066af51f0875b7b0bc24b2b7e8ef842059fa298ffb1c05c95a00d88716ed010fa4b3697c9ccccd1a7d00332345e40c8802b612022e512ae9f6ce5947ec563d15516b267e93dbd599b54225207b7e56c9b85a65a12bf91718b39342c8b4a6c404c1c3af086fc276003190020baba47cfb825dd2d9834e7bcfac94bf8142afe570cb723a05041afcac7af5d6ce6911cbdfee6e5e57a456047c74aa34039a475e2e358efe047e14c2ca0a027b697f9cce306b6018cff6c95b1e448a0e15245e006718cc54e1ea4679ed352e35c1fea1269950040cfe3ce500974704fd3f9b96f2efa396420750afd4de3f71fc11974e72febb1badd32d889cb78ea00959900679dfea63d14556910e57535d5a5b609eb39ca1b3f173193b7efad327aaff16ebfaf694e99acec44d17023e97f5f8e35c9c8af475c2c46ad88144d9e34a54fa1632c67dd7e0e332fc6b5f0612e4cd8c45bb86d2c1d331eca1ef924f55307ca20534a5bd8bd5515c7f6a6e80bc9a52dcb658548bb829f2c57190c6e743c4d3e608ba057895552845297e2855f3c15bc36730d6cf61af037c6f969afa1445109d893ec34bfe7e50cf0b6024a1ef38da5fa2220e37457677f92f913fe0973e997daad408029397d2110f81270066a128ccfef59497724dcafcd00ed239c91467d9bc1a1c0620b898bddc55111178f1f90b27d9f3bc3a67c0363b8e9dca6d5c272dd8d320050f4f2ee44be4aeaf78697b674a56193f55ba05d03ae20efa1af64d4802036b324db7ac6e7187641a2b05be4ec60b3de34a0a59087f3cc67979681dc93505cfc9ad7c55b2a7d5662bbda79c1313d23dd0a2ef8d8b697e461af59279f90ef4d7d7f3f0d584d2faba58c641ad81375d6ecb957a20f177915828ff4c7945c439774b6bd31a5525071947e1457701d0d4b203d1760e84d04f7b7e254fd62b7803a0ef44d91a8cf114934e8d8c686cd2b8620aef413bc945aa2d739d23531bdb7c410e1552f3a525e6feef1e2e05c1ce558be22042a476ab6af41cc681e5bd0d0dfdfa721421d3c04cf8956c8b72c6cfd4d8956877648c862a05146ad1e628257cf5dd99cfcf1f80915109fd3c28eafb95f016e5485cfd76dcf02bc5a9219bbc0db6e7ff81b2551fe51b79cda68d0d1db43dcc72b0c724776f8ef24ca0e8eacab7f0f2e6c52ec67580772fb86478442601eaa3bdaf8b152c1528a90a097e498241d7ad2918463d8f42efe9a7e03400b2a209d905fd2c44da2883da803a4184416220bce8ae6a3d67552c2b914e5cd029bad9c68f0229fbbd8d05d29704eb456326f1686f725c594ab7a88d1b132561629bee7536bdb5f657b7c3d067413ca71a7576aa607cc9fed3350877651021d100248ccc15adc0ef10c0d806c8ca96000a175eb930145250ee841fc8af6ccc45d0136a7ffa2760f5b8fe0b94f579d8ec9a44fc1fe4db8c99becaa252a2ef2ee86348e8800f3b449af03334cc9b3bba4b678f3b6a51f774d23623722b0b48692db7cece3d2938aa89cd9f9311ad13d8de39d4a8906d52ebec295910a33dc243da4175f35ab6e8e985121b8a27c006b27539ac43bf8d0f224b67cace0fcd9fb7cc048878f7f4141be1df0055e633e8608240c8ff61011d11c0c16d9565fc62020aa285ca612e29b9b9cd3974d2980074a38bc978b5af43f9189d3610b7a8454e91b23abbb487e57a584db97535ffba9dc02d44006370b297113344285425bd991057c10969dc43d3b928ad6e57881d7d0e55d4eb13a14f27ce9448b9c869e71a4cdb1a13f1855ad594454a1be6784d813d4f44e340daa2ff7437aeded09312764aa265cd07af9a81b51328a27cc9b8a47cdd112aa6f5084eba60b993f8154dacb7fa08ebd0c92223a149d6beff117d25704bd284089b0e487b88f35ea659090952771aaddd1d26e1e88258daed8cd89a2519eae7e781fb8cc88a3556a45c09cf1d5d30c040ea630dc6b820e5ac6d1650eb44fbb2380faad41bfa2c1f01ae590bea9dac53beccf63e29c30b292f2c6f58e5d75213c2340a1f7d89c1ddf48f4f19d0f372796d43f19fd86941fde91058ef743d3d13df106811bd5cfbe6d8015f555dc045913f34622dca7af1f872363b9beef8e60af20a8b3fc5334c69e2faa4f93240230bdc5f9e885df6f269f615254db491a145c335020bd1b2e33bc368f63f7b25f135ffbb6b7100e62ff8f9b3c8d4cc9ca7c621e6143e50cd2ff5bb7f13e7c8245e0716e20468698f36bb52bba68100c9dfa0d7bb7a1710f2561c1e385122a06ca12dcd1e0194f6e64294af03b09f7d8631dc40353caa7f42dcbaeaf67f42a2382da6b6a942d4f0b1dbcf058b723cccf27d0b6f3a84e37d9357e11f939cb242d3047355286d571761b188957f24133fc0ad8dedaf8d58dc784a58e1d439cc7cc2a9f7183e6c5cf4cb892c96b656bc148460a64a6e88a06f697bdee939f8308d27d24d80f3f2fe4540401abe9177510616140e5498a494f61f9d5bfa8f90b539b930b56dd00165f42b8935d3b8fd0685455b6caacb9bc04df44f84ac10a995492a1835ddaa6fb78d92c5770cc2fb778aecb13011fdef815631224bc54e31fe56b86875a9e4429efbd543f54f0619f2d373986b714e8b2f09ef444cd13ce9dc8b9cef805128a7658a011920a53be0d212f908c8a21e84ac3afd636964998ddd1af460a826c713cdd5780bb0c8a7f943d330227b345e005aa11ff394716c8c56939f3e0947dbb624d86c9d4c99a5d14abec7cd45f86035387a19c8d94172327f93367b3927bd8b2189c5af6c740969a96dcc6a2e775675abe3baec439d987dd4068b52af2d76abd5d1e25ffccb4a0193aa2d5734b05522803f41b95abb0449250021807c6bf61fee0fe5b55b990ff6a4bebd7832c3406aa36cc98b5065ffaf4cc2a4631e3ce34da2741f78ca4c689b3636191df5c31bcf963bf023f4bef5934325c483a5897188a3c8cf09beed4c08327180af113ca42847ccf03bc291ae150c51e642d1d1ebbf1cfd870b842e057e4342990d87c115f5ee7280daa1f4d8af9defa62ffa81c8fb64c4b7acbf76d5246a9953a33bfdb01e785a395ff701b49bf4682752e0bf1af997faa689f28a6e0de2b1868314b5fd7d97238657ae55558649dd3a4b515ada7b0e6f796f36c668fcbfec4afe764e805e86b2ba032efc95755ba168fdd74468af489c83a8bd57b55d804dfe2db1e53b7b55188ac02f745fd8b38732051d9c9f5662c24b3785919ebc0d42cffa4ca1dc92b0c97981fff08822f47da41b75b0930415a8058e27c9535e1a60981d5db5adecce090cef2c308fabd7dd4f67c091eddd203b18bd2e399a0654a608125c7d06f4f4ef9e08f4db2ae3fe0425620899a3ab322155e9fd3871cea6578a0890e93cfd7285d211a9cb9de304cd9e0e4bec6a439054bdbe54850b10309a28ae6c8da7610542009bb7621950054e93b9ce3ad04b20258d245bd6ab002e90d811c8790bca4a6a655a3a87eb56c5960bd56ec6b8b8b247db0bb88ebe1ed4dddaa8e0abf6f5136f00a2490a7e1b4b4baf808f8454a79578956b4b4c34298e11f4f63ba0a9daa1b5befdd90bb8d76edbc2fc73b3fbe16a135ca77b549a5d0340d0eefe8066bfb9fd75d19db2d81305a8403a99aac89ba9f4a6bba5f74b1c4ce52d072b28214740919af83c1c2faa2c501fddb8d36b6f656b79ede769fe278a3290fc361f589a05d25ca184f58f3b9a6ffbcfb26baa39be3fb5b87fe5e45716a3092b3ff0d4f311e937c6ec8c4c478ff81117bf65523043fdbd54d4ca5d332f9d51e24b4253db0760d2e3fd50925d9be1e02a9b1d4932d3cf774d9483e05ba69b6a93733bae82aedc2c2f5d2d93f05609e69da1d6f1e458b64c42607540efe3c75b132cfd413e497fa91a88c457847deb239d191bce7769c1692d5d2fbc9d77656161f29aa0e35ba194882196d4088564fc35464b5505443a40f2978033f27f7369b8faaace4de013e0693b2268b400f0aca857acdc5c532f15730ba2ff53e7c88989aff2b578c4ef4d4e58fbac75b7f1e8b50d901f6267c1eba9cb9c2ce0091da31fc6732c85a06b0ecbfed3256088857858e7f49466a9cf891c2caf7fec0828f90b801505ef43cf3bb31b72dc3deab0f289472e60de366a4745446f97f12f9864bcc590e322e74fc6d7a5ea972c3654007a668007e92fd0bcab1dbd9497fb9fff6fa4f9092de74e92e16e9e974f9ff1c3191e558b219da23721a5cd46bbf9d7f0644dbeaa6e103b8ef60ca82f83eb967a1dbd279d00a2341200dbfaa5030c04d7510513100bf4d242e9fb893bf46a19c7d1b9fa50cd56a4c0eca916348660b9111c221c9f9e1eb2831c4981cf82bb9f4ac02285aaf6ed81451b35d40d0410b84dd61c3f7711503835c393bdc35589b044d7b0d5ad598c31880322016d4cecf047f5b6d807d5c557406deeee9538bd91f4ba8b887f252ecbd635d05a77c8caa6437d15c97bb815e80e939fa285dbd49057d4d8ca323927a90bd99085d462864061a1882593308f0c7066adb709513c17a9e4dcaf7daad1b50d43530a3c562495d02959100528596e0ee2ea75295a9e62ee1cc3d2c7ded7cbfcc07343bf550b49134daeece7e7f59f17f0f6c216dff115ae139bf15cc1eef4acc1834e499abe9154f5a5d07bd3adbfef3c695e418d091652a462503b0979826d469b3774c4af64a732e345b07697c11ee52af7c9db19de6c5ad5527d580e50bcc4b87a7adb9001449eeb3e66c5ae6d5ad8ed70b101c0b7efabe9b198c8d33c4f2b9105353e9c4439ccc5251673a3f69e8b98b1d25226080890eef9656edfea999fb20884617fc070a5c76156c8d5052ed60bea9e2d6b21499e7142419fb2b7148e3a64cbdc2125524fcdb2e86806f113f2353c5dca69f33672d64c1dcb8c6f389815c9bcb8695a938ce43efb8613187cf225062366a35c7149a5e066eb9dfffedfb2df595b0c8f4f23e97bf60e6c9d5e53c48e4b7a96dcbb336c554b7a446ad7574e29e5fd1cba92a7f06e14df015d0383f86c95ab726b0c3167f77262936687ae81a187e006e0f2999e614ef3b34bd3812444abde9de63aa41607014a00b5a503b448f3f46403311c8e4671fb9fa37d33d239b4d6fb857445ae13665279b745e0bafc10c83b9af160abec03d9d9bd6a2a6906faf916c1136c3ac49527da99b6df6c8fba8d3e5928be2b3670df8d4c5e69b9d3a7e035e726c0f4fbcb118c8747d7017a15ec654d1d203aed169d5f332cf16d8a986ed79ff84e3be968eacdb511b1722a65a11be052f494fef35726aa74cd8285375adea27ec458e84ecd1a44c70c7c5720f2d706aa40a05b9e7bc7e4ce0ff9a18982405c410082b3b3f54f24d04a6bb9de3ecac27815c14e44f436577d497dfb18d3bec1b72ad82f7f04995c6f751e12dcf81037b42ceacb94bcb7beffb1562df213787e47d54c354df1ee89a7c3ad81642aa21fdba8d77f4af89cb0b38414be9213b8a721bcee705277ff5ed72c4b6e8d296cc5561fa9bd82138ebc65a588160d595b8e7de531c9f8f28a83bd517bdd079c0f2f1d72e574caf8e704ddaa79a61acb4bdec419e3638442bd8d15500a35abbdf24b9ed0aeb1505f7a565363953a0c224a2a15ef7790e71511067abbdeb8e7b69f22f3160ba2715dde91c4b330453eef5a6f63951c6301a8242d98ab479b1e0a78bae34bf6dfc024d6711f3b704a9cd25cf79daa1957f8e7c8f64df9cf8781abd907e7f050eb0b3ae1fbeebdc7d24d3afcb31bbd83d3d6a418a71ea5b63cb9c25d065934cf7dfa4837cab55c76ebbc3a767907b3fe8414ea35794c3e310edefe289216200e82d49c3532038c3bed06bb28652564b4aa548689c7a6faee6e58e06adc5587c7c5327f8e7fe473b5f2c960a3d45469059813e941f32ee130cc39a35fda2b9afe5e87aaca7e8f7f37e17f40dbd3a15b0834ad03078e8bb6201123af803d6faed0e2f0fe6a117154f27a3f034c32c76aac9116a1317d3e473e370580f8bb59fd7c8f487c74aa6c678994afe48f62674d3737cc9356793c7ef39dc042e76e594c7fc4963f4c4f0fdf4f4eb1aa385b244f3412b736e3d7f15d53679d56e3d0c4907345c8e6f8aac250c8edb483d683fba08b77e931b21ab1b01d1435098c18758020dc19900a2fa735af56f8c8e0938663e06dc2e215d491d9e1706f16dfc798217f0fff747d67a859abb65ada35c28f1fdbd4a8adfcc7103eb56a051319c601b72de9701f44ef8e1aba7f9ee1a36b6e814b57cbed0efa567e9a69b2d500624001e4dfd8773a652cddd9b3633a6037d899c354d936606f9eb6cb0267ad9e89c42a67597de1f649736f029bf211773ee44663a1026a786e879d5cb5e714315cfeb93921ecc8e8c4ba190ae0630d2b06d48697b125b6e229913dd8e1d7e3fe9afd0af4f14120fa57245a02b539e712d6671f7faadcabb004f1320c6a7b9b31d28c48c04e349c24b51ba19d9844f0a608b5e33d0b4fc504be622ce554bde5dc209c3b83f0358a2a9235a2764bfedc6f33052939d605275e1bc979aec8ab11b1aca71ba2793dec50c3b4d8c2767529c7fc584aebb0ca39b2df6d033c47733e8d4afd9ded9869fa2c6b71005b7498c8a951b20aaa55ecc7eb8e1ef25cd5ceff86b993742fab1570feb57300e8dafc20b3cfee9cec5276208a1202f71567a5119e1c629ea15c4e53f3b7dd2040c8089a603361511803f59d09bfeb37ce53483b11d42cb9565ac6119a314d4f4ab85e122b16561ab8042e557110eb9222557c5b4aa0ab7af5d0cf3ff27f0cec79e6d3d2a695bfb1f9854ae07c3242731f92e673b6eb0eea9a580feb995e33441c821de814c55bb83318913b8aea1610875320e2693f718e1a2e9ec6ff3286b5c587762ef99d4928ec197339f06c38fd3a3d3cec77b4abfd4c636ff23a018fe34e7d677f01d7f0277a8380c8289354ab42864dbe7546c968b55112debd92687bc1004176ebb97ae7a50d5b93cc64fbc4d00d815aaf77901c123e50c46841992afc4d9a6dd687440018de770ca82110f70b17ba58b0369e515bbcdf705e25da62aed9d010d506c2e6c0d22b3167bdb1f6ac2700ef8f595a9e8095e8cc27b794804039e2dec87c30685b664ba203d79de79e7185c9894d890ec8495eb04b43a5c5996031eaf6ada3850a4c133b5206f9ef77c60d9bca5b3ecd1e54f894f1e6fdee19343aa81e272a13d441a9e41fb90cbb608c9a64c80464fc701acc69b652a5d0b2dd2802c16f3b7f9669ad3956b019246740eefd07f78545c2069dcab179cb666c7a72b9c20007b35653487338889623d22eb6e546bb79b90e579c85c2628dff0f022e356611bcb5b308b1aa323065653cc7ce4ff28d3d0002b854e924d249352cf907455a0df1d349a9264f6c86303e02a4c91d3de4d49f29871230045cb0a46d98e698139b567ee364ea677df738b5773f2a60c12d5c91a0e1550b73e37b1a15958b743a4095ac984a7af7c74663fb86fccdf43716d77c69b36322e31d8360a3ec58829d038aa757216146e6e91f3ef275430bc09b91fa522716a95b28415649a3645cfab3151986bf2979761cf53ef469db4fe0adfca574e8accafad152a964ad2d65893c9740b3dc983c6ac05f5a8e1eea534ab548e6631b9135cefbee1346e33dfc644b14a323bf9f2a8c43b57ff1d7c274085d424d9f6fb518512320941928ab6b41b67d4a2ca8bd219e54723c9c3938c6d3cf6dfb4cb27be2a5124b35f25627e478264e1e38b080838c088d612a48cb648a664bccf0afc8cb00d59f233e80ba87e9a0fde86d1691dd4d6f38cab8f8959c2b66d71e18ca02423d9458e657f52f71ba84344b676d761e1fd6edfdb2ce2ec275ea3c8aff57f7cf50803079fdc7bc6fb2c0e5e59534a76081b1a1cfa403e78025b33861769b1723b4b4902c536ea7a0781d4de1359e5954992f2b5b19f5ce57cc113ce1b45aac9e56c5119d47d5514bc7b5f9a6f859034e94806ee52256eea167f2bbd966b979dd93be0fe34254a67a0a3b52e3d08cafc6dd3525b23eb584dbc949ae107caa03a31f82ba64c37aa8c2963d85e31ed2ea75608880bd953668aa87d47a744402a1f8dc04069ec33ecebadd7908f6ca3afc4848e25e609e4f8deb32ab6e0edc703c51dd1eb6abecdec64f07eabf2a745033fd7cf6cd285e6f019ae9f79ac34b6c30784b742d828020c4796cf93e5dcc0c03d3d891bc43ceef6cf583a6658224448530b3e635a3a84472b229b207c9d665a2305e14cc7f542e23880f72b1a7de72b7fe5053c168b802b986663081dbe6770629019a3d8f20f1fffb16617019d39e139afb46f19517f92bf91a9303c0f0b3f72d48947e515c082ac163df42339a793ef496a19c262d097756ac00481878fbe135a2f4afe4784829d406ce8b2d4c9b5c7490e2ec9b892848289e798642c7f9dcb02e5344d86a598560be55b9946f34a516df67e6c3d3278bc2d200840c5cc95781b863d4bf3e8f6e1ae5839a8034516bac4fe797c7a9139b5cfb3553614749fada7aafeaac691b83f9c13a54131a3f3efe7aea1a7a5cdf5643c8fff8c7345037aa9a9b100623717db5fd9ba656dc1d937b0a7c928971a5fecb6d41136311dcfa2a9b7fcb4c39d40982df17bcf13fca7a7b0f3dcadfe5961d81a7bbf6921c751a06858917af74f41c58d7cccbb0a47e03acbfd0327b82bfa3f3f43c7efc6047ec49c53e7c65b79d59edbc3531cd12259a5b4c0c5f7197008b8ee84215c1281077dd5f3776439f7d88f708902339dd2532a002b10c67a6916b60178a9b2736dfadd57f53c699524c2f19907382aaca77e93a0f809130401cda4675c0258b53d541a1d32efeada43ef649b8a53c534cd5defe05b6dbd3fd61b8bc1ea8d0872fdd01f3adc3d931b846946683681308198658a92c88c23f279784102291b2a1e5e7a99cb6193431e1d490fae944c55c18eabd9e5dcbf7f68d877ed3083e2676e850eea1ecf8ac31fd21bc90f50d7428571a6e79979f16a7cc04f6ac2a79da18515c5cc1bdb372602cb288e675c093c8a755ee0364d03a0eb9b0b4807249f20ff9c384cacb702511074e57c6b7095c81158909e751f1eafa2da30fe171edbd3a0e50a1a1af217d5789b613b7c37e2f28d6ed4514001c3c966b616b8cd79ff420fce2875f8576d3c297b5b5fb301d495b26fe094727b93dd1e58fe7c2342f78851834ec4691e4dace228869ee46eacf06eaf63e266863b110d4068b9be275bfe5b953d9e1e808839af7fa63a8991480e34d7d315725aa184130fe0553691b6a92abd1f71b7ce8a7470609dd463623130c9ca5823a021efbbc965eed98ad42dc1aedc53dd79d2b9204039ba4057b6f06ee0d59d054b62db5f9e65d424761d41f276b9051f884037ec32453b5bf6d9f824812ab0802c7524e320123f8ddae9f7682582abc80357e2d993cd35e32ddc5fc330f2f9a8adedf7087c7bb4b51a4534dd52216c303c874c3e47a0e54f5326dc21b392ce8534922ad9bd4b6876b91815409c7136fd647588e0720c9347c91e043886ce94e493aa6882126ad1cdcc93d4838ad5d569a95f2ec305d6159884beafd7f6082a2e8cbba07b67440ec23da518e6820c36708be3e302ff3d4f3aea081e11eacd1f7f94cbd2b8551ca3e0fbd0e12282e1ad0f025f09f10d27640c38082fb8d605f859fd986cb81b62dc1eb8a3253707f5ecaa72416b7cb40dceff080e6e88f0cc14fb1234fcb46ca21d275dba0c8a1b43f54cbe054d461df991f6ca30e00c96df464962077660882985a0dddae68913753bcf921e190a9f727c533adad335384d3ec0a18f1661be4d82c39f824828004b24fc4fb0f1748af0f13b9ba66f7b30ed26a7f2582c8d0bb1aae7d7d97fee336eee8f5b6402d83c6b478a9afb4be3d7fd5d2f11c96c2515f2c50595e46e8d393342f943b52f0daf2c5739195768b3de247f08571af984a39ff303090fe2751014e7ee7c78214c819d5901caddad3f69c449445ca2df07466b026c3384bd4ae265526a8278a794d31315bf5d3788d527587e55dc9142c9a82974dd4499ee43b001d437b934442811f0768b57f8ea96dcdb01b8b87251be27637c6d66c35a17b4c99ac5cac979d14602f6f136d999b503d57591808960164c5723d89403b9cb458cd41256282a440d27fb46f6be6cfcf0372752802952f83c74a0b7eb670aad2b6b4e641c7928c41cb42a7df7a1ad42da6109aff6611dee7644ec9918befa46649f0198041dafe5dcf0b509a7b6177f6a4f42ca60e1bb631971d930e02a4fb1a50a7a3ec8574e1c0b56b076a07ed53a4b447847facf82c647676d8f849af16ed5b12df61c54eeac61ffb8650cf744ab6252e8aaae34fd68b121b4ccb6d6d194581a70df1a665992db128aabb1fbaf6fcbf28360a0c33bdaf8dd5f8bdfa39df7973544c22a1e0755e06eb4bbf2e963c9f7853ac47a9b7188149b2bbe0c2a36eac4b231ade92e9da09fd75227347e3cb3f6aa698466ced1f2de72d907dbd27b2ad59ae4a41bf9b4edb860576371b75c3f37bfdc6b6de4c501d49c422c8ca71c373f06b20afd1a84151ef8fdef098102b3dfb76ae162c9732e1c8e80b55c624a0afcb335f13b99cc8e2c2ad915c84853a88f6dd3982ce48c3e1339b6755f5a14818455cb9a602ff6cf82c486520db47d95e16daaaca042ed4b263c0c75a0643fef38c21c49af28f51086f5c17b2f45987c8812306de77dc5a38a91bd50148a2b172338d3848e134d9157e394cbcaf74e99f3cdc26f0bfb79c727c7de925188484f79a2f5349c5b91cf1a9a24433fa7b14884aef3b771e6d2ff42085ace5d2f911b4fedd3e979958ae856296d3d0e086d2238555c7afab0ad4bd919556f7ceba81610b42174e244fce03b8007e8823ef416dddf55b3c4eb76f1b679ed1b1bb0b9ed70258088aabee7cb9d91b8cc3daa7572f0e01e7ca41536a7bd18980ac18a93b711569b1f3bc8e327c3d93bc10285a88c7c007f1f98492fe5473060b3e388d0017c78898e85032cefc913223d10a3550a8065380b709eb15db3c738d97a8ab09a3c1628bb27b2b8f9bc69a0f457ab773e66c5749ede5afa0406cdafd46b35df9b081e661d60f1bcc55e8f7ae599d8067f4ad3112fa389250e54b8fff006ccae08ace9bad4b4d1f7e5540acc8376986f3b0a66aa36f78d0b6cbbd080b0235d8a9f3db6f57c1fd931b6cc2e112b245a1f236c0ca16472fd2e2d3db80c8317d03e4285f419505fb7a56210a274dc0f183d4a76c22cfedc703ebc7e538713ce11f03f38ce797e00ada856589675f4781abfec588683523a5906aeef27c8f24f8cccca59f40ca0dc19b42eb6876cd3a001df0189d105a78f08bf74635eda4e967932e3816778471f0d935ed2de77922d4fb2e2e31d38a6f3168be4131a47105d94e608209fc147e17ffa4b3b516ad9ce5db377abd5bad6e930cc9f215877d8512b32f5aa79715c56bc055fc459d6c05af087416b9a034fc80262e5d06717cbbe6c3b49b6c13f5b3fac5c4b6f365cc3c879190f6ed055224623c6aeddef4e9be26817e1de9edbc5f7cf294fd35f168f7eb2bb1517855fbae4b1b28d2a3be6659c58cfd2742f50b1961a986380fd6ae36c844071357436a7989149dad4f9c25ac45b76736c5e75ca44ecf1f8c4ce4dc681b57f4e532792e50b9201b6a2ecb0d8d1c67cbd62ebb9e87821a0a628a0f791b44a068b2c22bd06b1c5d4f2ec0fc4b53e1e89377b56acd40a03f53b0f7ab09caa53dbea9f8f717c35e59f5b56dec5f409a125c780522eb456a424fa3f2b4b6b232e694b8ca18ebb5687444c8df5792e161b0094be8347ab64cacc5e1d9a690c7f4f283a71c9bb71c3681bfc3e239b0646d29274ac59bde3c44ea77cbb71fb443f84c8ed089ca187bd751dbf6aa1a42a37e8fcf271bc1a5b2f833f0fe70feeede467bb3fba132cbcda6a3dbdc869d72d582346ba12cd6ab05081f69f0d105d43bca9ecdd43c05cd81017ce20be212f056c1eff11ce2f98ccde88d6984a2605ffdde655a5dc33c4e177ebe7640c5090e9bc0c8b85421f60c1ea2bab10bfd2747cbeecddfcf7cf79275827c0d46e900579edb3d5b50e115638c92d83129d4890ae8ea40db7d6fde9562113b83d260882d89173c4af3d394d7aead0621ddfc442fca4f6faf42eed9333c234d0c8b8e56a005a8a89a78041a11c17b7686f500441d575115a3186ac3ceeb318192bbf66018542163c6c4fa24eeaf5a7f21df93aee03ef55e74a7149b1a0b537af2f22dcb1181a8da11a62da872a436ecf734e60f5ba2db74fa244b8b23072b6f059738ab8809f74a52c6f1feb51ca5ce304839b1b0904e6b8a45fa356242b61108be5308837cbe3553a09586fabc9ccaa00bc31c832b11dbfaf77b9ee3c457fbe68d7a998821bd4035a316123bd2d49299cd9bfa973f1ab894a4d953d1bcc00938d776579584b6d33bef30d09289b8e7f79b09145b354246b1250501047bda1ac35550d63fbdec746f032f4448904aae315d44316e3a20c73abbd6c9bff9dd16bb4989fc181e9ee25b7bcdf1f93b53df926b26f86269eac0ef0f9407052eef2a3660ab681710e134c75a463d5113b0db4cde50a630ef116f9077f4fb27b542d53dd10466f6109326ec9b7fa499b08a4071ea8bc430f9fef99b22b6daab8f1e71666c0744a7698acf05146ac2f5f0d46ebb9676ac96260bbdf8fe7d8fa0ff13ba62493a686f9e130c3b8b7f2ffde5d19e831fb03b8deae9e5c4a60f79ea0e1e81289aa9457d693b7d8f30ef6b6bb6b7e4666012010b5e83cd06c3d63bba8e492fe93f90b9d11de57404679b1b90a62346ed8e1a25e834db63c624425d1d11aaa2e3706584ea29b786513688cd085b176900a5d2152183680b45ecbf3a6036277e2c5a38ff8ccb1bef5ca7548e952bffa9b48aa28093d4861474cc3a7a5e94bb7b96df5610656bbdda42c22dadf75646b65d728ab7f491b5b59db50ad6aab1adfff8e4df6caa7cf4cabd04eacbfed41f2179658f5414d8a738e40ee930d69997567b4f85b99bf0b5cefcce4723f5c6fa18ef94866ab9c20ea2a1a30acf97d5cbc8e7ccadac71892f40357d82ac4eef0ebe9614132e3c1f1a92fd38138f603111070a48a84dd6e1b439187f5856e572aaa2d5baca94052a3ef9033d8d3ee37f8dc59074168f0699de031380df0f7141f199b54abdfcea452d55a343a33b2c1eadb642da368525a23752f76fc91d98b743c06990261298d67b70ef5d9438f680bed55fbdc6e3fc8834979078ad590007c8d007531d3a97655fbf56d1e107776bf565178b6b906bb07f27e2279cd246814e9840f9438b0359912550f8a348e78a912b2a1459f9cbf57115f74896044bdf65bc2a1c75be89db87333020d9166504831472a694585a2067836d83e055cf2115338b6afc4d83bf46d2d4a0553a2c58f4ccf6c546c6d643ee0ddf8453e9acca621e0f2cbe3a94f617f9ae95caaff1907351d18f198b5828d9420884d3a4fa251f4794a08b9d75cf46ec3d7f2944d993cbe9c940b4c5dce410a9822679c1442a58a232d7cadad7740801056f8bfa611025874c66d8dcf79b5558d64cedbba43032f93fbc3dcfd6df9bff6d1674b652db93fa54c4f4f18e5d77015d7757d56421960132d64f65c7595be3ceb86118a8f839a9fc1c53bcdb28e825f40a5edd29c6208c1dada21f58481f06965c680638d4c4f0f57cb734792a95e65c33dcb0e1e4f309795a03d89173ad92440b24321f11f9decfc5b8e25b8f3c731dfd01a193f52fb4890b159c8defa6d6f36a13b4ccca3f5db97b6f6b66f29d26b9149ad04acdc157a7ebf16c77afb8de797d57e7a5a1be8b8ac1fbd35ff4a87a1c4bd08f114948ce075527e3485eddda65b1dbbe724666c4a05dadebb2dd930d6a04f8eb8fcbf1eda2be00b9923e5d01959519ddb1fcf74359b27fa59dd6c2a7e0576fb308dae0217baf9f8a63cad19273b1bfa33c229623b489a951b58b552072ae74357bb48d91c855fc1c47833e403e72e760ee4b2f363453141ffcff11e6de2b1ac6fd784d46222accb837b2b9719c949b6482a9f6108e8eaeaf6bfbda5a32e0e009281b974a5592d9e2a562723430d0a48fb583523e60f8496c552dad48c53121c74341288e6bcfc80bbe12736a5c0e6470bf64139a9176135847dfd0e586d0b047909bec84eabd6d294bfe84a085abcde0786f9f14a858149597fe8b20260fe862b79e07aadab1df2ec214db73c5da78cf2e84307ffd3fdf72f20503bb3b6274ccf847b6ed38b9b110305b127e8e81e7fa3a7e2a766d3e9634186edf00976b6e7e6e29bd0730646f202e3b19e81d13be0530f43246cde62404504452bd8b1b9e5c2e1bbaadd07c80a7408e044ea4815f8f8033b735e05fe0a5b46c9bee7220d6086fd338e8ef94b6180607828ef85c939142629ed5dafd0c1a2d02f6d5ed067b3abb21434cb558adccee609df87f461e5fb911cf85873a752b2a02dbe5c61121767a3b0298874e6cd0871739739a46bbde3fa7cd993e4657e2b8772a4101dd802bfdac0106ded75d34b47a1761b9eaa44430a48b2e92c204ec3c4253a7f8e46db97274c9c466cca1c483c6edbd562f981c3fb24afe8ef70ca2ede998fa267eb8cc526ed5a40840d73cf4b3fa8e65a018ba8337ea94b23402c769dae19ef6702acf3064fe8cbfda57219ad7f7cd5e1cc5b1005bd1eb327c9c108734810d1efa3b8cf85daa36c50bd73b353f9bf4fd8468a4e63ca5f775ec8995afd58c2038c1244fa1b8b53a519e1e5173921367ebafcdf0d741359cacd58993c3eae7cd1746e19f3bd7d4e16ba8987ff8de1affe0c66c5a71f5c7241571adcac2d0bda1e62442495f9bf8313e762b1241df7007bd5247349fbee322ca6e5a9764b58f17ab1b64b21f9df920384a34a092187652a6b691dfb2f4dbe642ce569672d733ac0de80de11b7c7e9e9afb376ecfde5b27c278e1d539e09d1a2ea3e540f166238423289ebe1757ec3a42dc0a236721c459494be73b3f5df8338b10bb3ee3ad2b9a252b418731c8610c8b2b75d7f7c074b56b212207705a7cf0e1afd6629bcfdedaa6133712675cf99187cbef9cec5352542b5772dddf78f134be0ca031b250861e5ad89d18270d5520270ffc6182c45c92990d7057eb64949926ba3dbd2e03d3c1b7b263436f7f814374fafb2d9a22a0ebec7604d0efdd06ff1659885801325158295e9dfe5bfb9f4eed101fd1c00d03c10a637f383e690cc5b628e915289f8de0f8f7dd8e13f6aa02878232dd872249f899453c00e346ca68c720f2463e45fda9fdcedcd542c4ab980c1fd45bbfc2a0598ef1b0ee27ff25f34181ca710ed73c30c20b6ba277ac491a7587d600033789d57fbe8265b2dcefbbfd59c35e18537478b7b75967f4ccccfc1c9ea1b186e012c2ddc1f83b7a09a1093ffd1965aa33fa4202e3eb4d4be5554534b6d3a2de6f3483129991f0b08f1aeed826c4ecea58f2383ba18edea9bd2b0aa508c832021b96e7e551350f7b5101a9af567a3eb1f7b5f801b291710fe046f822bd61aca425dec5b3246ea65107bf581ad35a16625269cdaa18bca91ee348e136e9560d5928e968da9a9c4e1fd3b1da6ba4303e3c1c3fa849e615d2d6413db1c6f2e082245d698fe5feda1a9fbad73cb07290d7d5422e31257ad318a9eff0bb07b1a2c2b09a279bcd3b22881a9db6e0e84294af9f4376788ea3fcc8e2e978b56040c47885814ede1f3da034ea5cc7110c4bf0004703167ca6bcd3a123b858bb40de7b552e1c70fad23d78a83e9f7609d73e1a6c6d5c2fe0c0ec67de9f79de652421939d446e39d50bd5b546ac632c94a0bc156d00f7f64ad4360c2d79e5e1fab799a727ff5e0d4d5b7ee06e64d8e6d1ba36a2ec7cb59942c042fbf6bd018e091ee83871cb0c9809241da70837311ec1a8b6c6250df2c8e5400ebc467675ab923c6bf09c721a1223fd1a1ddbe46c6aac90bb5ce978a53a4911d20ffff2834d9ea1f2b1763725c1895b04b99d2d4e1805ce6d8c719c5086b48ea64127ef67ece063b987cf5a80345b274088b79352a116539fe2ae8a2106f819c609717f89c3141c201fa12e30921212bf25fa90085451caf43a45efe7b7d5f64b12c9199ebc138872db255ec3de362e7701c0e530d13fda520f6a2f8481c11b058b6bab79f91df274e80df1b65b5b9ad621f252db65ebe99f2b9f6407a57154f69601d142a902fca4b32ddd540580009d47c3fff07cef8b129bcbdb03583e192eb99370639cc18bc6eefc8e8becec52f4b154e4aab727610af944a53bf11080bb56681ef095e082de0f516a98f8129caf44903f9913490198cb0f5455b3e34f331ea6d2379a10df9311cfb6dcc4c05f9ea609660ee5ef85d4d660621082de4932385046d00d25e58a081a7b14d0d60e91dbe13f7b7eaeada74ddf58a4df617abdccae4c991341c18a422a99e521d1b5038ec18aa7341c37ae42be0261b17bab53100f48c02b5bcf49bb38f232d4d35a3d27193a7f03ea529b774405c10502eec89dbc2b26cd7aa9ed4e7417c349de603d6bbb0def55efca24735219a2f843c33d226892a89ffb3890380fa4ca1adb41e95bb8052442ab6f434d4b017267b0b10bc59846d72c5d8d3fcce8acb3ae3a2b68d51e7774bea70dc9c28c614d59b9d162b367f35fe154cf06a5ee412c736862cea637c45938672edcd2926dc771d07e2691edd1cee1645cc0c4770913b094f8e347c0d323f09816bd5df500b78ca9837801b262a75c781d4f54b3400403089a6a6c784afa5875f2bc1244a89d559596aca235700d9fb89611df1682b8a350cfcf3579e9e7a528b58b9f6124226b3ede8c037d16614c774df55ca92276016083a4c169dc190df4a880537ae1395805fb343100d5e44cc2c4022e7be402030b131823b948caf94acffe93d7579443f256546279696728617f5a401a378162b6cf34534f5c96a8c0977f813d92b1ce2f1fcf9f68ec3707fb347c76d1370deaa129e22907f6f861ae36b22395f06b0f9b184a56ebce0d57af8d62a65b78ade2c1715bf1444ddc4204d62975366bfbcdf99ebc4f12387235ed2c4aef1f483deb1feb6193f1d391935fe22326e69fa1adc5a4187963e28b596e0a15d8f008ff31ccf87dc7b47dd17794b8213af8bc784ea6727def4e389e4ee04ebd4e4ab8be6c9814bd69549f6fdcd57389b2a2bbcd4c9c9353597b53edcbf7298afdd48475aa08c6e79291625e0e09ede80027725d9de5e05ff7c901ee1070de8c37e05ac3c61a754a3d7a18a03953d2c8b3ed245f3d5ace5bd16d6df79984455853855aa9a05f3f8b48222d356ccca7864c8c665d095d72dc6886cb582bce64098c92d9c4267adb67ab8fee02274bac39940cfcbd36958c6450354378f2fb2f6c94ee8fe0a5b28641fd5c0d0538ec5165f8ea57afceabc9849429f84fb56a2c513417160d6894a5d2e554d57dea365802e3fc95fabe6acd093786b5d8d43d475fe6567f7114842ab8f3958a3068096fb1b5bf42a4ae97ba316a0813477e52bdef62970043f712ccbb6d14524bb599e4b7ec4caca95077ae1a57e3506624d8a8a663ad4b68b4975d2bdba77f54573bd29bcbe90af05dd27e0e71d5740ec631a89419b515539bbb7ad1418ef8f7c5e8c180e9d67c8a0b21d3927aa7b5d0768a852bbeef5cc1045e386df66e2744f83effe8d9e74b5dbfd206861b57378e5b110a8254296ffa10e1a28749b9a3bb9ca089f164351048e77ddb251524d1b494fa411cefa34d864292b34699b032b38554e8656a916361009025f397693caf757ff66c1bb98294b26558275be312b4ccbb0b36bc03c0a33c6b053b50f3cd9f13ee37292d1080f405968a92d5203830b7e14c308dc04247822ccbb09f4f173c3b2aad9876c2dde270d907f7c99e0d0b87d7b62b4bce327083b4ba07bcc6d50b4184e2a77433976a26d6dad8cb44f6aeb6e18b3e90044af9fb6871eb1dcf26ae07c929d3ea6826e8c25c346deba26d94e41403a11d616b3c154ca351e27a56b378e6e37eed60f829c3f317128236608e3a41f002e0b0e9bdd42bf1f05d6e2e0ef78e90cb1563b0d1c3c8d31a2b0842e71b2764a1e37606f616c97fd1f4d57a0bfd106e53dc782ace5fa07f8d6ec198c844ccc30c13d73a5ef56a9173a7313ce273efe7204409770b537b65ff547a1c1b22880616e2a2647c284ea11d9ccccef338f7d7398eaf2391bbd33739e11e47aa9655904046debaa321f495e4f4bcc43263a8c7f2c0e05a1052f0f8a86104f76f3ee3126ca419a38140f41a54f1edf7ee8011b017b62632aa81132d64c0129b84c3d72da10bc0b3d344a2b8ea885811392daf66990d24a6e7f22dd2fb0fb00600d3c216362212ec71635b57e6bca02b3d7e367e3fa30abbd30ea87b51fca842bd800757b22a85385af64521ffdd581a192ea5b74c4f116d02eac99677a0cb3b5cdc1aefda86316dba0c30a90d74bdfbe9b60cf833bb13d94f2c3eb6cc3ff4455065b59d9faf4d00a923ff378f380db3928af9768ce6bd4400f500ccae0e07982379d7819de2d10b23c058cad482679f4721f80e835de0862817d7b13401b196fca175e42d1e31c1ebaa4af559b2d3cab8a3ae532d4fbb2285254ea37e8fee7f8b3b9deab8f641f3611fc5045e86fdcff0d9665a06ab0d753c890c863f22e17aa70a5f42164bcb40854fc1946f74b2aa8ec2d9cb4cc2ff8ab85147ae5b9b774fab70295f868f389def251916e78d41043227d14c8ad48b52a3f53f61a854b8b573e6628cc48e92c21f484bc517fda15f70b736e122592caf3507d5b96cedd294789384116c44d195afd2de8aec0c767fe15e5e382607e55df2f027f83ed2a6aa1a7d8241434721f3fa96b66e540bfa8f0a4781f34292792c82346bc326dab31f8b2f7a91c399f32e8fe2e8af03d2c60b68e785b8fb21a8bee2154516d20895750526f69428320c052ee08383b9017acefd9912a6e8c654ee0d2a73708a51e67b608b644fa17f93cc81089e7931844c3cd5d18a70b524f11059c39a7d0c22902ea1b267c3b6c87a0a464c217818338b5dffdc733f57ff6762b554d390f9fd4bc5d75de6cc165b2c4c6c32d41b468dc49e9da0c4c5363af1ba0aeb6dd29ff2c135863de07adee70d2886cbbcd380a49f1040f2d7024b1a45bb19ed54ac00f4c3a7d7c9936284c86daffbe954a97010889c0e30bd36cf1e44a221db53085336eaa09562663ad96799a55ebe7b2a365e1860408ee295d55a04ebc235d9606bd871019cf641703de845635d649f73d1a67c9854d22e648217561d72163459b5f58c966cd2badb08d150c10192ab04b0dcc336ca248fdd271ca0b5ace39151a11b77ede4e0fdc4f7a66dc22e64c1d6ea7c1f3e2f9c90ad0cc51622023067a98798558768696739ad40d4e2824d4e1ccbd9e2660a46faa7fb0a4dbe35ae97f0fa770580129ba502904548a00499268a62f0012ca961993bf503dd11c4022606a6b93e2d82fc76ef6b1e87408805634343d54519a2a39f1cdcd3af2273d1ff9443e0862f5dc266eb3284026d3f1fcd31df19da570be1c20b25a7804c43ab068ed5cd15fe576535cb0aafffa3fffaf4818a7bd4dafac0cb43a39ba13f3d240e7f94bd7d6a36f91605f89f25ceb7d2d80a938f7893eb735a0445af8cb5b447d8e71bc6aaecd09de5a668028e77a55030bb5a53a29eea9910ff79dba92fda538aef2c2cddf69270956e7dabfb4fbc55262784941d09950e9e763180f88b5d5d2148c7d427fdd796deef5fae8d6b3f24da226b5ff5341d341b982c25d62d3992cba35641e0846b95b3fdf2ce4a4c72835ef248f634a0b6240aec0face9e57737733ff43208380575889c76e01bc38139f94f27ed93988804f0f9d62e8181e15bb64fd535eeb8cf7525d06ddc447f12ad334f6250a07ce58e5d1414e4e9bb9932ba5c0d9aed41774ab07a7d6df6819f9a015d8f36b1b82ab968e651785b5b959e4278feef9d0c15ac61108d99ff9dd5a76249094ea59b375668d4c4b93c57eb4b4bef50e68e1b4b5e25961b3a1e437036e8916c78bb3aaf28198af6928be7fd4c2cc9435993d80e0c84034f3d4c67f616062cc6e4a872ec04903cf1527bd38fc60bb3c613b35f82e0daa678a767d7f326366399e500ff05dbb484a62441cd32829b1f186f4c746304f24ce60a863b14a631e7a56f3dbe37caf6b10b3624c07dffb66a50504731652a5ea559d9f092f70e43885ccdfbc50ac79d1eb44d86204b5a0ec4e0e8004a869a02d5d15935565094596b1bc34a5def39f82cd395f74e884e730b716ccf3dd996090a216a2b04abe58d5e2386bf805191ffd80475963ad570b12101f298fe7bcd2297107094e3c06790b40b81be1cdf99e9a4aa9e5e066b2193afdc3b71528996c1c749d7c0673c5cde0adc0ca7ff804b4149fea27b4443ff8c6866d22ea7f685e76b992916e6e5b2c55b6f09bd7ad6096eba903b5defecbfe6f32474b93aa975583d6179f12ac2c3e584da5e7547a81872faee064eae9a55198d4bb1b254ce18d959d960755616b8557a69633107b473bf83f687bd21e464c3371d709e215407791d3ab5c652a0c3ecf9fba669d3a7236960a327f5336e8fdf0b19c2f14b70ffc5f376887fd4f7f60ae5de2499bb92af7e932f600bf51c914e721306285c9db53799e27d11fb35afaf92f46723438c43c72bf4af9ffa5691b5e8e7f2fba60b2c9d4b981eeb75675758ef8d417a095cd008bf483434bd3ae12f034d18d2ce551dd132f5dc1c95fc3fc53cf19285f11620719bd725f025ea3bccc490bed697fd527713a72a85100dca63f2ddbf1afd7006faad3126b0abe1104af44d6959f1e1aebfb70887f9c7520dc4ac9b7cc7cde74a1458d81d19f7e5ff0c76cde804f310fbadf45d468d3862a90f6abbdcc21d45172a61898776bc97515bb9c04be6c2bd75be6ed5ddd0bf1e9407fb8b8a0ed8270ff56b089b59318dd70d29d3612538f84a6cc7ec4152eb7e5b036be8ee5c3b094ce9f87ff01b991a7bb7e1207343ce52d1a0b3e292ec4aae324d72df92d2133e15d0cc32db7124472cd2e660040c04e667c7d76d9b92fdf771ddaea6199f1c9a2048fef75818e7e469da052fb241ada5ab096024dd18e3a948712a921f374015ec0cd5e53ef6937445c769ee874f9dc9a91fcda3de635aff6aa0248beec3a737236ee368e16a10a238dd83f731c603a9de8fd92753985a8e4e530b954b8925d0522fd540f06f124c9e1fec01742bd35292233ed95cb9ac3e77db839d6fd554d3cb8f48920badd60fadd8718edd636e2d86af1ce3b44cb8515e51646eff4814407f90be78a7d368a8c54294c1b76c017b1f0be67ccf44ed247edce72626ab8fbc457b6ce962311c3c4ee3f882f58be044496050c0239541c33f3d58ce10d1c70815b8b15a4a0c5765abe6397a95d11a2b7acd25decde263a91929daea741d1cb2edcdf44e38537ab7a81cfddb9d94e1ae4ab09c8e93bce2bc80893c04b78dee4442319376896ec28e8bdb1328a477a5eeabc3c6434fee35bad0269590534af6589ae75a35c395c54f7c0aa9f413d83d985f39dc413b03569b9e7130d05653ffdce26b0124e3f979d7a63122ddbcfcc88121a48c5d37204123d0d877fce0db7f5fda796c8dbc8839c5aa5b1acf463a54d8957bae4360a08322132e53d734f4be42cc6b6d5d2aaf72500cded0ab5c2a9d77c215d911ce7d200fbda44ee3dfa148f0dc36b80656711506ec10c68df3b34849d8c9a13fe71d29242bd655aa6c3673dbbd9560c0daf0c216040a68d62f0f6ca3add48a2d919e536fca726536aaaba3a1f0d01bca2a48cd3cb1e630b84154bc31ba8e9cb39fca0398c07c138c6e94f2517a1dba27326cfb87eec4d27e6c8323a4a09c84077e09e7cbc535ecbafe2ff2a95adb25d8129882c054e86d53a9d79c149de42d6df5316da568b2b2e09d768312461401fee39406e7303afb8d3fdad25d381b50e61ad5e9c65a0835e7c5da206c8997544c2685e8ce2a4055bfbc9bd49c99fb7e8023dd75f35dab1cbcf9e6799b21173dc18c27ff096d30b0b50c50a8d3be58844220e2eb0c421312b085d1cb1e5099cdd8739d88ef2159a1ef5f159275495f31692454d28d03848af35a4a226ca75a7ed287e4324908b457ce9a242e0d0f789db909a6caecef22c0012d2d8f29d4b36903261cc252544c16d531af62189113c51ee59616bde014b026a1bb3b3f3d0a4917bae3abcecdc2a075de10148bce7f820ee7b9471975754645626b5bea80b64d77c9c391a5c5e44f2bc54f035c8553cba11c6f7ee677fda5ad00a172b81803cb64dfd487b6bb89896c2d5ac89b08cb70382a21835269808242a0d1de052b7db61d800f69e82be1c54f143764860447f45e1859ebff3bf07a2e1e271da4600340b664cb676a418867b49e6a0afffbbc312a77bec86c5ae33e64ebdcb95979b7e85ab5d625269f4a1f3dc313b73daaa40e3c57e17ac9030c73f7592d751a7209490dcdc0d551d8ffa770f96b1ea6691ce73a857870fb8b69995d2cf7373c83373ddf21e6b371e1e2490d1220c6c37c623f78c3f68f53a08c1ab2a8317e3ed6def4fc39f2c93d6e4e704941b538fd18d734f067a03ea50be0af82b57209121339dc673af3053bdfbf3d6d263c6870875632fbb46311f91c8117593c741704f799457381796922f3994a213d71e369f14cb5def2437d018152f058820ac17702bae05e92f0b0b397ce2d72c814e599f7d97acf325905532840e1abb2018ccfa5a29e8065d948d5d744797f113a232cd297fbaafc9b572e8aa60957f4633f25ae152ff478fbe347da4a165390c4b98bff479211e1876b29b8d13d80b0444033ff8cff13e036898eb3ecab75b9f436fbde8d5a5f6afcb9734bd751079a701cdcef1b43d2af8cad5dbb9c4d4e3ed6306197f443dc423f888beeeda2b80afd8b25b3f53b583c1942f57085310e0986ac8ed9a9a13d929f85cf815cce8afacdf161960feac1f555caa5ac5a0c238ad33f442fe02f3225e89c9d208c76d6b070ca93ce37ec573e97fdc5494a0e31631b813a40cdbb25b951456fcb59eea75d93c6acb9f1bcbe1b208e43acf306dc5ea0a50fb96de497a1c7cf703d52f44551e265df46dbff98b106bbebe344218c76bc561e28913daee2300e6bc3cd250c28a16b2fc80c88a06952861e6d978ad6b20192d2e3d0fe251ca2160a8a9b0b7ffd3ad683980e3f01a8e723717dbabc288db94868bfc2ab2414298a666190339e4ba47a455d3d8b2602210af20ec5c15f9ed084f147a8aa7c78d2c3dd17ca0647dcba717d5044ff117da209f664389f65a35938bde8934e160cf8e44140b73263ae776fb999b6662d78a175d642779ce739cbf1b03e89cb1ba812e8b525d3d2055f7419fc134e6561d23f52fd75d0f58478d1a756ada1a225147bb19925fd81287f0f6103f131d76a265f3b502d11ad8fd5277a309813334b10feb25ee790342fc2cd77f4f63b010019d790e38deceaf1c372a96a7477d037dc3e63bd50e9b5cc9ca1ac11b446d3c19a1f678023e6318f880fc5b5a69635c21a59352698444746b8c6518f225bb9891f91b04401e7bdad2765b693377683186251349d476abbda85957cde3fd4a5548f4007a241c95417b12836686ab44b5cbd6cff7f6cf8e97dcc115f5e2a78f40f4392043c79e5a0f75713779e33a5fd0979a37fadb8dc24ee1e1ca60bf0ff89d2fdf729f9f84aaf69e7b8f013df10864ae648eda609f6b6892f0eea056079b373a5fbe1a08d206d737dcccf9e306ceeae21d9ce4a77d942b13aa9a76666f050f806d807471babe8c6e64e8119c8268371760af7644a6d628e6bee904d2d0c43557938db67d8b0d306a767a4be4ddce5ae8cb70019d604db2628bf3c66676a5dfdf4426844e4e7c8f5567069924ebc5e29cef17f9a2cae3f7a5618b59b62a3a873b094aefdcc474deb5060f7ac4f38f43a12900347fc574fc21c125da4612332d2bd9fee6c8cb9c33ea3604fc96cc213cbf9c286fd7dbea214125691f9cabc7eaa0e209f78137ad89374ce2d0642cc456a67c8aaa2909c45661669583e777fdf354fbe1e8339790f77cbf591a7476696b6d109246b8077e50576f1181004cefa1fe7f4ea5650d82f55a88d8124de8c694df01c05bb6487c10c0f1cdb8043a9c4963569c963182aaa52e316495997a5ee198c4e113d36b20e41b3d8feed14d29fc8794a03ed3bd9b86232cfafd039195c1b28253205e0dbef26952959e86aabef10329040d1e7ba61af859e2a57cf98c73d7b2419837e64c92a00663141e232b9c1d14c8f9a8e0471736fa9ad525a55e93a7324d23dc9d44763901789ae6aca1e78c61838847ffbdd3e0de3c699d504e83d5721afaab88bb2c14288d2e975f1565cd3aad692967236e60e225f2a808bb27e20f2c473151fe8d7ad6e6ae35d0be18f55951990cd0fe081550dda9a8f9d3c968b5ad1b939d5b5a69c84662e9183f82a161d088019e7829709b409326e7b32bac3c5674d9d6ee78ea79172207cc911fe4dae047a92324812b7d9fdf55d596ef2be7d2130e9e6bfa0f5982d867bbac91fa563b3d5cba534725487d8670927b17fc15a88e9f926e8a20ec28f6af69dcd2cc31dd6c209687e203082f2e6a6125fa1ccc94484396ebd23d45b4e66d65e70fe80962efe489dd72a585fff74a61d41f9888c9d1c92431d8c618c2e8edbfcd4bca5c964a83f78f5006752e6c22dde2e651f4d49b6eef4521c459729acdb185df25387a0f3027f4424e0e4f6f0033a473ec6f5393d95955e791984c2aaa804245e6ce0c3154c79232b16e18ed090fab432d5d7a6df69a9f1bce637431c98998c5030cbe95fce1f874eb430f4f059ab5eb9973532dd84e69f0cf9fa81eea4929a0c8014e5653b99dfc0fe30f9f75ed8dd096d5382f1b01e327c6f33e01d87e1e43cabc5422151d69e18f4b8a52e64b5e0d89a90c8da81d5689efb3a8daba585d47c9416d1bb584c79073be8a4743d54b2851ee88614f255297c36fc8425befba153a1f5d4629ccea59e7d7ef7eecee9ed87e7c2f3c09a90ddbd52f6a4a5e39481489e038f4e70fb7eec1c7d2e2349c49a012e27425ef863863ac718b97e0e41ab336f1fb188b6cdd44ca5175b4be0d626ad1231dc96d6230a5ad3dd3d04e7df0d097a975d3a04bd8dc1aea1d292a5602f8933c44d4ea7382a7f66141d05915fbf7f71a401d863c1f7a597a3b9633acbc2908e79373941d73f59eef53189e1b3d3b889d39db3afde73dfe5ffdb5c38f37c4e2d1a40539e563c3f85486a1b06362d6581838158f9de5cd37d81a70f97d4b3cd41bda32989706afc5135fc190af8b925bce26df20ace45b20172a10c1494602ca6d6602c924106ac10e3b864ff186264985fddc831eb7bbabedfea4d6862f23bf6dc6a83753f6e77d4b67ae2a1c187911bb062e9efe784261bb426f3bce18160e4670b3c662a6901796e3ebb8984d0bcf9d485ca7d6d55d0c465c083774767f96c2b3f6e2c3478bed1e29f88e40db64e3a8c21d656001e9363ec56525779c53c80ee1e137fa722a9d9ae13aee9070ccec7d901979970f488fa3cc54cbf37d743d5deee4fbf41b07a437e76960a18d3fa6e39b39da418205bec53fa000f76895d60928731d447922d466ac2f7138d3873e116ca3a799ae514a1901d782d0bde7398b42f331327c7616fb67f896c9315d26b9ac556572a7044cd31d36c6a56b5bae9a27f221b5af1faec2383062615e3956040070335f808b90fbf2a7cde0619c2b9d5e3c41bc7188473b9b6e691def4415900a1ecb6c6e623d5d2145bfb0ae6a112fd3138a81af8eb62870e699bd750abef2a6614f9f43d1d4497f6f57f8e5d6da922f391ebb59153419633279a5f086e7f81197dd35a529f8de1a6ff24222663eba5b8a0a786c215f9d25799c966ae6dae306fb3ab9f8a7fb653aff59e0da98b381e8eba820772b086341fc8f937b108378326caf7ca381de89c661f8894ca7877ee70708e9d8959393032bb823ef26ff0700179fe53c7ecb0b4d15e45eea54ed6bad7716c015adbaa6b36047bc259018d15171400f115c300e301657f7dc11b0c2f2c5c0561ef2811671528fbe433b609e05bdd95a7d07404c829712eefdda28a2b982d8ebfc11d111904682775de5e3536601124fd200ea037c10535be5f235f1ef3079c8aa2e1030d5df1870bfab61f7e1520d46df0b4568f20ce9607648b1e7e146a7680df1da0ad58ccfab9333a7dee40ae5b4e407bc5ee1ea2bdf07d8c4f1e6d60cb35ec454d44e700d919ef78c31705c495bba2403e38261506ab8faac954cf3a9ecd1956288cf40fd238053502a068444042c88f4471f67e418e07b6ec7456ec247316870bb5924dd2d29ee298fbf7a1ed8f84a22b978a35d22dc55268f9aa09ec6ff583d72383555db9311ab6b2518ecd398663b0304e0a511ffb8ad983104e599e6bb671dc49d757f10ef53b3227992360fce6c224af2fdb7e7e62135d1db43241ef8d5415bd338ef98e7f27fa081e786e056c72f91496a86244b4353081ff0b9bfa530d78a3d3709470fb855381dc1952858c91d5dc73b0d4018903e84417edc07c7243c4f6b8d0d5b04d7194862c111523c6aa10e5dfbc2c4135969e0a4a547c5aead85a4a658b4a61f234e4e9a19742bc9f44c5a599028c48b37a0a6b0c8408bc2e003f658e2ffc3d5a5a967fd671d0f38b8a09b309a59caea331cf0412057762da13aa7618ac7ea254ffc531861a91ad9668e4c1bfef46025cc0494afc72902980aef84d5bc2d2bfdf30ce5f9f572b5af77d5a2c4c4791d61402c2c8bb2403637f93d65b64179d9dfdec51571936cce48e4964e9bbe86c395ec98d04acd3b6b98d975e6fb0310e3bf1942f8b76525a620b0019958cd33e391005918653d10c49e791943bd33262a6c6e12f6eadfc59913d8fb93c872b6b591f328e53bf30336337b8310f6e2d0a63ada69d166fc83eddbad20f6aed21ed9493b298a61a256243495eecd13e0a877c7dc627a472dc28954befddad7a18b40eab0c6681b3cad06b6ddb14c70b3d45c6ea9cd875638b13d1c8feb750d2773a4cdd8345cf789e7298454006ce6261929a934e2ea92275e0143cd7f8f42a16eb68124c5b102013eff71d672dbd9a5c5f1e99c2f9a9d35b77a190bdd4ed752b0796bdb0b98f988a068715fc571d386f5159937ae24b07a142eb3711368fd06cd91e3e69374ce182e162521f999401d1b3c83f2f182c1865e55e5b739d912b7bd7541d3de128a57ee12deb38692d9926c983bc6f70aaf8ed73bf460667963f2d7b28dc1092b66a684893cb6b8a2e1670a31639795d1417d8ce56fc8da85d5f416f72c0a2b647928f02a7b78032046b47397473a8e616492e8a979e4924254dab7c962a8268cdde6bb2140ef9292d2ea29d2f195a634529c36aded2e86eabbf649d4d34ff7dbd0fdbd65e4511a0dd4a5ce01c06c132ed0ed23d426a16acc20b2eace689015908f837d5420a9d50896b51087ab0b01bc52af06a03ba8caf4bf2aaf2c82b1cc43e994760f694a33c3bc3034aea4dfb8525cff9178a01f51219d8dc04e742fdd76099cb707a7f4627b0a9ab1cc8e9b9ea0a814bd69eb028eff6c9a0cdded6a0e35ea7c3acb7320ab70125b2485d63cdcdba67747fa9d9bfba7db2e7ff9114cd3cd479b8205029c8ae143e79899d7a4c7887d0b83aab0da6310c5d06c8d2753bdad9ae41f8851fa86730f7d30074967bb7f789aabe4ced4a67414d494323e767c76ea5d3361ad689bab2b8516c9605f828e1fd87b3941d3ddf6253a97ea23f894bfad65f353bf8fb4aaebedbd2a2780d4be1ed8529e5a378d7b3d9778bb05ac8b8d4d3623841e5312343573d7775083cae1ec8288fa695e734c863a97dbf552e79d8533ea59ae5e9f1bb09967952bd5ee69e30db3775ad4c87a503b05463013401ad0659fafbb25646a84f449f8fe0767dd2b06069ad87b8802cad4eafae91a6705608c369381aebd7ccfa40771a656115c0172068a353869e9b3e0bc292f1c8750adfb9faf4806868753fabb2736ee24f003e2c0fb93548353f5ba275bf3f613c68aa5aef1d8c060863925c5d397f1a25325360bd843846106a3d8ad3c85c692535750c571103673353036216d4942e4d3ccd1de342f4b52582766d7a7ddd0aae0d45babad28569342254a2f8a89f6f0247132e04536d77bd2f55cc16a27a0be65518dd42f4919d282214c45eabcaac679f62246caf98ff133b5822df4675c4e1b942ad0fe63903df1ba6eec39ac6644aaea7cb1d7a14499725e1d9e5465ff17e525f8ab6d831c1abaf0b48b45d17a58af8767c4ad2e05b457e019ea404b22fbd24972550351d71df08adef86d8e71a123b2642352073a9456c80166ded76ca345d858be6b36acfe5c326c58c557bba3c94f2f7566964b5495779ee2c939e05f0269af44a3d5d35166ffd5c7c051865d16299603ebf78bf8bbae56d3cfba35c26f30b62b2bfa14e3e5b68c4deb6a01d93234e074624cfb22970c8d6c2fb096effeb8dd3ca67b7827c7c17e8c159cff9c1da4fdae6bfed50e087c8da2b54c84d4bac0cf45b7b48d4df8d8ca7dd8110460fa66a06ed53aa57f93d77b84a81f12b8fe273a31a836bcd7cb134553e91248f95ff3b2b2e12945b20cacb3f4436de84849ee5621d7b9a206882931caafc55c05c47f581314cefdc27bb0f7a376b75edcb435653f776424f4afb27eaf4501b82ae1cb1bbaa0aa6602ec555e71bc057310b6375410a1efb5dde2a98b698b11b5221ff305a5fb94df9e6c8991428ffa1e5ada9d224f8056d0e4435d8c2faf6e471fbbbd3e6835391e1520f31e84438f70cbc0683384eaff326f635d3698486ee351dd73972682d9503cb0e6ed1b85514bd2c76c6117052133d57f43d1119d366e4444de887410cc79e2b0d583470b6da028d79173b4f51fddbc0b4e015392eba6a846a8f6c9b2d715f8b52a78ad0ef9ab8172375bd247c6dfc76a7735ed394479113e1297643c28277a3d027e3553019c7e33a436230249d90eaf59338f297f626108c36cf17de3978756682d54d9b10521ec89fa8d95039c8b0d13ce806f493287e4504ff5b218084a545a113af038f9d3b0525536dbae75ba114f678ec5f949c5f0ea4dd3bf0d5cb6617ce873707003f770178383f99ce6bca6add34375a88b19ecc48f43a5a86e53c5f48353b0db8158f435cae579b50f56e79de78fe2f7196d6021d4a3a1e125da44835b8eed0d0ad59e10e5f5bca0d148ff10cf18e43cc3241e35f2c880356468a0a3d23f19b53e93bf7b92f4619c287ececfcb4d2f44231098c939d80d7fee0714951fdbec6a59c8f1cef4870e2e6f24175d401c7db4a91bdf61aa7508dda06f1518ba33b82f611c21b14dba3275b865b77171820ccd6453b7519b3664fcba0a2ef504744382bcbfbed38a5ad8f6282d86a078590e53219dbb22c076b995cb98272cabaf4e46e2d92bea63280dbf60054081261e0759ed63a3cc51e8d4c9c2f8e83ce4ab54831f0fd1d5538e931d9aca92a291dbe31e696fe5dd9fdd83c8d41c22e523f364e921af76989c618e0b19597849f96b6fa84d03e52a49092028cf94bd63265f413ed7ab72c3655175764387e1f67e52120b7535e2af3a645cd9eb0fb537647abaaf4cd2f9842b47bb400bd9874e2c4520983b603ae8b13a1863efe1de64aa3f18a67e51232574692519f7a0e67781f0a71e28e50c90568653e72c492c0b79f2a1f61fb4f9fdafb6a1e51eaedb6adb19d94fadad9fe8f63029269a0fb64826c54c87bf148ecfc3a20090bea2f6166257287b5f1296028147f21f3dc0324b788d4d990cd91075042688cd793a94d7e2b33b57ccd8883069e62a67a3a9cdacd427e499ff964abb4c7cf97b47d4480d046c7b553c086d664d24e3784364ec3c3f131458a4b3717e3cff81a31199692ab29855adaf839b3329e063c0ceca4e15bab1b31671b085f3d6903184c6ee03ba02e645df638dfb17395152289fb6ef61b429e582ad38cce556a29c2d3002f08f784efb3b48163612c1e078d61060d780c83989ec74dc970a758b70a95e4578b1ac2acd15991be995e0a141019dfcddd9deed1c0e2c5ea61403a265e91c705f63563e4618e6857ed67197c1d29e3f00db1e3d4c7a80d7c9ff334ed0f270e757cb3f56832849e3e85512c49031edcf8a6244748733f0d6492ec485ff2a124c45f6a69f12d79f03523a148200854858557e2ab340cc342fd946d1c4a235649d9d514e611ea30c8bb5a73aba2ebe3a79de9df8b36a8d918283d892f3819ed1abd9ecbe5a5705cf712bc4fbca155e5090a32e90f8955415d2ae569e8d8b800f1a8cb724b2cbf66e267b8dcb6472b7143bffc7e9b6d08c3a61b32465edb514947720668d218ca48d06c450219428532568d66703c728a152fa3cc46cf471d77d43c1b531c681d0fa433e1b7de36207774a84eea5f0213104b4fe25223f50f83917143fe7d65f19bdf78eda67edc8636cdfa31c1c4138e6c6f81ae36e5610e03da1a0600b89778b1cb270357da7e4fa25476364bcd9fc4541189148b158ddae068dde6094aaf75585684693bb5b07923f9cfbfb8723641c1c3d1d99abcc0e51f346a0813a00ece45ff0c69192d50bfebc71d2443957acab6cb89b0a28f753d17a2c31663856b6ad71b98129643ee79b62654ee7c1201f6b55a29fc601ea5edb28643c35afbc0bded3f70e998b5a7a63f769ed5c7806b263d0b875336e270d4ba0af2e6dac7df6ce7adf6deb68be3c24da42a681dfced1e4ef411f5af5cc56db6464f0bb6f2c2c7074a9ee15f618a4d7c281134ee5883d7075a4a05ca9c8dc1e097358ddcc33c23a54769b42856821dd74ec9b09a33ac3dd6cee2f2b7de4b89815a905cb1f130cba4bd1e8b94a2fb0a57468465bc8cac0772502aad35a50ca84bd13e74908665aa6e42e326ad49b0bd5b4e862cf1d8d353d9190d2cfe649fe4aab6d704053d9bc103e37c212f969f868d20f346d86f40cc1ee5fb0416de86f33a6caaa579c48b9819dbd7eb856117dcf0dfde493f233c50ee8d177e42410c05ecc33d9ee656b198acb5b0dfa514d60cc5ec40db54396cd030e5925319064779ccee0cb224dbfc3de84af4fb3d841df925442ce57d93f791bbf85e56fd531c3ed7f28d2fd6d41dd030117f48781e970c35ed15732879bfdb86bea049a9fcade130499f9e7ac15c226beef23cbe088e9a2e16309816775c42b5fa7f03c57cedbb53c59b097ab4ba7f316d36af9c9cbbed8bf513bc576520834efca2ba6823ebf791de22eb18fcd1aabefac6405ea0bdc24252cea8421d1be81cb59f680de08b279fa3cfeaf5ff25622e51de6be0ea4ace57b2819d2c0efcc2b5a34703ecdfc44d3915caf5c8706c1c57f10dad1ce755db82102bc3c8523fc9556349b4653bbbe83da58bbafe0776043a73841f2a682bf94fe0811e6f93f1db60b7e118d627d47130ef52c9397250e5a276a092d391f7de2875687644434dc1b7e37295b46a677530a9c331a44bc679cf8870a285b11fece293beb65489831c98eb9843bf6221510661ac55abea2a2ea626782c510969f2a36a9477f8caf2c7b2d50b0b4bef46a17970b24ce059dc0dfd730c4b9805ea1e304488a10e5e2b092674280b0844db1b78e47272d42362b78203c23e9ec42ae179e8afed0fe1040fb7ba43d5fc6fa8672a0a0ea2b19decd775086f0b245f0709ffb2db15acabbd0bdc9f0436aaa1ce272ca3105e8670363eb08c3167297a50b47c63d78bdd69708d04eb13c897539a0b188edc42ae4887686a6f46387aeb3a4743434045ed0c156a178226002070d95cd755729495b9326758a0a6b4d42edf6b5546c4d142be6f60410594164cb69128ffa0709826fa809219da64d236c93105810333cd4ed7e0925f5c9f9a0896ebfd82584e865cb91cfa1839f633dbf423d47e199012bda03d642f75cd6d054a3e7e53ad5564e9a86989572b800c7e8da573893fac116d888f02fa874b3f75344c432a0204d3cb43f5e55af5fae9f310407ef39dae705330bfa7fe8201642cd43af9359ada76c936e241ef89b5e2844964f1cfa7e9de34987c6f96deda7078628e928978eb98bd3923a0ad4a048986a74f73c572655fbad56cf12061f7cf8ceb91970c42016486a9997c6a30d47d3d2a20f8b7ab30686d0a72f1354d8be788798e909b12e56b141091e9da5d6c3bef2084c78a68ffee6074203e356316180e354e5daf0f42951e81a906b92adff1ce426f6dc74fab606cc019a3aa79eb006eec08d64e889b10c1dd6b6c9f0cae293f348f2f2d515a549c813bcfb82069f8a83043d70c8424e1369af27dcb04b24920603244f2a36499c107711bdc6a21d8e615c42b3cd9438c59793ec19efdf97f2f3e88fd4dd048d9334b0bdf0087f499a93725c21000c02f0d4e7fc63635c924ebfb7eacb59ff36e972eecc6b26359043fd4691a9744f395a3eaa0593e493225b6f3b99b906da2bd1b36bc5fdb1ef21a3cecdc1cb15dac7275cd114a43b7b73f42bdf35baed82dcfefd5dfd67c695be977fe6d6ca66fc448d410f068e72288f8d98f7ffdbc960ac1ba5c42eab6e5c24c52518355757489cdc18058b2a9d440e643b41bacc4008e50f7283f1762d0b03c5a1f7d9725635fae3765a0a5cbaeb9d3cd0da97d57f37b7e32609666731613544777cd97f1cfe63faee2263d251b94e50dc050f2cfcda626e440e176aff9c2f21bff15069c22573005f96409704936c6353482cd1573a2647b6485a303655cbb63252ac4fa08f5fc216a2af16f28de0656165bc2cc55f0e72298e0c3ca003adbac79ac864b30470744955b662d3507fb7289bdfbb1aa11aa4e67db31c8beaeb9767558084421a972f29efa00d71a480be0e57f332473677b9d90694174864e7fe0893eb8750d4fffc4f7683e7fcce5b8c2f9ca05197eb83a0939d2c0aca6c450eeef25af04daef4720532b02f335f27a4a43bbe1d8f0c140854a15cac863de5e9dcaea78b9e89ad05a11ef1ecff668be2f61b8aa727262e8fedbc98da1e25240a85d9bf9547910a4f11a193cb5f308bdca6d45a11da9ae590adc24edff125aeff5542e98d7178707eed94105076b7624ddb77be42bbf6c05ca9ea321050b5bbedd77c92536473ee4b301e17041f6c178bdc23bf31bf9554180c8058358d1b0536bb9ad34c8d85305af8618174c894e08ba08ecc6f5f8bfd9bce7a4ea85ab91eb9fbbd4a1584ad3a87c7519559fd0993c2f0d1eaeddd19eb8b4773551eb408df7ffd37562e6d6dc0b21d8e623970217841641afb30dcb9ed4482e857c5b9ba9162cad4371425cb78c2e23d490effe7ffd82f6932995d9e4553c8324c24b7c71c262a9d275c45932f563132fae86406dbbd0bef60227c9f89217479fe8675a9a1dd98d67402095f45d563b620508c77fd71ace0326281e275d0ba7d59105fbc5d5a3fb5b45b340cc08892e8cf8ba3a436a52ed51ba958bf5cb54bfb8301f098ab3e069534de780fc38233865cd8a425ab9479b339a2652efe5c428df91d6ee814b0226af8edfa787d4144ffa1ef9e6862b952e7328242d8e8367afffe519d9c6761e38151d6e7fecf6658b5f2c74cafd279c1d4237b492696a543f17c0c6c53a263842edab12c49ab4db1003ef9f2d79b71e6edba2dc46363c461cbbe962451e9814fa7555f20d4118886577921f13a8a1cb5b593d639e3ecc41d5e5559340b3657f68b470b79a3d19138f7833b15559a7420ba1a6d849458c3dbc8cf8e8b2f805699a83e918902c63eef0c4c49c6d8422b67ad9a4f4ec6b3f904a0958c64bba48803fe36cd6fbb6f44da53726f10dedda92ae5b9149deb62980de92f609cb7c30926ca743c47be5143b255aa08b4ec79e292c3e33d6d0d0c18484e7926e81c68af990268c50e15dbe87d0620cfa1d82e18b59bb6168cabe37bc5b51d42eff7fbbf89461cbc7ce4153588b89c4e641eaa1fe8f9541a16d27299da38443f3289a8047fe6af19c9ff512b749848337e1a37d498fcb8cad0a9523855823f00066d488bb385e9b779b5e4ea6c2d3dcfb07d29bdcbc0d230d8056da7b7dbe4350248d8e82a05484ac586fcc37d1d9f3ff778e33589568fa366ff98771cca9c1f3c97da3125a2e22215d66c9fdbf07dbc839a4754104b0f24a45457644818667f3ddd6ab019d62001de40d48ef6386cece7746064f6b2b5179b99a6de5c2184561c07897541129145b2093ffafe8384ecd6d06084cf16b5251ad95bf0ebaf48693dc8e734f25675c70b31f3e3b3f21e4113401d8671b4eba6a4349e9207aecb5375816b1658e3e03cf2101d1cb5cb543e98df762f1debeddc715248e7a9ea625cc73f498d598be8590a77ea1f607809090cc6651d86b06fe4e2bf5330cff35b292ae83d38956c09acbaa4e231e3f03a8eb0feed2c5a638e389ac6a1c298179520854fed2a4dd06ff86ed52c7f7012e74343669824fd9e0376a3a886565b77c8d9cbae8583c6e0420ce89d3b49c6c9594b5b30bc4478f10a6d2b4da4b45c0f866ce91553d48f6dc90602bb37b10838a8d1a1fef66d4999d3afbecb4c4a9bda070a0971e0e4423c37054a7bc7ff3360d10e973a54af6198b22a472babc0ddbb15db3470ea6eab3df8fb08fa55cd58184905915405dc1ede5e2fb78ea64baa5c0a70f3254e702954860aa9c8737f2e7d6ee03196336f00f68275b79fc5ca28e1ef17385998e81f280075b6af4ec60b7a04cfea676549411c3e73e1a9fc7f0608680474a99fd3f6306646793441dcc7a54be8f190d9550dea06389f46e0603adf9d934792e6f9245f37d8877585e37bc3105d317b92b1c6ede8c337df03ec2c063eb47f942f577c869d18a11319153814930282101044f1df20fda178105233e0b1870add6cefac1ef7d834e3894cd8cc7a7258d19e30271b16473ebb80d974cf03946725c9ca0eb671beae498b4a694f52dcc2fb11a441438f941ff75894bfaecde896e4d2b1eca408d60299069658609c3ab61d85b7df0b6f31cd13b6548d0b0b03cc506c3079e15d4a4ca51976d5f04146de1ea91be7b05eab75f42f5d1b125018e5ad1b46de3208bca3f852e2361279e407795b4836f9ad3a2fb2058611023121819b46f94ef242c46b942abfd252014c3e1da301ea8794e4defe569eee780b6b4f737397c4a14c41c36f14b99d41e53df5c6b5606f77a3a56d4302b44d32083a6f071aa4f515e42217e282947bb3365e9ac2af7e35b6a760377cef4f0a20289973bdb163e458844320e209a17748678725ed059151007f8bc28773d764af724efd7314980dc4c178fdf5b11d3f3268b91a3061d753b02b657c8082d1be6c52d4aa4c091b4a048d550519536f326dab5683d1f2aca47b669a56ad68397171a8f6d807878f7ab4612d1f59ce8acca3b83bba5243e70c8bb4681a79691f2a32daab0c2b39dcca97126b3c3bb922efe70731c14b93ea82ed4f20fbb215067aaa0373c5d5538a37fd2407c06e1344f7d306f1828a8cbb679cb7f7e37436979869c0447d360456c9fca972afe66275547d4ef92463af6adb2384d1a859a6301bed138db3a724ff16932e334e1e4c3b0ebddb6350e9cf6df0140587dc649de23c8fd221446c889007ad0acaac1fc91007e521fc1ccb8e91e6a7616c86ce5917f1f84b515c557ad955d6183ac8a0e702a57e7e1797c86536f8780055f4239aab588495222f7b76e81ca9be28b9b372490ea4ffa6913766a054a32fff03f327127d24897f4e6ec0e174ecc9f23532774e6fddadd904d2f14c16f623599252911d7bc0c0a37f876708cc1372c24a011b2a7fc699080d44c5e11d0b1848fd3c41c79423c6bc0909384e26ecc17ac5dee0833a58bf968a0d4e53691763dc91d80bb319c20a8888a44b1c83e29745885e9818a444e46ddae4c396da5c6f08b098a1dc957b655889224b9495901e310bfa5aae0b490ed433e098e6434a0732cba21bd39ec90e515a3122c68ae8ccd4de3cec80444bad77a0dba350c0672da5211c4fa5ca1eaa572a2b2565a7042736222a1ce64bf273e5b9fde6154850212571cfb954da095fb07cda64e8f61179f7c482f8e2bd2ed4cd29c659fab912c1d0718a519321dbb1dcae831fe68e97e0c1a4a49bc6ea9679d2c502cd3c245758ddedd81347e450ff066beee2cb801e9f4a3a6cf039e846c5c329438df5affe02b2c89e7b5eac5b497ece20da8848cbfcdfbd386b21e44dab737bad201cb96511b9e69d08b2d5b5f95ada86eb8328e85b6d361cddc06bc093e24746c9f3338683f45137273ca90feda72b2345811ab37081b19b012e37383353edbfa536de5453296e1cfb039a8b379f3dd297a5f7b389f6c165e94222694665b63f2d9c7759748c029be72eca9ebd3dd96d9da5980e89bd9582d9affcc2694090a8f54b44da12103e6d68d43221e9b07f1d91fdf521cfb648914fada75f4a7859a26c704c4738d0b0896816c384d63a7968addb604292efb3e960005eaa8fc0da676a9fefde429495b35254bdab9033d5efdc915a506ae641930d31a3fd0679d6418c139de0928379cc17fd589bd43586ba21f2977c2bb5c1fdeae61ae8af04417a872fc361f5d9f9e61d92201dfda14cc2e6bc6b424fd3be48b92e532fb16cd41bd5b682d80a055748f984a2aa830b5b3c769da1fbf60df4ac5c1f78dd64df6c90cff3a27817734b491e58951e317143f08ba8acbe0d971c0173d94eff426c47fcc2926de49bc83fef1bec938ab27f6f23e8386ae5c231bb5a2bce5650564df731ba5dccd670484300244283ac36e756f71395a0731343508344ae99341417e568c907b169454dd7daac9a106756686fc370b790c9a91b048f74fd5f149736c1002a28aff5404befa504261fffc982b5a2bb0719dde929b063345c7cf0d5bbedd7597f45143f535b6633af2385966590ffed1c0cb7fb18bb309e979ce6182ceb6b4323b5410a36e267c57026a6215c65e6565877c69f9aaa955da51e9a64e4204a7656f65765c0acae22e3bd5b968f1e65b462cd2042968447d67438fbe87b61a90c8bbdcb3047c014b023173a316fc3dd71f51537d03952c6482583de21af45c428c0b96e5b29b05603a511d7f6cf91c974de0fc03ce639bdc0784013e8e096c880f2aea0c9d4c75496d3eb577a707b97c7e6dfa8fdba10c667ef6aa43b815326c586c94607589a1b8ef793106ce9ef2a6167421a89c9ffd4c330d4b688c1567ca2c505cdf70aafebfac3d057f1101e474a5ab1214a3f21054651b76f87031e3394e2ac943d9aa9b43eae878fd0f9eb0a20383d4b5f45c153985e474eb55e3ed3b04354617079e1ecec5a2554678de2323dfec256fb5dce77626cf0da170c4f6198917af0e87f8ef6a6026152da733ed569740016922f747adc1af012bf67ab29c9d2b71568c13284197dd2a7f19c2470329808b5fd2a03bc7fae20bf065a77492b6445f8a48034c36de898b46ba05cb86d52f8c4fb376a69ddf164c28a5b84884c27805796b64aa79ed6aeff1cc0b6ca30ef34b906289e84dc5d4b7f669015f253a217e378701aef13c1a8b9d6c02bfa0b189b7b34ae947f6d1690a694592f20c138cee4f5c6104b9ad80c01fe7d6c88b6b6e0a97d33089ee2be2d81ee1aa82ee4ef437d207371c6575682cad2e9dd730541db219c4a2f08de35cdde7be338143e4742d020f922a501f7722d7415eb72563bb6ccdd210e7f406e33ad74bb12c125d3047535f969983c7162bada19761d358669b3cf9cf3d628b3d38d4c77d7f67732c3a884ef9d817c8323469892bb85167f65bf15df86326534eb08d108076c149e094a942c628c9a259c990fbe8aa9962473a9f74e3deac57fedf63b91f962e1cabff29463185a4586cd4b3b2df186427fe67fcaa63c61478613be72509791c2b08262070447ad035e0e7d0e74bef2a3fa3fe62ad6a60944db6a7e568fd55b6598a2ad0a4dcd9f509353f375ff2f161291e7ae04cbf49b8f2f1018784331e53792c78a509fbfdb8d3c5aa3d11e05eae2f8252c0c528b3c89b1684f88bd9749abb6b6e6423ca325396a80ae4d8256c879b95d952fe4ce254bd8ebb79ee9afe3247625724d4f865f1c26f52413f92a11d32239a1bf458fe3eb818e95692160f844c3abc5b9c52c81cf5bb126ae48a3b96f68e1b556a00ca4a8cd31cd49dec021b5de5c9ab4d6934243a3e4e3ce484ed6f61ada1f4fa92154a5fe8de8db2d8e9243f9c1c77764ca91d5f001c055cbebff48a6278e19c6977e1fd2e64262f74c1328da24860271c8ab49969cd248d22f40dd44f796f23f0acf2d71abd1aa27590a898b9e52775b2e39a40a660a4aa73b6b58a520657d4893e27e85a48e2a064f3abad2813ff692cfde92404c6dd665c5bc77c3abfab423311da5fe3477408cf9ff4a86484b78f6fd1e01028c0ad13047c395d0f2f5b4ed80080393a64e91d25caf8c728a0d8bc9a10a30b53768bcaacb199a0559c54106b1a44c504d1ba0efb4af239adcba4ee23077c7fad0676fe2207a598b0325b745fe7fbb4ce174e669eb15bd7283edc55218a11e4e56b4c057783581b935bc4617e7fbdc515e388404fd965d12dc270587e3790bedf2316d4c7d60622c84a520259eb5ddefe5d9370071690a4cd5fcb3770f94699e63382c451c47078542ee85977f162af5ac8d31fcfcc50906154a99e9a6a4bf05a3f52bb3e09f09f9c6b136f15d403cb8f363d98041c8e0f11740a5081d88d754f55522f19c28ce82dea243feb85abaa0514838e86f3f91358ea49c47be075c1cfcd6139c24f27377b24e9d9c6e4eed9841fc43ec5654192e068777d1d4cc93d73d38b758ab3ab198c2b3367e6142829508d541281acef76f41341dc8706be05ca8720a69a2d011e72b319f6677fb6025d8c08c3f9a5771ef494f4713692065805c5884c75dcd826c612a77a99720ba81088f9c0d8922160ba80f8346c99fa056b2600a39c088c65d495dbd78a636137a93a465fc488752e7a04572f2b30674f494e95814b5eef6423b07b161f2576dee13374ebc02cf7520a4b6f90bdf60db245869a35e6499fba9022c07dce6b7ad3c3bf009838879506e1d54d5d61fd057041eefe56eb8f8208021062a6658329616f4d2a9534ae41b8f6e5e4dec6c59ab4ac17bc392d5ef8724f801655a6e4d673086a1c9fde8edcd1d2c250cd70a7ec116a8472c6bddc21b2904af765311cae6dbdc634be218c4fdb6a4ee2490f2d783aef2c48aba53e2685903dd93a7f573edaa0f2fb6dd1a324e02d5e20cea31a8daec71530d92e19652481d6904817b68bff83fcb05c47a9fb3e941ac1709cadb6ee5dbb2f349bcfbc1d263ce4730c61c605fb2c2ef546e49fdf02925bc18b13985e071ccf96f958e45357b8cd9b6b973a740a77756679a2188e1cf6ccc1e64a22db8cd4e941d7ddd2e6dd36fe107fa1fa33f1ebf0c8f9513d1825d4cd3822d1fdfaecd9e9e1097910cd743ab59873d25c2496226c88adab598e2e9a16cc96b2a42b31d53dead6063b2062b30baf1601013f93c18ec4448b88ca616a395e00fe93cc5c6640d6a5d6696fc9b1540bd16ae4d5ae22ddaa63076bb3d1d24ca9b1a703e83b9cbc0d640324b1f5ff390d79fa2f48213c069003f3ac67f76358f6b1f9a9f9edd3453213caf1ce051fa5a94d7ecb24240b4a32b470c5e1b2fe25a515211beb8daaf53ba904b856652e4c5b74605b3f4d7aa0f9795051eb44cc54cc1188b3e6055e6a4c39ceb5a85bb8f17956b4af175e11420ee5de4dcef8ec74c835e7f94e8eaafcf5fd5bdc8fb83ff10b5bb6c0b15d45c92f4dfbf7ab9e75ace916f661363416aacfca318f5a6fd4ca17692e2d0d1af1bb6a3ca4765bb81997618d47bc1ca33107eb0e44c56829419194fd7aefce040cfffd60279f9735766f6e43c494aee94775e8d101b27cc1c33f58ec0520c4d34146d26411b8b9437a3e4fabeb1c63af29f18454992c932e0ad2983edd1c67f81bae4979ca7b8de28068cb86873509987582cb33cd286921023da9f0e1c6ee2a9a2eed55d33bd49a6d9cc855ddc197436c4ca77329660db6cb8a7db0e7dac06524c4cf2973ad534fdd2f457d8619dd6eec94b70e8fc567a30f5ddc00b79614546a684f91608867a6ad4bc1a0b744ad6d5c7b2e23537bcf93fdcd3610c9dfd62b7d82affe4a54fc77346fb49eff95bd17e134021cae3c30e46595e2a081e701ceadc5bff330a93372c57884ce46f332bf0bd111013e36e16171087447dce820b4cc49b226f3a2e3e886d25ae07487b4b42c0211b423bb518ba613997b0fdd767a7d1daf6b0b99ff1f20420a5d3ccf70e5864b41417c3ef0b2ed3bb807c505e5bc7ec3a255062ed3daff59c1b07eed00714c1775f9dbce096c9b5a3c8cefa95559b3c14295a717676ca1bb79d78830a8316982ebe6fc81bb498e9bd4e6b0d643d12b1c8757f04f7f48987da5a4769076b0032a600ca4a1035e28a35924a33610e99ff0a7746c05923a379fd6f14db8a8bae849decc359606bb1ce96b6db51e94ea912160fea7d985824b6ef20575cfef224153f7891ea100ebe47ea003944d3922a0acd12f28c7ab82ca7130bf238aa4380b2a4c9980e2aaa3303558a1b602b70f689890dec656e08aaf0f57805cac3bbd972be2b6006a4bb6f29ff9d303f2fdd5a8a1507a04db612d7b7ff7072dd6ded0897bb78b37cdf8d65149842b203d831c1a35bd6d5b4156903f383e3abf4fece4ae4300f157f6df864d6c43d35fdbf6de884a2d88601508d59ae26697870a25de215351f7d8d79d5f9b9fb8d34a8d50579f30295eec19da2a463543878ea060d6fa32fbda7a8f2610c9619621ce30c658003cdd3c9bcca06de9b1ee01eb0ea5b40b2119a52f065de28117867dd5002cb0d1a7380a1635f1a34e8016ce2daa2fedfbfc470aa5169e0c6c58db5a94a52ec47cd667197b0a36f791e4354e5eb0bdab6ab5ebafa7d912aab7d1217203a0fc159165c87d60fd55c86c42142396823967b14cecdfc3413ebbe632e46ded1690e6e0c02cf8babdeb837457851e00e902cfed70318d2dfd7f9f9ab5a406162158ba9f96508d3764bbacae78a25075f4d12a7439a935b1aca0d0bb2f297873d867a22fd2e3510a4628c742b46a9403b5ed9c56a3eb2c5d2208b97552c49fb61320897e303d1aec19f84757f31146c09f98f98d083c9f4628f56e4af3f7efb7240ac362858b84e70fefc6b45b0d95d653eff5d30802b8051b86674cdf5aa6a5e2a2d0667be22ab61f3cd6f510c205712057decdb83f895354dd0702e76d594382ed7bc6c533d923e8b052768dc20758b3176dd3f2e0db0eb6e2a4e2913087e5ae877a4e9a222f29cb136110baffd856afb1116cb7d6bbac4109f9eb8776965935a288b19bc1432d7b70c8298b87d7b01e54801e52536c84aa2f20f082f6de6368e6dc5883830b578bb28b5659900d74569a85abff8752ada6eb176b9c2439bf9ed580c0fdbe7bf9b5847011a02d51e128c98db5d9d2b3390223f61cc112ed6ea99a762a2c4d86f14c1c1fd55ed3f5266d641da504162a0f344ab46c6ba0db1736e13fb0ee33af2f7f672c3166ee20430089174e734b44cc739edfc8307c433e2153450fc3453a8c55a375888e1fce57e2259af573b42168eafc309dfee604695c9677af59674b163676fe392e50f49bb18bf14238a6a52bfef0d314d25a1e0333b834cb28ed0596fe9ab6a9dbbf8da459763ba5d2c0e2efb6730c7e6a695a3e6e459e83369665c602dca2a9235f6ecbb1d8cfabd49e6540d27da5fe4f3e63fbe08c51709dad9bafaf8d7ee121af9812488d66f1fed7239b2b77fdfed1547982610fceff65b7058e3ae2009dd91ca300d5ea7b57b8e77dc3e77be19d5e6ae6368aeb388594143b5bd9d3829441f4c86ddd2a85ffc92e343581a4a443919c4a804d1dc123e01b8d98ca9b4cfe2ad8b4f1718c151c06e18323be0fe3084658c6ca0583c55f3e6fa886f34cb37eda8945e2b1dd57d562504fccd81845c57daa34b7f0167e3ba1efc7a6452716c3d1f7685d12fe773037212f92f140fe14338640d0bcf644cac6df4aef1226192ddc43321b4bdc41c2efa195b5dcfd822b6f409b9d98ea913473cd7c463f823d7a2e8d222359da75b1a4b8e55758f712e90157218e48bf315c7491037a4ab86554cdfbfad0e213da3c6ec6597e501eea88e6b775abef73b718f80ce9183c6304a5b787f194996f1c11dafcf88fd9e7d0aa136d2fe6b1ec8b83085a9eb476d5c7bf2b9cf1109b0a9104d2dc79ba7415f23c529e10b2090b5148eb1dd271579a074ebe1768b10866a2c7817678cbd1e4b34ee8c636417978a89bfd7ed4a18963e84336628a66831fc7f82b539cd6c6209ca9522c528b1cccbba8c9db9c5f177dd34e5865c7384219bf7e4c328c85c4159720b8e3401d22fb26465c9b6dcd08c2b4a729d42b9372261ac01f9892a5867821aca25ab80fc41d2ad1a3c5545dd284b3a5c0b62c341f788faaa6a06ee1b481340db6bf618a95bc5fafac43af3048f67ca56806d5d8d81cdeb398e99ffe49daf4998f3206c0f239707b783f68ac89af0093949285ae2dea09b854a6cc870880aa3e2b86d67b569d205e98ec9e72e68a48970e26845ec41c78a90e471259469dcb4c198b11d8304ab3501a6e2a68d8fce634a02580228fbbc353927a4713c34a3f730c59a5aabfa9797c7685757d8bc502dfac2b80eda9bbe7b9334713335f439b33e793ea24314d962ca087b480fb9fdeba0e3bf0cf15e9e1a45109370437c35f14c2820ef700ce56c175ab071c17d8aff70ca7929f56d54df4c9c1c4d25b8c29dc23594b370898ec69c2ee145a5aad9f2a242abaedf66a55e2f18679782e952fd6dfabb7ab6accebf6e3feab4539ea0db36fb0fb334b751d394a36c1ff504ebb167235071094aa378d50cbc34a8fddbfcaf54ef267ec20c33afb8c5e0b6f51b0f5e3109eaa42d07a4622383bb7ef72877eac5be9436f65001c8109133ea53ca6c00add697400adfdfe30b0bd13f6b85ab316782a4e763749349035560b25986eed5c22784cb706173cbe40852ed5cdbe7f733db6d1b35b876966ec278833e6340910af9fb4ef43449b267b1a9cbdcb888b23acde1e460660019977d5535b180b99d9aed8342b106263bf0608a7876888f0a34c5c87d08893aa6287f4513a8be327382b3cffc955595953e5f5f81de4d74999f50fd1d894198e52012bfbb15b1fb7e724c7724cab22b16338ef9c558ace772e63acfceba09f549892d41f760e53d70a914e419256537cd0d364bd42ba4f008c893b563bb9438e013e195bb26189fc7dd071b5c5ab467bfda29638c73c9e6fdd4b591b857d7ad2105266884609e2c672f28c31ba1dcf74cee732bddb857837dae188c88260d9cebb0e9a469b12a27af1d4525af2cc5a39222b139b0aca138ba48edd7207d89129fc7839079096dd5c9afa38e8dbfcec9f9e3a15ac6d10d6a94f61843f4baf3e9a8b03a8c6eb6a1d12240e35066afd51b55021fc0a797eb8f46cac1962c6b9c5e9ebcbc5481241a69f3a5c122021b395bca780e2e1800d06b00959587fbda7f2a3ff6e259ff837fcd154276e45336b98a6d8a5130eba14c344141ac9b1c376b133b9a9526eb2e85c6a36bee2418c994638f2982b489cc493d6486883572643485f8bae1523446b5e7d4cd2b9026788b963d4e1ced26e3376ac2224fba5c0387d04662eb45c786e27c6491b6f15bdddad1ed37f6e5e72c84ecaf1f507877d20fc55d8ada0fb0ab87f9774e01c319da8ae9cc25ed5fbd9c3fb3cb5a0e6e1c82c7d897368169d2cba80461368bb27f756a43070957242a466cc23480a018a663f761bcc1863171df86cf612a9716a3efb015fb2efeab71b956a11ccdad612d08bf12e626c6286bedbbaec7e62775f1747e4f16c53b4fd176fb6b41fb35ccd3de9ecc05ce7a56464c51c32f010d469d37fe0450683d86e7d37d83152492898c1755a9c35a8528b5ae1373c8a544ad48f5e42d115b4c20bc8349569ce30471b936704f7056e38c3f6eb17c21ed056fb6e32cae38ba05e94db1e7b6e20bc1b93d47ed0fdcd807e7af40d48c9cabf3e42e8a4d7a8cee6e3e4f06ca9c65e0a7100d75488c10a420fdb18d1d02dacc0cbf4eb12c3242ce5d216ff532f23c76c5eb35f319905fc1adaa6a57e447bad2d4a94cc9e1ce5213bf84b692b968e4c35f71d3430836f0f407f6716aa7e724df292efb1f90294432fdd4d418c8a76adfc323e8ad25d098455b8e004b05b54a053696c327702b8704243c745ffd778cf96c028f44f06bd5ac28ee76728bebf138753de163c45c70435a99cf573915363faa0da58673470208c9a07e7c308bcda6c0655d847346a0aaf3abe127f11814977c3cc8213c15ce1a6f3c39b473617e41d5959b16500ca561d4e3aaff5064933e99f67c0efa5dd252d2340b4283a118564ecad1bc27ed092388aa8f9423c60156c42b68edff15538ca5f6b6299477d254ce4fde3da702184a51477ca199f4d4260668efdc6a49b44ca1f8294f25f646dcb2df222b0278d39f141641f3118cc76228a656efe90b151a892b9e29cbec2224b0e3376b9582956eca5ed429ed27297a71a0545db51c1a2667d37ea2c50551fab147c3a93a449b5954b6035c6f3ffcfa9b0a0b2d71634f277a0d2ff34dde78ef0367bd0725da7f8597a522f7b1a2124674d647848d29660bb0b7ab6a7dd45482b6b1d933619b16cee9577075faf1d79326e10ab6de09a6915f8eb1638a2c06a2a04a9a2eca87ff46bfe07f901b0f3f1d076bdf626317d1ac50b2973531d14de32355a565e1e795ff680b3a401fcdac8b656dddeaf4486c12a728738c07f4249516130cf938cb114169880a007a45582adfb784bd536f304246b0519ff7b4f506161b6a1d7400c6664d358224ea1ed9a674237da1666fd0a50198e29e48b4848efa0bbfa7cf0509df7083921cf0e98e7417673f36c0488847555478e4c03ca67e71c80ee66b6eb39a20e43052cb68680ff64d20fde652a311cd447aeafb062c37a8c14adc8f669f65096e518469429e0eaa03a18280278f009facc040c73461c886b9a1f3b3cdc9e2a58d47e9db15a06ac025b29bce47c74ba437e1daa47aa4abb286805371d9e72cbb3bf910876fc39a8b4dec9aff6e08b9275db184571283fbf059ed4206818bf1af88331860f153d24ab35067e83417888b9aa4fc063f5f95c8ffea92678775139b2de960274a70b5a84de116fe2d5d7e6f2e2e9e91e2f9361955b4fd469c2460ece90c7ba52b1bab887ccfc4375f0c19c677a2fbeafd50436aa4fd635ec63304748f40fc92143a2c4f34bb6d1f811e093810f4f587263a4069d14fb6d2733cfff26df97980faa61e4c42165c984756723439b014a844e4d28f56f7f9145a79ae68d2c21c8301146422c27bef2c881e8e89fd18ca5d87effb92a2e38add4b8e2e1f1c26eba15d0a2e9da389ea63eb923c5df9cb0e4928469322efa543aaa55e5efd2136b2dd40d334cc7cc1f7dd1793016018ef6497ef80e5cd9966895d156c73a48abca4f87a8ea55ed9c96e6343e58233f2064266d93a9ad26dc21f63ab6b345390c0bcc066349fd599ecfa584afc8b54bcf3f0f354f9c6d94c6c5fb35689167e6c05c0409bcf8ef488ff502a93b3d88f3cb7348951ee84f2cd639aadf47228c1354348c8b66f8b607c34166e96b984e373f4c7954e8d6a02792ee5b58b726bf702138cffaf49f818c2c4ddcc79d21345aa6c1e7b335080d6bcbeaa098dee78873fa7b939c657e4d6783366b3556a349319ff0b01f0c290b3c68f80396252bf2af25d470b8368b6f2bcef62d75adbec67811802ff26cd59705bd49f41120a706847633571ad0e87d42f091935b7c177e7acee92af3665e7a09fa76fd4eda4a7bbeeaf0170b5a3e81a610410f1c07c63af8bffb6f54418e72dabb3eb3341296271e2b9842e62448a67a0391ffbf120b6ec9aec3b1336a255cbd3ee30ca389802f9bc38bbc1487d50732a80d7e17aaa8f8d132304eba3c6332eeae7a0267d2d88dcba22ed42c842cd8a2a386717aac476d99e4462362013ade78f1531a04f16f2ad58e72a2045e4ea7cb8f31b5fb1589d6492ba1dde9a57dbdebd9aa18480e8fb076c7b63c9ecfbaceb4ed0dd3acfbeeaf83ee4774c8f3df5fe248d50766916198d157318f3d8a90abca00ed1802f9e281fc986f0103de295aba16ee80a914e8c98ba76ab0fea45aed24683935f40eb9ec7dac4728ae0956d16c06b4ba10c7181d84e44702cd415eab6c9d9eff1f11c6b205078e3f835d8d85738d2aa6ff04c553881c2aea69926626f482faf5922d542c147be4450ca1b385c8550a538a131e288d411abbe8383ebbc1678899b7ea53b4320bf97ace26f433b4cc0b5c0a64655669dc6858d915977de067f0da250a2571271a89f9aab6519564beeb1d90a4b524f1fb0cdb088da29dc6e767208c4d5a2da023c1ee33f6e9bee5dcfec37ccf428e995a4da649a4560c6dc2bcff77659ed8f85dacdf8a37cd9e5c770776fbccad09a4de7172a2932888bb1404565980d63eb7c669e7c46026d6fb0344cebb6bc53241a88efb3b200d3c7c852b0c7275f0b8987da2ad0e66b32dd71760531ca30d01b5df6d5fd0ff8bc0a9fcc5bcecf50efed02b64d500ba598c3f9939430cb1da4ef9e95f2f0297cfd20f02a93823ed3426983946bac1612fcd3d745fbbc0beefa34a95a60f7c692ee670b98ab5634ac207a42d6b935d45301543ccab0167bf220518777a3e328f12c8ebeb42e6a8c96d4db3ed81e0294958be6472a2e8bee88180959d3bafac9992adf5606d5bc3c301e8e2d284beb979b2e172163d5d7cef107521e4ee4ea5bc73dc85bd111939c4c2ef8030c02b851adef15721530b4b4b9dbc0cb638993de458d5495205edb03c197fd5e65626f6a39693b590f3a7c260ee292eb19cdcc7b376e3cf4ad734a5e60e4ccd9dc307b020d599852ba6686cff6b32f7517198ed71bb7ec2c76dea608d1927bcc5be1cad5cc0c4c3ceb1077d091bd450e78f90bd28e59bb81ffedb77e597450763d15455f39799c80656df9702e863cb71fd3f9836fd3dd7f47576fe35b10a5454915bd9137e3817eae409884561a54cad38ef52b8bd955d3fce554048a945bf04f7e0ae1cde9af1d51712fd11f266998e188bba56b7c8004be418d1a85577c003c821975043c9fac4d9942e3b1557dbbb39c5c25469606d61049d8dbe951ed9a4660e74fefbceb963e91a5d0043c04b645d831e6eda317b8716441cff35da006c163df912e117da1d9f0187f81bc76e56bf04669001d61ab1b63b5411f8f2aa4845c28a2faceb63cb43ae5164d728e1d77061a8d98bb7c26b82ae665b2f7962399641ade12ef389d9120fdead18e586e52fef7f96cc471cdfc90d7df6cb1d646f14797ce29b62d9af7812eb0f130d5a34c70447ab833395259a1e81ae1631d8b9771534d4943f78720b9ebc06d03274d2706ee8ac8fef7c8275dfe2ab49bc27250130a55a849c26aef6e340b92b61bf087d2508162ca371aa13bba5f20aed11f5bc0834589a8efed9df63d5bfa58e5d90bed05f3b9c5fcf80ccaabc74455017ed9098782d1669780f8a9a2b6b8f8c5c128a3629d09e479bf879dabed16e1a307569f761a300ac9b3d88b71f70acccaaba59a4a7f18d8c3d15dcba051d8afc776a047da156eceec1771164feff8c6002c2e0afee67f85f8efa2103c511926112608005773a8e276bce2d73bb98cdfee585cd5394e23dd61d0f132a78d8d440ce835e9a58114531f89e1858c763141709db5b10f8ead32c9ec55052ce987645e09a9c77e858a77d3be012791d993a72cc7e3fa6ee7d220a23457cd6b49c7ef0253ac6ad6d5308d0a37389e2105b9e13fc8a15edfba52aa1fdd95728bf21cc887c2bf13a9805aa016a9623631c9d02e0e93ac03deb3bc9934e1e282aef582b94c3ac8ea86923ca3f0fd4bb17e78046a54764ba91729d6007a33100429c42a2d8e385665ff6370314ed778d7b7f0817acf6ba29dbbc1720bda70efadfd35f111604918e8b40026c9ac2bd9f78c6f4b15567ba8db2b20ebc8217625d191522a40fd0435ff97918f381e00057b2f7f891b28fdf7561a495c6e7b049928ba9717b35d87f239be51c1059b1c9c8c6c62a7ff4274f49ff4be536525c28fc36f2a9bc90ff0a9eae06be41fd0463560743bb764f01091135f14412bf3d8cb61d53ccc91516230eaed57a40a50de861f252c661f18b76b9cd2cf958a323bba86d08169a36519cb65ca7a3bca8a31f98018ae92d59db401211fe16ad0dabab070ca724f72f6b1c949ffbe4a795d0295c14ff64c6697e6d66d562c33487c00b1f3624cc80be1dc09125b5677a8022e1861cd514bce304a422829ac2b54b064c0061b340c756671fe3ed156765159921fd2ff7893c183d2ebfb106f70f73c466d03822d5658803607770c193aec224fcd213bb0c10f64190d68bd265414fd2777465b5510c508e7acdaeabe55012baf042eb000203db5b376b115f775f2d6ff205a7c504a5592ac046043944794786c3f2d2fd916babe17c41fec6e717f444ea6eee0cea2711a5afc2faaced9096fe1e0727be19d23392042df2b621abfa0d3c0eed85f655b336dd36bacd140c03354f4a984113bf32253774c2a4cfa221725d5819e2246a8a06968a669a1a48d6aed6402ce8142086e6288df8f5c3138e2ac794141a48eb6e5679d307c6565bbbe52e0162a42e04a2cd5db9be51bb28c307f8302bf9682b26ee07e593e63d4fc7f001c095a93abcf448da441c837b70d98101a18be6bc0731205e81deabe33f6b6966dff44846afa540072c22542c05afe70191c0f33b754c7d9f1903a642bc211809acd67a47f13dab8b8251735d10e8ec7947b4a0c639909dc4d6ea09e61a21b3b2edcc983cb89dd7b33c2ebd9b0f9c3cc6cbc43ac0a822e75cd848943bb49ad827ef9c94769dd581f032028b0a4bbfa7a662dc992a980435c853b0ad5238ec5973bd5c75e37adf01a3940c4a344e675ab05e7921fc69d96aa938bc0049abb434fa524b38a9cf71078faf96edd69adc6dd2371e010f61f8c3fe0c4c1cbb9be10a598b5bdcd6d367ae98c0586d56fa5680759c973447546bdb5d877370aa868f7b895b8052a2b37c34e9fe849fc195e35558b038e035a746cccb0176c72e90eb99622cc9ff8e3862c488cd631e00a590614e70bf24cefaaaf2f5b9f12c4a5f9d26f466ab3f9ac443f09b3b7bfdd81de8ce24c36c82ec272744ecd518d854c256ec7843e1cc838b471e757bd2e508ac74b269c33d19601f770631821dd1468f5f5e68acedba373a9a99c6668001b21e4c635cbd47f5d58398b3fe49ddef826c6c8676f9757b0f0023191caeac481e8c8788fc2dcad0cda6c2f4bca3ecc4caf256d1f4faee395ee4947fa0090960fef213cc4be532898417cf993526da70bd5ae58c98bb2b22575b51c7ce95414647ec427556d9051c3f24d07e7de15a28281f68fccd4e7b2dd5c960912c5837fb58fbe3e11a381e6f5cc7cba0b639a0359bc16d2d54de5db07847e4022560576a7e2a22936408dd1cdb2b35804a50c27232b5fbf2d358679f309c2431b91b1109912cfecaa8727e2f4f203a2932b8fa01501011a9e3758c2c671c83765601e910ce0bb9cb9fee06ec90d7a93443be67591d9ab2cd326a563bd9edab4941b991f39dea2a7a6efce2233234d067dcbe1d3cf34cb8aa65878b02d795d839340b13801dcb1076c02ca7f6faed519fe6f94493be7edf59044f5f7f7e64f6bf12675eaf2bd740433d13f70edbfbbac263cf0c2580dd26e638c3c591740446a8cddf200bb1664ddabdfff0cf2815901af226de830c6ced1690055937fae82d07d1c1adce8ed48db7486851473b98d6ed733f0bd6c71ebecc73fd06d29ba0bd5810cffcee557313ea6fa1c86040ba2b525dcdadefe97a117a7f716222ceeafcd091b68a5d2a3a6646954b9c91439c7abf45eaed40106d63e986c6d1b6b27b2d78a5596a39f35816183ca20881a69eb9ac02a2ab97f876159aff5138d5fd0a1889d3aae6bb0ff3b0380f4f12eac06fd821d2401eb659014d2f5a9925dd77a07adb7191d490fea91397a4db882d6aa1b85094bf6355854756459bef04aa70ace38fe9a743ce9cc33989e285f12199c17fde166b76600fec27dac2a225bbfe5fdde62f12d8cdd66b2c8d90cdc3397308d404e94b523593e04d8c4d60bf19828ba6923ab493fca7778253ca1567ea19c6c31189d1c85177e3a2846b128c7ea08d6cf10cb8c2e54973c1926c73ec2bd7e1e0b0e005fcc2e5700f9562829a609f9dac945aabbf1f9a6c4de26cc0d08b044b80992b19eff128ddfdaa63150fa1f5e3ffabd57508b710d0a81a8f97e04dbcd890c1c01649cc3b53c6edc31efc327a6958d400d439a236ff94adee2ae6817f0a6fd0800138fe955ceee355892a7bbf1f94dfbc5465cc138a3dcc6f8f070ba70e377f2b5f3242e3660d7b7c1ca779e8ddef33b999ca45e460c481667a4929ef56704fa14828157d69de653726bbd927eee15ee267bbc87852d4d0a2b1c271358ec683bbc32d7c329b4d6cba950333efbefc3fba6ba8976e31f058d8a863c6a40a7aa13427108f45dcd0d662df8a1770626560d2fe128da933b66bc2d2a23b7e7f3fa31b3838c49bfb71a0afeaffc4598c3909a320990827cc697d5b632ba312bda46ef3fdba8c54253a55409997b979852bc2ac4049797cb7df51aebb3d0496021960613a2201e894091f064d70bfcdaf320d40f00207146e037f24619a481aefcce4d43ffe6d7baf841e3b8d69d380c348fdf4b210337d18f8fec3372fa28fc55f3660614327d67811e94baa805b91770044c6d327179f0fcb097817268de84cc346dad814cee32862051bffab2046c7c894425b0e48223eff72c75f9ad3cff7fdbb86346daed7daae481c779d5b029207c44c1e2e76e490ede48684bd7a871c854670183b108b2d966b22de6774fa2aedd53e03f5fe90216f2eccf37bf89568ec6c1b95314744df4f41074ef78e4c6d96ed3b7d181943598481b585b1023ae862bea2510a03e75142809d94b50aa4b42ce31fb6f5c86f1658d63fd45809802d0c0af625358c825b8b7e4122fed26810228409e21213309dda5d90e4bec14e8c666935115a19f5cccfb7c393edd65110c6669d440286a08e8f07e571d9bcfee0af0d32989cdf7bed4e452c331e82e375bb651b7edb4f562260ff8899eda1fc0ff412932f51cf3ba5451e9be2483683b1c6ef426c13c71d71f7ff65cbe842a5fb75015598fc9e54ca3f3a46895d7f0d22a708a0e3f16cb0a4321fa4b8e022aad0bc6cdbda242ccc6e409bb42d213b970d010b620d96ccc782a72d440960fdcf64c4e0cc4135a9e9b79ece9ed2eefeb367ae8f07b3481bfdb72c0acdb206da56fbcef3c0798c5e30df5d85f7ba58702f2e619c1c9b20da00d9cbaa23c56b3a27e1f8c4f393269135ba43f129fa99eda8909274bcaff67649c859ba716169e0fd2fd9911ab6af0ab33a52c3ea4826a1cd5ef5d7ecfa6efc81d0997da45b88a32b3c0a05b1e31787e998cf540cd19c921d05ca5298168fec43123f9984cb50799be7d5e0fe016ab8befb84d3bbf95478c32190ac459e39bbf73933129b3ee49fe633ca320d0d515f9d9b9e5464c2b9957c0054b6a0067d1a2250e58ae983f4bbe8edded5633892531334d68a71e7922542df5299c3b9c6637099d8c78500a19659f5398d5eb6be27c820768cf725f747bf05eaeb2fecc242a7cbb8e03c30f80bb4fe33fe21c88a7f0d3a5c58e13854d085b893790ce821e06bda4f2f96bc0bf12a6bbf25347d21bb164860de8b98e56c28ea6fc5de337800c80d55a1730f44103da39313bf39f8384d90149114c3b43d12afdb384c6fef2f3cf83ea753187eab289147a64cedaeaae25e275644d574ab001411d2828a433f5737fc6c09acbe3b1518cbc746439588f026a9c7fa12ea8446c9debd61d3a8122dc690934edebaf7c08772589fbbbc1c08c8b21f0d1197a504cf68d9f3b6b1dc0985a3813ee25458ad9e1db867462fb7fcc2f929583677a0ae1179f58bb1b1506cd5e8a5072752ca749d06037ce7c61f7ada12ad83ee168ee40ef42ba922cfb99e9d5a7c15641e684431e23b47a23c18f7739edd2a0549f973e8b100844671f1ccbaf33cfece8daeee3495c8e84df4dd55ec2f89f873df3f712cda2e4cdb9acff773a99d430305a4513c798b3478bf30f6d72edf13f26aca048cab0f727bc8d69fd3499360cd94f8870ac8b5042c493bc39c733fbf3a5ace3c9dae63d698efb0895c19f09e79134e0a1cacf3c8b59babe31a4e4fab2439cf6da22971eef7c0e24c44977d18cbda100cd0712b413531a329c37c3aa433e62f3312a9a47b98ce188522dc8cd0acf6661c1f471fea72d96a23357a8773ea731c0cb3ec5f052906c9e6e0792c8a8f76a25193eb49a4ae452fd23e3ee93b31286ddab6d1ca238406da5aa191a0c2d6b99e4aaa54e52b98c4a0d3dbdf2a907f00297977ed628580c22feb847754b7bc91434f9d6bdbd04bb685bb7037b6a7a5133082587b85f5ac80343de99b9183e8228252dc782c08183d07113113f8564bc46615971996d263f7fd88d9e610e0294c7e4bd70f2f6a96276612523c77d1e05df218e9cb96759962fb932a2925eb5c4da17538422fd9b4b73c463a099c64d1481c6672b02496fbd486c650cd49e8b645b02226dd173e58538de577d82790aa27931bab2e3dc4c8e866ecca3f767d18925c74eb3a125f5c35096d49859d64e83bd8c599e17eceeb7bdad790e1abfc124f56520153340bf2a8b107ac9062bbc06a6b1883455bf1120872bfedaaa3ee908c90015cd5d59c9ad89c952607892ceefab92dca35ef5eb7b8737d1c99cf210d94731f291290893c086b489ccd433ca484c1f32b7c10c11f0c05bf427f96c9a364cf9e923fdc9ad39543356c34002155ba04a04ebdaa4779d644c14c89a9c050b23c46ee7e8c748b444fb851ae3629b62ddf9f39ef0b9a9530fc348d76bd2e3f449e9f68e664fe09fd66b163f02cbc8ceca08b9395ffc60ae676591949626bba7d04c0c76386c2e3589cde5dedf9f7f9990085cf1e1ed35b1bfcd727eef3e44300c9822759c51263716e6c5edc87c4258884ee306595e51f2a93e9aecd39341a5e6b29de672e99582e00beb7e009cfed2e1be3060ee0d6704a4efea2f6a89bf060080e3e402f5bf8ef5b987170ca3d0a79275485e361d6b3c5cb09ab361170afd8a07174c6ea1b363f1d43f86aaab4e77744ea8d1df85b56081ca68b5a75d0eabb80c404c17e817baa186ed55edee709df2b5012d62791fd6c7999f852b668753cea378bd96e1c3f39e321bf1e7fdc1f484f665a34bee58bf5fabdbd0ffe78d6223e661656dde01857b813996ee5f71e02cc2107b365314fda2429a525d2cba98cd00188701c0ccc61803b6ac5dba340e4301d293b652359726ca18e7bd0bbe79b2bf3610655494fb2f91b14cb212465942b194b599d6dacbdb5421ccc8f1ee72780c0707dce3c6e6c5d03fd0a03883d6d8c0a60072dbaac8acc32eb305dc29675ca68bb08325de5f9453bd1d8710f4f4bb2fd9705d07fd857edd824b76c60b318161c6ff58f5f299b2023185a38b948e211d9baa4ea1df9b669f6e0ccf56ba150fd0bd2b40fa6c401c98f269387bcaefb9f907f5920c9b20934053a40fd0da2b216ba164d6ffa0d62fa37fa028d98f45cd26b3e7c113d277256294fbaea9f4f348da3a151f979880709ee0d94e38b22535757cb7f47a56ab9cdb5b7dfe6d66df8702ff7d4fbb6726df0cd34c0bfa50ef681290811b3225b36de2326a334a53f0dc7cc62b172cb60ddec52aaa0fb212ed9aca8e74b952a5ede8ce7cceac079fa36b290a1a4b22b13dd902df35b1a64592b000b2767ca3a8b2363363612c5d88aa0d4fca8b14de3eda50da4ab82b47fa5db7fbc7c2dbc34c9732546a656804c1f4542a927a877423ee30fd202dd8a514f37044ccafc6dd37a0345d5c513a247f5ba005c8577fd842b24d4b6d5bd6c0e5a94f32713d0d6cc504db07fafd6a765b0dac9dbff3572ca487d9c85fde99a50fd98c2ec4d8a45d6b2cc8005158cfd36326027f2ea801675ae29e16e3c0c2cce9048434a43b42dcce5efa29faefd7fa000af9d1742cdad1bdf51d248dd460a14a856dc7ae84eab07a1abe2d5bfcfd49cbbb6ba9e35c9c2fd44845f105da69c522217b86a5dbac021200d60ca458095774f8a886728a18c6ba93189087391864794068695ca7e24222ca07181b33299740ebfd53a875999806b549f25d41b3ce8caa68b4a51fec30cbf163133a13f0890d80e44b675ffd25f109b96e67fb81b56253aa1310b29b0393744f3bb8f471823c7ecd410e533280645042e4d81ff0a0aebe3f8763a2120f2ffebb91623ff69663a8c67c894772b44f7911d4e553d1f7210ea650a7d14e58ff699aec2c4847ff4338e066c12218b36b66b992bb635e22aa8e64fd6f132e3ca4b51bff39a8c8ae7412607a9f6c053e6619945d9ce6326ba20a1c59f61b3e5ff015e004e97091ef1e08ddf56778e3c0738dcfb4d84026a9cb0b601212ec6d9a56b0b20df1a8f4057dac0601d67591136ba14cae3ae387cf138932339f1a45fe28c4c7a5fa4647a5c4b3957e1b5da7dafa9fc5d02868af3ad002f21ce620c3126a294d6b6e99fab1f6e34f8e963c5b86b33734757e592d8e4668b9b523a86322affb80d759abb8d6f811bfaecd477387e8b1367b75bee54d9bb30e0bf9ee2f99ca4afefca37c222bd633e0c2c36adcc413d6aa3fe70dd209b601f0f0d26399a8669ce27fc2caa21462df8e99b89f230b1700486199b65f70bfea172d188624b052540cbfafbd7cee39cb3744ea7af47678d1793f6098d27f86e180bcf1274225c165747faa4c8a571f2044165e396f3cf46e5c33e9eb5a88cea4410c7df53e72110f7cfedd5aa7a8f1c3f38cb3ef2c94501c98c4fdf7ef2ee3bd618395ea21e13a55e5001ea15ec60de0f2613ca55142096af70fe0b069eeb80d2d6b150d394f499dd2ed08c31d0da4ab465f9c05ac088172092e742271bae72464f09c50bc3c7f1d87fa8e80fa0ad7061a2e9a9adb583daab5c2cdd63ab4a58803716bead885616b70b61142d44543e126c7eb1f5c6014811787bce5553c488851006b21a28d474ffdbf9031f5a2112e2992e5d432d4a4106f713021cd24cbe3e08d7e1b3a88a27334d91c10876c063817e123dd372d25f817b4abcab52d43df01139ee0ade10983eb4b428f192fd7f174ba290eec9417735442f0977184c8d9c1fddee68baea4cff546a6352838755f4e936daedf6442dbb6041f336672031258dc778890287d06632a1d23978736b5fe41e5a686a5af104d5710350c74bb80ca6f47efa84ccdbb634f5f0cbcc79471c1c6b7f702174fb0428f26bb8993ff24a1062b4d6b3ec828298fbed12e45938f85c7c96519cb05daae6f0d40fc088b4baea7ee1b1a271111cca8ef8e1f08051b28a5e89a4a4ade6c2fec492512660a07c8dd72d0edfc1dbe8c6a74dd27e90abcfbd2af1e7384ec132b55194d788070d255335df778bb5a88956158404ce4a5579d03f1228f7536e784fc6d80c1ba6293181f9d334c0b217a84a473664fb5a5ce5114725766041af522c99d7ba2d14573982dc13af27d8674dbae629e29d3ba995bcd8f65fdc41bd80eee80c1e8533029241e8b572dcfcaaf19c76d6c2fa58b74022abea29b8827ca373f00b9af6b3a3bcbff618ac69218956b49472786c2886c05650583189b1f50ccbe9ec4739974a926921534be37683eae7f4c8d9f07075d2cad0602a75bbb1a0927b015e9a3d1b2989895921d7b62fbdd8482d8166a1cbe47ab06835ec4efb88e18d478027200905d4a3f4a0578e2bb4799849ba09f6846ebd4a909944c0bfdae72e95de5198029f004f80ff876cc0564238afd3400ec4ffe03f11e9a5f3b3699ee50be98427a5bb00e08f11482f68a13feaae075e57f0691df404574fe555b6136507f621e4f605dfdef586bf3632b81a5b258ae016bcc7555af069e665323cedd73b35503de2abeb8076ef222249f706057fc32df359a83d4f02de9b76d32cebfff63cfadcbdd6e307630579bdaedf0a154b610716f0745ad291462ea1cc9e05a3adc69f33b7a3738851883224f0d57d3dcd9de36d581da2602881ab2837634b3c810ff190a161852cfe656cf8314ee3eb982110101bafcfe7aa3a58782e876d2d1f62c52dd9119488384347050e8956f4c1f9337365f64a248ea3e0e3051ab3757d7ff1012bcf4a7bae860a35ee360ec0e5b4699d0d77ccb7dea42639e77ee523e360bc7ac08eca11fa873c1bc0a05a1fa4eaeb9415fffbf5ce541b22a3d9c41c5f2ff24dac28174f70ac72ac84bd8d078e20c63aa04f1619727d93b916bbff3ab4e9a4ded3f9b25122f407ff848eda486fc796dc8f56c3f58f55f9399bde14b6db2ab95a4731a309290ef2603956b42853c3ebbb06c5efe4957db3dd6eac78d9b3e3b6c12f4271225ce730b4f27f84be4f08ad6532ff65e60ffbd444cf5f049f9fd65aa9b599caa1e9fffda24a197e82ee5205afb91a13732b148547f61633389e3dac57e2953f207fb0c6909e3793808d1bfe4f9577da63e2425cd9ebdfbe18667502a039a0adbeded09ea14ea9a84a489a05fb7f10d547f4ef21ac5806d5d4415cdc673a063ae1c2b752c9d0bd685f1c78c191eed31867d85d696ea4893d4a1edb36021792fc31bfec532118f4f985455043714ddfa4eb8cd1e58bc0981a673bdd8762dd1d8129fdb65c4b6370729ba69fbdf87e7a7099c58167f332cc0ae399645ccc48f1a57435323fdbe6d833ebf28a7fc972a3318ce49d8a977b69ab7cc57c2e32c0ba5ed7e260e764e04be14a14b90f677ca460984b5e83b0cdfe6b257589a6ac00f2abdc587f6ad6d1350524549c46821f8741a28b85406775a940edef08e076266695f3b7385287c65e4016c45eec9d332a8c5524353b327ebeb891e0e4fda4503e08b755ca496ecbb48faa239da988bbee7ec9599a9e2c4ce00749eb8c674b23dd8b0d8fbb6c73bcb99209d1abeae31393124c1e1f3f80c61b4c2d836db509830d1e4b33fd205003267f1cd271b3953f9b2aad89b79139baf727641f6bca9b3edaab0255041c950d23fa4172e4aa514f3cb3345d86da32be2f4757c8cfdd7358a5afae1fdc60271ab940bc4792f095072ea6e52fe42cc126c2b4a36fe5f01ae976141ca96b4fc30de91f0eff1dd1aa6d691d42ec70f82f22c38b7e6db669d2d9801b5b33c52099db311c9dcac241362f3884d2b01a8e7cd104bd79c2e427b4a0ba2d13c579f713e6b650f2a5f67e0e7af6bafece20dd25e737076d457a9be961384f40c701c9c9856b33dadf37ed72108d845df58c471785eac6c9da4d5e777cd570003b83c785eaad2934896dc9fd071413232097aa48da0d84e7776937985063e9dbc2850a6d0121d25ec563bed9c8777ca338131b1bf8f26d4ef0b6e980c646cfb052441e232266bdb03c1143e9b7653d4eeefbae67049cf50cdfeee65188036a6d7eb827204afaf1a7c8c9965b78d911bce066e01848775e4758f3cf2d3b33f79f1208666719e8c70bdb90d402c14963fd91e13ac9e20d37fe527f72092f0eb1035018f7a1843692b76325cdea7f36cfcc9432ca782cb15492f1b5b37808205b77a96f2aea524e24ee28c33566bf2f9c4b0e68cb9515ae6f80461694b811c35312edf4b60bbdbf469c6a79148e3b51c1faabc112c509077828261fcbbc21c544ad2c76bbc01322aa4e65521070d32deaa88f5c238efa7d21d96de36f4ff225aefaaf6814c8176ceac35a84f0d7a0791ba68ce18af453897918ff46a47136f653a34a3e5fd54069bfbd4b1ac2d395ad533f61ad4a6bbc9e32d5ba8ed98da39afbd0f469d6539b24417f49526e4ee55d29a5c9efc1ba42c6f5e04353495b829c8bd1f19a23bcc25e2d28ac9b0a0897dbf1f5c1a4673066e0342e23bb64bb86fa4f89bec928a9a33bb7eddbff22489cbead654c533638803bb21f8e48f7fa3216b76608f686334257d69bfc4868a11594ffd88834c0cb713e1331d7c3b0a0829c9ecff60d7b8c27ac628f73ad7c945b36f687f1ed8f5aa89681f73e91ca35e7455d9cf505f43b611bc243c8e2a8df657e9d985538cd9e777e65df0aa6b7e4fa5695c0b47381e67fb5831b5e75a5d88be10ac7d598a9979ee989cff229910d6f72e5b84e8ce0cf5626772e1153583377eceed41bcc050f1a56dd509c18dbc7274fe1739f08754d89cfe71e68880527ce38d041973ac09913c7d990b829092c5036782e6a4b01723df0fe86d58d076ae6bfceed0b0643cf86cda0518ff32bc4c6f9a9d6c6af10b068aa8bb5618329ebcc924715776291a7317686cbf89e592e429123a41c5919568e22703321686683e489024c1d827cb388565b80cb6ff3ea9019a7c69978e8a6c5fc66c84b8da4c63a06fbfe6ef4f6650f1b8a21e25d90966d92720b78cea946e0e736c699759dbd3e2d0d0f287f0c079cddaef23bb7b2eb87958375eb21802620d9364548873b10683e931d548897108fdec94e547236ff10b86f9935df2268181fd56d474617217ef9399ee0a7a0556ef05c4fb2802c906a8b7c5b79eb2da8631df9d66bd936aed3cc1bb418ab8a143f0f2269d7d40c649fca1e9410fe2ccec92862f8954a6e081d7d818b63c7bfea29d78b4ea6994907d229176de85605c3bf396e7cf19d706f1e9440a7ff8cc7559dec13ffead5eb4cb8160e0498c00c74afae9ee8afa3f7f352c25049b1ce8587f0fba5abb04a6dbf8149c6014462f9e2fbf8bd20325ef649db44594e93d31fbaab6f313b952bc9db1264efee5231f5ca73853059b4e21e0ce20e9051af0f94c3caa08503c55cd4626f29e08d35380ac07a365334ac8d8683eec9d854e2f3e0016ac942750077bb7cd522a3ae95e5bc719af68d5ee83ffbfbdf36e6880878936d47cfcf24d8141e85d518212dfe48fedd244a481cffac7618926b96d41ad30312fd6a3815a7022bd9573d34e7c3ce7896a4e12e2ffe40f3196d3f2156fca0066aab2d77bf038d0aef4593aedb2439fc6ad3e2465dcf5e2ea90b9db6eb8862993a64fc2456e5dbe48a047a15034faced122484d3bd280f5b8704c3c20055fe2c787429342f9d72a499274d6ee49d64a1bca80abc6d150a7db1b1a7199b1f0b06853eba56da02f58315219afc31ca56e0d3630d954b9e7d07c977892ac0db9be692a3737e94d463dd1122e05353ebc39b5bcdda2e3588a28a1d232afebdb56f15a4a8c52f37c6cc500a935d799469f41e943bdb77582dd86d1ffa6e29523402ce5dc11d1062fa54f4b4cce55c49d2db9d89f9678d1236dda74c0cfc50aa494e7679a17e0d5bcc54d997b95924508e33cc18e625bbc098dbb78fe380c95e4a82f5dbdf482de1458ac1c1fc595ccb18d957f614732a2fe9bbcf752bea410d834ce25890fc18932f6a2221172b12861e2a349369ce810ae6398dfc59d9b3a8a71c817c74678f5938214baba9f97b4d2be5df100bcb740d43b30e7c3b6f4b214798097d7054c4c96ad1f0617499dea4285223934bd9e21a46641edc1fb9dfbb51b1e3c4205ce1d3aed86eda9a4899dba6eaf68279da70dbe891d85a8064fa8b119c0ee610c646738461e82f6fcebd1583895a3a589e7e9495216ab02f7d1953e5fb18285b5a72a739a6735faa6ab3028ed2518f66cb58629ebad8b89752a4b5ad2fb2cd3432ce0dac04e7ed63b7b9b7df69fd52f9cf5410eaf6d178b565d82eb6f10578f4d1b1b7e8fbe92393b97b25d1b87db0ca6bb28723763004ba728778c3e085cfc2f13a417ac5127df0d0102d27a66f158452ceca23f97e30cf60a514fe357de152aef9c278a0ab2cce953fa926536915d0dc9788c36ad8b5517bf1dcd3d5b03301bde14541bbd110ab74544c05cd83f80ba983e7f5a21f437c4f71782e395aa24b380be5613cb3d0898a156b7e925ae06e4caadae528b2fefd5a2285300b6826bd140c6e6adbf9e0dbca36b448b41177b133d10b4e04ea14ab96aae5f276dc33c459d2a3b9e013b0f6acbfa21a0bbb191e2b604c00f09719e70253b01c5e64e0ac10249c546f8c930ef4056d43d182f404fa9b713953273761d880023f23c47181a034d1c6a602ba68346122a019bb99a72a5d7a0cb1d49e695de807051b9c957ea009cbb98d98838b2928467302123f274bf868116fc89eeb53db482cf838bda754994054bbf81270d499d0491a364c33ec3914e47b6e80afd4b3f626eb34ff46a7409e0185519fe7686a995274257fd68a1d16330405ee9ef6bd476713d66b3f73ccf6adc525244e468daec1e0d62b622286a7f87e3edb6cae37fdda6f5bc65e6ef0a20ebdd1376cff5522072449078ef2a2b395df32921edfcc011ce3c6335b4b523f568be9cf551fa18b3d9e4a8eb01e96883176842f31146fed0e4a80a4f3c874802e78b3f4010f474c9c8a269d068435cb3c60f9ada74cceb868cc841fc7729c60e41b806187db5686db2da539a00dde07c9579fd7fb6589b08bc5629dac2bdb9aa050f89e8ef96de2db21d482024d0b52f815b52d1e012cefb85c1c3cff8de7ab88c4475d6ad7411468f60040393fb9ff79c684db4c6ce36ffbb05a38b72f63b2ab27c5280bbae3d2c86e11b5a06f1633f9afc9513baec408fb0bf60b5f951b7c7fc8f96b2ce88f03c385b43e00010e3a50449ba791d54ce61ae1e6c60472a8ddcb257737267d02312f394c4f0a95c72177ccd7e97b3bffcb6266506c6af01cf48133ab0033aa6e7cb4db2a98301724b59884a795fc9c492c8785bdffaa25a63a07de0c6713eaa71b702178b8bbb3791a6958ad1564305a77cfc9c9b9f55faf208c7a822ac4274e34caab42e628f67b2a59b71c39407f31705bff2c27d47bb6aed85b269f60e063a60dc8b6a9dd9c085818123492c7231e76351ad5a9c01c4f106abeed9deb2dc46865eee070d394dbb35b9a260fde15c58002608a765e5756c4ef88647bb23a8c5cca26f6bfc037f83e448c60797cf476754d1a3634e45d56c0bbbb0aa1fea8a05d4777efbd21f802dadb26cb6267c34fc43204841e5894dbf1e653ec2dd8f863acb1225593b0af074693e6dd0ca9f0934e181e59c939df00cce14c520794827c96d98bedd1c01027f8815a1878a61fd54af3b22b0a165f8e9928a177244db7b21f99e120ce164df6aaf8b1b9a6f9ac8a82c13df9c3460556650aa52868206c40ceeae6903bf937f5f8b3fb0ba0e04856e137aa4ac62906028db2063f51596947a1541bbefdb8314780272db066d1a86759def9c13453e8b86949cf1666ab64a220f9aae17fb645b80c958e0f7d55e80b296fbb9ea04ee2f0ba98ad863075c9fcdddc9b3a070d73d01c1314e87790430ca42d72d64edececdb24a83db11853ef608e451791b776bd57d3065b5a7d4b0920b23b484900d5cc565d9b403509134c96f43e82b45e8cfd454b5bc9e21f8f90c96308487c27b5fe295f55b9f6be06a2e3909763e1f371dd07369b5b459367c2e3cf7ad7155efc71182804ed0ec036a6dbc804da921cfa32beea92f76effb68a8b1bd2082ab9893708014c83f77279e3f1389541f0bdaf5b6722bd8b9fdfa2d4f9adc1218322f838a558f4f352332c8b22b07cffc9d2c9ec77d793d33527f021d28ce640e8937a24fd8d1687f0037f4377eea0b5e7d31d0b48641b72aff2a55d6b505b60e9ec7dd0988efc41c73d66042c3d8409f0c2d4d72ed24e10d3b909daed4d6fec7bf10211e03b9761fe6fd0f5a8cd26c51a6fd5aebfaad1def42dd41b957a186aa1de5adc39d7ed9c405f17d91921796b7fcd3817919913f475fa724bc165ec2e06f7459b20343a10c5949001d5e945df538eb994d69c6c9f49cf1317173e418d8f2f2766db1172511e54daba1e159ff49916453b8a24552da7713f8321235e677dacd7fc995b8aee9cbb22a0942b52405a5e8445c2e4f7cf915d262563106da6e9f2eb9782a99392721e84cc3e8a7b4e6852c12b24a2692f9b82d53f1784fbddfa0dd53e014b94ccda48b5882a668c190b68b2e0d26875f2183b67ad8a1b1ab1393958af9ee39afb707b6c8d18b001aa5d70bf20dd86e93ef237f87dd26e08c378abf817a681220a6ef434d589c0a3bf7bd1bad6721a6e9dea4f663e3f5d6e5ce0606735e7f1bb08dfe44c49f666c2e34ccca900dbace05d5c641dfa5aba50d9e6cc842b8434382eee6330b6f9bf63f8aa23865e18f365461e6df7decf9c7c21e0e4a0e12b9cf77a24080b25c50fd4aa309197ea7e1165e33896e0f18e16469c914a46fdb24037552b23d7ed2d401ac07d304e2326521b0829b74796a26317cb3fd147bf4de83856c242f8facfd81d4edd99b08d0fc196576957110a31ef626f0eb1323c64ece2825e020696255e949dd0677448159345c91c0675d1a32fb151dc42d555545cccccea5a1e75f1841d5c91393b32ba97357b76ef4ba80a72eff2b7dd442d4d6c25cc071d14d8ea44115a308c589c9857cc5831986cd49c3c33df50e891a1b2669339c442a80ca986b912011abdec178972b2e8fe86196584314931d15493e4fd6f05d14abac2298080a25d237e078b7f2a06655bbe7cf456b10b4fd1925d994ef853ac97001d800f5e67d7525e1725d1ccde4c944aa1fb8f094d3044ebf312e2ba94d86e5ad5085b71efb9fc55eede51acda92afff3c5617bc7a6d80e5e15330d4070716d83b4f5cf3c748165f2ee4cdc80778257b2615290e3f3a9350be1abd56b6952ad89145f583379b6b673b9618be369a63ac4fc72875184cf96507bb5731dd0489742638bda26d72d9df65fc903aed5be5c14566a734407396748881748ee99d7cdffeb130b5f6caf9ff9a32ce2129b783b7b1c8b52ba06c253e8f01a4e4e37fd73b68db1bd9961b159aa8654aba4aebd74a5ca0e8a9f54acc515bc91446681daed3675ee295f20b5fb56b35b25f120878233c7ca5ae746d0d868aa90bad0cad4ca2585786bd4c234c94b1c83924eccc80b31a43abc9f4c9682be27ba24824c985ca8c03234046ab4f92ea3b0422482fe99060d47270321e9e38a4e0166bd77731c504bb4054bd51426c929c761e96a0beee318f8f3ea20dc2f20dda9f4ea39a3034e6f3ca84aed4feaebe4055ddd4b6e2b4d105562f25057d57641181d5a9cc55f63e7b30413b90794837c4267e29295d185576808a17264462c9cabfb24a2a2140eadf668173c22a468a8e76a30ea6fe4d1c5fe27900df81b40945eb6c0546622652d1bd1eeb2ae94672bb244f912ef6fc5a303b7ab918215d40e121d12514442ef562b65e2ed4fec8c0d98475b1fd2d6931817723075d530909d7df5167a5c7c35d2b24b5200a4033f457f496f47f72aa2f6be65ebdb8d9498b66599e12995331b4b3e6b4d34c5e3664aff63cc044de6d37283faecca20cfb9cc500a70fa2905ebad41e0ed3b0b5a7417be7b5ecb0a6cd361cb854ad7151bd5919eb302c6e583bfc40ef195b69bb167575a0d09ad8f70ff8ed71c413f469d96c4375d6ac2a7806c33f628c9cfc1305069d3ca62586c6901df039fa2f975b37013245b39e9c29f48ef6ec55e54fc93192427428e020c3d59478c1c5bba582f4d3ebb9f9a5e2d0cbd20355783b54595567b8621fdfc4b7d28edbd699cd1a3732320be5ee355fd3963ff7a53bd61cdb7ce0cd9e866002fffe2a9f3c11acd2a529021eee8be8bce8c01f3e182c499cf81f75f35a9033910db43f292dbe8046c31f0daebce2ec3630ad9a0f264c32b85f2d636dd66306be6acde8f5a403892f22243d8330bdd473072c7f209dbe67f563379bf9224dd0f453631f90481c9531a370df049f90da40f3a08be74f1a8bcc5e51ac51735994d63bbf5c479267a8393a628d7ba346ded9a1ca4dbe5908f3add0dce3ee1a33d1550b950fff6953b9215467fc3c0baf7448dc2a792bd9bd416e1cbf763973ec4cdbc14df91ba6ffa01fc0dd2ed040a83ffdd96a7561534328f9676ed7ed965af8b904a34fd86cd9101493cfa15644c1372a22b9d3e3934759d85d1eeb4eb353d45efc8cb8aa46ca5e14f74fa7cdc4df75a80240f81909278b39a6cbf1e8466cb7281380809bb5d86a6ff876bf6f79c323ae0b534c96a738d7297e51c0cb862097f36fb4c28f86fbd9d147bc071f70064cb3d3d423b836ec6436faacf699914dbf57dae0d054f240840e740c0625935b51cef2a7aeadddfc88466c7e2ebc0fa0dec73f807fce056c81c7a286f1b3f13e41fc4649531dacd649793155313f26d9c39aab0ef871aacb6038da0fc9c4811cd113f68f49efbde2523b6c871b3e9c5db799bbbf2f6d3abd543519b2052338fdd183f6542d42064305c19cb08df9127ac4587a3fb6dfcbdc691aaad7a0d8f35e81bcb36ff928429aa3638ad2097160eccb32a68f616137c9e2a82370ad71fcf9ace78f79a88d48048f8c09e0c77971d7aedd49bdc033c6d20deabb61acc00ebf8ea32ac342509e2e30bb2a9e1389bb9059a0baa1f3b5c378c5c1f4004ccf0711a55f1fe03a93c41699138cfb821def41f921905f81463a83ae3404810ae4edd1fb1e5eeff96eaddb7aa35c694792ac968e9ff19c3418fd16c85ef8041f0c165fd19c4a09d2fefb503dc7920f9063ea7077a45a7a57ea78c3363b924f5ee33d03f5ac3a8e14e0407e65ed6e31cee031b79774670784074200b1c36ab912ed69ff5076cd496bd0e03a0ef2667d21389425933d7025a20d4b472f1526e0cb644c209017528420bdc3ed31fac8201d7f5e77ae196a443ab7497e4cfef75782bc8f437e2fdac1970656df49b90e1f3db2b1c12b2e2f69796c2d0acfc27cb28d53fe9700d94c608d25b24666d6884847ce1224cbaed9d20fc58201048e7fd73855762988524d915878d6b34f12d659bf000ea8bfb363676ee67055a0b8315541e2279abc443ac16305a6030054833111f4840019cc29f63a9f459e0e6d19192b1c264cf07b5571fffb7f89a44446eb19b743eb9930c40df93adf4a8e31d92354b604529d39f3142f429258e9a42b70ed0ca3d111c06c973d4389d4349032725566094cff8c80136da392f5f31184125b967541ab880417eed2035d07b251f1fea7de4312d784bdc06f286dc6c6be5c503c51376ad603bf84a9d7433f689eea75ee8f4002c6a15772b5496ccac7514afe8352266c2a3a01e4abaae506ae1966edc1f2b5a9d419f3b243aa35ea16fd93a81bbbed372595db716142869cca5618039a362ac2909dbd1bc6809a4026e08312040d709faf0ec546805845c8f44caaf5c94e429a68499633fa02145e3594e51f7ae9d2a9dd98c3640356adc6d1e0530a44b0956785ba5c381ccb68e281416fe926eb7074630208b303f5adb06417384f0340a3f512fe45c144f272237aa5143c1222d33d6aa1b8f2925835de0f94ed1b58e552c41577abc7dc9ad3c622a50f528f9b98ee12986c9087375a133268a41a4022324cd2bc98a43344e4382aa73597467ebc6a5a1307038baf5241be9bf41c19b57b38cdc71452d6d731a53d66832e5cc065ab75c28354b8790f573065a79641e37b1265c56d2b69d32a17dedbca724447c2a3eb659d6f67954ca9f5faaf53b07dbacc9f83a60fb1b60e573a5160686eb84701385aae7beac4dbaab92ffdd19244b0de667f7a055f04f6df3ab82936347afb9e819b039a4dd8907156551e6ff322b7f2e4ff0f8b28b50bdb2af52c472916f771330109ecb48838940750ebf7e2653888f1f9aa438204d6629cfaf05533194fc64dc25f8aac007c0cc18b474b6b49e7194c63df73b3520ea0826ac8906013865cfa5a2eadcb6a4747b7af25ca886905d7b10463059fd36f24274bba13ccd2f13217d78be59bd733cba7a10e3b46572329d8a2915b5126c5dd71d85c4f1caabb189ced5fee376ea3af064ebf803dad2a4771b16efe73412a7c8a95feabd1236a0c4a300fd08266b50f67c970fa12250e5a61fd6aceb1320d9dca166296f5005cea402d8cd971dd2766bfe743a65c81ba13b613912dde9438d31637d283a06e3da43c5db5ac04a16635514e8e0b10e4bcc5da908765f38402135a1f44db1cefa8f6e687c33ab7b318df2e7e2f9e1621888bf37a5c8b35918e101e372e598402f42acf48d42779d36c85da5dc58b7ba0e2ea1926e1f01f63069226c480ff3f742218fd27e2115b7a93fd0eca1cb4a73f02e919cfbe4aed4034b01755482cb821401a6fe864b7cb40b41f3d3293ee5e259f09c21332910cbb4a61b19cd0a445ed19a7a0f30d06244c2692bfdf34abe60b43be5429f26b84847b2441cd4d00ba2d353fc48bc13b67110344775212a80833efe39703a670e70318387a835be7fef3c52631d479363c867dfef95651626e7761c7e80ac5b8dac7aa62a51e78ddea844d12decb004b2ed1e6a521c4ff6c7eb699f56b96be59d307fa5fbc89f96d1a20360395911a9c41a9c96b9b8e7413c149e85fa6c3c67cf3563e9c2cfac286705b4d59a99f4d20f1ee118280f50eed4d76b4835b20fc1a9b6d19aa9171e20ce8c56e7bf56990235c85b80ca17ddcad135f8d276c4673a1f6dd1539aeadc8aa0fd0d8c3ddab35e2ad8076d63c24249bfe3c53fb2c7e7e2ddfb02fb08ab8dadd421a772c44fe9213709f7556bb198984f8ea3510ac15636e39198eed35f198a061ca70cb6f51a7710f1fd91f51e850b4660e6e972c9da4ca7b8e1c360bf203c2df23bfb33ec33611f8e198c5a8da41bcddb7fd465119faf2ceb5bcd2d5bd95f18f40ca57d78d730e6d834b82bde7c8d47d67380bc74f32adbc5239f75597f392033c2ea4bfe2e588e1e543917e2451bd34770848bc40ac72a4c47d819834d5cabbd394adaf791263c622eb3594ef4e072f3c60bf4e9075f60426a9d25a0cc44b1b161bc4b0aca0f012665fd26d6b416d1cc4d2efe1b715a3a027bc370afc8305b8796969d3b6ceb18fbe85d857404c3318501772a63da1b31285ff3934200cc50c55ed9f01a44b70883e09843cff5b5d70ff6fa6aef4add1a3066202a516aa26ffcf3c7711073da4dc6923c943ee4f1f8e52302221ad535c105d33ff802cba4fd8e845b9211f509b727ef6cfe19510921d26fc86520ddaf983bd6a38a6a03593e788b23c61180427bdf72e26cfc7aa7dced9e87ace3256d6d614f72215eddde5d237227cc69d3aefdfb8bc485ab9189427f0da81d03f46b0284f6b15b876a38cba56efb2c0eb6317aff60b43fb38400e75267176cce43d86b5ad2b746960a852ecc791c747252e07829fd485adf0023c03ce589f7be3150d4946a0ae93430532f010172d9ad88fca81abe76ad58ac157c9375e7368813845a34440aeb5b3dbc036459e6e976b71b3e4705cdfa87a8e4e4f5d76791b122e28c9cbff50df3fd3e8d160c1336b01f901cb1203eaec708bb3d6a797fa59bad7db29ad64e80570e1d8e0cd01a7c4828123f8f838106b14bce0ed9dc5a37a4c8d4ef4172c87b1c0823f52cb7377c6b4fd3e6d9d8431fbd7ed908fa4283a34aa78588c4394f61828c20178a686212730f885a335002cf4b203d1a519001a2ae11ad315788983340eb3f7860f8d5afcdde1e796bd873994de16d8da0d99bd21b45cbc1bc2a1f3e11a7426a203a6d3ae33385e3d178a7733b7a7ebe98bd44c586f7a7cd277d166728259131bb1469031a9c6bb5daa9f48d0830b28ccb6bc40b8955958e75ff5a42615b7ad8b7880a6f2c753a0be67eff033093fb28df708b4ccc52d6a7328f5cdafc93447ab58f3f5223571443b7471429944a50662b4ddf943479ebbc94fa4b47230a3421f470caab3a6262731603ba0bd22432644dc759c21a5f7b34a12d89c9403fd65b90aa42a692ca19b9371441a3818cbd577a25da5ed1f9e687ca68bdd97d7fa9c08ba0fafe80ddfeeffd723bae13b5b26399ee21a31bca18deecee0e8f64a59534cffb97e0d59c4688059b06481c968c7219810cf66bf9ac5926b1d2087eb61d35e4d65c69f42229082bb3b61d0e80f30e9fee3a2fb2f2c4c43beacb06c6e98c972bc2d4ee9c70a64cc3459054df4ac0b51d9ba8af289edfc5fcbd2071f01a829da3bbb863f96bc8a8b16d148e4bf3d2cb2f697137e151db4c0a34c4904cfaa7b3328d6f9b3384ce89e24d02cc8f1ce193463e1d1fa7cbc72c733dce6b3632e44fdb290627dc799c52c2f8ebc5f8d5ec9a4f85623979e1b2d7412bc0a83521ac0532212a577ba958f04fea172a7e821fd868398ef6edb59fb48af390803486fae456c7d8d48c5be26257fc7fb070b25a29bfd163b0a468010effdc6f11f25dbbc1fc826cd4a70db10ced15ce0a27de1ad474374a74876bce722124992b7df2eb0c8f0a63c81126950a02a97b575b6cd8c6cc2d80d3a90c6f59fe4d806beb112ec0a2829238477c3866de7df381c8a7cdbf1b79d4e9b75f441a205d376d0573d69639d80b06924b9d5bf9f8c5d64aa398b8c26a4f378ab95c6e35300527a29b2d179940d03aa0a695f6af37880d565a901ac85edd0c8f48db0d991db863454416e393b4880e7d08cfe06a8cc182a8640d0b8a440e43afaba70f63de9dc7cbba371d373ee546dc656de2ea4855ad8aa388e0beec0f060bdd71bb7dba699d17f3768fc7c6e324f3adc52e3e6fe57e17ab86468ea3b9e5dbf7c996927d7f7955a9fc5cc97a902b580fd7ac201382e94719762eb555de782d04229ca13de63f211609d1154af20ecd3c49c8f19f1240587f49e8a1b7563db0891d211c722933420f40bc9f50bb509f9b6b13509df6cf7c8d2836e01aa476c1d8c47b3d802e8789ea501ef081b69d029960c34610d0b66be43d7c40ac2ebe705a7fdcc29cdaad7c5af8c9564dfd8211bf73a43545812191e85e019ba13c98eed01c381370c9d284539ce5ed4fa494c15fefc4f1c703d9aaf78464d1460e18354b7576de15e348d455a1343b9c49bc7b28769c52f72cf3129bafba7cf1355044c0acc767b9b2ddcb645e3540dc0ceab6400f576337689894637b9fdd40b26ff9ac5b315eb9196aa4d784cd24b4775e614d11e98378ae1862ea2b16f44db94c196c38599a13e2e66e00136711e93bad809e9d3315ad09d64c437c6a75b81c701672fc3e825bdf4d198cbfe7ac7550332e066659e3f39901ea212d5bb62927bb67e93b3f97ced097cce23c9d0ec7408c32c818aa90b95b2b172dc422586f0331e0d1768c80bc0f019304d7d1a0f51876fdc54aacdb6daa73b630af735ff6839ef485108078955b8496a6fac5c200e9c603f436b7c51cd94863f45db0123b02db043077c70cd8d2431746c503818d535d5109cb2b966f5e5dc9d1a390313560d35f67a70656ada513bc83e2f370e0dc4cdb6d0cb0eaae0fbc691498839d8f9bcf86dbacd1f16cc61ee5f1f3aa37c804436ed736aee6d220bbe7dfbbda8013a76b1277d5fca924b45508b1c26080986026aa42f2f6cba4b4b386f6adb014f362c3ab6d3d2e220b0f7ab4fcc30d62017a7eccee0b627b6084bc48ba314aae70ffe9c6bdff3a7daa16f43cf43ed3f4daf8c6cd655bb3b36bf4c4f634bb3f64f371e2b8c63d707758562d8c86cc836bdd7dfae3188e8db67f2a1a3ed4f328fb43773488509b8b4c416bd0246be8c8f8c9c36a6a794064cc34b30bd4c5c64787d604aab491792ac48072c7992d8272880f997ca1a8b5817be99f64daedf42b859b486ff5b46eb9fdba120af49d50d8732ed6eae86cba9bf41d3feb2812d4eae23ffffa57190ab387dea9408d7210f537d968a216117a93a513ef3dd01989a097d27e8d4e3c06bba05a3e34482897e831991f2dcaabbc7e02f24544964ac57d8e2285500bc91678f588bcd4d30be9486399455f93f68245a5d31887b994600e6ef3a5837b66f68beebedf56f3ddff2aa41d17b39ae516c7c8e6e1be52f31f665c8483d916396bb5387916ac3f743347b470618f8b528b3fb2766a626dab11dd8247e511725c6c9ff443fa4cc8aa13cc72983d36d0dcc909a0a9a8718c76141b9437802878ee8613a1497866d82f262a0219278e725325a9382e6585f05bd7f929c1f63ae317e17b9eef1dc5dccf81a0d81be267f33582aa0d6de9c1a77be523ae0de797ed25af6e653bb9b2538312dec3ae51b2e85acfda7bf117a2a30a5e934eedb018ec191ad1e1149740ce45868b447433226ee0c50a5ccbc47ae11875e5a93f294467fbb748dec9edd17cab0efc16a56742b6a14c6e874d64b78dc595ad72a33144cf9d92ce80433ace439a1c4b6013e26c077538172deb0ee05d9f6f54c62e006ae77ff95c335cc844b01757c6e1e6618a31116145d8011992189f0b6083d93f9ac271f60a019ebe26b834b8b496c8d9254c8679a6e64f80dce59ae9ed3121bb35fc184743fe3fd4f800916ece0cc447be666a633d40dbeaec31622e39040d5780dea6aabe79edfd1cb58e966523d1b486ddb4155f5783966b9cca650b1b98b6a08489a582fcea008bc0edab6031964d4fecab305791513617676b5e709ee130921ebd83330ab219ae7f16ffc4f1c8fd9740c1b45557cb8c6b8f1eff7d9f44519ad32dbef7e9c30872dd036584159a8706aaa524d0e5d4af1857f6123bd700a656ed502515898dad1f7bbf4dae14066c76c69d4b05249a0675bd9b65c9f08b9aaf1e74d2e61b3e2d12a6df81a15f2179943dbc4eaf5815ec5dd994416b8d45f33cdf296c6d1bfdcb939e7a041f56b66098c87212b362299fc40b51f8d3ea45a73fabc74a8bc60ba81ee26cfb783a56bd4d44ef9e8ffc199d44779a6cf052a8bc26fb284c40fee488c4958ef82b5cf66d8276ef17bb11a8a07988dcdf71d2e3dcf6b599c56aca9dd28606663e0081338f8f38752bd185f8b99359eaf7d2df74893c0df149bffb0e52e6b57d9f80e08cfc5dfcd16dcc62c4f72cd150a7cd686273b0d2a8e06ad331b7342ac561dd6a317b559fb5036c830ce29515568d2723cc83c85c42e29f8e3ada89e23d19f8afb143998c546c93ea285dd983477ab8fee5f3848ec252469984498ffec58cbb663b3397253b74daa6718470076d40e031253d6de3b126ef78d392eecf8340de6fb323d0db9317ab99816b58579dbc5e251757298cda198c3804968b24fb683125c3470d11b3f56950f41e11fd98bbb14f8ae65858540ef24494a3d1ef90c6efdeee94768ed09858e45f20e3931e831cce2aa73397dbfaaa621ef39d662d9a83b33d964753532842b60355f6001c803b32721c49f82c213333eb790c27e52ddbd76e258d33263bf73dc96ba10b5f4ef94d3e0ef99525a79de13b6632dfd9c022e5f4e5f476bcba0eb9715e8e124d30481e1171846cd9c0e81eae24390280c4bea49de7885cbb50dbba820136cb35c749d4b9ecfd8ef903a5edff8fbd0b20414ee39d4784f0ad854a5ac97ebb547af7bedceaa3933a787ef6d7f41e80dac247cb98d95d60e60f85c6d02e2fce29824d7f2b74d9442173a605f1fe4a591af0068caa07a51797931c2c44500eecdf02fe214fdf36f560ce65676a94809d5642e76acab334036a86e651694bb8cd6e4730f047936a1e013221c796058799290cc22e51d219a9bbba4899a6dbc6c58e6aa8a72c2be0fce872bc6544982c4a1f33f80b2ef1615b2f3be1a0541e97bc4068b236539aba1122438ea9cfd4c31f3a88b1e2346d7a01c6cc6da7390ab802948ba2f313819148bae7c6ae56df043ee82d5a02ebe84a31f1b3685c713bfd6deb6539d26c189acbf763d84626daf4d97948287768c682c898ba06c2e8f6d897b88bf5928d196bfcdb11870abe785f9427092518752b5c11478eda3367b844105a241fd6cd868a0185b711109892449a41d367c964b0f595682c6db105a0fd4d3a3859bd3a4b028028e2bf94379e134e290fa474eb6d0b05678e5a3c8458b04f0b40a006a8ee3ea101aa34c590e4828e0771f6259aa9640f5b92c890bb36b515d7e08823a3f7d50514b5db0c1216e6d3ac4727237f5953263a1d4113574a166807034dbb6bb1d65f997b38d2b8df8ea954ff3b3c83d4204401e47b279060359a74807faa2be4527d33f6719996d14fc84af6547f834ec938b87a5d16b77e8f6b3d81a255324c15b864b2e6fd7c00e89800c35d01fa9739386bec85ff538c53244095034e01c6679d4e7b3433a53989af5eafe0e98a363c361b672a4b48504c30b75bae551077c90c7389a71ca82fad8d3cea193de63d2d6424bd500808072ca6800d3363049653bacd7da9b1d37b4ba6c3f2b5753736363e3f383e1d2d170ea18aff837833c3b51d29955fe8d3945ae0fe55d8c2116272a324e6a8a4870cc33f6f66907d58dec9eddcd7cfd8aa9f2302e9be410203bcc2602f6c777800ab6328a0e5383e9994672c41006d1254d84963e0bbaa7c7986d79567508530f45fa65f5a317538e6dfee07d1542594af2764107cd39f5bf478fa01fd1c904f8daca8bff4b6ab5e23814e182c089ecd00acd9ddb59b3a7062e0a19abb66de0884a908ad499e814f8cc19e6d4daf4657553322ec8296be1a1e10240459edf440ad10e3237cf774fecd148ed0f81bf6ed627b5a0faaa75bd23cd38cf476a546d429b400bd331fa94e2370330fd57662435fb503bafd1d4c2abadeb5dbda8901b81ea1969e34c96919c3cbbb817133b3f60cacae6171b4c0bf66c62dbc156e7f1e3b05ff63155595b55aa788a98d5cfd10becbc0ed3ee17a4d132c983611e79039e3d784341087b798d556139045288a16bd40e2a303d2bb1131af2ef57592332b2b793e9131d0cb13a724cc4971027d7342f7312c5fb32b01b55e0a88aed45c3d315c35ac00cda00f53c34300c426c11112f1bff9d78bcb52962662fef7b13f77c58151cfe1033f8388d6908083cfb30e400ba517d5f6160067d48192c3e0300a8e822ef750d58f5fc60e0e0212eb144e94ce7e647577936acc4039ad852fbf527bb4b2ad25b292bdae0a63cd631391de1bfe7561d670e3469ad4b344788a720288cf65456dec05556a94d54dab94ffb449d207cb958d2f36c4529e47e086e1da5a27840ecfdf5289bc89b016758167a8e5835e45255247204555aca092179ffbeab5b251081a7f775bf23eff6f81855cd9a7afc6934cfb1e3c0432a6977eafd51144bc8184bfd254f373ae6ab12e73f07d67ea7debd1ae66709bdefd77567d52ed8787fc088715466d31b67d130d75365861d4cc779b3f7308e819601f9435ee18baa5c0440d8df314ead3cbfc449a6082259f7ae03e93606ab07ce895e1f19f0a4243c987c54ab404c7d72fb15a9be56596ab18ea414833cdc0da9c510b9407f928df3cc1358277f55063f8af2fd57711095765e9fb128afdce3d76851ad5a5f29c12c539dcd80c595bd858dbe7a02cce3aabf3f5391d1473644f9d2e96f3890b479b81dacc3d4d06e9a9bbe4a692c9465c92556d3fb148b97cfe76d339cb248d1edf1ffda64d77c0cc88d3ea8934f636c3547e521fae655d4a108fadddeb2d5c7779bf7e3a7f90bb50d7557ea91f11abdcb5d7e8dfc5df7dc6c21837f4821e99fa0f0e19c69fde1d2df87ed34a3e0e77a8f404690388833f400f3200d7fcc6002ebae2443ba32bd48d14e87a042b5f82bc2c44afdaf8684692cff41d44ab8e4d8bf31c250e1c69a12f4c1971581dd99e2d12bc11d19acc6d36a3838cb3a0f00ac955215ceaccd76b4117eb47f5f9fa577811f91822e8e152f838be5b594d8ef4c4b9c12f3249debc947d24e75cfd1a3e4fbfcd8b59ff49b4cadd173dd7629cee7d2ded51ebd7e77912905b62c2629b29245612198b38388f494dc302545330f9b411557e7ff16d8b4a604c60e29e9768fec2cb389d85e314a4f19d5dc0d3a540fa912c41ab6f1e3f20d3ddb35425868885102914b1ef4d7ef359779b4520bf2b72972ee9776b5fff94b69b8901f7ac8d3c629ee7b5a34e8c4136ad2e79bf638ef483c534dc8b370afab687a3ddca45b5488810211966859d2a489f1a52dea8a016c2f64d544a3871093c0b420eaebed2ce398399c12572e36f0f370b3765aef320e41abd28845e745f996faadf9e1f40cc0b7e50971f1b070684cbbe928da6ee8baf9fb613a018c9421c188bbb89b014582d47397447efec32f7de04841b4fec41cc6a5be25acd707862951689029c516d1441e4d1210b9e867d8f728918390eb81041909eff611f4f244a24523fbafd59b5c9f6f46ea059db6bf39e2b0b9234f00675959d692b7690c30f5eaa8cc892cb959ddece59e12ed20ca1aee1f3af125b7c98c20b9a903bb3824e8ae751be57e739ab37d408dab9f73e3a17ab92f31532053f14cce84f6e00fa0c86bfb362e1ef3bd9e8296a8c9b231f0bd14c4fcd79cc967487600b11e980cebd346ca96bb872e94237f3ab50d53c68c16aeec51cfc57f7a1f54974ba66208553336467dbedb999f4dce454f732cda9a3e637d0694256ad7037abc30485c5758d2c14facbad64b0afae8cae8e5aed1c8b2debfbb95e109bdc51293e2bad2fe6d61dccbbeb9f003f2b598dfd49137156c9ca0f0d3c7688fb383adf6275c365408aeed042382b12eb9c771dd02782ce6f337d6d6f86ae84bc5a232c74768c68a85a4c8cd6924b17291d479eda57caa3f9c6125d70d327de95fef5bc328ebbe1660ca4d62126c6452762f1e64fbe7760287e6a702b63c71c0815ad698cc25d16f9ab433cc4a6bbd5b2cd5e502bf6144e387348fc36e67e3b5eba9186ab0500e768ed3386709e7f5be5bad5e463ec4570bd507a96380f60f86c9ec2ea94e629f9b4303cec3c0f9f752e8ceb74a26b89a0e6c03028f563b373d5e6548eba978f1102745b7bc16b45bc212459eda2a5c2b5ae141ef92e5f5ea06d4917c58de05ee529283924e8203492bc49845bb9245bb925cca34de037e1dc2a0ff3818d1b45f1bcac77533de37a87e65739bb3349615eac813904b7142bf03d3875b8786d116f0324e288cbf96e46075f00a389d05316fd5688273d4fa930f61de95ee77066c339b4047c3db3fec1c2fd24e0adba964abd670de428cc6a0ed693cf45dfabb130c4cccdf37d6f59b3b9e7c6b10a6c380f297e92c4546b3dea3d744659773ff72ceada45e30ea132e1f866ab856f0f0784272e5e9777774b80586bacac4108317cad43cc3bf9f5a8c47e7ebc040a6e1c4fe1d6537d2df63144fbb332a314178e57014f73383b7bc27b42ec491b89870c61b955650f8ef08123e8dd79a012e7c6511d1039bd3e7131904e4e4cef5f5a1aac28a8f4c8055c2ca74f090060a46b6a3eb3ff00a502afa2ca5b1476b82da119c9f667f60f06d62ba97765a98e911048f8a2e54675ebc3a7a23ab46b1268f84fee0570c7e5ee0487a3eb3ca235015bc160c8503440eaa60b03ddbba44876406972ef99e36d7e35d8051263cd87f9dfc27b682c98add3864fad0ab3ae9f9b36ec4ce372c6208fcbc97c0454ec960a66fa2b09bf5ee83233770bc14f83ec7219470a2c005bcb6eea3475b667aaad9705568ff1c31518b9c757d2a00471d17ca84cff85ed9ade1392f6946f2c198d6eba723f795dc0c93bcbf1326fc93f76fff214094c101cf86f4da95f5b9dbb65b6489fc31a261f10f16267c3378fd798a6e7e633500b7beb0c1cce5a6195b088620353fc8a2b07c4f74fba8b4373ba712ca8c435b92f48ef648d1c66a4d2f41a9ed3128082b1932aa24045970ad5713f159f6e8e2d7cacc71b1c6ac3ea13c40d8e10b5917e38f23c7fd1089fe14b832a6cb158c08b8249fd0fd190594f0ab06aa4dc7bd9080910759804887993cddb8b26c9fd9023737c77000b6efede334cd95272458e617daafc6a4165adacd48ef11d0d4ef0e498ab5a0fcf6e6b6931246b4e885d1153d4605d82d5bd921b8fb0b709664218c1f8221022ad6771a56684c41c3eb18ab26de144a144317c95c6b4bb38d4731f7cdd586cfd14a550ee37840a2b190f1d139ef378000adbb77e52b8e55e579f44352487643744aaa4ca57b6e8c96c47f549666cdcb8214568e2edbde19ab396587951c2cd4ef05150272bca0db5ddb5905e899008eaee2a4ca06510287c3161be46106695dddb35a7aa4d1ab4685be414bb668f137895c0be6da59dec46680a00d384e735d94273437b221a154f7bbe3bc4873618c97261699776d2e8d86027bd6a01e50a74644b51dd13f4adc5eb3db558170ba3a02460c2714f03455de173fb994734338b468cd410d6e04cb5c10d12dc4029582feca9844a5ec58109b3eebea9e80f5e5b4e61b7b20a7ec4497c646fbf52b8484b51fd616c4b723730c84b673d12a6495d77376328930fe2e84649fb4d50f21f4e3f58aed018bb1d43cfb339356abd673dc2becfe96dd9e954bb40deeee3d3888ed26064ed5450b6e100f33fc2e40570fd14ef8baf0094010eb3cba7a62f30c8ff9d878510951cd1a63c26aad5f3e7caa4ba29897bfb98e4ed7c59721ec970aad5d06371ebb1e0596f0c4a46454f26602d3e71956933ce30232b85d44a752b372853d903397be0589c60ea1a9916eef55ecf8c19999b4621f8e4107d1e427b7091ce4324aadea84475b6865de368cac151de37c6481dc90a1ee2aa55e6f45d62703fe023afd5e07a740a58fc3f89952d806219ca8d0b02c7a440a748df3be6be8041b157ec8c1c4f69c54a6d6ca9558187ea255b8e95bde0ab632c5ecdb759f8ade79f3d0297eab01ef969b3ac997f05e8ca124d4e735b72c0792200968c42ab767649eed8dadb1ae131914b84f79ef9835adcb12cb6f23e21237b02744151189f31f732e14b35372c77e3cc534af9c2f0371275332c52dabfd2b3b209b81f5f86ee9f1e36e3c631be13e519d097c8d6d26213612fbbad5aafc76ab3d31a83f43f262acc04dbcec8ade18954ff795dcd557619fd0f72d4dc1a6a35da190884a8ecc5a545ef414cd030e08ed787b820062131538dbcda19424242a3c1dce6360c08170764081244fe3566865fa0c45f2f3cb960916d9d106f9480773ade2dbf6b1e25ae482a1b5ac62bc56024f4ae6a994c6fc1ae6c61bd076da45323f032a6beeb40925d1d372764ea3f0b0d65067a427d4e43438fe9cc4b9ce5b36a8dcde3921705872139371a6a9e6c6b577c73fc6d3d9103e89580f3428a5e23bb601910ab214b9d3c4f377d467a65a4ea2eaeb6a3765f67f544002db87410ec08585a53ada0a78c4d1bbfa9b663eaabdce30e541c76b67b14fad7dbca6fecc55d29053409210b2675bf6b8f5970231113d5ca7267252a817dd658e82a59febe184e67dc489ea57fac1097a84f5abdd77acaf5f61ad6985ec37704a35c2a7000bd629c20b97d18f8c4f9fc0f00bdccee2f4f6a4945971fce9e5f166606b956a71dbce67ea48daf38f04fc3b3c8df1c3459de0b83cfa064e8fe1d021c85a65989f15eb453e51cfa1334e7cabff4229b578fcf3eab12ef135fa44b2c9b6a379c4d2de5166aec5b28caf31e2294b388ebc946418947ee6e704c83bb6dcbee89e4a5d4307d86aaec975013c2d9e660681533fe90bb8a07390dcc99016d18ee176af277cb685e424b979c0f90d9507c25aebf3b242356d9924fd97a1fb839d78be056869d883b1fc287697f1398c2aeb705ccde52726771e7f2deeec2a26fea827c5bdb1197ab43ba37f2185a6da7e043c317b7b1ada22a9906384682b825f904250fb91b9cd102dda78305f6473307340655bb684a713604f20100e7d58e071d8ba50cd3a23d407774b932bcf6abd74c88a2563dc8c49fb43e9331311ca351f8a83ca0d3d5de80b64d20ecb973bc3e6fcc71a531c5a1dd4d31bd0000595592fee5a68b691d7d0b529166b002d5efd24ebd657e74be64896fb2c5062d67b9d61aa84304130adfb47f0c706d681b0f523ce947c002299ea40ca852548a0892a43ba58c5b1e57861bdfddd1cfaae2df7ffcaec3e9137c9a8b9dd1489c0b8d7ba73cc982bd3f96bdc9c7593fb669ae7a1887b99bdfc38fc826a0d4210a378097fce7116f4a54c83ca136a8ff40605702850e5d7bd991a15acea8a3dec169e404e748a9c267fdfa032aeb6ec0f0ff3e5164f8084e71e9843925fc8715ced02f8404017d1ad8702283296b4569b3f5621402b840f4c7e1164533d72a3337938f8ba44434bdacf71de072dd17a47b91f9c26ffabc54610a437a54c9d76a1cba275e2bb087868aed2fb1e961d2593812288d2e389ed5be1026283d7442cdcc4f36b815ceb6646290aa1229de46e217b474cd3ffa354b82f69c8915dc81f3088f54dac8482629208a362714e27ba042797ed108578f8859d46fb12d5e1386a2dff8cb30c02971bd98cc86d6e383e6ebc7cd9e9626898a5761c5b0a3ee406016d521d26abf4d3b1517d701f6c741fae7d7edcf31b20becf9b99d49c28855f34dc13eef4c802b1c85d433856d2981720f269aeca77ebd8784efa3576d3ebbe574e65f91684fc63d3496f8ee93aae3c2c4d6584a1391c4107f2272ebee6f09326cdef81e79e8606effc8054d9ffb8d5dc4cf14c05e022e597318cdabb2bda63f92c912e3835d6eee4fac34ff9eaec221c7cad3fd1100912e616c9af707d97fdac5d35627ea5eec04b3d39a438a8c8e284a12a6195525040ae4e6a5b192c32361c806dd6a62f02b8f5bb7f2eb57e84b358bd5aa7e9a28f78275268752ecbce0663453ff691b9e12165c65c1e59b415a2f2d485e9d860a2c7b299739346a844961277bc0eda5f0346f26fd18d2bd21f614986762d3eb346c06b6db11866e063e16890b3e21867763747e892a0a907b2a1af83e07c7ac64bae50d95e1764ca75e58920c68e329be0f046f705ff6e8f0583e389cd1fc0bf3132d5ecd63f09d1faf18df30021c97ac5a651ca3f248136073a2436217bda09f78e5233d7797ae2e836c5c8f511419a350352ff60a09bac773ff2891942eb1cd480989088a9e5c4b9eb60e6bc3333ff6008fc3d76cfa32b9239ce6dcc833ad8d4345d47e7cfe1ce6af3dd4ab39151817cc2be62306889d600bd3ff424ed1cfcb451bc707035597030c611db089bb13086fb2905468f039f703bf4cae12e423bf5bba0787dcc04bb69b56d472d3f96cfb73e92f69a0115e8951c732d7e56064e171cb920613a100a4aa10c80941687de42863d59e6164c98b9f7d6414ce111a5ebc064a0d5c892c72d154433f76e134036f0aae96ee8703633cd2f150e43cd9b3b431374350c307dcc96dba722a527cdb7cb91e4cadcc7ea083372f0df4c2e8effb19acc7d559c1879d81b85ad8a42c69c14024819f8033d1576f4ea9a66857f141c5b1d9a2568fb6a73d888e52fed2723c9f227da6af501c248079832ab7a001390427740ae9543691835749f5c81d43778419e11c02abfc97a369cbcc5b6a5b4c3a79ed294fd98e89fdc2aaba8b5317a3e7a6fb97ba41771a5de644fadf6970ceb10944fa6af6a0b3ee7954028c285e6c009ef14ea2ec7316034135634999bdbd2a938919cdf009043e94c9f60cb1ce4676f253dc9469a965bbbc196497062f3838a8c3f46a37c433a9e3cdc6b812dcb68a16d463446256e7bc1fdf9673a3e9bf55d308b453e2414be57cda3e197cb2aca6a0073cc693dd2498c36aa8a18662e7e9fc3046a091521a9b07c3e015171d7df627003bb0db419b54f47b67d618f01f898217335f9ec5f77dd2ec5c324e870451a7bac3f9234eb9a2c77b2f7c1045d1e3101ced73e555b3070c0a5c4ddaf424b08ff17a4fb23df4acac5cf95e8765267a2c070b4f2967f183f6aa6cab389ad6e34f92d344aaf7b92806ec5fd3d09333ec5ed11d0300ae3b71a0d998711a3f31af2d49ecc7e2e72dfe2ae4b5b19f391044e05c3f1e07e4d3be8e7fd3b813676486c0fdc9f95b3c3b20d7141381b7ac8ae24139b593839af8011965a21aa7d2c0faa8a4cc3681c244b09addc2b6dabe845be049dd002e04e755afc45ecce5c98b5ac717981d6d8eaddeef1e7056cf0c6ff1d61a3b5dd2c42f1befab694929beb0867ca82f00ffc705b95d67a25ef7ba2396e2b987fb1143d6c7dc696e7f1e21126f20db2fb676f48051364475e001d43a285e4e29f7e26b9658870dcde7d1a4857c88de53a68fae27782dbeddc790a27235ec1e24f69b907234d3b49961a8907623276ed59974d0990296d1898fe423ed1a13fb38fee46d2cd436dbf0399fac336ef0576adfe3c49cd0ccc0e48b5d52c5e2250ec8f868f65751ecaa37ad83dc7eb24dae18ea18558c68a2c4627c68520028fd4ef7980c327fd2dfca3c7ce2ff6ac4d36a7dd7f488f9bbce431a140956aa6f87eb668537ed537a1836f946a18a74064b00c2079147e48dd9ebc923351caa1c3f7511ebe0bc4411f45f379c07472eec281ff13e4f354af6c9002b9d514a563416ce5e2d05547ce4c500459fe130b3aa379534554468d25e6635cc485bcb73e8b325437c9e22609d81de09b0bb79451ad53b09236d9c61e31dfe5019bd57310fa9d77ced2978dd63c881d98a09b2fbd76327b832172282dfe0f03e27de939bf64ebb2d3500577fd31b526eb64292454fd42c7f45ae8f1b905f842b6dc549086f538c4f4fb9817cbca76531aff49a8fc0fe42c326883abe4fc4936840d4378c940ee86b09338bbf68e29591c93bce3a213d9a2354e9ebef7316d3520993d2d11429f60ec7cd479555509e7195bc15ed9bad4d794cacc41e7c57a1624024d62e27869f2b128658379d64100b0e823fe8ad7dc3c79727dfa007163265f6e9983973aa8ff12a450b78a5fad1feea7631fff58254a808911daa7064ea8c9c0845c33ab9633f5e65cf15edd47bb557c6aded765cabdd28d3bac2ae60df7a1bc99e4f66af9374ced012bcdb7e19ffc7db281a9bae1f38cc72a444c27b260ea211d9d03c6225bcf54308f4c2db595bc64db5603923d4ba88a1258872ea9cd3d0beed35dcca2f5d9cb5ce02deacb7e9d4a821980a9063289745a51e14928ed2dfc0819ab25bab4e662fb417cb5a344c3414c76b861c7b2048bdefbf153374ca7d0bdb7fa6bfc28596d88dcfe78b856b622a234e79dd848e14a131770295e0d1c8bb16c5a2f68594df28da85a47237706e76c4a82c39f5f0243f649a086390d925fa166af7485f884948f1535db81d83b47cba750dee38b7ceb2419df6f101bb6017e7a789a7220ad8c5d6dcfab1a4b5935708046325454542ece55159b20f5f90cf06f290fc18c3826cd738fdec168a70334cb165a74d6e5a2f380324bb75e873bcdc371973c3d0979eafb5acc6ac257a825211a07dd93d2af0b70bbdd8d24b5276a9c27c9f80165eed1f0d21aa9512adb4a5069f2b82f80562d14f400c054f548a63c6c2556ad8964c61fd7ca1bfefb1a9f30aec75d09090e019e02b7c651c8c6830dfb090c3b7107387901c340996343e858d18d96cda7a54763da94c7b054702da376ec2d29230661f75bc893f4d96c0b50f07b4e9b14b873bb2b363c378c98d9f1037989782731768b88b6eb0b83f3df713c81b65f91cb44d40fa6d0239ea6846b369a33563992bf40ca1560da29c5737e617397cedca55909ee81302d1971a4dac83422237ff559c1fb23b86b6a802bfa3f45c4dbab624c54a9aff7780fef7bf640a3b3bdbdea1a85d0b33545fdab01ffc671f5e4aad21ab5499564857815b07729f58e804f6b05e53b6ab39824d785589753941c4b391cdc37f3d051bd2460df253f193dd77af300b7cf32e9514b250ad6a7a66cf603249fd6799c4a4c04745c5d2a4a9d1940cb15f3f49b6cf87d00ff7a5124445dd79a24c51449e7c8fd0dc76b5726f98db50234cc9bb17e0a088796a5db504b9f13f387c63656fc50c11094cd4b8ac4bf46bd25e2dba1b3f61c45d4e834ab28d2aafb4951e7a304ca09c10c19870ebdbcc7c59beb412490d74d7159f5b1818a5f41ec5bbc23b28fb81bf03a3831fd72940bd02f75503b95e99f3600027ed246bd909ba23c8a99f6719af1e4fa535dc1a03ef84064676ff89b89d0e7534a26176f335e3d9ff0cdfc32ea27b39d8956fe7c97bfa50f6c9ce7428d82acda58839afd862a0d5738ecb3ba8f3f73574568094e665e4fc8caf02fecf937a19ceea6d88a829848e5c09e166f128882b1461fcac9693e63f89af6347fe606e1e917e6cba37bae36848036ae3f786bb1ac09485aad676f324746270c8fd901d5489316b7c2a7d69e3dfb89fe3ff4d202e0094102a0c07a640f30dce54fc74dc530e4eb98c08c69ef3be6f842c40778aa769fb959affbf0a0d33a1d53b6915331b7c49feaa4f49b681079a4fd961719e44ae56450cc0d90553c7ff331091f6ff4cc8f59deba9fe6d021805006b1ff8c0feef60045e6e9d61c12637e84f32638760045aa2896a03883c3b76c61d6602da2c9c2147ce39dd2959f96fdc7282999677dfb56dfc86054b628976ec2f224ada158a0cc1b7ac5a9e6d37f80c6977cc187bc73eed8aff8dc0987a76b480bc73c998e2efa1097361292f44efa2a13c31dcfcf783e1296eeef0f4233102d66d04011c6e041435c9438916554cfdc400d0ab3b72ef51bca269cec4115032d74ed00901dd2d3d2e62be13d9c742472c61ce12e9fce0eaaeefb4b6dae329834772d10e329ec4b487269032fa1bc03b1b2dd01763b6a004a1909224345d6cb7a92d44bc7dfed936a4758c47605effd685f03388da000cd851bde7df0297a9a86a171ccf4e1155df8ab749836c7cfed72aff8a8a3efe50c7cf2ff6f2e4ad9fa28435081832c7767f439b83891e12fa9a852be1a97a2debc63e1a027820325b436ccca19476e3b8cb480841b022c2b7ec41e9d8a07f4c5e27e1be93482cb0637250bd53ea733c7928738cf559b55a0e92e7dd6e02887d8427a94608dff62fd1214ff9a52581c921c6ce8ea7d5d5e13e2284150983a33069179e92d3b6ad831f03e50479a6e9232fbafbb7b3ac6cc7ebd815ebff44d595b8c8509a44b2e8b60acddadeb6ac4881caefcffb3c3318de1c4641ffd12c23a599ecd4ad4fbd605d8413e9e5274cbc4382e52c5057abcda62d158f464ca298eb62a5feb4f9f399b72910d1c48c074731044f8e14c861687e60b2bd50cdcaaa26bbb21331cd2664596bd00f77502fb28aac9b5bba9f1f4969d8e00eb4df75e72957b181fb502786516160fb656876346f6adc30644612c9cd79e49878078db5558f8292dea006903d11f8d803e78633f42fcaa496f7d1271fa370746b115dfeefa39791e97334a87ec8b77192965a91412e0e918eaca3aa79fe25849adc5efa61b3009671a2ab996f785fc20e9b9ec2cabbc07d0eba156010c9bc9fc059c41669dd2a871c9566efb9c578ca8bb173036e4f5d9c5d0c1ac9c10a75195d8368aaf3464d50d87aad55d6273286048415711ecc054681b3bcba32a0836584dcdf35256cbeab1fad1077550f4a6a450b22dab0ad7f2354fe72a06e8111b2a04603af56551bca379e91eff67b99bed51cd8927f1e3332943a5d7fbfd8ec4a109852dfb9d0b2869e84d2978f937cdd5de07ae7cfb8afe9bc2ffa2b861f7013efeb1c51c7bf3cd790962d8f7586d890d7fd63f67be116bede5af950bac7c89e46b4c2438d46a161697ccb300aaf3032e04aa2bb4756b5e0dc8024ec1abe27f2c1570fa9861987ddfa590d5012286a7127e2d3090e5aab73e7e325b9252383c542a47ed1e3e2fade07700468463cf34e2e5c6a65011ea9f5da816fc1afab7690b21efe88b0de140218017f0f5c9136e7be80703d0a302bd1d8dc4d77cbda5548b47b68d7acbfde78249afb880030f2bd9754ce8b4c7d9c55af74cb151fc590d6bf653d25c51fe3c8d2b1f2ae71bc7cbbfe14d2ce1efb3adf7e6d4810414cc949f975b048bf319312b90069ed2462e2d52fed5ccccac374b1ae2277bea945514d11916b2ed5d9eec1ee5ae8afff0f79d57dd9f18fbf31b718b02c1c20db8b82c2ca4fc0455728618ef400d7fed5b8773a835cefc88cdd75b16acfbc431b321b443d6a412ee14b7086dfe4043272d92dfd8c54ed35379c69a7096671e833371eed87d6b76a98330d61c2fc320c8b313b24f63019f82ffc53f726ccb6f7e34db75706f9468906f8a55c525541823aaa67a2512ba779b83162aae26861f0c9a12ba281ae4d63a4edbba8e210c002a57d04382a221bb31d5b2fb7d3a73374d53cac574ba167e2024f00e3c6683453dc8697f49c32b70c04fb837f1f2d7cc599392a0c918bf7ef89adc8ba49926357524f6860f4888ff6fa0ef3491920c4a5d2f28630b823b7c212fe7611d93bf1ac293de81e1a9cf0dbde7aa6a95b35cf64ab8ec98b08bcb42dc40bc483f5582c1120391e483fb64003d579c820792e8f4be37055a88e217ab42223c76086e1c8561e6282cab70d04ea69a378f29e48a6f711a7f7c598a5da753a7befb4ec1b7bec0427d770baf991036123d8a15eb0101f292151476b2310c81b59e2ff62c9a7f7d76d2787df23f52adda9d3a779b7bec1c7de407023a84491c8d729dc59a153f189e6a4f5b7add37ab6cd2748daa7f8a28f8b4933b3c44e3563a390b959635b7ab3b1762345deaf4452e2085be3c40a427c7153ad65de6e4b366c5dfbb9bf9375c3ba180d5b16bd895cd2124b112ec79e3c46d28e6bb2412a85d0fb86c556f56d64847f7609d91bedc27aaceae091c3f69c01f0af1fd48579ec81d3331eeeeff8b31bd56874020d5d48cec63809bbd543e7eb368bf14cb94bf60fe0f0752b9f98fc43fe41cad69cd75c01f9e8522f3f7e4b5aa13813fcb6e068fd3ae6e9957a5c2dd1eac52330277365687760b693edcfeff2633c1378db4b2948d66c1ecdb3f822790c961d83df79551baca798bcee03139e5458158a7d8562fe43ccd24f1dbe1e55fd15770e6b37919f65551fabb36d9d20ea12dbc7c1c5be9aa70e5dd1211a35cb2c217beb572ac92e81b5da28fd9f4ed3b606e71e255440ec3a9118732821227f86fb45d27ea0b6b7610678557c5f9fad220c99334ef7dfbfbaa18bb6401292e3e74f2a8c0bc79c941d979ba20fac50c18b70dcd49444828e9ed287c71e79e37d285551be228aa34912b53d5d01106042bf53dbad28ff43ebbc9f498a73e564e219c0e5eb5440a623470be50bc46d2ec59babd08b2778462a4cc03f991ed00ab8b3dad6dbc7fedf24b59cc8f80aa52a3a15f6c94820000f8580259fc7bd62c912f48075e40d227e713c79c495950195f3e80d1beef14a8f63be0ddb5170f825ac38ee06f1c0a7814b67787c1ddd6d0fee0531c4a86099a8c9719a8bd235aaf9232fd2cfe3e6a9012936cf9ad7b45a2d7c4a7b8556e886f227de27eb5aa55145e139ed659121894db8874d87cd3a99b61e17b4604182c6b69545291648fc14ab53af1bb93d44080360be11588c9095b58da78ad2f7ec7c01a24ff395bb03103f37708fd3c9652521d1eb5cc51cda100cb874cefe0e996ca92e5c9a37e17ffac8cb1b3fdbecc18534167c406f29930ef4210145be52471595edb96541857362faf44b4ca87cd664de796fcb10b3607a697743142eee4b95db29a96290416ce64ffb08e0730bdb09ccec2d4a811c30fc2a4be37d07a1f95aaacc39c3dfa1d9be23026313275259606a61f57a12e17b6a56e4ba1c476de45b5e1fa5304211076f5ac428c66c244b8589746a1275b95afbdd6eeabebe27292f2085759a78aecc1ab62d5f1d3ce6b3d2814faa13b875b093b4cabe5ee5de365513439c07495650a52c9baf1354ae9618d0b8fc76164520e895b49edc20fb23730d8bbc1178b1a58fe2c1e5d5a02380fa078544383184cc41ecb88ba25a89c3b4d4b17020fa0a81f56421eb1a131d9a6cc58454f6bddb4236466cfd16da3622a87b655d900acfd1404e35696abd957a38d4f6e7210aa7d7eec12f6ce0fd92ca8c3c2b47ef6c83ad1f9217afe52fd6899fb75655b68afbf2602362ef0fb96a622cede175d1bf71519cef2a416d332277d11ddda0b51efa14276e737d9570e65e5bcc79f9365c5870b57313461ce3d61f83377ec2c1477401b8590c7ed060621ea46b6e2d38f90590131e4d5998709806beca1d4b9c7f56c420525f8b78b44f0f3c2cbf9a7e43165d7c36e0b83c253c3e8fa00680758b4f460eaf1222fbe816e66f7c0f301222a6234cbb79b7d56aee153daea3b393f2929e6efea9b6cac9a85151b42cf19b4a5e2afa5f41a43e9de23d3a26e00b1f3306d2695f4902e858f139bef8a5781b6203c3473fc6f7dd0d9f775c7ca2d1c2c919ec7b667e1c63b0021d281cf3561dfe9d4216c0fa8fcddead6acd94e75da70878912c83684f4c75530de7b3d51414ff5c83e94a6982f10708938d849d547cec30d1e426aa4fb2b8e989b98a11034c73eb85bdbe5e7d17a5031db4f1644ea66bc98780f09d8cadb0002c56629eaef74024eebd338029195dbbb4d112c52474f3588f92ec082c7759ae90b59f0128e6657ec7ead580c151200250927ad6942c072a5ac1b4a97c55e9a3896f6a3818e503c2bbc01fa2aa16457782b7178d752cca45c40cfdfaaf0a75b8d86cb78756ea7cc5a598313546135a95f53c1790178a567f8ff8501ea3b68a065ae8f045ea4f40d7b074ede93cc73a6365e5b1141e8e588fd71fa42702d7c3a042cf91964913b56bd0a84bc3c976575feb689b9837ef934ca323bde1cfe29c7b779555ab373b7c54e2510e742c60614fb7ace8b269ad0f75e33b1a6a45ca24c2bbe939d8355b070a0cb6aeb5ec725733a3660f32752bfa0e3c68eb2b58e9e20ed24be41127785fed3062f9be1edf2ae86c60ee0ea38433b12f1aed58463586c346386750c3f32509c290243dae65c9aa488f001bf7b0d276f2f8fc60bd7eb3c6ae688f50c2c44d91d8f559cac220fdbceba20a22e6cf06b1fd0a25f68d09bd1026c3f6e16788ffe9013baeeffaacf700672827ae8a5a15f90938fbecac987589c7538fe60c1636d82b9d3a5a2d9af03170069c62f30c6dd6a29cd8ccc448c48691e4904b7a94ff4d22b3519fcdc037d5cc40c7c0ca80758ec1545f175d9e21dcedd36762419d6e12d3ab2825714ca71cade1e4225f62bece829677862e6956e10fafe3d9e71cef117c5aec1cf8fa7ccf6bb780d409e9b9ab37b7a90e329cd5254cb14f574271db5623f21635a4d2c69cdaf56a9da948c42248585e483237c9de9eef07459d4ca1d5bb4336c36a0e016dee0f68c74d413a75b46a26d881f532ec5aa313ef148ca586967301f03e902f2126d6065c2be87c78c05b666e90fe48bf1852568a0674e28adb9457eb1e54ce5ed5bb94428fddcb4aba54d8e50b21c322855393cac60e86cc88c5c27a472b637a584f8ec37b1b133f1ffc0f659adcf5273a2f0e6de1217a79b409b84b042050743fa8add4368df2e33a573025ed537fd2119a406f936f010b9a91963ee54542575bdae800efe69e8d805a4b4a223918bed6a9d1c17d557c7cf4e14487ebc37ba92a724f3c47ccdf2cc4c611db40e94784fb48febc20a37dc439dc4e085d8ea5ec8d64bd780af529abc8a49816e133edf2769a5e402c38e28b87860f9a2bc63de1369720dfbdb771d4a1ebd22145b6069dfc24a23d2403cd5a0799aeb3e2142721edf995a06f62323fe102ab803e174c5ce65907c49dccd08380729c3e081763ed80a814b9bb6ca32290d91dd75fef15956c9ea6aeb256204eb9863e419a5556e6461745aad7ad6cf4e995dca7bb489387b11c399ccae0b62a1fbc0071b18ec8258f55cbb529ac5060e71c57e1c5430cc54a8f7c5edd2b5c45c93fafe32d102ac53eb464d4a025895e65de81e0911b49c1fa74af7bfb242d9f1ad573f453116f93c90a32b6e88f46c49d64b275032d9dca848bc5283a264a5196a56fda554b1931bd72a00a05a7acb0f83fba69bd5d67ec430db340a36384e1af5cf4141a57bc720c40049988bc1ddfd2ec66f7cf8c5e3aeb00049d95f195e7432b49300279bc084b68f42541fe53ed25caa7a1e8ca07193a57a6d865f0737afade94ada48052d875feccabe840a100aff93ccfa03e85042f53ee5fb69882eb33093eefc462c574d0ac10b74def9d1fdeaa72190c81ae0a1add6a0834e9fe38857a3b85fd4776c0aec7bda522079a1e874215237229324961a69afbf81684fa1fd14cea584fc7b6bdcfbc2cf25921f5aadcf7e9a80f74cdda4566ea47465408e67f150354589e462e90bf020072727a92e6414135a2cd53ec26b61d58e10c6bd91a0d48a347a683ba80403646c35768627649c471c568f8bc9008e11fce131aa17ebd998fc1814f31b0b02c0d9a48b7ae00b647eac40747cdbc02025cc5cc9310b16fe08152a0a0dd4784cffc3bdf8d9774011d06dfb43ad154fcfbe028727efe14692d841f46f96f3779a44fd708cf29f1b20878a10bf5816644d773acf7d37c7eb48f8c3c544a07f1be04b2f3315ac03c5fc99dac402fd612776b9993190d13d4f7f2c6f0e6baaa3d0ef0d25bcab60944a04f74ad65aa7fec5f29fd5a32c66ab072b92bcf1b99c263f6447271257bb2ac1387e55e07a8212fa386836fe2f68e5245985558a56a42c79f9f06809361a52c7ead8fb676f6f86ad8f2e21b0314533e8d8810108b3763951f3168fea9432c3ea8a72d9966bf0f3e12bb3e0a38f4180ef8321e04582490f6e96b92e0251945895af6b83999c858004bb68cb0816dc2decfaf779d974e9ab8764bde4bc884190087c5c09d84c177b8b89f57cddf7e3ea414420e8793e507407bb61c0adc19a5ea5229951cba615e0bcd37726cad55ef95cc24d4ba06f00f3c3a92bd7566594b3714d23e98c650ef41438f4e4cb0e81caf11b1fa4febe167a06ecb9ea6e2e25768a0a5652a795e3347439812075c55fffb74265191881365e226972e45e5d742fcb3ef4dbbc16faab18957e0d0fc56d7cb87b5295326b850f26de6dca3a4777fb7ca820c20246b4f596d50216e4d5dfb58f64bc0c211a5d8f62af7a885a20fbe1c802065dc2faa659a8a25b58989cd324d71a6620931e11dd9ad693c3e8a1617f56b605bdc6d01be532f99d09fc926ed6e0da40f4c7d988919ec95e4e3ca98ca6bd63ee5bc0811b6fa8c1598085fdd7da8f5a52248f75f03f8f2f8aa1f036c7cbddbe5c8bc5a464395b3ecb196fb5ce87fa45dc80d754b283ec194c7c1b4b0cdf388691736f3e51d7799a31939d262e701dea9bc0d75758f8e0485a7dc61df31df6afca48fc3c58af37854e46680b65240212071831b72229c9b505c6e3a60292b244009600f3be7e934771b796f3191d134b49df0b53832ebdb49c5db2e4f75aa5a8c2299a1a6526e9494d23cc5147027c8a53c71231d37572be6fa12ede85fd0a314d4b6d4d26a09b68e3b443f888eb45fe2715e7e18b352abb553a906e065159cc3c10232f41f11ed3302480ba5d1b4af15e523b77bf1e6b5f27a50d992144fc7e835aba28383b0874145e1f30b164882007e75922807a838136192b7f90e4e5f15b6cd045237fca08b5f50afaf9bb60530d585f5c1948a34b043d74237cc5f3b89249ae964b1cc27ab59532bb6393c73a0f5817e5c9bc610c121740b415ba63f1f9ed9d6baf93326896986a5e0f8776e28c1bd45d911bcfc1147939a209ebdd9ca988cee1e32e010c7d22f7c9da2ba1552289ae799ec63c8969de376d38df04fe3b47bd1ecf7c91f207b790bd85f022a49adfb24ff843f25834c2a6e64b6e8f95e0a09a7133592708a8ccaa05ef236f54ae26421e910df35e563de74bd48f3e8b9823d51e3ffd1a61bf806b00d63e7886ff7776f2537357c16b8de06a4f86ff82f614371e8cad6570809c3ddfdec6cc1c9a2389c6057bb4f1523123dc50d971b0a09c630269a65c3e1f3f6fbf07dab51474649783d3f4990014be4c1b6ce93ca707e0aab4cb7f368bd161b4b23d42a136a006778221992b567782b8865632b5554c4a48049f257bbaa80bad5e514fcdce415be02a3d0a046c5984bbf5daf3578d5e100017283ecca83d036a5105f1ebee7c542e19025ae74b2d74d22f6d17073be167a229f1a114adf08440f46b3c4c51923d0e668ebb68712e31e884a7d6a4f2fa2d6e0bcb268ea16f5e6dd87bfc4a57f1fb47d86446de76b794bb7077f13463a2bbea49ebe0adf4dc9440639bfe3ba8e673339cb3af0de4aa7e1115cc043ceefb1325cd3d2c243cd6408b4aa2a371526f6d7a3d0137aac4ba63c599e5491309ee73eb03b5b359efaf143716492b935a77f7426670257b5f78078312e5bd1e0519a50842454b37018beccabbac726522a68a8d4789bacfbe51767d04861cf501a78d1b64e5e7e9d11bd883221099dacfa03484cda1e4490d862567d7c42385816d11fcf91994a0378f5456fd0e80c16b76ba41fcf1f7e44054adcab3526a61e46a9c7ca4dfb59d2bda4b2021d5c34160386e9a82fe2f65d7e3b612c1b4259778474f2463a122a6fc0ff30b6015f7c59ca3ea8d4e5b599b7d39c83c679311b1c713dbe6c98c70e1b0e2b3dda1b153cc855afcce1e1eca8053bec1d6d9556fc744d1dec260fc8dcdf762bcce148d20126415f4570f54345770e6cf8873ef984fa399f576f80aeca8305067dd4b24aaeb85a48870e0f660c8b8b86bc2bb7d790cf305f640e96e9fd0c6292873cbe3b06d096706ca64b60b92cde41e95c851614e0668187ed5dd7d826867445c0ae5478e88164e667986657fbbf87a7bd1eb6ac6fc3e764dcf3ebd4e36452d21189a4301892be9596e9d99e2ce6b291e7d982fbdf3bd75a2eceb92f4ebab097229851b52208017313604d7709fc982c03954c96e07d91a4fb405bdb39b85916136435625aebfc831e075e3f99cc4b8765dfe9297cc76dcc0d86b3e6a661690d8d69d5893bf330685e3fb745b5e68db0d05a85b9c6537e25a952914e5110b1ce5771bcd82f3c72f55b15fde8157670db03b84fdfe0bfd05b94fa143a7d41e65ea98f1cb18b79cf43faab4d479fb578c5eb9e03136820ed2626a15b7c68c55c5fcc67cac303d9c6ba3b112f4d69b317e5690ebd228d0605fc83f0b614ec8c0aaec6b52cf58f9f99be51e5929ff4165eba24c6657042c6f11d583775fdca7101ee5c11800a398cf0449e4c1b3a2e8bc35a901d7976b5f72a601ce293fd0f4cc0e84727f440c62f1b637df342175422cb7ed48260703967798ecef179dbc91b1fb35933b94d6d634ef5da2ac7b8a3ad0f2562db0c2288d263b89ae010ac83982256152caf474789dc9b88d684f14f99583c1f8acc63d780ddb8d1b3800f89bbac76096f3c15cce4b76a62edaa8809d5e7428efe5314cbe5207a67475f941bd2a257603c5d6860ce7de2c0b9811e4c189a69bbfcb8ed8b19db135b7d3b5a406ee2e87d2d1efbfebe346d7d169d04ff0a93a743809ecf27b5b2350f270dab99f8530d65cdc48196ab00a007f1f6a1af7ca74b285ee7cbc97eea161628b70640f72b4714faa17c051e498c8d73272b80bd2e8c54d0139cc7cf67d8fe9c1f642dcac5fa68f952e73bb4966f5e8d766e7d8fa22174ed709c30215891ecd423396e66324489085ffa264daa652ed5c49b5fbbe4772e7c5c329ae6bbb715fec06f4fe5bb5015658994ddf751864cebc7b3204c249548529d83e554863ef5241c42aa189b49a89dcb2ddde439b6cb607a99ba9c8318848778d9c3c0bd433f1449c74fb6565a991670d0206f191f77dac35ce0f69c20659403aeaa0f996a089251f4f0b3e250fd62f82e7cbdc92d6879a2ae200bb54704a06513be35b509969ffb0c3bf1cb0522d872c2171fba785076551d3826782b306928c0b36c0947b61cd4965817fc13048a7b62398381b1b212d8066277c99727efe6c86bfeaac0c344ee78bb275978b92fab7109a6a4ce2f820ab1123844500d10bc200af0c436b36e3dbc49fc5480d45fd0d91ad0b9fdb804556f78edc51108048afd7ae9ab71f4534397e74db98192d5193cb1f0f123fb20fba6105d935c4d8cbbdf4f979ef2dd534c7bb2b9f236981c052085ab3eed1ba8e50c9f20cbd0cf773f1515847d2f0785fd3c25c8c1ac800fa664aa0849c554efeabc7cd0b523010551934ad4f825d5a0298700e9a75407c24678037fec7b69a9321cf9141877159120cf20009dba5951bba608287ae3cda089c4efa3715db7543b6127bb0a0097a2f7640f40215abf9320866ad160fb3e3fb0f08b9610d45053f8953dbe2b3aa638c09933a791a9754ee3a4c912a683ecf98c154c93e55f48b482e2d7fd3ef8de9880d6e0e525c0502bead6be8fcb61af779304311a9d342304b0a5b658a894026e9312a264550a62330415374c10b6adeb5cdc4e9e15e0f289d0ac8e234ecd13f2e4a2f6f6059da12688ebbe3e258f290d167c28361a8b7a2038361ef3eb4f9ebb5c948499d506fa2267a7decaf497b999836b6f02486462454e2f66f7788ca4e536fe718389c197ef44505e0c0ca55f324465bd237f529b8233cc87a42030ff34dc144d07a06598d30b4fb3a5ca60d713736f58c66ccd369a7e32d3480d0440533ba0769ed69d2236b39e673ae611422bddadec8fbe2f0e82631b77adcd9a111ae1b9d7d9131be2db267fa67391355f2a5ccf6d0758f4a1d47e2c31ddc1b8a8fb37879441bc1195dace74b1922e77103cf1e4f0816dffbe29f3b6f5699f5954b5604b668e14edd49cc559dfe942644b04b2ac38f865abbd0b5772d6a26346c73f6ed403536ef049eaefd527728e0a521ceddd0c710a7bf4cbfa74fa4b90e718e87d130e34f42b9818b31275abb93fc30fc124b4b3315bd85a72f98421f579e842b30f285d574e72d10a42047da00d8957c0bb366a2ed4f60ff3fab29489d3a152bf98390f03a69392c67435bfa56eb4d24e2938d33fefc2c98b1254b16761928e9718ff90393fb92d3f48904f9b4e9bc40b4a9a207ac9dc76de68e7b44546403e2d50923c566c7be7be811bf25d7be9e5ac4116f08db9fc24cdff515dcb57bba336bc4082d38937a9e9bed002cd82e5af105027d6e6f806dcbdedf327a7cdd79297d7690a11541cd3a7a2856e52ce92cd032592156e09eabc0000ca9d852d32949b01485e3c063d8cf15a9a4d563d2304269fd055f54dc7b51b4b11ae2004b1362c186553d0477dcde56966951b04e134b849e6adf649cccd514f488dc6c09901a569915fca47a2cfd267c3263a9bfd66c5c562220dfd200a0bde2e9b8f5ea779b2d40a79bb14db020524c771fda1f74067b473fbaa42eedbfbe649a1e506fd0f1db4f431dced11c58368a18abe3ac8f112d05a91dee38fc8cf98a824452e800ce2456fabb978b1abeeba9d5c87e0363a2c79497c376fb4bf7aa3ff92811da4fae6abbcffc95a324fb9a22d15f791ee86b693868621fb27e32eb852873c7c55f5d308712af1fc0d10b0eafbabbaef9d0ed3c6cc9e48ea1a827611a3f4c0e997f939b8b9b508476f9486ab0cb6f3b02a0b911df97651a22c71c7f5e4b30b7c61fc3fdad074c711d63ea89da8b3ee15cb2e134231f0e9fa2ea16a1bf58cf2b722845893df71aa6220fe7e80740ee064b384e0def3805d22fc598555f8f78310e54633eebc714d1b00d24b6edae8fd4eca62f52ea54d2c4ac57939969023d4edeb09f2eb2d958ff5cd46afbdb62647b26c8142d294b22ac5e67cfc385a02daa508a15cd993ee3ddcdbe206ae84de19d14da8676e35d4f408382c155cfabcbb505805611d1b67385893197dc9b1221fcc7d04252f6420a6d58a541e9d1fbdea4da991363a45ee63867ac0d3f0a889257e9838f35f1e9239904257720c538b1a58835f9ee027f41b4f9bd82eb28fc024933b0bf82481898d185559101f80ab2c890c6857ddea30792340ca2e7a53894e67258c64780e1dea1689c9980a7936432faed7d072060b332edcd0378124ed01014111a75bed536d6f546a09a49b8fc561a713e794712d08f0957d9bd3cb6c6b42347876ecf66fa2542bda6cf2eb3093f5d046d6e738bda771f1d9ced9a993a95a97aa42d78ea3de96f0a3df710f2000db4a470e0162e47befbe3f033e0a84d6615aec41941f3bdd4102c8f7929b16b9b32fa5f7fcab59265570a5a5d55d25cb4f2cc523f04a5b3b0f27cff6f387f7d0ddd62246428e444a5e420f4619f3ed202e5ab92e4486b0ea386c3382e0d725e76d6a8a2f0adeccc4a1a22e653791077dff62a5dafcf6022d48b884576a18f9be905bd6de48bdb34ec5a435d8280ca8069be445aba3f7e8084f5c4d2d91d34148c50fe4dbcadf4df3aad84747ede84e157b4f9e02605a76e4b26521f0b9de77d3137383637a2003d811626788cadc43be112070da4a7d2ac920793a752f0019a0488f8fcb56af3ab2a3731a83e64c2d1e1c297676741088f94fa55d17fe91778de5b920005f24b8dde17220061d3f869875500ab262f4ca0e76ad5a0de4ffe3da79a808433f1bd556b79b3f0c1b353897ae002f30a784dc7289065a4dd06496f1d86b228d89063c3b98266f4cfc8c0a69a529d33d807c2df3cebf4bd3dcc10b7791f65eccc259e2db3f95492651926b84fc0a40adb48da9f584aa6ccc10df66b73e787bb288fa106a6ced2232a38c0c82abe0c52b9b538dce0d153fa7b7679a0d1fe51465722350684d4e6ebb5024b7f6ebc4bcc4d55c9700203d5c39428d4f78fa8e4def6fcdf0ed1779093d48376c9dee0e54b796e5e20cfa487ccafd03a6df1016948f534692d83cf0fe83c121ecfa6ad4b6afb5217f8c75a8d0cf6201768f1ddacd8b8735ae376662c83b393d624f84591b74c02c9501b9e2916bcc39c03810d6fcf8d4b90a65f2c7b362506441d614decd7891da8da0ceb6752f383abbdfff7d1893c3714d5b6bd157f4786813ec602c4186971195b08f58f174554d3560f7db71dede4d7a17668ff77400b574bfae4214e8005353bb0316bb42f90beaac0a185caa31ade3669d81949c8f084ef8090b1da5f07a6288ae5cae17c580a249168faef8a20aa6203f64e7b59207553b704aa32212f45b9397878f0fad1bb88dc3d207d5a3306f0132c80c3bd3e8aa5759464ca0afeaa9e6475cca197d824b811afb19ed70a514fed7f6ce8944921942bcc6b30cf6daeecaa84c05d4683764a255a26565ca34d5b739708354373f1ab86290c8219bcf461a51e2dfec19084fda7304586afea705d44b095b3d44e04011637d237833b34c1c0ede702efdd8dc27ff334015dd29dc6d4d538ce93895570a79d6a0a0f4981dc3c2d30093e5722fefafeb9fb34447a2d39beec0a94f56e883042321ffa3785c1a76157b08c7c55424654e7c08b33096d770f86da7e975ef29930e53967f91d06e7d16662762ae29ca0eebf51f009f92a16672a398d01ddd608486d2509df4163bc0ac032ee8ccb108ed763e0f3cb9b607280fc383b16d9c7383964d5f434793a589c09bef1679fd4ca42c1b1eee84c620675451f00a67aff9314a958220129e0483448e4a1c69f259ff1208e487f7a8940d2966a2d72d5794ad6e8bd2e1f69e2e63d36d4877b4b1c795c6a603016d9e04b6b148f9193ec0e5d0ea8b4972253bdc86cda96ab4031d215afd5fc9109a97e200bc0ef24a46fca825bffa6adaf8d6f0251dce3fa07119fb6baf327acd5234f65a71bf2321298b470a5bc41db092783d7c460555c43c62cc9b7f33a495c44087514ed1084b80b9b59cd145a64823ed73751e05ae3a2b40b40199506ec482812425180a742c2b60be028ffbcaae1244b7cbe5f610e2ba1e4961580aabe82963217ef7802e8f2f99f331966431ca21e8c63252c0aa5ca2f2378f15fe22b4ebbbd809180002b6cf6fb442faa8a1fe2336d17a9342fac57af0ba90079c5901b839511e7ee1cadff6b68e10ddc69c93db3700cc1e62b12deef442b8f31b9169cc396812fd8ceb08345f8dfa33009d1d61c03ecd3964a54179cdade86b506c3ff511247fc1ca89a02102b362980aef26de7d4bf4444c0398a76d5ab83dc22e3229d1c3da321806184b992c1f17c9001f9b613a5cc7d6a71486968c8b8ed97347a72ee6163a97de2a2a00c29b67e52883b58e9ebe484b596b32eae26abe1abe8ee04380d6ee829f666c676842ed3f9b37fdfbf6cfa39b280c25d3e23f81615ceeaaf6f32a405bc4b5f6c9e5e262fd99e0df9b4a10f04efb26564c8b28c923d7f00e04469bc5299bd0be570312c77943746b1ba59f771eb35c7a26ee92dcb8607438c42e28efa2c58e3269313190229fb72c8fcc0243c5f9b69cb364df27fdf6f9c40f10bd484e9308cec8c38cd492ba83a58062ad921c66d7392a12b3b64dffd290f726ba983db20cc5dce27a4659ee9842d987c8064515ad22f00f9de87ce13843d425881b59b7944348c4d174f45e17ec67a423d3578408a4ec153a400659d63305acce3b11ea64d89d9104832bf179aa758242b01f12fa09de38ff44605e55377e8e17f4b5be8aa1edcb16144dfda2f419539a32f7318d7ec0b77b39389093237465d5acc48510b8eafbcd24fac1e16a9cdabccb8651a41b7c0389bfd816bb3ff44a1b242136d4cbed1a0732903691b60bb9aa4d575f0873ad52b08a05352464c523bf7bbfd98b407f58b278b55d6698c812cbe8134218acd5b7568123764bcf0e15f277904081ba1d1f2a963cba6fa3be47066f8b6072f741e70d4945070a809472b2fd4b2b7b21da3ddd349491489c241072e6c85d28eb1a587f5b0b751167e2753235441b871c2a05dae4305370acdbbe85a8383063541ffa643bb3d2adb2e2fb87af8215bf9a6abcf99c9227e8c26770e316f2c023fc69ed29ab34ff75baf4e8912b6a39720f63def63fa7fca799638f5e500252816a2599966451b7819c65adb19da6e54fecb8f72cd269d2b1236349eb3055f71f63bae832f0e0ef4ca246b76a4d95b3a94020b0666cc723a6cb5746fbbbcd50b926d324105291e657579774a745bd0373650391af25ff34c8a344a01a6ff3cf3e9dc0c763304545e4ff6a8f6556039ebc367de8211f2f5c7b30832d3fe0192810e16f991bef8e0d2cb05317546186c787fad08949fe01f7a4319fc4373ffb45f14ebe528798dbd0fb007db9f14fe5231141770a362fa1c42a7b2774c7d92122747f05ed019fcec1cdbed92b3517433bd7716e47fe4ef014968fbf014ef374696e9e90c4f596138b227b804bfb6bdabd3643873399160b606c079d497fcbe316950bef3ebfbe58d8d1d3563fe1fbeb7ef9c40aedf07e80216e0f2ab60fd745fc5f588d89baf4a1b050bde38e65c290e0faafebf857cda13c35bcd3108729c26f15d1e0d4a95d63b713866beaa9a36f61e53a6fbad7f47c0a02665599fe2818bed6b4018946d12dd36fbaffff6b28811aa867a5434a6bd2a2455b2e263e5cb6d64cfc3d500217f2a7f6101129ee3c0342ce0962e4161b37da0fba88edc55a28a855ed60be87bb8e6d5c23c1ed494c43a685c78222e1f164e7bf1d5453629bfe651cf1f5af65d3b624c570cb61221b6fc01a1cfa2954e1ac87a39769e40fc2809fb3f988eeb4355ad6e7617026f5f5c6fd60e0b74b5e26b588eb0c626f934d53a6ca5bc6c25a5c6984da87e9c29957948252abc0899cf1af16f98d5e77d0b3e0194cea991050b9e782ef62481a9fc179458cd0d1d914f6ca77c9b2c2c40193a9b32c58f85768d3c902f6095398411296fafae322b1efc496a8ca61112ceea6bd4d14b75c19c0e51eb670103f34fee96a4546d4a801e1bf11545ec4f8f24f87e93f996ff72a76d6cca10d81a03e59da77571a2bc218d8e96f8583eb27425f346ceedc8ac16d5ec853939c2b258fd3ac94abb925268419f16f05ea09aee71adf868fb8af11d53706925d62aa4e3cf1e15438b8c48fd1e71bd6f59f35062372b779e088db78d8d354e37535fdeb64edcde6c2bd396255e1e242f1ee7f7033a6d06abe4572f51cac4264c7e91beaf6fc88772a2f5becda0f079fe59557a1f3db3c6e8e3065afcd6fbf326003119ab544a405f9ff4bd92eb4347a1547cd541576ce71efbb27ef512fd676d8c09381eef565cee5c42d0b1245f7e3ea9d211a05764cf2ae9ca185612c8ecb8676f68da7224a78d88ce14db9972092d87a13487d8169cad9db435df8810d7c8b38f3aced41fae5b3011f7329571cfe92b7f31737104d320a0bd8c31d676aa41c1fa94a97a8b5995bd1fe5d7f05772aa271b8ac1d8974e8339fb300a59d9308de645620c78a9d45c0bc384f6940fe015a016741f1f1bd1c8372b6e56164b7bb2e881a06794fc2fd5957087e2184652aeb0cc46a55352d18a22f8072698b6227b95505dee6b7aa044c9a7496d1f5a27d00f66ffc98f7e23fdae7eb179b9934defba68d781d84cceea43048bffef857a0ea62afea011790a630cf420cadde2ee00f32d22b120f7667d60b3078f73f0534b2e24bf35f883d0a202c59dbc777ddd37a602a384808af575ba2e41b8ca6ea9da5e81b0fac917c80131b35c97d4e3c852ce0ceaaf9c191fcdaf5715a097fd3daccaba89e1b246cd185ce37b001b550d7982f7f64f8178fa4427705b961ac2de349436d29b7541e5a1208d2cc2cff950d20d4fde04431bf0d7b989c25c5c5c82ee7d24611e07566a4b012899b2f3c807d6e4156d5667059f82ee5b012fc17821dcb81db4973a1598d0e11d57f63d266a03195ac2c3d187a35dff57cf310e7886fcb42d78e4a42b002a199dd42340cb179592e9b7205851b61fe0eb4b35e9e1ae6f6a27d201f0ce743f72918ef172cf58396d6b7647b08f77e23b81b8ce925991a4ca00f322ce1da7e928714dd006aa5fe4dd24b73cae8d1c578e81124112c0bca2e37038c1bb04d010d2e7473439da1fe3c2f5fef8614c7611bc43ba649c4d591f76ad8e453f8851f999b7ae81f3207bcd400237f5af503ad8e7861dc59aa3cbb84ded5ec1d1c0f929358d73e3fa656361c48c983935f87e02be053a2b74fe8b3ad391197ac92a357a05823f332527b7252a0b3ec494dae9eda6925729dd32e556c31f147a0dd88f83dc060ef364bd0a2f14499a6454b4ac8fccdcbf1834e217a6d6a639aa5cd3a81545dbd4c11fdced2a3d00aa6d6d30f519759504e46c4003485efd538bef7362da5609664926111583a438dfb7e4b0d749f41224011cd5ad0759c479cd52984052f690232a79c51cd8d5e4842f2096a30cfeef442e65ad61bd5cceb4a22ff03a640dd228ab33902805adb1b70a717f821d2889b18b1b07d7f3bfa94e5ec9a64d35792f8e57a316b23a1b791af88885045871f2b6e57531541bd71744324f16e2f05a5adbea915f44d5a6d63ce3ca99545bb85614320be6a26780d082cb156261d95ed130d8c48e11e8c0521b8d6ad8759fa5ff19333d953520a47a1dc4be9126c1bca05266a5663076b83bcc648abc60b167e6c15bd8c02c303540f8f4ef81468aa9256dd7cd8d62e795e011d39f3f4190bceb5bf639972abfb7b2d3e7175505fd2b123685bfa4b9262243e02881ea0c38cf0b95cc072d93835785cbf26fa2c2c923efbcff0a4ffbbaabe80586448c2801a8b462bb4a5015a942d4ac18ae9b9820da2fda097f1ff22ea6e5f0edc1504c834abfe1ab5910ec2fb7aaa69e0079b9b348b5ec8a99b8286e009f207e7900d330f8b02efbcc39893175a3bdbd618e69c51ae0d2dbb44d20b7ad27b69117e4cbcb51d1c7109ddf08538b1aaf6468734b7e6a233ec23920627fcbce8147dfac8f81cdc9f0d351489eff5e2c463f3dc8f86ebe81389ca4794a4ab6bce706d06d2da5b9c6c1ba41f269fdc59c25b60afda786cc74d3588a5cc7d3aad00bba14ac982c88488da8be1371494ebcbf9c3c9499462dc047fff6f13f42152fea6fbbd264a2696d0796bbd929900391a62b4ca85c2d86485fec5acc1d3de838d79673c3c4df63f5536682db2c2b859d041da8a7c3af73ac49b8895c2f6e363256f87f3ba37de14a2ef4b35c98d1c8b663dc21fd27fcef8b335cd5ce090c0a6ccb32c8c877af48e963fefecf5dc56aabbcfab7fe74f566563ac1008d6fde693025263fc097cc2fb60fb0cd9fefedc8b3ee306a306d70999d4c779f67cf8db7a2ccc96091c6e2b0cf1b37fddba05265bf4056aeb18e6f4ac50f788a3d475667f41dd7e631c0a6bc75127820f301fe869e9a348fbbb69e2347ba0ca9fd08761ee11506211f1413ac2bb36be7acc4750da770a81ef76bbe225ebd0991ec34dc784488c8939bd465a46b5019af50de7f79a8da2982d70a7b44a2c4e9c09a9685b4023863a4f7368fe7ab20b2aa7ccd699cccac58bdc166228c489db269029e0edaafc82a2d40b37fd125908d0ba7404164a08dbdc7a0d3caab1864f1a65c3537ff0461ec82df80448feca5d2303acfb623d9a694587ac186dfdde3df95154450b81381c6ebe0fd515865405db70620f1f1598f4eece948cfd7d33953020c6e3a06b38160e8315144b7d9560681a0c465fa9701f51cffab3db3dd48c7380e38bb08864cc8886ddd2cbdb8634bb9ebf45166fa34b02475c315cda647aeb128a24729a917bb43ea8b93bd1f4ae70d5743c240cda48aca7ffc376ac54ccd077085bb5edca5e1ca703990106588e36f3657cad739530400547005374a5ad43da8fdf7b2508c789bcebae24d58951c33d09092e699e695d4d032f95c7d4af9e94f3fb616fb6c042e448e8b7610a4c42f03b3dc94dfe96af66097703c75ebd15bf7757050d679b8cf86fc6a665ba6cf03f25d2934590812cf00feb10ffc04a4916b1c670125d86be378549e6f192082f805f52c1611d47732f2cb5f0c0bf962cadce26c61a45610db78cc36cadb893fc1e63116d0597740f4d2abeff15db3a59f76b546d1b526a3893b7db5d34c162cf3bfbcac319ec4abee19a65bd219b309fb5ca95978d918de4c3eb49b6af0c9ee5b2c0bdbbc1ae98e3122c63a0edd2d0209f1aeeb7f85bd8505a44614150333d84771640d4f741e016249265d2eac94b634ad9a928fc4371a87c735e516dc8b9e46d0812560bc25ab9884a63cfdfbf6cd2a0f8bd16c641486f4d1eadbb253d90384c6f37b804b3c01c63331ebe2e9d4133bd112f5ed8ee7ead6ee2a3764f576d5a40db29d55d24491897b60c576480b9eb2436aa8d88725d655ce7dedb613a10fb6b2f840c3e3b5ccb6061acd836a0807961f04fac59416c3a148aae20b9990e43c199b841e1ea4bd96041b5eb2912240ce651139e228a40f315e3d5a05c7c06a9ab453037efe08eaedc5f500627d38bd6aa188a3a46231c83764f5e26fcb1d5af6df83aebbea2970feaa3c531bc3f6de6b24324a4248484d1376f8a20ba00454d67ec5e903b1fd008cf5e417a5165df0e5c6621a48da93594a1de5efb4756104ab4e7224048b4672c4730c45e3374dfa1af517fb40d1258bd1d1f01ec278e3e4425b46949e650067520584c777fac33c5918305a186091e90e79a341cf8fc44a02f8e2c22a2ad320062b6700a7b7cf201d910004ccd8150645ddc420bdf9631519e21f0bb59107f77ddec4e30b64304d75ddb409ef170cfd5fa0a1475b40d1e2c39b888b4a043ae0786b747dc04356c9a62fd96e07e9c55446506d959d628502ca59d4e2adfab2ab76765d1a7e8354c4d72dd63bd1cc81a173fc09fc69e15e8f85056c332e0ca964ce036a9d4879c6692ab6f1388e900deb6c5c856e04288f0e56a6295c93eec9efabe4b9650eb8a992761502fe16ce5f6023ab03a71d96110446dfa6c96d2fd558cacc5b1975f0fc017eecc020c90d0bef3cc5db8990b1a418aba4638b6783c25beb0048cca9c509e9d3a6847db3e8952ca65654076350a4b3c835ea6c90eef0ed5dbd6467dac7ef78b2b2bce586d50118ba33324a8093ccea888819680ae84e3e8dcb62e512049a314600357c5383ce130a22d1d89d9931eae64e3df1aba2439fb9e189f9739e1b2622b6b4bb21759414b2a811ab9ab2f037c4fc7a5f07038333040b6cf892d9dc1314715a6eac320a4d578adff456ab432e44b68573f3c5c2c8f935aa6ab94ae9868370cd7efc11959ea1c89741220ea08e8a60276d6bb0fe4d319ea1e58300c9dce3a4efcc16fa52751a914e5a6eee84a7b93a923589cb5a1c61eb6de26dc62ccdf5d5ec2f8cc1287a91c05c7de8cc80095d4700c99a5d15a46b16db0f4dfcb3a5859f97ef77283e4f605e232e02cbbc3a07698bd824edd5196d6e9d8199a2780371b1b7a921d0ffe7000dd3489b0ba26982ccef1e27a84087762a3663c1caedbbaebf6a1f3ed3131d3bf8e44bb8f3b9cf81526cb8be7d85576d0ff3dce8303077a628d223233b48851c119f2807851ffc9626a3c140c654645224eed713b8e4841c00fa1ae9aebe1ff357c2979400739c213281d2eab46912d694e2ad4d1ed8035ce5fa6639ce2087984532b6f6d61171d922d7753b8d7f80e2d89f015d29469ff43b79eea14b176f55ad4a6bce1a94bff5dd5a447e72f604916f44b726168a826c2b2152dd0243e80c9d07938d9fb3fbf149e2cbf25205107f04df4fcc1a4fb0d1087ac566d383b974cbfb38fd47fd668daddfa29d6c587738b73f95619793266551595fd2c04defcfb1cddd212a82432b1d01637c3a2e2b7f693fb1bbfaec63c2c6f1ec8837ddc78e3b578c6b4644661145e8c4cc632f54656f8e4efce690cc5dbc68732996b7b68a5d9feda8830ea76439e501ba1aeeeff6014894a7fedfcceabe3e655042fa811d4d81be048a36cf2cccc4630ca98fb38a3e55e941839211626dc3c745a1d9abbfcaa2fef573e5a7b42bfc06c64303963eaacf62f3ac73f0d65d5829e26fadca3416f043f65e44a38287eb5160a9400b5ed3e25acb1d3b43d125d6e3885cfa801b6e1b498f866d8e560fd25668d059ecbd4962bfe8517a8ee19eb5a62e81d7734b4dfc48394c6cab0da59ed858428c6a8bd21cd4207b0b7f766e1ae80662ced62aecfe9560ab42e8aa85aea19cac7bcda5503f3eb84dacc5f3e448fb54d68744f3d8900afe53f911a8a621d16e1a06d7e263cc4e86b511df36f1fb05552f5020e09516dcf1a0070edae6b9a5b399a5ca14982173b5eeda5bb12dc320cba3aafaf063257b3fbbafe506ddf7839a190f9505aa10dd37b8d1b6634105abc5745d0746bfd41cc182441e492f450c19dc1f03a6ff9f509bd443a9781d611f1919ee4a923807cd8486cfb4d9a75b1fbabad0fdbfffc1a602f1f7c2028be45135017f5218dc61e39a198a7a137e010a8b0bb7c36e0652cc96336b4a38ee61ec3bdf1516c727e1c269f63ea83ec75fd234536cbe8ed71d95b6d9b0f7a3bed7e737a73e3689e9b5198f00ddc8e1555d9bbadd464ab2da98cf14c8be9c6a80090ec984be2ed1e68cdc4b81c1ec3f3749d797e39eb331ade9611472e42bdc52564d87061d194f3a0a7323cef784f12a01889c6b31686d508f6c1106362d06720da9af5638692b64e7387da31b9799da058eb43d7e8231695df4fbf41e1de32ee2e87bbe232785f9f3617b2833584b53de731e895cae5645b8fdaa00396753788a5540a55a82144a7f15db85b2c6f1831ee79f67ee43f513c04f79ddbb7dadff97b2cb33aaf91fd88104d2e380c10b98370e32ed8edb9058b3252f80d3bd8fac05ab3b9935fdd55795292aa19ddd44d666bc0584dbbf1d6355edd59c37c8a96e794f04ca8116c74a3a575077f7bde4c7a85ff7370efe3835f43afb0528b14a551bfd8f44278eb21ebe8d8539e4ef4e197f53f74ad6a152569df7d33133ead2306366b61c4cdb3f45021510287b44eb1820e84b3bec8ade89f4a766278f7b32320f11c1386567f3bd1d734e4bfae0f2a9f24aabd41b6cf8ba8964c9dc0f2f53b2840d4faf0715c01c1543560883dca50c2ecf36aa855527e95ad0ed07940a00e24363d755284ea3ae9a38155c94a4d29b36816171663aaf3e4078dc1f3cac711ea5225a4e0c3c73b54866c65069e2a44b9b0a3ddd1cc60f13ed1ad6dad12aa717712bcbedc7e30c6f3a9e73aa91efd713081c6db88b09eb0a2c913c242b8625cbc3cc380fbd1431cc7353fc3bac67720539e3abf968c2740f3fe46ca59e74882492dce7fa8bb3825f9e05572062d22319658ad1d956b0044fffe43e02856ef60b5238c8255e18a08b88fe3070f6144f43dff3438f0ed720d7e32d69a493f72bd05d83de286be61810e9db72a5a2304885d9893bcbe57542dac2078c918ace6887e672081a190fc4bd9800fa4b439ee9689862e95f9662813b057f4ce86719de38187ffb51e5dad5ec67c599d3835d3cc8d0974d5ce52c9a05028a556f7601553a62df33477370b6437540bc7f3473836671fde97d42be6da1d9e36f0dbf9c5f3a07fe9eb539b2d46ea638826d0e65b27b80209a1f5cbe4a70a917df7014952cfb74b94ad8b1645f1536846dc504c1295aa246f3a818b2f28b87fa756bf5fac54c31eebdb0a1dd0e2dacc8b5ed5b948617bb3c75724b7e1a58934ea02e1a702d936132f810a96ea99420eae80354d0c0c0cedd348727b993554e708644d002d32a4135bf01177e594850c31d56181644011d96bc5938c84bc9e66e9522dc267e3258b85f53cec8b4f866ef2b5760206b7d137e5b84d4ac5ec0fc08e2dca306f360b5b8d8b7109058438f682dca15018a911428d19d955f2c2233c306d2876348ae504dc2f0c70b0bcb208824e380ef516ff7db2f44c9773617d60d3ccb41b638952a22ca298979b10adb0da5192cc0003b4f6ccc991c7d78cd0602191fd68c10fb2280ae6ff73f7351baea828b88d3a4131da9d48d5d5fde0b750c1d2a6670ca30f04a42f47821ffa2a10f95d437ac4c30488ffcdea8ed72ec45ea9fcf17fd14aab2c22387a9378c580c3d3cddcb477661ffcc0594aceab07d3f0992a15285a99e98ee2da5128eadfbc1f553e2fce359a53daef72e0394693ba18a46839917ab9b51f279ceee12bbd5ae09c7912132d1860b43711456969bf885e0916fcb8149a04f6fdae521d9c4fda166dea97f02fc93c09023dbf276a9ef0b035af489e91da9badf2eddd53b88ffb0bbae98e14a36d5da1bbfea8e328565dd53cd647308c6b1f4b6907d5ba6cfca8f534387a25cc4a130077b2565d6d0361e1a39caff8eb8eeec46b3b4adc3c62162b459a064ccdae820747a89ef99e542a936d49607ac7c13e6043d05da1eca18ac65e46c6c06e9ab1e34de9ce4b7361a01c2ef209b539860f42d6e6d42edb377190c29f5d9fd3d0098d269a1fc5493345f8dbcc092973183ef2f5ca9d19075774a4bce8f53cbb2e1f70898f7c3b0ab5ca9e5beaec887dee0b3326da0e261a237cefd5d2cc6ce9f84b071560dceea2cef0ae8988b98146b3ae03e23a8fb319aee9b81830e1ece436beac71e89b824d97aa5c347a77c7e677ee31710988f1340ad00216ea1a6dc8f32f1e9fbc1e5a0b9ac0ee57afdac30d4ad3230b9c4ac6ec817c2e6b0583eb0c3a56eb17cf4887a908b0148882f71b264eddacb5a4e62a34ee5b90a0f38145c89ed7f5087d45f5ab16492acf32704cd691ce7a23187928e008cb9f72db7367cdef45c012f7e3d64201b88084547c2c16b5418d653b22a561ad2cf5e2c73366beabe65381882d1ddcf5a91791a9282b957733355e77126d1b90ee7b1530f74fabbfb4e39b68ea6a01882de6f6ff0ba54b15db737f2db63b5dfaa19651e631d6c80191f8f9f3984b28f62c6e73c819df2b65b8f058dd71aabd14944cd323d452752e1c3e662fd2d500a64f09f4844de533fa8380833a551dc6adcba0a870a644b5779d889e6ce83f5c5ea5c41f833d6b68de84013fb541ce38aef25f94206b39d000048e2c05897f159d9ab509467509eea8c318197984eae72fac15c0283cd8ef128ad39f451f578e477b2f3ecfccd707832db33bd522d40cf0eb1f5217e2e3c2041131c63dd70140f8dd638fe6b47ff7ca2b717466aa0b2c3e7145e79adcf577b90d60cdd4760eee77b9bc6c958bd1f83a0da63d61c9a27e00b4a951c265c51b1bb2f6b4a168a07cf68cc17c8b2ab74a9f4f15e4d97b674e62f1f6fe56f274e9bf58ed3cbe97317db54a92ce6cbf0572b6cd26ba31f2db59620b87df0ccc88c8a09d50dff0a84c7f7b415f5bb18d08a2ea764de937d8d670d00505b733dc5711eec98a1223ce2cae7e5b83eae86df3425d472195634ed3aab00a0591306aa3b94c46d0fdc7471944a47b2646b1eec35e534ff73db16b132a81ec7d84882965abcf350714cf89670bcb019655a4a5ea02a6dc01248dc67e29897a8bd67dc305926c915e1ec18207b09669eec3492aace1ecf606bd72cfec1137aa12a7512b682bcc70d5b560c96e0e9daeceeecc21f6cb21ed53346b4bfbca188ef58d8228a0998f48766ff757405933a993c945b9a30b9ae575704ea58ba2475972391e6c007f51219fd1c7d45c2dedd79e884c8c46f97a461af39c7a3ef3c513b7652daa83adfa46e364af3489ac01cd6cbe4e886fc4fdeb314c7b73d83a48631a211c7a3ccba20658778b7be3f8a970b1af18fba80b902ec6f153e01f330d0be0212d0ddea051895f7a34995a53e8467f4c95fb78daa131c27694bebf508a145a1e06d86dbc2b555b2e78b1d4778868547034aeb4317822d37dbd2a2b244d2bff7bb8f7b5c7c217dc7c3c57df59aa7a51e2734a9b489a460b2d4644d87206891ada6bd16dd9b3d575514f25620fc1e9da5e60f2cb98c1b025816bc7e6d69b19d0163ac32143cdc03c8097b209e2655d407b7d7ba7f29196de010bcd8d71df6668671a4dcc7ae238ece880ba8527be824dd4f12d9da298beedd2c07fedcc2b2ff2a61b617063f4c6c670b9ec492a83fb98ced536ceeaeeb5ce01ba1590f477f85b6bc1868be358cdf064ff3b888303efc147e0cd4120823ccbe904ce02034cc3503595fa1bf02850c8bbdbbdde586f667f7710371a9bb7b2304c95c9cde930cd22728dba49f12d375eb0ff9a27176bfeba31f0badd3cfd1b7cdb28b91286c520d2d90bd94554871a06e2082fca11ac8404e809ad4813dfc4d8b6a98e81c98aef8c643cb58202cbe303a483cf89c14b2b871bf63376905726127fab34b6b219afdc4e4a5ca8bf47dba0afeb3b93f517e053976bc7701fd3b5e3ea310129ccba98045bc3a63a09f711b6badc23a9b09f84a416777dc5ed331708492d55c2b2e06e226b7eb5bee0fcacf0ccd32b5cf49f17a4699a4320e9a1e0c38b7ededceed93efad4cf0404ef22f5b13358eb84d2dee6564a759e6b7f92f58f7dbd27146b154ea42956507f31764f39aaaf84dc828009044a36b5ac6423e8b8b53427ae0639b64aed5f5d458a2075ddc2e92afde9d95fe894a76866e72448ae9fdd941dcc17cb3d6749ed9e4a308f3e26a77477b3c04878f5110a20af52ad1115e9d9c560b04b9741c2e25d9bceef8f5353eb4891a7d888a6a538c5736f34c86e998b68fb01de1aeb6a44f0cd48125a6ba32f1dec3f72625d8b6875f4a9191435bf2762b90d43dd534d0a9bb21ce30b5b459c25286aa25574a574144a92ec1605f0803fcb034f452aaceeadff591ef11d8d7ce02b3df69625ee2f0ad6e0291bc7e49f72bce2102bfd6d05acb791ec8a25c9c2666af3b3596bc276351a6a132254ca776acb507d23a9ebf86fb049a54ffdb94e495d6e09bd9449d22ee0eba9758644c1e4cef1b06f09f633f63fc8810efcdb70ec823f2fc18d48a845254c8904ceeb81b960939320b34653b89b8ebc911d20d0a94bef860442ff34e5f33d36907a8110259eee20cd60ecaa189e029024bb4b160e0ac8cf83fb1d628f8997266881e3f63c36c21a612c448aef891366be86a0cec6edacae5ce3c87eda13071ac4ab57d95f3fe74c91fb58f29616a5dd914199dc42451232b6c5a0e3c56bbda8f602abd482cb268805d73d9eeea0e55b9e5e47d436d58b749248c59c1931630a2ac4d2059a4e17a4d257cc3a72e79f66f50358338a19b9f9c0f1ee157d0200854554f5765ad515baec12a9815cba08bb5ca18efd46bbdbc9d53c64847b0adb0d504491a62efc7f0e02c338b9574229e1cae43ebe136ebe2cb40a40e2b0455dae25a907cfc820630c8e9cf63d69b68455e7185aa72734fb56ecebd24623d3f0ebe14db05fea56a3fb006fccb608896bfcc5848065c96e77d2c7236456129076b9bf55e7428575af42b6deea7224ddef192df2c19bce5d09d4350180dedcc9e52f188030c9546136a58be9428e2f06787e15908983911bf9ce612912b33b2c01a797a70f6ecbc7a6df2c540fd8fdc1ed05d88c86a88bac206d5004cd7eb875946768c0d609f5618f74f3fdc3d766e7682d54a9effc18997211b653bb6edfbcc7e7c91ffcb4baf9b5473c746aba117b674fed393cf7a835cf46757e68fd8c5dc9f3a490ef47273db6734d493b5845deebbe6b2e3a8add4622d86750163d8f7f4edfa9392d7b6f7dee9d9663772b974360873c399f029dc8a494f39b8066f8ef070258716cd2a6baad2868677821fa3249a660b00e1f42d42202a37c831cb51decddf2f0a3643fc2b4e616aabe72b42e6acf24ec8fbf9ea25303c9a6f50b8f51417ba92863aaba8e02161fc656636375c8f8686f82c148d8e5fd09eb751a970d10ee3677792d5794ebc3e810b543c5764071151a9feddd7790e116195c44f72219a64f20126f4335ed7fa634b306896e49088ea1c65cbc10766897d30d8d32b33ca4de7aa1b5c278ad953f8c2e19154ecfecb36ee9e48547710ba6ca53f395b7fc7ea90d86a88d5dccec033cd447b67d65976f6bf9df0c33bb4074d022f89f3a718eeae56d319bc056ff9ee71f01e0e7538ffd1ae8ebeec9781d6f87448b5349eef75ab99002e06f9b8b5dc44a6b472435e82ba5dfa58ddad7edc3e3be3150a2777f88e6abd5e57e71a76f2229b8175c6bee74586fa806df973c72852503df940afcb02422e6a7d9c530b2430a3aeed0e0882346e018e1eb7cb1659fff28c1dceb33e37dfc16ac80d25c5bcbbae79bde4d7a58c551ecbb7c79d59c1f442f2fdbf68a2a9bf5b75a0794f4789c7c1a5af17f4f31ac40230eccdf941a1cb615d3be5de8e20bda6307381e524634138c4e7782ebf56de2ffc2b9902dd63144288f49a8745f3deb44b534e0a062946a984394b1ef9e85f4504c01cf76bf9bd8302db8c7dbef73754f5e35ca6e41b000f5431592815af402b1286b135c43dde98f76b33feb8626d35f774fbf7ddb7b8f97c0749be581fb370be79d7b723e3f0c560a5367bd68000cbed7ac586b17dabeaffbc17814d2f2918e7945254b129431f83730c98f40347177d5daacaafcae97e6780820da5e04d1f0d628c49ad9482a00acdd88cfb50bf427c7726cc8836f1d0b6e65c8196bd23db4d8e15b424ae46a27a4182ecf227ca56b5b01c07a4b086b19265492c888ac246d016ea56663e18b87227461b045c09d93c2cf15e2a11ec6f79e004bc64cf867ee7479e258c69f57aaca84e0b6641bfa7f7341fc92cfc3a16dfed2a16056ac5862a28e9abdf803c4f336d079d0a39c6c2457fa042d94ee253822c0cbdc43d3cc45770f19ae577dc1644da71e2f8e422cd346d4048d0e2cac6c97c684699e011fff7948739fb45a0ba5661fa1ebe51194057fa3a13566a90e38de5890be0401d64680997fb97a5d9ac28b64f13a105a59cbbb7fb82b824c4ef201f015e67cf271c3041c0ad2c6956f21c301d6b9a31549f3f409a9e92480a19491f6f4926568fb476fe579ef0b60dbb7496b9e53fe295340e1170018ab9cdefe02e7e2c7021119a982f6eda9237cde2b020f0cea3cadddce0df873b59a95b1480a52c8f2c2aa8bb463fdab0f6ac672df40db1895cd445f980f4402a6c3f436a1fe0a023ad4a65b52258c6c2a4909dae4cab40ea6618e51b7baf874a97eed9888ba80347a7680097d59af6d2d7d222133a7376b439e0d74df1b1b9d3980ce18b4bc766b26036e113e429d79dbf40f1d243d0ae151e3b15058cccc14d54c57bf798485ad40ab573a717c6a8df2a538ae66b639346b869cead8bb1063c7105e03bea3b23e6591a227c3318822a9e5e6a462ee496c665d61253fae6ad877edae815d03a16b018dfb077f2cc21896b04c66313cceff36c2fdfff15c2dd421f696e3034eb60422d539193792c6e44e886c9de5fa1ef13d4271bbfadea8a83eb49bdb06b4408c45b403e0b4dbfe4d717e931c3bc8903f4a9fcd370cb1cbfcd0df8a9e426cad0ba931215bb57ec4b664245beeeaa5fbc81f03807e80addbede5f255024b075d2ac30120357b175fdc67e4f06971d457c0ad9fae49fedb0119cc2ac4d4145b16dd131aa48afa2b9c4151cda086b9581cbe193112db48d89be90c99e64dc093edec115407ce6858156dbe12cdf5f37841d35ddb74365a6c5dce507ab9fd43d550e2d8bd50990f7852114d60a4612fe071162c38bb0ae7655a1002f19a7b9477f122fdaf3c083bb4138d1bc9d664a1dce29ecfd2538496ab21f764fb8af29a64ac6a05c8636c7a0904b6ae5425203fae9993bd4f00ce3c16de721f9f394ccc7f796e8f115338bc12774bf60ced1f99543f10ac8db264527d02cd55b6f4a865b219551e8615b10d2df807b9f8ef21cfaf7436692daff118125d13e772f3a110a475534ad3f058aa06cc6f4390bd138e7adaeae34cbd0e7ec8d51ae4eeecd5b97a16f43beff2af97791b1094cbcaa0a8545e588a070a7dc15bd4f7bae65dc292328acb9bb6272dd732532266f8622a2ee35918257227e8facd88cbde151034a10f6b70e009c425e93b12d48e3eac0121f1397959372c887bcb708564f3253f26ca40466f89be926defe7f36b66a8f5f571b6712f574796d11013f9d1416afe5cc15d22d9f0e23f79508102908db5237ee804e173b2f54d3d7bb5ef9250a0120e7b56c97eca2d5054196c181b8607fba6050bc8eca37b9d7791cfe832ac548625c36c875cbdbedadb0fd0fffadf3b888895c9c2a16cdb946f2c7c81f4bf94d2c21ee13f791dd1ec840ca3da5180cfa520d232a58537efe414fc5ef558cbb3b85ebc42128d0ef3f421de7cc316ff135dbc26208f18ec2e8f6671e7b4ab7b6f4b37fc4b06a4e50d1deb3655626bf52597aff504722ae1e1593842d5304e5714eab003224b4ade7c7b8a4c1afb704dda0fb29165b19301dab01af1cd57e5f15bed3fa2777a39e1a060242f2e78320ff6773c9c157bdef5920471b923741cd22b2da31e544f14021aa347b3943838956ac915eeba37bd989934365f9e84cd9d563049231e82463d72ba7f36e6308560067f21fb2237d98acc22fb2a8fc608ffafe465ddfbe319618fedd9b3ce29536700ba7d75c7b8ca27de6cda7f9a9d881e646f1a65015a387de02854bd17f1393d17e8f031363ccf427bacbb80256ab5b156d9eba77e7053ad3747913a173bfcf9e87323a30275d0fcc0c4e98fa04a3b5081019bc7f051e38d8e894a30c46bfb3ab4447f4b367e5c4e545e055c840f7d8798c2396acd513c51d66adb2110f81f3b84248be45644eb37cab14e37909f88b13d8f055b3a386da69fe3c71cf2e83bfe93e955d1f48411d77e1a7e68e5ef5f8c09aacbc68df76b77df3187f4ea5326376bd9f0784a82607231bd271d6d457e3e296390966b8f898060ad21ad45041843f9126561cbd8e9bc393ac0339aa59d90e5834abdc4ee32559df65533d7afda3da4b0babf3a2bceae5d2a82ab14f2797aa7d04b76c2041273700938e3e9d8a436f0a460471a1c6cc05266287e8f2306cdba23703c1ad6bd330cabe2cb78906c0f6cec8d4032d01a48cb330a5843957357711d4f530f78d8c4e63717900ce879271a8203a39ba05a493d96dce86d748298d8a3c07f5d1aef7d9aab5b419b14b6ecd155129f7df679f05fda5538525d3b677caf6e416c7c3621ea010807da50238ef77749d76e22573ff93d2036b8bfd14e3f97d39a7a27df17ddb35e006c007c795e5f3c140158f33ff16a3e6fe321897d013ae4c66a4259fc7850e3310fa613ae487f157f0e09c185c814e59016422347bca6662c47978ef059bcb55e3da385075d43d546e840584b9b2da2e13e597b034444a3064a3478a76442356f6acd7d74d352b2c6f732a1f554e5537d04130c33266e8d7ee636b8979ad562ef7a9f16a49e5d4c83fc93f22f752db0e206ff0a3ee22d60406bc711613d667b8ffe0df48e93c987539943f457cf7cc999b537aad0203f58579d314665a587a2d30efa69c7457ac256b94db4b609c9ae72481002d1dfc1bd14827619e3b70cc3233e04d02aa2c19b8aa1ab41c3e8f3816854ee805f99c68cffec07c9e37761dd59aac0eaf761faf16f5683431b11f23fda23e57f2f59ccce810cdde9f4f946124e8d0ce2b06dc9f40c9a2aff7d05d0f5efc42211701a22e38711b73d626e048b8594f9a1b03a8d9dd7cc5fefad589c6d5ea0aff8b53b044d00ad713f325400c4787d5057651662bc342209e83a4cc72a97580054ce6fec90292b8778cf26e8dbb687a9b0b20a536d07a5543bf8145f3205818bc8d3fae4c6ce207d4a8248bb9622453347e3670fbde8cb0468e819746eca4a1a1094dad5fa24f965d6afc4c7f396d1dd53edf97ab5c0754b77760c07a2c11b3ea8a76e200c15ceaf84def8308d71a56ee745085147b80ec16d2821be2c1fab35e96541f05eb27d255f5fbe355706224c5e180f55cd5639314629b99cd2802dc62840ee4f6780594d5c980246f4377296dcac7df440cf841daed5e1432f628e3527e7c3a4eb49704bfd5b6457a0fb1c3194afe485208e45a9a34521ee3816ab141dd407417bc57d11c96356f56a770279fe7853ad510b41eafc7fa30fb89469debe7f051102fb37cee99b94809f7e7a1d8f02488d3596bd6826a5942012416126aa7775ffca732099da44a71464a06d993d26065622a64e05ef2c5c642c2134b174ca1d00be4052ab1b5ad0aafc4f6803721d170b91d674ffe3cc83d24ddcdc0f0065bd6c5b2a920830d11a1127b46b068c43f57256f9febce439b5c73afd26425a0a3eab6c70589267ca980eecac075f5a918c666ee908ee88ecc45358c3808bbd2d865b063a3dcbc1ad0f9b4631814a6865f72c4834c20e59fe1189d5f13d7149927ac300ea7e409743196974901c45be296857beb616cf120f33233bc19684bc28d536750647976a0cea39eada66ca4978ef73872ed4e9300d83fecdbe9e430a34aed7ce967c087ffed1fce94cb7138cc3aa11d5864b5ef3ac9cab1dba53301ef08d8cd5fda7e3e46d47d549669db7e4b4ddfece781c3bc71b0a14ce4c28a4a7adc41f3df8184fe1ebbbba1bcff6ea1459a8e5a846f70ba8badab78dc58d0a27177b823935e75b59c08377eb99a93a2f3232c332d205970f4f1713d305a1f05e8f828674aa2f843e7f79eeabd1890c3017e360d5da13fb7ed7deb98b0a3d50610b75b958e8e2f0335d0c0f20b2680a1e0c3810c7cc02d6d412a2d9fc5f3f47fd1a937c4abfbc24cba01e92332ebe2e25437b1656b8d72b06e6ca4cd54b747128b2067a17de36affc9fe67b7cffc857f2d56c42efd94396f4c4655365a3c13159df13f9fa527aa005430f00790dacaf6da7731a7030add051abb2d80d2ef3f7453581423879ee6c8fc3c2e22eb4bee82b6942a584d62fa24397408e7cca6428d292901140cfd5831b242450e34cd0b9994c26988ce690924368306689b5c38b0cddf16791bf48cbc384470ae556197967c9380f46228de99c684c65f18b7185a8814d531dda4514e1578525d6b17b0d3380cbd26b25fc49c790c2fcc316a14b515fb126cf7fa291cedd219b26b2116dbe6cc1023d9d06245c082af6b6632b3543676acc2d096304b98540a179b53c79be668e1e107ab70b4f431b78a57eb23dbe65e703124d19c1bf237cd10ec824a57675873bec28e543b09e81719aa5411c8cfcb4d247963dd95dcaf6780ffd102eca3f04f503c763f010f407d252fc61e64257d4a58c854dd29fe73831c1dfe039656e7825722c74df8d2d3696a8aef31983be23e4657ba53da7a193cc70b024e7128fea912f659b6e3aa95033da7369d81b13d458ce8f07676b256497136172c3c469e72dee60e41934528c2e7a9dd0741a1ac757d7dfb5602669854bf578d8e65995ba020f5e1d5a59251bc8003f37ee5f861a418f9e72f8f89fd20b663aa32d6cd804fc02a5918066336b1b8ea158648bc4843690f5bc3b361682969dce93f15800aa7984c6390d4f2cc51b3886241e15780a21c91027459f7fe6e71ffde0e06beff8696b1b10f6679d69058f4d4b5ecf0837a79173431005d9db14b32c862651c476bb6338d85f599f11474833d92aadad1607ea218aa38432ce79f85cb9a3a0f6ad10c43803ddec1ea9e722a5aa3cd468673b2f225368fc213f820188eb682cad9c5154d44d50ee1f6af97f5c2356241345961b5dec1a5d653c9648362204cc59d19b6c1b7f4503ef62fa6d504c2f31f6b3cf504cc59d5a526d5ec3d879b42448baefb21b266d0399efa3f1ff07c74ab7935a650e538c332e46e06d0427c2c4b444a94d93d5190ae803a8b1e3c19aed0809bb00630af107e29f05c3f496209849d2c1944f043e596064d6a3f6df12acc928f04f360c25a1ca658918526969c1d0fb3ae86b0cf5c7a72b438e3bb2fb41a33258060834f9d24018d03fae16c9afe984ea55ef898c69a2a86b512e916d35ac4baffc2c3437ef3a24cb2e9a65b946d03fbe5ac76f8c466a4782edc71257b3957ea29d36b0050e993c26002d35218a844623bd7405dc14abfb417a66c5a1814312fedc244947925b2c31df05eccfa7ea450d661555651b0e8f87bf80339b1b6ad61e74e3df10746fdc2ff7f8ca26697ab4dc0a87f1eca08023e9b5c80409fdf732c661753f17b60d099d98b38221de38e2cc06161a30c03eb92c95ee228e1a9419917727ee2a16df0c9d8d51bcd894337c69e490a9031eaa1ed5ba8352908d855611e83d491a36a59f94f8d57db9fe872f2d2728d94b93906c8a055ae7e14ad471e914598b24092cdc16258bc7d0c03f4fbb5d9dae6ec9760f6630fe741de60a43f54b7199ec03e4395ba7c92e7135ae53fe9d5762cec7592d1084718dbf65818e7ef09a61837e0dc0a9048fa7e834c82d2854e391a4568f2e40717f9842752ad8f4185c2eb033b3422797875e31db9cc494590f2df1212a7293aed1c8c5b88bbc4673664345259e68e48d6ccfa4e8163894124198a970af1af9133b5974e594dbf3bb2417ef69460548913cd35f1ce260ded81ad04983558f745a58f9b9309c17a3f94dd894287ea75a3e00a911c59a19f1c926429ceadc5f5db6bf03df50f8d7c67a5bb00370ccd630c51d717af02354f7e8903143bc50dfec57c234c8519199d707493ac880b72c47ca8d94e466963252ed8792057211f2ae85ebf59dd66517e72ae95eaf17ed3d8baf9ccb2e7be04e17497df7585a81589453a1d0b502ec959c500d71a32c559122b2ce666e708ff2959c6d1b6bf193e248aadcdb1a0f79518768ed5e35881230b3a2907e84a5ecc0cd7b790b4253f5b1c55c739460ed527b7cc6989b15ff6011225549ddc281195b16fa6abb668ed630f2f91f208092f4a39a045520a340a26be22540b5d7feb3b02c509fec669b1b0d2150798bead58e7d5bbaae8c14606d3bb67306c1ac632f27d8e8cb27d35f46da36b474b2d0b6e0f38e111d1e5ee337386f7cc08905f0bfaef524cc4373692180e2e58b89830b7e8601edea423a427d4af3e67b7444b6225d11fe61c71dfa0375b1ea682c23025beed7ab8df15f211c441042a3806321f39d275e0515508e9af5a070b3fd6db1f1646fd36d1d7893dca5e63f20303ecd780fd40376cfb15e711ff624b0ca18a29789594d09da1b07502cc74cef3aa7ecab92505a8adb4abb86e287b6ef96a9b91c989f3f3fa12c4dc301716f891e0e34541a3532302ddc460dacbee00b41cc168b0ccbb18685240779f3350b501fc2b2f0971e5a3a50751da508836ee3593eafaca6f11388fde6fe5a95843ae28f6168d3be500b43ec6db869fc82fb489e6d73b35018209f1ce35fb602e5c0fee6059f8f47441d9ff7865d58e373963864e42452fa5416f6a1cce061925aef419710bf645c51e5cd69647ce9942e535322cc737173d9c990f21a69013addb8534dd4ac043f1c02251da39d7556f55305dfd81682976a801b157b51c8fcfcff16010629466393492077a3af542178f48dc53c4438de39ee09bd672f3155db0ecbe6abd0363faaeef09688d462c7ffb84e5f5c0a4b5fca136a8e87a00c6807d5314421b15bee4288e7e74713cd355572def3109d6e6b99fdd17762a2bbce0095537bae7c42a24b50e67cd83f39615effe4f794bbbc5a8b9e9b6692a580286267fa3d84c86b0f0625a7a839cac5d370941929cd3ff26de07e36157098e5fc734757736ae5c56281b8371fdcb2e5b9df6f5622bb324d54d35577684dc42d35c1c00cb5581a9de449515383492a3695799939fc775dcb8ec49e80991cd5154602a9e9ad5a9ce17d9840f802062f104814374002a22e80ad102ecf9371d0de0c7ad4373465a8739c1609182fd13fbdc4b71fff2bf89b4d2da51999dae897b73ed5c8ce46e823d8afa5dd353a0fcb4a68ca41d5ce35b6e72136124f8b92a9eef0060a2364a03c01efc6ede58c5f5f468dc6fae711384f46aa7910a9b27e2808bf63dd4fb9158ae43049c975d733a5ad26f954610b51a442555c5e86ced499b908067296954af1a15794c039f70f17a3ba0bac4ab440d0ced9ed56c349d37b99d3170e96157b77ae8fa862c45d5c49d17646bb10b39c425b54d108a91509e8f1a0d8df976006577fe08cc64b81b64b188a35108343db650fb9d5c3e29c0c8a73a6dd3e13afbfd40227d55cac13734fc4da33dd0d29993ffe0708b957c95de4d97b5b4d540c8feda5cda69bcb67f773b7a7b90bb19c3e51460e12578d2f0fa6c02a41bf83cd81db253ef4b2b8c5e35b4e599be2207b1ab1fd3db9f727311bcea02203bdf1baad609cbf083c8575228a73a95eebf4c72fc26cc8da21bbd135a49ee19b639fb8176731ef28237b4d7c67b851e5cad3fcbb77582ce138097f9a240b3c94055b7b190b2ad06609d760113f6415f10c6c454c3d65965b41b8381dc042e79b7f4dc0168d505d51f6d689eab57614affcead206bc97cc31c224dbacb86d0224ce6a665d48b0e7a248079a4c32eaaa08d8822ef6084594c2e2b0b415b7b55b5573d406993d7c70e950099414ef6b703791ff698d6a983ab3208f8ef623c6a5ddc1cdc12b144dc63b7dd9af666f8edc0d7262c1a4a380dbb7f79e2dc9deaa078335eb19508994f5866f903b0ae84b060f4dc98eebaa2408b7747d95e7285a0fdb5d44e61308809ded1a22ff9bff4b24a29a299e616edd8581fa555f789cb1a212aa3b7a829d72293024c4296b88bc175f8ee58577cc47995bcc331df43b20512393d2f087b63974896ada427b3c43148c42a8c2bd30e2f50e401b690d6cefb7a015ccba3190c8cd9acf48afdcd82e674b4b1e5aebdb58cae1092544b8035325a6bfc9d34d160d7ac80f248ffa097453e186a182c59ff54853d0482a0395307184b58dcfdfe88561884a36df37e87b7b43566dee7fedc8c0ddbd58ba6aaf1db1eadb084b98bbeb8177d5a84d570f107484e643ca0bba27763a794291baf3cd8795874171f402ac9381edf95ff587f0afc8d4f3d1864bef05e402a6d30d979e4b849af42746c9d1476fb41466f566faedc7a2d447fa695d55efcd93906befb358006d0947414824ecae81ab7e6c4d646124dcfe6539ab01a53ef17624e20af5e51127c2a0037a4bb311acd714501576cfabd039ca5a552e21dba6fbd623a56d543f551f87b2b101e92b9f0cf171d688b55877a9e62324d1b707bfa2ea3b6832f759b35f398f42a5e7dd0725ac746bb5c468faffff053711079ec34a8142a2a8f8411dea4894723977b46d2dae0450426799e99dc9cbdbd73216e945c5674ac30b461430252b3a422f7f74305f279958fa643e3c2f386d5f7df5b6045e22c4874c765c53c707be45c5a4d5ee380d8ace4a37c84345afbf4bfe99ee59a40e0cab29502547f8d208f2afa0e27240d44dc5aa90573f02bbb24379e2d36cd8f150ccaaee727395d1232c899bddd583ab7c2c0605c0fbf2bf62900d1ff5e5a26aa1d9e68e2d9a9c87291d598866ec33d7d238d8467525d6bacb45e474fb0b8ab03549cb5fb63d4b7649f66cfa771eee4cd7120112788fa2fdcb6ffebbe029d870ccd89e90deec46c5205df99b67f79852e07298090f462699116643283b85e9729bfe66800a43f37f7cad26571b02423a133dbace667b9b7bb476072c452196ae09dae44a789581e1eb5d75da95387a9c0f59c2ed5102365151b5eeb2d39e439c44eae5218a62b530f5b468f4b66f457f0e6042f6d564e35acce25d259310c00b90014dd39d16cc80e8dba06744d3f81a886b0d921eecc5959c064c5d6d127c41e35c63fba2defd33b477d0e6493925a459af38716910abccfc489daa8c7be5f3d17b7bf9c21d14220092079336d6c22d7a56d67c3ab9838950da5c25645a57d9344fe4b406e04a8a4c5c5ba69e60b1eb25e5aab0c9b6686147674d5ff4f17a3e2c2c5a8885544aa016dd26a2b5f489e6492d04769bbdd7f97a31966a08ab100d50d76208cb60dadf7c03f53e30b423af1da934d1a7538626d12382528da06227ac4caffa84ece8c89fd6956c1bd6bbf0c57df923cd3f23606d04536b171e21c11dd8badf52d620cffa36c880377dc0b4c11155dd1b4ab7d551ed69647b88a30144f88b5eeb4c5240221246ecab7ec9495584fb504e07fe616d616cdd3fe793e6d6c407f9b8cb93c57a3c6230b4af37718e6b8b3f04585686679d483ee2cf819eeffaef5414a325814c5a74d7dcd50af0ee083f08d203d6adf058e2e65802595ea45c62dbde88251f925d2d57a57a708806c6c7a787428e82a2d33ce0ff0d3c99c4b8b76742df1f1799e246d7e65c7cef203df2bf71f5d485baf761689cdda33d83c81bb17ea3caecb800b24953e3871cc6271186c92ee8dc53874f2d5f1f5eed164c3e59504298682baf20990ad14361f3795bd228ce6442a0ed725e088cf3723ef0f0474af6a9158ab218427ed65e9d7dce571d810ceebdd369a9a0f0a8b00fc22b652090be5688dc1ac59b2c25ad961a3a379dfe4c18e70bbc84c8b88220f810585344dbd3d4503f02e8a837f9615217b0ed34267fced24fe03006e19b7aad80fb861555e2eab36804cae2c2804ef0f2492520f9ab0e0a4933ebaff7ec70025aab77c5d2901be4800d3badb16033cda2cfb11d2028878e3dd022823cf1f063a8285956ca07d5c80be022485263cf57ca700553f49326337d56e07001f1826e6d26da62d32ca861dcbc3e064526c69a90f170832edc503039278706cf9b3bc766a2a9a9f6e69c4bde04c9e6fa42f236a9ae4cf29c78a39ddafa3409bb70aa78151ffad8a8562493220603f845ccec7b30e1406c6348a7410e847056a1bb1a80cc299f73e24e875124992f033ec19f448e69d1c4ac0b458ce0f790a58aa3258b7dfa5d99f0b1dd49e27d5f95bb2e3fbadcc013519fd992355fded856746e1076fa678cebfaaa982e0216a39b4d6828b695f0a7e49d30da746096153456eea88465efc7a690db700fb24280fff2a7b04e26b978fc2aad7beb5693dccf71d769d2ab3d1167050d3756843170a90a7d96a98cd83bcd30426e7cb35f13199cda326b19f1749e77835767d0ac0724be812d3f0cf5200b3e6fb2ff3dac8d639bdb0cb572adc1b6c0ae3cf6f385a108bc8bde4c105357cdad6b245fe519c1068c1ca7e7bf30af117cc217f12c0a4f7e4dd8435d7a94c2b35c9327449590f9a19e961794bc24dd11dfb969fa9d1ed98525ee6a69ab4eea1e97d5ba86c23668acd34b5f6662d067e238f2437d6a606f6d3256e391286e9f3933d15d1b3da863ccb9de6c75dc083ce1e457e9b48e22cec79a3d84d8b9506c8c98e56b00e2889abf5871596f3406a36da05a4172a1474690eafba826ce11f78ec936000a45177bfa00011d6724907bbd6bb403e281bb9a25d4e9036d422502c7ae0c683a3cb9e530ee2c6f0f8382885499b81c2049450c24d66b0627322e11e5551d00ba3726ba4417c2b62f9bb6b3a3343a41e871920c300300f0fb6a97ae8df8df1009cc1c93546cd82c227e921b1eb9f9916dd7177da2a6af7867d247c49f061afa364fcf69cc55be03dc234687125829854e8369fdc1d64fa61ac103f9f09a91fdff92c09ef9c8ff8c87e81d9a963b98015ad295cc7bbcac84c0cdbf2add4c8c7b7609067e7c3844d497bc553303e5017788e456a4a3588fdb4d0a2f7c66aadc1ccbb611c9c51941992feaa6e4e6b080ad59446ea88b1a6464ffa557f79507af45510019ebd1de9f3857f9af2bbcdb597598d8a34e77f49f8c3237d0eb8e2d8a6bdb55223225762015fd42b005c726b7a48871f2d79e9933046f46b4c6cf73f6b547e39417a38d68ea9d5f9b5de56f4f15da3272c8fd3d43f2a1e648b136a6d32224e80ff13134fcfae026d1740ebd9fe31d03ee011e488919494fe2a98e4aa8e4e7a09774f9af1d24136c15a8cca57b2d8826b3ff727c17bfd25662bd1da048defe5ed1f5c259662a8fc0b6d10fc95f5b65f4d48411bcec510fb9d9d605ed5ead5b50181e87bc1814a435c3ca8cc0e576db97d6946a18f8b265a602ab8f42f14c13f06a4247361f6e43f7db6f54b112114ca5b2d7bf45749972956b54260095c9060fd9fa20e5aa9c793ed631a1ffb02d00345be793121a1c8892932a5c9505fa5e3b34e05dd80fd24bc71c1032eeb5dc4a7419f6f121f2875f6ec7a7fff684b81ec2f98bae72875ac84ad2e931591ecd8ce8266a58e1fee181fae48aee407dfd7b8ab2173932696576f93c4b2b1ccaa039b4367dc24b34ff7adea8016f2dddc825580815411441b6436ea52e0da04b4678b1533a9f71f5d4b11dfe0e8cb43cbd3580620ce3fc7ec848ca3b0f32f1fb90b32ed2c48420f13fe184c07ced48c987c4df20ffd0c60fcdd81c340826b33600c576e6588b6432b1d9c7e0eb21ad7175e6d74d8db590d300bda10162e895ca2127ebbb3349b76fbd867517438669f7f22adf4ef4fd33ffae2b2238999d988acfe4c2983354dd27455d82ed286db3a33659d90da385bcb10953472f640c788e8c2da131d84b5e3769e9a5bf5eaffe3a12f39743cc6871189b36b726f9657d82374c062f70c942626311ca9c99b4528104d3f86d268a748d0c121da3c3af0a85406554f32276f53cbf233ba85a0161350cf97ceb60be0154a4bc305af0c9cf9d95a1316e6d72497f0cabd9bb63023e81c3c44e1523fcec0843cbce124ebb07fbe14c16331672e809979c6e43e0d94229cb7095127426ec3e5c55d3861faa22026ecadeba30122e14fba1effffd8a5a47d907990e2d64fdc94481551f94dfeb24664cef3b614dd586755ca084f0ddef5dec21011eec821ee1edc6906d468e28e1baa9bb94bd5370513f01a10c23bd229d1aeb56f0fe3d71d06808c80c6847f70c8db05986f9099ea26feabd5bcf90c67bf919d3f9909098777aae2b32f3c3c475f5bea91319a4fc4420f33a6cd28996cc62c9ffcefbc359af7812b95cab246f8d74936ef99f0a1e5cffc2dcf230651fd8ffaf728205aee4ff341ac53aa92053c59ae4b0516e4fb19c7cac21ed0531e48ab5b3c0d9bf1291c52e61d9c67c7e7ad31f1c6f06ed0745c40d096c99c2227b4bb5e87bba41fffda05f3efd461760f1758135bd2c5edfb10af435a441db5ab713549d8598cd71836d368c47a6f9050a010c8847e80720107d82022bd4c7c43e55293def45caa76200f46ac8791dc7862591ea1a8a686c39aef89ab7a1ac3849937e51f082f78fba486c085cef4869889f994eb14b46182032ade1d95cfc1af3d0a454cdcd16a3a9875d6d9d689d4601e8d1f2e9dfc61815a29616bca327c105078b1239673190c361925b2b018c9dc91d3e08526b4f3f0257894bd488ca718eda904aead3aa710ba9858fdd804ebd83506ff0567874a3f215ba77afabdc0cd0e338ab1b9f622d0370566a8753fc92c78f050c2ec9751a0ea1bbcacdcdc0ea48a2b5227ea071516f4b45b330ffd24015d87412195166ff7b924395019f5b09db2201fb9acc4af450229740e3158987fb2c85747a783274491c6ae8efe94b2cb08b4eed6c8434b374b367c459ef7d4f6b7fe6e427442aab8194607c892218107ead55289803ccdc4d34fce2a69902e62d1764f875ee2bda623450c0b25e7f4c50388bf215c6206853b7b2edb4731734f3852cf979622449141570d7eae92d3d999502b8d7bba7311446cc9184d15a593de6f353a042937fc541fa873b7780fd3d00ef0b372eac58cad311865191c94ebb603c7bfb01152c0534c070b1a42cc2e10737cc90d29cabd525f4fbd1e31198016b51c97c8347ab07e8cdd9d77ab54646906344cb072535fa5ec9274d1690c7db5fe060aaaa939d63664715b840c6454b41ea5482eb62df8766916a7620f489483343f30acb3699af94bf1a4eae399f4b55ae198413c47c0c83f323ab9a0d48e99608ca8e2a47be8c667aa1ec130c44b29195b19add3c0ee395edd0c3ec2fe089255fa9c2dad5a98636cceb8546297f645ffaf7d7bbf8296408eb8d121a5fceb4334b29e97c723c262b8543935704560db158c0f04288fa9b4a8faa72c748f834ba6f481f4ce5be42678cc787ab97407c4465ed42a29217e7ae912f41e252f59c56039c4c43c70da9de8955318ae3a2f5cc1525deb630744d07bf9142a62464d4ddf39e2e0329d841cae39c285c4c310ce87eb59da6903b360eecb52dbe50ce281fc73527d9b1de3106b5b32ecc20781036c7ac631b7a68de2047bbb6d3d9f2cfc695de0eb663d07201a2e9cf8cab010476d5eaf4c8c2fe8eb0fac19b6f0e320c3b490db0d32beb9e4c713ecaf48c4206da5c556259c5f1b19bc41d450d4af06666f723fd6f238d07bc2719e5c589c3760d321f557b3e8f8eeb565be61067decd1ee5c361bfe335137f1450cdfc51fe4702919bf332bb246b0dd1eddf982d8188e38b189a335ff7e5c924a5c051d72a5381d29e875e7e5764455f5eee9cd0d65b2cf82ac313fbf80145affe2c07eac6106723d0cfbd6e2794a8347c52752b2c0127659bd6cd6b0b4831c0e0aa32f6de71bbbdabaa1ae1d591c62ff09a3dcba78aa7f4f0370e8c4d99eb227aefca1962a37c41782d5f134802c7e3d81ac3e808b4c7c75a820e48eb5639cb319150c42f9ae79b1733514ba7a8f7bc85c0094a021cb7dacae8da377062cba166198614d99803b2e76420b4302fb508bc4739350b24792923ed4da859790795b8ecda17cd11e14761cdccd5b29f8704d695f29a8c6828d4b5ef31aad529df2e0801a20948dfb50ce1eb542461085db579401149a8b499c8617728fc593a38aab8d58f9dab55876ba7d14a6f91628dfc9977dc40b89882291be0984887c49c1d3ea1ceefe26d965d33303f64b0698ce84f4011b05602d7faad6a53656a207c81fd6fa1309e14c560bf94b631285c9866ab8176822cbb6882c802045a098fdffabca1995747bc0193bffb96b6ff315f66056ad5bc00df969cda0de1313759888880754905d4687199b364c32726a79e60a78234d09c50483f56ef6f8e3682db69156179335eed59016bf62d6cda7d2297cbd447012ce21577349d213493983e5b16e1d879c9bc0d11efbdd603341d7528d8863f2fc2ac0a8cb131dd1cf1dc05211d8acf38a3164474adc456402540cf9c2116418a37a5bd204638b55233dda7fa94e2c12d220f489d811428aff8df11b56952b463fec62b70e3ba992953b1e4ede33895f0ed4bf6f12155c7451d55f188c52ea62a3866a4f949a42368b70a439155eb9e32b52422e009ee46b55678a3c2ea46d27c06c5da621b57072ed7025c41653b150c8dab8a192233cbdce87a5ef21762c5e227d3de8b6952f0f96b4721ed203e7ba10bdbe19d8383372ce70fbea3fa2fac73efa2da2a5c9b71bfdd9754019a7672c95d80c9a43f194964f120fb87a20277e02e6f5bec62d81186742c2d8e9f9ed4804aef38027957489f5759de19f722b3282659815ce64ebd5109b1b55a162e398cbc7e993a1aa948d26ea7790430be43d43695719c5d382857281890211642359016da64e7fb40e22d0d3f9e02b6ca30b2b23d3096c207ad820463e0e60e45345daf0b8fed45a7e6c6e84897e0848e981b343997e371c74dcaaec9734967faeaf5efd3ef09e6a0e92448a06042e9616e2da494fa320c8adda3cc28e498711934e3aea20f3c72a5abbcc190ad0b0ee5630d3fe21aa6c7698f3870757cbaceaab85e9780a1f857525805c261b27593580c6f264ed77a29899c57c5e4ae4b173b9865f1434716a24617a63b72f7589111e9b32d3cf5d7791a004f46538d0e00b6eb6c698ebea8b6c29650e388c9b873c79f6c5c0350fe2c48c1a8a9d2b471974079914653c0ec67d1fbb93cef9f1ba797180ed2c5e93f23f3fcefbd41472a7a9f154ec6e31d3b7df180fb76e960919728036c8fcbac17cca465ea190cb0947dd4ba73ff0fe8c61a4cf8e3bb9cacb7c7bdd60e68c6be16f0925fa25da3e945d873642d40cea2228e2cd9079f7879947d1241df8e443d20022c5a7466599914ceeedbc2fe9a57775005bd13d3b382326ebda19e385640f928fce8362991401315e5f5fe14be4ca4f1dc0b133fe673d596567126143e814dbe15aca6fa9c991d81cfbc015524427deb54d9eb8da13081a8e2ff4aea23b0eb4e1be6d975ef90a2a9d813433e61fd0430707429459705535abd23cd82bfe7365f7a89f2b3d416a2c9519a2b7656d88e5c4d72628ddd0d54c772b1a2b03885d15f6fddfab510c40250683279ae365d009a87de58e154a38cb0e2d4e80c8c2b4374ee473c3cc9b887ad1d30fab2f320b1a73d11a7550c594d8a79f0ed23b6753369dfa0f279f123309cefd5dc9e0ab368116c677127d98e7ad8c5267b860f439fecb36bcd2571786cd0fcd8f6dfef650ccd8cfab1b304ce549f34753279d4e558b7cd19e40eb2aed1a18399d66a988b1fa2ffef96d7b832acc8dd016dc7d0c8387526eef8cfbf9afd079fd69d37e5fe960df9b1403bf5044ea8c0ee25860889b43b0704c46feeb6cf333b66d3e26905fafc03b61e269c5fc326925fa4184ef5510131fa414e155599a85532d6ccfafe9b388718aa919a9b3102e13694ed825b56c5ecb9450b7188526e7672dae9ce1392b1c4aac0e6ed2ddcd39c3e61a866c10a798d1886b3fbefd6baf0591e70d7ce1879a81c29df7d99b950ce111165c6d2428085440fb5042af918eb9d438ca828385e31f38c777364a2792c227b194d8d9ef004b4472e3aab80eb0543075344c2a597e1d477a82b1e14d938507604adc56078ad833e36a106d6fe734febc5df7a2f5f1f023e6d438a02eddb8070576c11c9630d9ea4ff099fe08416f205d8eb228491a0f93e5b8668e4e819cf0240fd6766ce8898ddbedd0c7260490dce66fd8e11422944a4c9a05b434f99b468064ad24e4734a273e0b2d417b43472f837c8f3e9a22f10f9f2b9826c7012973b7a30db77cd4297a8acdcc81bd35b8897aff049b936541cf860083d4d3e2826beafa6072741fc16f8d3d84b1edef9c389dab08476a16ce99eaf43fd2119a36b8f9aeec0a0b4d102d73e1e6c8d8cbd4c248981ef6f72dc16ab30aec63366c34f4bb83ff344a834fb92802fb2afcfe5bc2c0d0090c75861b41ad5df83d09e49954784c5a92d7941aad0017ae15c1d8abc89cfed207a8679a51d0e8c68f77c875774037c9881bd76b835c5bdaa04da6345c976b7a49a17b78ade8139bfae6c85bfa6a12ada4fa3c21560ab41b180d3f9b16513b2df2d8d0f654e15de419c19c918c0bdb0c73f5899f1931f36ab1b24a1d9b25f5b1e2d1deec8947444fa881c471a803a1e48dd7fd17c34a5d0d5019a1109f1ca0ec7a625de41a695db8300986470c1656d2ec3b029e3756b006d27fb74b239b5dddaa7785a3f7f83bd36627bed36387da8a49768f953c0dea762299a7d8ab00388eddf85151aaa06dad6d9ad009958f8fb2ad8944887ae3719de4f5ac7bbe5ca7bd34d3810ed783d333c145b93a41020a71dff51d7c832b619303168916f0768013a4df849c1cd6f6656c0d9fd4c3c2851b913568e2b11a14c72e26bb502a32aac677db14260e398b20ce4d0f07df3b5af5838fde187c7f1fe7b0d32abff10eec7bda35926083a75f810153f4b1b01518aba1750d8a700e6c1e417e8f0f1f39a3cdf83c93cc08e7fb0e307f6ee81a2b1af3f5e019d7bb24a75180a1c8aff87ff16b4dc1a52d7d828777f04fb322d3a90611f370c0839287580751fb86aafbc09ebb8da16cc7e08b3086eed9df382ac40cb37a83bbbbfb2377557da1e4459d3a497df686b6d6ab552b839445cb6900e779b795468e7aa753455a341490e33e6d563b58409dc7651d30c3b1b37a6d2c70e471d6854558bd2250d2fe8de38003f1cbf9734e816b447dd28b31de2d39eb775c1c53c40e56e19cbb9e54cab22dc8b201e4b027e0d8b15ee2a22ae8398775750909371484c2bf6027613fe5ccc2d0b4a19ea12de56057c52cdac3872979d38825a7064cb62df2f7fb1fba859f14e3c6824eb39b22de716bb6fc99ac1cf17e701be47a0f9fdeb1d5b2f51164ea08bcabcf34a16514b41d6428892846c5d764c7e46155c3b86d5da6d4060cf1bf91cb97eb40ec3d4b7bf147f86ec6068bd4a76f67d00363928d94748e9ddbd9d619a6a96817ad5d024fd22172ebd6e0aa222fab8840082fc507a9140a43062be474d7bbfe67af54f6800d2536b91b54734da15c2abbafc4daa438c20e1a0fb703c30b1a1dc1c7fe31c089b60b082b757ffead885faaffcac77c363ee347f732335543db108f929acc719d1c3867b0956f071602152bed797cdf1369c207f3ef96048f18f672b6425e6be14d9da2430e04055c29cd5a5a651ebd41fe73ff18398e3f8f2cae74fa710a6370f1eb97a2b45034973930f661ad6f742f5420a2dc7cd88eae311c18777fd8d59939a62ee91fc204ba4259fb450bcadde1cf4800555964ab74a7f3d9163eb28a108761f0d2eff729aae8e2289763b31610b61e62753a642da021e792b08d56b8d8b4317bc7d5cb31049b2d641480d7d07200057efb64e3dce46ceac0e027c28d35144d61523e1ba6bb6e6d3365cfb338cd386b4c6effa730026b151025804afb2195e19e6e720e3ef3ccfa1b243fd83c3e68927ea4d77d8673abb1e400aff63df222de9e97a643149188647aee67ac7ab8d8f95a75e2993ae43b49f390a569247c7503cf311dbee5a0416d6187f2a832b3644f9923862b133011ea31b041f4a72dc1e69856cc2621ffd4912e48bd1aae7f866d8b69d651c8b2c116b3d21aa172b0e2aaee79b3d516c6edd8f667901ebea2f65e37a5fe625061e7bc6a2a3a65e112311715de9d8ee62fb8c9815dbe1b65e352a36aae9b7ffe74fef2a6ecf5399fcdfccd8a71954b4ec299db1d273e8694721e0fd7587549f46a1996711f2be62e896b6fe990ddae08dc99ad4ac9cf22fe4a4bd864438629018c1f36d553a7c54be72e4ac21a46d85072aeeac7fc1b95a3fb7832421ac41ef0f85bfbeeb69425a8caddd150f35210c2e984777535d1a80e36ab701b6298f132c42f6f06cd3715cda544accabe1d0792692c79cbf0f9e3263c4f0709d43493eb5c2985ed8a5edf3bd3d2b93878acd51001acce7b046ac6be9c8ec94a370bb08c9ae7a6a7566fe797b525847d4239e37978dabbf942eb9a86913bc0bc8e2947ef7db846b39a2cce2ecf2f5348abf92a98927e158a209e776aaea8e9134ce97b1c333d4b825f368c2e77cae239866e5abfc66231017953b5c11407973a99ceac47344a773c26cbe9c4ea78bb4652477ff0c336e1974855111af817cf6a9390ca6bdf70bafa45351b78a58a22fdd6a51f93f17bdc3fef534c29628e366eabb5ec0d8fdc464fdf63d398a526f3f3ee7a0e64371d7aca3e1a708299af1e3e438b84e87b8c35398df6ee6f79aa74a083ac19fe544ddf0c8f2fe3beeb035f2ba2b40b9faa1d1d41837651f12bbd906c003b3603e98024ea7ed8ab7e651a9f1794802db4160e6e0ace71acab63fcb6b478e0ea44fa6ffb0a60a0d1d12b5b817a86df7027a20be99c8477c42b3178d113739fdd5f3c059a157206f69ca1158b3b066a5d797545774563ee9771bd00ad239eea2415d88fde0e7c704cb833be8778678a190ce63216996caf19b9c8f53e7143cf40b540e9980724594a4ac1bd96b2fb94f61c8e59e2aa6ebeeceb4924c85273566258545320916f228c8709f3746d391e27e5bf230e655a26b9b88e72db7af52f33da67f6163b3a0fbee3f3c857a2bfdd4f6e3536e2ce87a4fffcb4094eb7d763c2ae91984dd491206d1cfec233910c21a19fe553115bdb94c96256789102fa66a0ce404cf64d53a5ba662b55cdffc89764ed52a1698daa8b258f555152ffa5c75c4761d07eb609ca188ad90e04ec2ced13cbc039a1700879c0e2f886f18c2450d0eec46c47fc910ee0e497c23c7a1a8e54c500762e344d5a40719e41743c267e99e95083eef309484afd5668e52a32fdb7718b62bfd57070847a8ca609e314d2606b673d735b2071dfa0352785a421cf1522079c325f7c9f3e7104bdd61a378d0d6e01e71f3ec0450b191a8ed081741bccd3d44479cfc593b1bec3697c1129968926afbf3ed8c69a7b5ee42cfdaa04287d1d2b863c0e8aad5eb78c9c17bebddb179e3589d41eed1c5938e45d1758c6b7a7b097db111d4e90383c2b88130da3c55ce162f5e8b43b66eb5cabe9e86f7afdf8cdf464f35c06ca815c81d55e7bab6b6cb6faaacc432e63120c1b9c5353c89763a17d77044df368501f04770998df96f47a6c6b4f31041af5f5d68c6c2bfc053a5bd54b26bb880152a03ae4d96f5c61e4b04ea3fbc8cf9640e69b2a6ad652519ff86eaea5cc4c14e99b281123664cd4457a75e0a74dfd069e331320c2e4ba6140b8c3923eca35a6dad74417f2fd629fdb2d73f914c17fd5279f4fe525b524db1f304394bcf029b38d874dcea9eaf1088c9714b7e57430b5db0bb167784082f661e9263137889c204691850ddc9f2b8b8e9d43f9bc722a025e1e6d03d167f0c820e63a1b3cd8abdc9a8d4a98910d76931c233fc72b4190b7e03cc57fb1dfc52fdfd620edf63c766d42f3dff7d328a9a0b35e0916b63773f6d0d5e380a243365dc4c3805542dbb19842e87f7d8ecc75ee6802c959cb010b859f68489bd03fedb6fbcad97dfdb1d0de1d2ac19cd45811cdfe66f52fd8c1053207465b07981c1ed017c042026a3085ee0a2c7ae8ced6040e7f45068a80f9fa6dfa3d2a38d4732eedc356ff1593ccaeaa299dbae2e42d26812fbf6729b6b1391c0c436ae51ae2f17cc9963dd5660a49c43be13d88bbbc1a1c59dc0d2ef742b927fb59ded96a071e13481d8778607bdac478dbe33b041fb8f750ae8052a267666a96d600c85e63f6c1b3e80227346b7afd3bb44480b2fe5ef09bb122f0eefd9f80e81429232c520ec32914156025491fa5d092866cea2ceffb04f5471e65ca2dc7bf9fcb4ec889f5285d5c3963426cede61c3750ed933dc1d63b88d5a8a90a08953a8a6879ede2f2385df1459ca9e3d88703589a2bde9c96797bdeac6bf14ac8b610b9f60ee4a99eeb5a67a1236657ca822f9f43bedb04486a731596be463c3478e53f4eecb1ee742774be317754d4623153ce25e6dcf967167296a0320e605caa40fabe3268df70c5c2722452462226f230e79561c49b95edbc36eaf9fb974db4486324407f35a98568d0873343a52a903023bcc408eb829420d50dbd3955d8528a170bb330581cb014c6858616c21843d4ca77771bf6dd6048814475cec79c4c9afa94982ebdcfda7f9e21b9552cbddd430628b75010c715fde5f3496fe6ce6622d5439e8f094032d0b6318f0abf69394cb4569669e8cd4b451408c6b5268dffa2bf99ecf6bfad8c37a609319fcbdefef5182e5fb21d60a621af8badfd430d6ff71e644d9f0be5d809dec196c62a02835fdbb6b5bbf711f190f71f1795fa1443156c533b4d4205c3c573f862493b31c2e99c21c0d618c2ae0a5d140c6dbcfd6e01cb1896bda1d301641c66357de2878be8c1c320af8f6ac0c65c277c2a9f4e33a600703c814afcd4b6975ecb54806380576c69f71fb6972e52cc45f52669bb1305c9296f6cef7ff632d0a6c8fb848a0c4f8723abaf74083fcd789c1a8b31cca213e0c386107df6651bae7bb1f64f584afcfa7e8f95dffe06248a81eb5301171bbe9e0c7ae23d329124a9c5031ea7e5fd4abbe3f9e9cff29503063c27cab2437137fa8fc6edcd14e721daaf5439af85c5c0556fa2fe2180c3084d34f25fce038adbf7b09addb2cb98b8bc574e1e52ced0af2b7560b992739f1ab6f45c8d99e86c6544600c64874c4a89592a5680feacfd3d8115298067f39e5812e485ce91fabe640b47ff42c2e3a256b34ee9010c0a75525049ceac3062b7988641ebcec4212cac205e0209fcd042315a9e7678e0303de0970f94ed644cf5fa9dcbe21c94b9195ef5275bac5053c4d9b32ddd119a3d43a34c8609f3c191d7bc9c80f26bb012a6ef3c62b8d9d7302e01d5425ca12329851d3f2692cbfd927a346181239f56f96288fc30fd347f5e15a1c65862e959530915e18cc925101d07c01064297dc8542e0f87e261943da06469fa637dddb113c41b216c5ca56126d66363d72efdfc987a41fd00e8c79140ab193a10ca4d2a0152e317755160ef22ffab94830b2c7335f82ead671b32770a5d97378e40bbbf61175440fd15fdc00b3eadd0200843a078f89e2d2fdb1ea47ca49f0ecebf8897f1b18c55d7c1865376a71fecdba03e0848c845260bc563c4f45e8879cef6d8df4863c94f933af25e338e917c5dc21c599aeeb92a8b1dc870a809be2c65d475f6c92f423a8921f9533f7fe16f9d2f5a488d111f81a636a96ee5b1c5ca256fc3472dedfae702e3e72cb2d0cce9fa555ff8549c0dc22237659ad0a4e723cfc4fb826fd6e479140b27c4659d8f2f629165b7d52fc2ec2fdcaec3d73a95527e79466e1b126656c6d9c59a4dee5076e836141dee6535eaa1fda30b124d1d7b2e1f89d77a40032db95acb15b653b81dcb4600f2fcd639f318b20d6d8508da19382428ac2701d65124ae5e429d9da36283cc94d5ebaed945829140d0c9f79228f3ae5cca003f09eb2ca5d6d959636abc5cbd664503bcb103ef4307c523b190346adcefc427c3e7b9395f573674888fc1c4d8112deeac5d55cf69489761f67a5719a1b9a5e72821ff7861759b3a08cba337ca14f132f8566b8d326c77021a2bfdf6955c89cf9b5e15125a6c0b4d97628a1a955b998a966daabc2de9ed73eb3b1cf20094359b6be0395dd01409aed711068ed79b1238c5605e22e1689c7dc90ae843640674527f72299664a9c6d122f5d4dd105511fc51c259c1ac25ee8b800141364f87b1516b721d1cf048468a914ac39e8b8b384b31d54ee8a2da150988623e1d1dd74c5f89b94ab3013be4b5aae25ebc54060084cdc4158939a3a56709549baaca9454bb3e60d0f615e201c97dec19dc13bf13efb439b403b627d23cb0585ebb5ffede929b662cb8c4538ea196955bb58fdc387d5c593f5a49e98c6e9d59a8b9129f59138750c4d0e951da0b0438bc5137aa4a0ff07caca393460494bf47780ef6e89a0b9210ee644e3c3afe22650def34e20531015e4b3426f1e383b50b0e1913de6abd3fbedddfd393f3df323b4613f49f018f6f02b26300432ad8f4fc4499f4ce19a5400f9124700f27b8a8f13dea5ffa00f9ec16148f445fb79bac9d8157b9f4db67d9866660db6a282e61329bc41f1b55792d9706c180e3a925d2f590f2897d6696e25682c07ede198c6d5be4ff28dd94629b9ef87071a221cf8b8700232ea99c61acd8e279eff4a836ff7afe10a3d6af33d90f5a68509063ab71540d0dfe5864feeb13712cfde63f620fa77df60023595314f093e9890b6db87662f996465e0c573c631ee3c678eceff63760d5376b601f229019dc83dec19fab0df2b2c4538ebd49966fa55e9bd94f929b490203f00ba6770a708ede7f45552eb39f582602bef3e28cce5cb7d49c93c8d0c1a31c944c1483d472de6fe0f40c4f94f5d684001933b9332578cb5064bf664f05b949d2fc4e13e468861a9bb10d7e5f85c06b7ee942313ff7b52fe4cfe1cac4d0858be6085cee64690d27065e0dd3865fa2bceca833aa3116b854a77f93bc72830d8df96e8d1c21697a96f6b5749b7ce29af6808cfe819daf10cc0c1dd4e2ea92304e5ef3e7d61887064267d3323b3c16d608063e922459aec8bc20b7f682083f151ae79b42a34ec374d9eb019b93f2863497544d881d68241c0f4a87fec76aeb4ae4534aa9ec06f221ba3faf8db2d087dfddaf52f666650063d9a708c5617107d7323f56da42500cab996b6e5da40f770c6e3a0040ef6383a6845297bef7b09b728044cdcc55f502a0e61df22404aa40c53fa47d406b3993720a3785ead535041edd5f669e23ddbb662948e94d6c75f59b95679ba38936973be1dc7410c54a169647a2be7b655da0b7d18ea69a3792a314c226ce6b2616c1801027c9568f3bf15c803f5e40cc73429be21bb3679c60af31d7181b3989b826038abb97929dd7456d2ad05e552626c6a625824a4965b47f0926939c1bfa118114fe69697b9a90992d718e9e4f2bc9f066216215ff0e9bfed241c98148f0702104331fb8b576100970a22478cebcec0f4d270d86b8e895974cf354b420a835f658d634b44f5a6c677c74dba787565e8d0881881fbcca47dd63539881b853f22da0a9b3fcc8770a4cd009db9369112b9bd69e8f42af7473b7eff85c1b84e2c6bb2226265ac3961b2d30d506f2b48ba2f2b411e1edf3ebd2746eda2ee2f365ef257ab01ce67ebbd2933c3603f7ce9e68293db19a454feef0477ae61013241e742572397b64b1b24ded6537109662121ec6a5e14e7acb81dd24356e00e37cce1c97bd7f56c7a4545afd8ecf94b493a642e57177418b71459132eaa60e43808c731014a7b93dd7d788966b2584446c9a6eddcae268d147a91ebf18caec3b2702ffd2ef751ffa342181aae7ddaca5df461547af1af9917c4bd876293239b0d74a008e12ad1d47e238daf98a842b21c3b4e0f9b5c3ab4e4efdd87c4b918513858926589c518d21b3325a33e4c702ca42c20246b160a1ed533a5716300c87c5ba0a5149c875feb5500ffbfbccc4174a90fe6aa2045fadbb5668578f3fe21aca3feedb5a7487f58ce96f69ffae1746ac07ebaffc6a528ed9885b372dadd60cbe0fa171b97e5b9a0b2580b8df555d9a99bcb58ce92dc579e663256fa5469fd4d6af6dbd204b440212ebe1b2fd722d163781109c51ebac2a47ae22cc79a7a3b807c3f69c4a7b3736ad34f2290e00e3a07d6cf18b58ab08d5ef9faed9ed424541e5fe7ace128cbc5097f883f1a9ed08e31b814608cf9b0259204ef53e31fac8d2572afdfc09fc02cbb081c528930abef612ffbfbadf41ebcd3be57b38034397fca3b55e65d701be50012ac1834674f650995be353dd578502056798b75ee3ec1d214cdde83d2d27aa59a4054b2edff52e5932c06c2261f090ef5ef46dace3ff996de852ebda65e4536610fcab3c9f062386411c908585b51475b98dac1c1f9b4c0afc195d42d7ecc8781b74d1209f6a9395ed4f028b412769dbe64d42959e9e5763ce9d7d6ad538c3599f1557c19df9f034fba0bb3f0302d2ecd7bae617ce888d866e00acb975a41f133ebc1687273e823cb5281a365a7374cac8f9d6f8dc18c1e1698661524b463bbfb1901dc9b6bda490ff67c57d5101820b1ca3c3e43e7be4821b66995efe7b9be569c72d131500f41dc3251b4bb91bfddea741c8d002946dcbd58a5f8df14a2c97aba90466055ba8f61551233f1ed91bb2f13a114aa7099e2205444b6b3370ebc2ad272a2f3d1d561662d91f550c3d238dcd7b9562ed313c1c17bfba7a916a01d3fcde575b0a33e2dea8a27d7c6dd23efbd95d6fa458e3f6c33039edd78b28fc5a1522d8313749a5af4aa65a4a4de7c0a868ada90e7cab6759ea40af45d5cd7ee281619b17da29efbb7fa066c87ed0a85effac3e63195ef01831f31c195591494fe7427cc9c51a2ff19ca0bc8a6dbc700119e868f3192a42328c4e7e3590984b591b64e8a042852d31524f473fa9132b93cb0ade49c4a9e07850b9ae4a93f4ddf7bae5a5c7baf7aadcca456d24d1dd161cfddf9b406a6a65240145f35b4303204e94385ec8747abb51dc88e802f6ab6fdecdf0f99af3a99cbf4165fc3f5fd537f2ca5d3118bc795e97af6c6b98f8f7dee7760e9b227ce28803f56d1f094095598e6942dace083024e959f78a73b3899367848f93fa7126c4312b92c34357554e527c5e5f91a898c4eafed557af74c85e56bb4fe4e4e3191f0d99a1ba6f06a23de4ffd32d4ef4f3f605d0eedd4d4f0d70e7ec39468729804089a81a8a92bf18a30da9c1b307c38439705c776b1d606b70d71ab240c130811c3d45f778fed5f903a6c938bb307ed7b6bb034a1dc1eb7ccba495ef1cf5f99cadb5f0dceb35b1a67f051d1ddec949563c1ed1efc007168bdd1ca6b07354430e4f325bb4f7a5b495157e4fc7531e8ed241c27b43fa4002c4ac1f2d7749993512fb3839b81bcdf6eb8b8aaec3814758bf229f4b5dfd0d367fcbecd27cd7ac04a5b4192d690218bb182cbf5475cdd06356d7dd91d2d344c8ae95d93d2c806913b6807346ebeb98e482ece5eeafb779ede45b077d147ca2ce485669ddc312be8d5ae48ab1810deca06ddd82b3305deffec7aee3cdf3b85e415095f424a111a0c6a5beb72fbbd685b1c6eb480bb681ba20945b12f2dfc3c2307abc069376f22d7489c1d2d7a2a7f05f52a107db5f57bb215369c5715a6f651f0739bc894ad210dd64ce7765b6afb63d930ab4b79942a78e08cbe5d6ec8bba55e08ae8dd2a3d1c5cfc67304094fc0a31f2d7ca4459dce2ded76d6b7a8936886df08a1c01da2b7ed76d00440494c7c586aca60153e4426560d876c5ed551102cae8a217e6739c28818c39e618b4f4ce677204ca98e4a268473abc9d58fd65169f068191ea3bbcc175f394e4ce1b332a1ad793eabebf74c5f8406bf6748010a7d2ef2b80f28176fdb566bd24ad957feaaa902b0c169756d753c0568b2e21587e7bc71788ec2e5be8132b74d8bcabcc4d1498806a414bd9044b994e40779dcd4fbdaefdbdffa1d469b3ecac4bf9dcf9fedab23b5fad8d262f832b58ccc9fc6bb388e3b4cc86374a988d5e76068b782fe326b339b4c9055849a633631abb4f6fd92e50ee1f359b32d5c6e26b829ccc5b268312ccb81528cf7a65fea92d9c7a753cef107a57dc0d851d7d6eb9eacb7a339ba8249b80b2970a1a178b34b831d9608f6370d9cc0e31d18f75b81be436cf841174898c37a3000a3d7e17255190f87054df168d6467c1d570bb7e62be29424c3b2a6545f93177c72c6fcc4242737a3148ac1dfb58247cf176664ca3f91964b7bac73066ac4faa309a64d646d2c8a10dd9da028b2680123c62c918b80d884b078ba2b1d63757e2073ffb86c935c81192af943bc47fece118184d46b286fd8815d20980a57f534f26656b1156f22b9ea3e6def00e6a43b9d836950c87ac62f0cac1c20d46614eae657353516cc672408fdc3bfce8e259e2af32db2b644b30ac2e692db0a6cbd599551adc2ef41fd1554aff4b42a849ad31dc392bb9288e56af06bcb770609cf9f8d518bd3d194e8933d9f088c2a35fcdc13eb1b853bb8f8e98547a9e94174086f4396d72aa4355f6d4624e27bfb79c0dd40dca7a65ddb358a2db58b2cce0c968c59f3ef2e58eaa751f962c59fdca4453f3e0c17993f9a890ee149c88362f7c850660d778c527743df6810e58d175cb4928d43eae006d5e4f758cd97085394f99fcacdf76a9752389d60aef886f199202d5d364b4267824897c07bf71194c8788303e9cd6f55c3126072c13d3a591276ff54c4907c8146fe57bbc72c434790186de987bcc84ae207986cf0d28f925e123c9b1eafae4bd478d881f6387a64a7c902c02b40984c204e531e2893beb88ed65ee54e41927f5ff113ea2b4a967dbb4a76a8b46c74784cf8b8b599d9cf7c9d07e24786152de86375e0a20ca5da385e98453a238e64c61ae6ad5418cd93c4bb77b52887da4e82b78a8ddebb0cd6fcd8fbeb01b2169b43431200a3370320531a9d66029f77c37613712adafba42288a83e2ab5867e47cfccb0fc39328834cabf564820c468c75ac046654a75c8fa5c3d073c4a17c2c2a3470bc3d9baeb04c7ba753bcd2e7373e267294bb02949b841bbd033c08c8c88d57a69c3329a70d1c6ae78e14c1c5d5845c7efec2b47a124644bd6e85d285908f831ff759296e04557630eb99b098f94aa64c5182a33331a994f175d5f321cfbac41fd67451fc2f9668a87f1ffded4fae3e5d04323476c443b409aa57f37d652f70cdeb7d687cc70c77110e00b9411c00db561029bbad65a9bdaad468aa84063fbf828d21dd4207b0508a59eb906b7e03432c81b2818d923b19f6f6bdc4f0c684c808c412b6f7193b8c6ee180c05e947226cf6b0318b877824acf0a5cefa4b945c7b992d048abf4351bb8224e3d795d4f4d257f4551a5b437e7989eba67ca1c7e32b2cd080c70f64d2efef3ba3698e5067175e289a40d49a74c78d4879f43ff6174db8ef57b1ab9fb4d83f5c9daec186f2394f809b7cda9a99f65847114f298d85e94152b6767a2115b91f525d9dfba7640fbc9aaf1a5c17a02359c620c75e1170e9ca764ac012bf530e6c484fa3258fbed00937d8d03d137d8b8a0ce1076e1283a3ba72d3dc7757c34ea0e5d8e221db7bbad867b184fe67ced591cdc57702ba1209e32ba84e85c7054842b14e6038022a3b577e69dc7f23f433b71496a131b340469530f547d5204e147bcb1c2061107edf2c0581b04f168ac61aec9071c71094c195a0a814c7b5170512c70aa05316ab46bbe3f470695393a5a2f459a19e94b0d1a1a5e3ce5f2a5000ddd9682adc2d8c0adfaa1d919462786c3685076dc54d93f7eab4b4e5d8813488b42a046a68fd04b0fc071fd11c152f7f23a79719b2e3c32d9c3f921154ffc574708be273e3c4c67c1c231c27cdb07358b3fbaec5a9c304695f2e3938c514bd2a0f023c000d326d78d611e1cf517dd7d159ee15534413a18f5008c7154fb8630d688f5f61bdc6d1f4e9a2d3469a3237ef60572292cc207b70e32383b2c033fd523973828c0232839ddcfe4eca44e11d67ad90ba36ca2a9f2a4ebd48c2d0ed10328a2ca95a50d7be6b4f830a17ad3c9d29da294ac878f049b7408d6ff7d0be1e02fe078307421395405bb2cadd7066377221610ab1f55d8db258176b1ed4d80d61f1186f46e871b78eed7cebc16a138f6c076766948bc83a33eee6eecc8a1d739067bb87869bcdd2f8c69d8dc0d51cb8c7019d0c6d716e85ae7467dda283a84aeec2451f28c6edb054fade56fa492399b1d2044c86e5a24f24ec712b52e9f8a2a6533fe41532dd0492bc149109c8fae4473f2ef38159e6f4d1f547c38fb1d79e3ea7d78ad434de1196252ec750a4eb50a3fb1562c6bdd2b433dfcfb71a7a0c12e3af6a047c1f179c0a39799baacc8973b791bffc57973bb3ea612ffa5028440306e3c14252e947ed2616d085d99e4ab8c7d4d3475e27454d870c2b4cc31dd9b58ac65efec5e35b878983549ebfd023d7bfbfed714597b4dd350d78db8ecaa756e9bb6b922b0676016acd80e2300fb3a66e3b5e486a1bed7a05391460b0ac6bdaf994fe786bc6f375d410d5cf30b67aee3755b837d8035f0300f65286282235c62810be32ae1fd6b3c74774f4d09ccf7657fa03868ef175cba3e33a1db1147de9d3c4937098b19b72f31cfe26c6210a26f35a58e6a699db7bc410118cb088a9ca2d6c9735446d6471eb28039af3bafac9fc838cbbfe1b3906b5f00280912230c33a86920b1e3c50b5da50bf8f9502aaf4e9d2a83ab33aa2a207657d5ad8a310af47dd6f6f407080d7f302f3126378399f054c79d499d68eb7793754bf84598a5b163fa4ff851d4797d2cdfed965f8fbddf198a12904fddb46bc9f3f19dafd31f6e868f6e8ff6a29783e86c4c3aa7910575f29d582efb4b7e4bc2bd6f9e94aa4947fa736b9c30af1d8d61b4ecf0336453859429074cd9a91df9670c2217666e344c80a158d92650e7cbee13a3bccbb65f1f46264f00a397f94478e4ffc6878e498ccfffa1b6cec7e2ba25a7505abb13d504b7b9fd9b8e8b280c0561ade8383d9aac59b19f7b65dbd1ae307fee07e6488473f848e2767aa07fd4fd23a90674f7b8e733b63af4d56bd973eb870d3c1c9368cd6daab749777d258e0b328639139a378911af214e834c4c85e4a6b77c07fe9809283acef8cf9ba19c5c219bc9a6845438135efab27141cddfb0e8c1a1f8f148a2fe5ceb1432da36a0758dc9b958e5274d145ef78de9d27689f2c07405d2fa2e24b8baddd2f108ab0b80306dd5a1c8d137066841af421001c77689e99790a3d6b54d29cb17d18b9169968d8689b736f54818744ce4efca46ca75dfb8977bd2fad0442a490491738b16786be45024da194809c6f6475c44f45c865fe6080638a348dbe107781bd3c39daf4c0caccc6120b7a6b17ba8418a7d162b220f599528e1e1da4fa9cf24e005bab050fd49051166d0ebfb41fedafb37e05c6f39941bbd6ff384cd29112fd6fc93f05bf8e46ce42e753c883da5adffb33e12b8ecbc056826e8dce339ab78a3d37d1c700e1fa499e0eb0003f3613251a6a7984406c4cf141f8d0a4c4e129ddb8f96d812aa924e4b18e5d5240eb604522b84b8a9961aaa5abce408b811d2a5bea9bc3b459aae33e0ca9d66b904d60f6164cd9c88fb2e6904fcb8c4872fb9f8ca2804d3058ddd32b7e8b566d3c5733d65c23f958a5ad44bccd4bfb6409162c07e080a368758bbbcfcf0c0058918a39984d9ba2ef01fe0f4a2e3fa8dda15956ce9263b4c55cf89abb52c3102899431149d8c3f1fb2a5d9dc31c58bcc6ca798969f21a2596c548dbb4a5f159d023e86b1d4bcdfa81ca3f731fc8febb02a08cb8ae04f2117755db210da1c2892d69ddc49dcf06a78e6c8e87917fa2b5fa4375b95adef18e95d8552568de186ee71c7f24a2840e3ddcebb5d8f8c52c171eefe48200b1de2228264c54917af95c570a0233051323f8bf406b037773b1212941568e5e7b0d0aa85dd6ade24e2f881c3a005ddfffcf233e3011c3acb182299c21313f13f3934dd71ce096111bb17b89a815f222e115dca00dcda8a4833a4c2550bb5fa4a8d805262fbcb645f554547cc97c59cde54dc2b4497493468d5f6a8e55ae232d2bb1353d5be575015743bc60c0f66d2b719da660ca7df2fcc7c725965a49c732f8b01daea1f1175f990f479a2e47a6da08beebb272f0a73804f840a01a65093c30e995ad133fcad52208f8495dcaa7a5b6b68b4bae73832bc3b34f979716659f3492882c1929d9d8c2f25f81a86f8d76542c018ef24e898e2ffb8bfe0c859578bc32537b4598d884dbd95125a3f534f40536341dedc10a2d0c4e1798dd5cefeb32698d92672323ce237e2aaa6048cc652de66bfce05a90e443e7c1f87f08970b09c2f7db8df18886d5d28021af9e6d78ba11ed574c9ff1b5f6b1828bb2246c785ff99b71518ddcf0045417e30b95507df590491188ada6f97673c26630051b98e7d7aea9863be51ca9cf3201c5930befbf0f7a5c96a934c04830e245b013d8203fb350413be143cb5b7d0eff0937aa669484eadf7be8da0dd5347408fac39656e39a5ea7d0307f2a98a81e51c1e81ac33628c18f6b534aeb6d1f17ae9aae73ab70560b7e78620d1c078bd8ebb5f327a13f12b0423b708690fb163f12dd75b49cfa28836148b320126585bf381a1749e887eb9275e1849dc418098acfa634472f65475895869d0f2457282f8efd9cefaf177522842ff69027c7c470af14ae090a259f91f26c871bdee7f00d084f4177e42983a7f9462d5b5e11e6c541d3880ff9ec911c1ce83af1c409fc27e91b0895f05b8758eeb769fa96a668c74d4aa22a4bcc5bcc18b2d25325475ce6f5e92d9bb6b20250f41d3871593cefed033f74d38938cc327aec32100fafbea8efbbe01e380bf9b9b064acb30c64726a9b9a1eb3b9ebf742063858606e5a9d5e6b6a41ffe1decb3506f142d9071c38258973f6585caba3b744fbfc4bdccf8dc1a5de97988581f840f85847d6f73608f8066a1de4fa6902f088e6e6f5ccfa53e754839f25cb9293a6d86e2a2941063a01a95f6520ab8dd554d49bd0f8b2b4f5fa809670af20111a21c067127f905a73cfcd6575dc961c8a342e63214410bd93d1f30dd8795b2191ee22c73b245fe67dd973a37305d3d9a9295fdd811d023aac68833227f201fd67de44128adf15ca5f16e89193a8e5cc855b1ac367c7a188a11af81d9e4f9445b5bc3dd69123a8ae27fa829caf874b2a88e024fa03f49278e75e5c4d17d31c549e482c25b1568631ac234bc559c0d41f8ac1cce1bd319df35b5d333a5efeabef7140ca71498f56618c5ca08927755f1cb0eb7802b286568e93298a5009c7e5bca8ab4e46a60b593fb9cef9fbdbe3d11e6402c6201f15acbf45262f39e09ff59265976425367e57f57b6fc1862f2e3fbffa20fdf83bb3d8f73b2b1993c7247b39fc8f9030d5a900ef32d20f1522d874ca284933dda93692c31e795687c7e4cb2e3f677a6dbed6336c546ef25fa137def5f934685094ea3a4b66fe42e4df7fe78db166c6696f8f601d2064e1135cca2cdcc1871fd7561f1d4667be1ca19018691137240a66f69f8cd27f0b7af3eb9348e7b3956ebea885ee56e37b02050c8b83b7e910d913e81560e0a19ee27faf598319923a51fea3c020efec2cb4dbb80ab98cdb26963afdcf0a04042548e3b1a29a8a8154e281192bafcf4ccf05cef06a54608e8a01fa0f2b882693599b17a5f30f88ec82255a61d46bfb6f9a079ca4c5c038904800745258c97acd6dc904f8536bde25ae612fa036584f3df61840a6132033a66cf73225b444acfe2057c753d1a631631788bfe9d5ff093ab42e92465b8739c04eeb8f4935ee5f2aa78ae9a6ed8fa7c4baab5f34e8101d72eb6536d9452be493dcba515efdada632c8220b7887965b2bc390a8d81fb4751deef237c9108635c92e1a94e4d0bfa301f5edb385923e1bbb27bb8f82843380c9d1f7551b9e340f41ad69e6efd3331bcac84734a244176da37b1af926a7b058a095405ac31338e43b17c130cd54bcd5af09b7cd962ec408e6a1867065a0e4d67834973f28a867e313fcdaa05d4435afddc34f3fa68148ba026cbca632adae2fcfe17c9cb11e959feab5d748d1abe9a254dd9c7e1c9f5f651ca216b163a3004985cb02e9c6cbd339f9ac8bafe269cf45e380b55a854247fab16b5d5bf5681ea70bc07efecd20d07d5d0efac3a77249e34a803c7dbd84dbeee58b984a3ea53c7e514be5ad818b2db49da14b4d1a064dc2e05565dc27d6a04e11b9e1681ce67fb769ffe545ee8ea5442599d08a9f2431e18e28e447d223f275ff355a8385457294194bfcaeccb9819848eb3b425d9cd1c60acc7a61a46cf67314a8c8afc0b27e5e07c019a706518db6e652ec94ad7a9bfb563c0967b50ca945da2a64f0b492299a8ed398d6961c73669b6ae176143678c6b8cc44909f4da985643eff5e86abdd26b19573a547bf69ef864ba34c1f70c4412e0c7c147f7d691d6198c160a4357f7fd61a32f95c0ef2baf5e9ef628f6135bcb294d4db07e11e284fb4cacd26ea67514c65b0125e810e7157594377ba07b09b03578c1624d2c8e32653d27d5e62bcaa5e596cb5f19e4b525ad715230c2632812cabb22567e7f7b8f948c2d155e927790b636941b44d28bb3da6a66a0d1b01b48422cd3828473552deaf59a39c590af899e201cc993e33d1ba80e0e3ee83fe7365b5eba5b70a6938650e8b386d316503965a2c5863fd94341b9be19f6968391687dfa45450faa7f069cda27ef99f425190ef31f9167c3caaf6b2233b584b811c7f2e13da851e2cd91d1b7e8a5f933903149ab046f4c13696c604866c6d77ea0f3f8f67ba766a7614aeaab043b7754ecdc345cc05117f44635163bc70676d77b1d18ba6bd724fa7d71e1ee077d42507ccc4ff88c712e708b89d1d26f369700a6dd07124f727c3164950840ae92e8a018b46e3d29d82359c798f830dd5256e00ea9fdc5b1235fd4d15673c40f71c708e14a2c24712383325a377aad9221a4db9cc8e72359828f324ce60ad90986acc99d5f508bbe7e50e5e8a2a78946599ee8ef2c14c592bd21243258676ad8135c13a4cdc78a700113015da3a98fb3aa449c64f104787932aa600359ef6eac1c2f150166db335398406d4f50d8fbeb23f94e7ea9f55769b60f4bce9e37d2643f886f1e2addeecfcef722ec317f59bc16505f63b68aecd96b0b115bb2c809e4a662d5ea6098f6f034c086503cf05a99ffc6102b916fab8770fb72948ca3ff9a91e016a9082ba5e3bf326ebbd6e1f545161bbb9ef27c655a9bb327bebe1d6dd2acfec4627364d12b25f9f2a8d54fe7691bd91a473fae035d7bf2fb934fdfa9285ecb0754beb7e7f524539b1ed6b4dc6df43cdfbd6afe99c5755dc68e82a04c018677b4e480bfdc3c77076829b89d213a4737547b074bce491d54523d4cf9bb2de30573ac3060e932048ad1aeed60ad13c6346a6c452c8ceab9a1da6e7f4b30bd181673fdcf48af6750b6cdf83ec51917b54dddfcbfabcb4079824cc6290a64228ce97bc0de020688fea1d56802416c02e04143e02d7e8460f6f6b53fcbd9fbf6d613a13bba13080e0f183adf32f5164a2732ee5afa63e695383cd4ddc2844e6532a5b4293b8a240019a1b9b38412d43563b202a8a8ddadd70900742d8bf2a8db10f346d9e3cd686d6da563e7adbbcc432f29f9069ab7ff1bd8e2e1cb367451338643c219d824563d76ad59b34de374aae42fbf6e3f79741dbc4abf15125fb1dadcf3d10cc6d45e23614bfdf2b02f70b6984a0539ca5d9b2590cbfd5e23d418b18cb8a6c4ccd77478303c52f79b8e6c476241589babe06e3cbfbeabfe6054402d936ead6421b4651f7ebbe7b4acd38737f76891f7fa0265278d321dc58831afb9d128ec4b0e7c4a4d86c65842470f016068e88de955349c92474266e3c74b4588a507249009163134879fab2f06360a71836f06a3d49f57ba55bdb47caf217af9e25ac4aeb4b8fb946b0a82f1dbe4962a92dbb629eea25a3691f370d543150cfccd319a56421e5e03e2200583a1db80bfe792b11caedb0a2b861984c05ca5ebd13cfed6b7bc8dbfb293b53cdbf0775bc7089b623891ca1951e3e5fc9c124f9e23531f07d2c1a299beea1ba7608f979ef2ced874cdb48568225516893307442ee63eec684286f3d2f49fdf5aa18d6079a1a1dca3f6398499f9a5cb6e18246d7c0cae380a51bf538963a964d02f8b2453621f76dde80907c5beb9ae7eec836b0f3e5870762191020ab48be5faacbfae453783e40f2aed720bfef6f252ad710cea3e6316522f91d9991bf2e6e363545ae9b48ddcc6008e03e38554e7cab00478aa0ecd928f151c2ad85bf8883599c1c4def4df94b0060e35727dbec006aad0eefb4e747fb5a3f4a1fa6d7d6304a7b2fc33a5f1c2faf0de9f3629638162ed67e8b314a7c49fc472392b31e6fe4b123f7af14d4abde176060adf4b2c107a5fe330fb9e594d538f22322993c37697fc9bf530cd3bef7a74e6a940abdb53f185e03fcd9637128b35d9a0096f7916e03f94b95be0747556695e224c069a30a43116ab7cda1f8e05af7d961fb3c582ec197d351e5a6785581ef4d06a91a262989b9ce5c3113b88bc75037cfbba4f3b4403842c36b9329ec80c01845e502abd068987d12353c47c7d5fdc78fa48fcdb15ee64c7855b0f699db333ca6f1cd0e178ca9d4f6be37e732327d36c93d87d91b8da4e7468458e1cfc19c44f7ca2ec93cc41aeb7e6bc48f7e2c13084209f8aa2c61f2091d8a628a82b84fb5eb9bd99821dc1ed34ef238b1eafd34c2598c4587aa92f748e691ae1200022843b9c19c60b1b6e17026d1d0e0b6e634ca68b7ad05b20b2762225b6fa34416b0647f003d20e5e02b50e4983a2d924683a374e9f2d83298755cc5e9915511edd70729c7ba54157b54b943d6e5fe2bcc3f8b6b3dba0376becb6ba820c3e535e4615a8ec5291fcdf9a0f09ff460461a459bc4164fd4c5e379c8c53fbbafb501d2584e0f0677e16e1fd54f77a06fb68bb735a0cc89d878d1b4ac14ea9e9023a5958f9394d44a25124664080e6aefa78cba194afa847aa4f47f7e6224d802136635ac6f58d18da74c3bb8601f5ae2c348f4def1a00b00a4e1febce06be7dfebb036c72f2ac17bd4ac7c2ebe083051fc86c1683665bf5454ef9c9183bc855d504855486ce14040d68e6bde8e2b569a20934a77b03c287daab9128489af449a6ea87a08ebd5b6ba2e81c2bd3e5846c28647915ce29d3751922408ecb29aa09007f63b92303f5fa06a09b8f160e18942c51c7a6ecc704cb507a3b703c9a87651daa5e5f980ec3e59931b31b8134b695d3e9b9e9f00801de70a15973024cb8f4e081bb62a8d7613bc43bf01973dd227d760a114ac98804cf6803db951aeee08b2bc610ae85e81af31cd239824129338e53483ebadd612913d81f232904e20de7eba053268f82612247267c66e579d8e096407bef8f5cd6b725cb773cfcb28ccd3f6b35c45bf76243eff05857a80c10cf0da0008aa18c557c186337ca22a6819b506cc6c4b5518561228955869b73134487323c9f12ba6d73e3c1358e7120fd554edbfee3feea5d95ef16cd32457bb4f175b25f2d09857873b99d1018a0e26eafb40559386e0d0b0dc3fb5b2567b1e257db1450ab06b40411a3611f4ab805f6c530bc5fa3b953e4af8c07b1b14ee189fe32891ed3ba15ace2beb6d5e90c0ba66b75f50795c148abeed2e8daac6604eeca26508d410aac062369a3c21046ff3f5e3ffb7d7e997913ab4075070b12718dcad85c6c22c42dfa66ca64e83f9f9cb1b7f25327a613bca30d770c2b1622a2edd6475b676eca9e7fec42d70bdf6cc8df0b5951af0265f4c259e85679378b491b9d42d1d358ebc735d2146e8ac263f31aeb13f0eb403ea2b6afefc953946189d7bdc9949c4e327973c7304ff42f8ca6099b382b325f0bc0e3ed37b7e3650655e832e8e211f06a82a1d864ba97b3fbb6c188db249e66c8bea53829ed0984dd002558a22335072e2400bd5ac53e7a2bce283dbcf2e31a9e97be0153003a57452ceaf5486109815022fc640c33614107f11e3df56c489c988887b157d4553bc66f474355c9e7d2f0aac3a42f2fd3f5d0760b7ea391349e9b91833ea00f7824b6ebd9d2ffe9e1636c005d5c25f32a4287fc96902f585b0a124870f4212cfad3b9ba9ba52bc18f4ab9571d1907a019ab96006527fffb5593eb34d39e07a6aea674b3549a7a0827c748b03ff5f6cf561e4172cd4fc7baf3290753c49da9a438a9bdbe271a594649e797eaea2bc591ad41019ee3fd82fee8aecff88e3889a549393ba97ae7a31362e41f572074121d810ef775be35e26d9a476298f4aafa2022791e132388a5be56de2ae2b63e436568f1c47c055221b0828b8575fc319147275fd1f2b7e9148c841cd64b9b2f5b3deb754ed815cb271dc11b599469571ddfbcb150ebad9070e1d84189236e319798d0e1627e9177c7a016e177ac358c355711a233abb2a9744c1accb4f31fa4e19938c613cf416988f25cc43a450d6f6f745b731f77029cdabc9fa37db71eed4ab25c47d4cc4d992ab578241779bdc67ab6c2e42ecbfb390a870738728b91df4fea24277e028524350b67f3c24f4bbacdd0401630ae9b74b25447be2808004829d1060bb65e27153cfc9d99ab1e48ba4b1fa7a0a7ca38e118c7088b5653d4df1d627d6e8f6196b41e2397a076e472dff651f6bf9df9678e52dbede644e19a5d45341814811afebf55f869d7fa170a2d88c1db10696b71c205047f209a3c90f9b333c6188d6e6d5cc422e1493b9f42cf43a73f1a281e2faa060b0a5fcba4ef7581ebab24cc4896bd7a37bcdefdf1fa657ec8b2b121ff05b305eaf862bfefc0c05c8e98aeb2c2f49ef02054ef080994e2e89a2abc804eb16b1d9e8a18566bf166c6d53edf60be44596968c9847c62486bfe84e8edec903906f773b02461c4f6808cf1a8b2bc5a96158ae82a50624a20e90c08ee8cb58f3ce5e7296286c7e38f31eaaafdbd404c3f9691cac5b2c20bea7bbe08dc3a2c8e52ed7d393fc144a4d670c67ddcbc8d2ec68fc5df577f6f919ff7eb84c72f37ebd67491ba1d244142b2b11c1420005836d0122880a890930351be3c8ac55635aa626e24784ec18dd2bc88e48fb4d2e0e1b2cf9408ef1ab96d7aec1c3ed8fc53a894668db08655670faa7001bcddb568dbd4d98ac77ecb3b11dde221936ca862e59b7fdf8888e28fd2769dc0e174d61006ab87edc4ce40c34d5865b9c54f4e7cace9265323aad7b650c3f69c246423d33154ea0c7dd8eb72537edec34f34d20e27896f4f5680aa64c3bc4640b71fb29daa0c32318850b018fc3ae9e64ff08d1472ee711b644967552c25a48ebd524d153225ca08de3d580ce56324dd377b0d0593c9cb6eb9976556069af906144a1fe07d69cc5273d2af4ffc023161c962f684e3bcf6530322152aaaee26aeb17404f6d165e8cda3a48bb72e9a75263b7843394494aedf39f3879c32aed3e35e4c4841e9cd15ce72f100ca9869b6922f0502ff04bd9c5d9ebb00af4b68602f31d2ffa8eff86d0935560c7d25f4098cefe9032c70d6c2f71e2e9f8623164b26f2d8ba46bc381951c55b8508bb8a9cc8a60a7381ff46bf78653ccffaae65f8982f68eeec0b51591dba130fb22b9e7997fb2375591c99c74b94dbe639173cbea637b21a58fa7db096d3ef7cb9fc657dc073570cdc81cb445db0601a05d314e9cb35b3b1a254664b71d067eef394ea44afa6fe6af9838cc3be679d9729483b1aa54cd390ec9a3e5e85c5d74851e7dc5b3aa6f93e732c2fb00f3d3b4c429ecef317d4353550f344fe609094e742cb5a63ae655e14c8bd146de4aa1140c188cb5246570611e55b6c1900187b88e500b942632263a1dc2c377cc71022405b0b812d9a16373fc59799fdd3e0aa310655b5402c5edabe656ddac2cd80bb5b6d93a67c9359964db4bd76a85a01160fa19c446546561f8c345056d484f7b59dbb840f901d1acd014decbe608b35408963736f0f98cfba7ca6d500e70409630030fc7e2b35c54ca7b32b7e6f4cc69334dd1d0c2362b53a69e7f49c73075f8f3c180195dddbac682ea180982901ecaedde75b9dd0b60c89dbf29dd59562843cbeeb07747b4fc02b0b909e1bb951ca33f8369397f73f6561d75f7c53986dfd578327d793af60faae4f2f4b15ed8a36912362976e44745d1af864cccea20fbfbe44237d3459ae7ca624efefd2c237ce3534115731a18c1cde4159550960898c6d8474dfc412c8aa7d93374e9fccfb9838a0571dcf467f9b627750b698f5b744f14e27117c3982d16226d32d76c165228639c9003a4e0792f821f1b4f840568f978c7b29a90f7a6b8a97cc2be1116aa0a6b723ce6d56110ee3e668f0510cb490c727254a1df3a81290361093f1df0df349dc00488b621cf66361ec65707a818fbbae9c4f98ec7f84c57d19a252e019bcc404d05c05127aa1874e00d22d8edb9655f825240e55daaa6e6ef283d6850fabf572153cab43e6bd8ea678e76d31a3e0031f11ab26ee7c7ec67ffe65489d1ecfe3277a38a638ed0476486cd052b3cfad8578d5464c68871099d0b1a0efe54e0c2eb8f55f064e42d39f9b0d5e5b5b773671de2993e9aac480338203b4ee9087ae626551b20e57467a1ab1c21f15277d55e749d96f32ae3acc95b22b32c7202857ba57bd32db987e340cd842cb30a43c78c2e5172e3af8085cff6239af11a02b0e5a46199d2240ee4e736df93ee6492500bba920ddd9aed9edef7f8c98237b3951d0e59548815f83a9abc87b0cabf10847ed55a755f36af50f0ce4821d464570e72b53670a31088db1113801e3b0865339d2733fa947cf4745a69a5592fbd27da884bb18d486a1b015ad1bd2b1ea5e4be65775173d945aeea64d4a4bacd7f5738feef7aea12d660fc532e4e17927928661a67e1d09f7168443d8661a8155e0fa5eb4e50906bbdc05cf0f7206595380b50ff25710b01a5759a5e317aefaef49646a7dae6e08d23714fb45902c4b1cf0cb396c4be1eba36de6c3a288b000118a29b1d3634766fb08e740a596c2b587f009495b9d7309f61225c3a18897810112147fec7ba1b9950ce5f0eb4d99cac309c564b41816ed423985904188b531e3b7606bfd06d9bc85d34881062f52ae66eb6e26287a2d57f1c6629f3377cc2184bee5c8eca97f37a72fb93f6f595ce4b3f6d437a02038afab35b6e5d87410d5d916de633323b77f16ef33976e460e41532551dfc5d4f2e8a2132ee1d4a9ac9b9194d9b11f828bb7d5d41b8e54731de5a8a41828a4876e3c4f76acd4dbd1dd9dedcf124f339a3cfbc7a81c848a0f26f9f0348771c563c5ed85ea029d966a81d3850ac65c437cfcc4e97269f6eb577f886b6daec797eadfd9e358ee03a06ad22ad859e77aeb024be71967e9d6c7d8ca430e1bb7b6bb175ff49fc8d4ee1fa15d24449e2b6969b038f08d5e8ec8bef138b60a546d364d6269abba5f61f4a414a61856814c9cc3191cf5ab0c3ce1d5af0aba5ca0b01c5a3ef00b9c935e2c21e5aa003c6599bacd160617365c423ded9c4e99ce92a029ec06d057e93cf368830b668f62f462b47205a1b9a1a4961649fbe87d5059dad9e9a3bf42facfa0d6802ceb711c4fbf8261a5701574684023fab4a2b045ec587a36f0387258cfd34bce7853a2526696aae3809140d5efb101e3968c300fc09f1bd4af87b7d9e1aea25c36b7c5fd06f653b87efe0ed95e49fecd1b09d838fcf5a56563e5e29f4d3ab1b86e2a09939b6701c09aa097d140268dde9cef0185c90d966d83274f8a980cf1cd726742bf02e6b2b24050fe95cfd94563c8f229a820dd9b2380012d49c7e33b842e8148cff39c21e2434273c31073a43bd35aa4589ec9921b75b505363a1dbef56ad33510b731a1ffb28e88b0a5074777acaaf26ce2875a06296c09ea1b5ee67655d629521be0939074b3ec5a1b324a366b5261f9b81c159295494f434a854f8a7ad4dc87acf8ce87369b651fa07ca98b6615507b915e3526a06b097ffd47333bd37b74d45c6fc1665f73060d1dbf9c00d0ee7d9a5671f7cae5f04bfb3a502ea215d8e0f13b0d562eb9c0be823e720ac14101b777f399c245a86b5e37085a9570c497b6ef40b5024170d043b4a541f618e6258869f5bb857c5b4b1a99332241cf15b6f88486d0b2b3096364df0e535e619d9fc4c536dddbc69bda050d759e6e7a86295d709e2079cc078c2293d3f5559c78e36d23cadf492053f99a2fdcbf10792af07b8f3ff44fc639c95880333ae4388ff792e7fe2d3ed3713dbe3a977bc4bcbf971540237824405d0cc2ac1ba8f0a48f386cc4cd4eaa687ad847431747cf6f0ea638900ded30749e7dc1d6c588c1fa7da2346c35232ac4566ae55bd003ce3fc47386a454dfc8d4af56b07793878d5f4d368e3b537b42e929549d896a65f696acf6beac681d177c571355b7a30fc664b0b1a387ac48e40a54b2a878a14fbf999aca7584db4a1efcdd0e939982e09e407a178ef2501495d015d44cde675e426343d439a02cc785a338cc79a0c8af73485c884e30682f8304bb42a8a177867a407635d93be377b5b8df21329744757232ac15884c6a6aa3c979cac2d19d913a996f11a95933e67879a56065403edeb0412b202728444e8f94cc58a0c7b1fbf96c2ed3127990c6a9dd30c1283797d38f16f9771611177b9a3e734c8214c0db70b4ae2e8b8a7e7aa8d3d815f5ada6175200c71a2873dce5f6749eb2c38a834cc0c1b05e9e74f43a9db6bf3b8f5d299a9a8b81a5daa8dcf57a91bda217cd56f4453fb53a39df3fc9967e593c02b364ab141d14c7c1ca994c7d8e746ce1c0a656ef0a20d9b0d02dce5dd2bd050eba0da916a490dce079a7e9f072645d850a4e4876c22f05f6bf560d9c9caf28f1a295911387bcb8efe188eaa624da6f2a159b8118854ff8d342b49048698e00d88fd4e3488267155618a20419cb5314b11b8fc1788beb95c0a99b93764798666ea3512b305dfa5d19851e8acb3fbb6c59f8117b44cb1d5ce6c2180ac9dab744b22b742e3e33c26f82ee17782a7971d420de48ecb777b85e34bab0a19c6bb46df31fa371875bd1d8f85ec789f5b3d93ccb8e3ebf635a99af0482e71ad71bd894b6729c9122567dbcf67dec49f92e2507cfe4dd32bfdeff3d531b1902cf358da5d3d967524f55aab4325215e9cf3cc65af2267f75d2b497ba738628da7fcf4f5e958f69923f02c51f97dbc53d57c117d7f7a836a59ea0c7590801691f884ceec450f5decedbd907d5b15b6447a27ad54dd181b035f30707ed57ebd1e86778e833950eedb282dc37dc6870a9bd445dbf8724ef989d3a801c9f903f12e10a003ff24986d21a020cffeda85ba136763f555763e125df6d8b964d24268479ac52a9d39df12b301daece707ca3094f069eed0a4174ea95c7f9a1df8242bf8bcb9e030652d00452a7a3c54f57b63e9846057af2bbb246a1deb820c545812dc4bf21f34826b9fda59dd48bf409067ba99b232b2564ea7a1cdda9e904816d1a6507ab2058905c5b4c8569f7eee859696c3f79b3bab00526af1a761b2c4b099f96625b3cbb26529aa853150dfcb2113223b898ab129f5b745a0ecde1017dddf38928ca082bd489d25911b1d789bc6aaa6e3317c655a9646e34396c8bb4b1f17481ab59ec4c7db1d8ea43f4ccd1ccbde595d4a0417c4a0fe1cdf7cef866599162e2cc42b3dd0c51649cd3db5c578d3d3f4ed91a8878178742b8f22c17a0401a6cbffa6aceb4b2cc7a4ed25af95baf6c326e9dd068eb56074befc50de6736d3a749581ee6dbb437537402d14f3baca7bda47414b5e32fb7dce4a1446c53f508451cad45a6fd26c7252d2894146f9e2965162bd0d6c474ccefdc9bae88a0d517461312a6a3c4646b0acae8a0f911564b3d10417b41cb807f4c05772d9a5e29c4299e48ac7704e3355733a377d6318c814716c9d3514521ff2fb8ec2e7184c5bff0afaa553bbd85bba5d81fa6904b662ee7ee4d4495adf38bc2b16a0dbdcafeb5a4eaa9190a96e4a4a2a0e3389b43e54a7b37b380b72948426ff60fbf6352a5868fd5eb89821e93a33933ded1f0e124b32c2fbcec16493c85121d6cac92e3894470201ca329d541f787092bd2f8f1d0a27b1ae488e3826721e85c96d46ba732c08124b9a0802748e012e8a5cae0228a81991cdf838f36c3c27081542fe871b1afe557c661b9ed35ba6e9631987a1c7cbc0fcb9c7daf0400213ade1a3bc208b726cc4dae9df10792db3ad101288e61efa0fcc2bbff4e7b1a1c87ac964fd21d7e3c499d7ba3c01ca328b0e06a5914aca406af1f33539c332202fd3c2b22e83fe65b57bed4b7c1ad0bd63cb78eea0666fb65a370a104a319b73beb80a9c5388985e4f0d79eee7e844623a2aef60c961089efb60f2af2f8287d8d7459e62723661a087892ea8e9db0d608fac1349b913724ba0869b0c63a7fab94ae759bf7f53e0a00abccb7a6c2e8bc497f7875f32103f40e97c1ca19d7a23b7f81440a1fdb7b43d510d30c8e131c0c9b526e75a5c6874decfb234f8891ff9e124dd971eb01a21181e6eb0babee534355ac119a0bc718e4a31274de5e72a1927a7f768e6782103036f310b4883a4f7a48d0ad9872310e61f1291ead71f664085e5015b53bb7cf6885a534ad1509af8ab935c1cb0307dd296edf6381338cbb7c142765e9a98b1189d7053df866c2dcbc0a9010de7d7e34e3a2dfa6e14e93a33f992467afd45940b8dfcca3a0b55b2687961c1af22036fa196642eb42b7188e017f8caffcc34855c7db0319d195fd024b411d3622940ba8a68742c845e99d2934bef1ebefbe6e2231a7da08c66b7fe90ce4bc3f29e71a3565d4e135873eaf463819625722d1ef146dc712d7c12b43053dbaa677bf764712aa7714f785ae96836516a0a407421b798248e21f05297aa76fbf1d27a00b03c08b3e66d60016f3f510b622443a322f9c046505aa2b711e569f4e8124987492f55c018aeadb33f3978a0028f0cab90e087ac99a6a50cf088fd2969f46e2db626bc6f882996d0e4d5238f0ffb5d2cf61f808a811aed782c4f8535641b3de5b94f4274cd08cc9a6779440df37b1f5c33585fdc904e7be1c2bf0d498f0669ade95592e86f53d934be4decdd16b80f7e768570629abe04a88e3701974df70678dfd445bc1c5eb3ae36af43c04bc7235783793361dbed5cc3f9f1ea203372dd7aa8744cb18f5877e11361aff973c2a748fb570a8cff85ac07a9ee7925ccbc91ef795c2080ba702fb8d6ae2686a3d1cf419a9d6ed67f174c91d9c1caff8921e0a9f1d45cea0d4a930af7023e3667f3adcbd0093b37689df396d6bf1bc7d76a69f63b9206d7fe318e4d31a055a1a21689a45cbc92499885b07fae9edf8e170cfd7a3c593f07a176275bc8759337d8302641a75adf9781623a5e50cdb4b3f36447bd39ef3d9ddcf560ae0e2e5b646f3f89009a7580b6ba788af6e923b4569856eaa622666dc89b4f5ce756d7269dd32d30aff1bd131262655bcffe3c2731fc1b1a494de87d43b374c698beea22d84afac18fa233f7090465d0255b1f56d934fb329e14d739503f9b38aace701a1d1cd0c6372d1b96ad4ba4a8ecb6516125a8a1bd9d242c6f9ba0a408a25cbd0f8334b45f5f91193f7b8ba62ff3fb8e65dbca07f88f05649999eed3f75e3628cc13f105e1d786840b38fb487e69d5722f08d8f490dcc671fc5d96a9e5e57b048d9e20f0c11f2d08a01551429dc20ed76518575b7fbb6c6a0ced8cc9ce4d2a2bc473d0411a57bd057ff110c630eda6b2940eaff3180df1fb742865d8e0456a9164a3344b1df8a7945aa30137ffd986207fcf729ae29b9a3f72dfff1cd2ebdc4fbb43c9d4dab8a00bd8359a18e1aefe70c133f05f5127b1256f20dd30a717991605d3ab68cec5343d87b4689567019895ca17ca3ce6e53b874cbdbc14454cda898a62f13dabbd76d0480f9817a4c5a57ea0960328c148a16e4a83a04dc34e02e79ecf32d6cd650a83fded209bf5e9e2434f4c8df2955986172c3358afdc0ad23647f76d5b66560b91109ae05a9c746c0822388f476dc073677291f4be804cc738451f903fdb20f0d2d4b879ef534878bd6548fcfd4611e9efbae56e2a2d37b0b1e013d0505367be7ac867d3149c10488329a2c30da8341aa88e8a4e92bf45359722c12b194eaa17d01f03521521283c3bbe88cc3663fbe67ed8b0cea8a94f8b5889f7d121fb09199dedd2ecd81bb17a3273816e8425fe56a605e63e1742bc5c4d0a683948d6d0ef46ae7f9ee1164037ce9a8ea702d0779644132031294083e8bb09b7cc9c99aa3d0f577147c61325cace8bdb5733d37a014762577b0d035d9c69a1c23998f30608e2fb353f085e25f2ce4afdb91280b09dca7b4898839f7ef1d971e915f9088f594cd15b99afc0617d670ba6823d11a8a10645bae2804f7fd8d61246b49fa2c4275a944e4d7151464167fc69dd08a20d040d56f3b9ae29461e4d9afb7acd92d1d2312b6aaed93e5d8d8cca017a95852ba7a1085665e3f1571011e8860ccc9be2d6017ab606377298f647a9522dfd08b7ee27941a001bd32922523612b96468b6dac27fb42ec5c1535e278ee8b2254cdb677f238a9d43d23d5eab4d7b5ab172e270bb384b9fea017a886dad22abda8424c83bed2dd56f0f8f666a9aafb14524c0cbda54c3c946d146624ed73efe6c2e95ecb069ec6a74d70aeb9599f8fa681fa5977fbe31a77ef60f078f986159136000a0d089a91797308f74741f380d79387b0157d7eef09a8e58e228cc08ddd635a7e4ddcb8ebe1ba9a8e2ca90761b643b04dda91420bea4b6ccf556105ec651504cfc8e13fc395f6a8856e120edd95dabef58db10d074388e45eb913c60aae11211fd2610b12c439f9679fa8e3679b34ab60dda0d4fd1073861160fce061388b87122e45b9f5c8b7f48d5b77adcac9b990286f2f5b97ca9ce776c8ac5f3e97c9e99b9d240e78d2f452b3a4bc6438d9d638ba8e334d153de6ff9aaf331bd7f8e3f8f06bb9b8183789eea4ef5d0f010aac1846956fe34753fb18fd8233e173c90bf10445766cd27533350acb2efd55e287fde0f652d68c381f1df66b1e1be28d711bdd0a3445f5c80cdd23dbd8d1da6170451214479d3bd695f685a8bedb4af422a0c293edceb4d9960e5479333877a48212cf84c722a28b5df047dd21bd5bf7834448809dfe46cec5d8f4c5dc772fcb95aa9e1b49b33075a3c8094b653e59f35c4745554a3ce4ad49aecf4a593cfa4decc50fcadaea703a1ce1d77e094fbb858b804c18c06b593f82b8f5722b1976f5123678b9399abad8b28f277d4cf70c4573f8873ad26c643204c9a2211bc0c19e762a31f119420f0d8e7e28fec44d222a88db027163c4ce0e927f73f4200bb10f95c316f8b98775039de00e8c17013fb8029b0f64169df9104d5e041d6077493dcd94442fd8cc16d373759ac2a9cfd76261f4b9d45e6aae75d7649b47bcf8f55d740e11fe65a08b022973182c95d6aeaa637ce226f87934f0f4be9d64c47291b0b5e4efa942a1e64ff372e887281c155b73a7bfccd87e7890dfb61a0de33e333cebe025ad43a18ef62dd70280cd7ce7b10ae1da176fd2a95b01732c38deee6f6ec459863b261094be8366241ac765f61b16198185ee16716ea869ca049c30910ff05e73d5a6f89c3a226661371f9d19491b065fc1cc2121d8299c3a357c87c3642d17205fead4b6308bb08cc81592c483db39e74842e02966e26e73076c8175797d09abddf306b4019c09902f0dec0ec3fa24f6a14a3bc1157a31f85018463e76b908ca3da6fc065210708abb1b329aae958193ad72e88ea634f5dd176ff70a54e8d4f4c435bd19a2240ca5e3aac3d6320903ff14118c0f8ca79cd85c0b8612bbf6e57941bb3c1606beb0b4fbdda1fcf1c6e61771d3cf295504ebac055e9edb68a6b9dfc2beb7710df84d0f355711218cf13583e7dc4a96c6d1dcbab0f1f35a8a271cb37db0e55bd5002ea27cfab7d8863d336c9baf6478ca379da8f8a4fbed1ff32c4a9b10df71aaa33665db4e613d58b1988a17a5f4743937abfe3e1378520e4f5d34b5f523d33b2fe1217b2869d6351c7c5184d0d50f61680fbe7a22e885ed8c2686815169f6163c7b401ce6acb8f4d2a35602a4febc8c4dafab6a88564c80c95449ae9ec353eba55d983b406fb740daf3c478e4269f66ef145a5520f99838e69d0ad46c446aed08983c3c732e82dae5d8d7041a8ef2ceafac407e375e00214a6bee8445cba7af3ac39b62aa927ed48766f369171a34e1163325c2f58bb29c9a004f55afeaf5989c9b17e67ad925056f5e08f86159960c6581cff7e902fcb40dbc49215ce47324e9b48a8a08536b651f620ab1ece3c874ea80345c54bded16b8a6ddd0ac7836f0c1209b91d0f2b52b9f4e942c18494b4f452a2c62b0d232013298952e1fb941537efcff8ea2af76f79da2e65a0a3c94d9e9257bb452f66d5d31fdcedb4c3590afc7a04a2f2cda7ac8a0ed4e667f159f9c4132c60a16bc6a501aba6e47ee926e9705889eb3d6a8836c9fa5a91834cdac21ab1bdb125fe48a136e05fd52e2435b61a68a92c71a7db70e8b8d7da866160db951f02f9f880b2750bf82345812c8d736fb89fb18659494511c40b3f29bdfda48277d98d865ebfc5b7e7330776a1a05558e673b086fa694689dc8dd912adb98f05f0caf48faa33dc4d1133d118dfec282dda711832320778d6c0b129a8eff51e8ee6bc42113e643365c5e99e789b6fc9a81f8dc30da4941250985237c562d49c4b7d69a4e5b47b6aedfd1de0c0798fc10cc09f306844a36608003913480767c9c80e1c2a186064cf276bfe39c23460faa6c9dffc508746eacc88715b33ec707a3c56c806bc69148daa39ca1d18b57a7a13711e8cb201a1dabb10d3e97f3c14c875fe94e3571873887e349a69f4023ed7048a82712341518a53396c00188bbd3e10072c1db5216fa2d2376c7d1b52431b54e21cee54ebc3790d5bb6d51bf27b1d29ef9030675618e74683a3d805f63e14422cdb0a344bf020a1901be8660602fae5e8975dfbab71b98ba08f937338a21814cea1375f14576e30f9747323a508984b8dcfbd2192e90ff4acf3e7bda95320fe51bd4af59e04d40f150841d8fd4bc3f279e67eb5567419a7efa4c158f48af70beb757fc121e6ce38f79b2733ac27e37d8273b3e9493c43ce0b110b90c9125eea880d75136294c25da4213ad69b7aa805e5d68e3e0465cc95d89015ed979d7e5d00e1d7115132f4b1714c27eedde952b622fbb2c59ce4de7b992d268a9e8613f6ecf9bcebf8c4ae1b1bbdf273e28dab530e3df94673a8513836d05d0f4658c3577d85b03ba33645c2abf0492f3115a8b6c5f38b0e53d8de7921afeda9a03722e41b1206fd8f9567d3cd3d6b06b094301e7125b18c891482912e971f9b8e26232a0ec1ee469bca92ea9321122d71700b3aff835183cd7515b90f8d032c816ca2c00180a457a1772fa0854b4db544ad2630b7ec9f81ab1fbbe4e1590f97ef9f29d4ee3141376a341f84e7ea479061506986b666444ef0a53833bf6433e1c961dc024da553051ebe032c2a3d9dd58f7c2d018679871620cc27d5ed51d0c297a4aa17e3ef5aba1cd6ddc00d4889f69873d898908f2b7acba53a21f208566dbf7acd1810f3a9373ed848a99514c4da3a082da28897d5deca746eebef7701adb93362cf450cae5b582947be18c4014af2531c2a1661a6ff807f13b8eac779a0b5857a93161b41225f09de830b55128a7cdaa5722e684579f3d38182ba477110a1f5cac6e74abcfe2070c7cdad15c7a665d1496bd5f0770526f732d2d11867a21175f8725935e4e94eda342646ceb4697d32ffcb6b378a4bf8ddf5150644e23b53ed62838e928bdd3dac19aa4fecec683d9fa89843b9b9703aeea6964adffc78b2c27bb0fec9a149289f12f678f925f7ee69dc784a0ace629b297102c76b651b87643995e691eda9717bdb2c2ed501571bea5840eefeab85726cc1f5adf5e135b785f7fca50f73adf0cb99be39458eeb0964b273ab9e99baca4804ca134b4242872dc6b76147de62b0542f4bc4f0108250803fc04f866b8c69999479ec757251f163a51d96d4dcb9489214e49098c701b7c13b114c82bd027e7adefd169d31e43b54446181cd529d4176e54e9327cb64b7f6f08027e2a294c0005e5ad5add3120aba7ad8ba5ba551bbae8e513a4c14c32ac86963d3bd40ecfdc00510f5a824c1e74866b836852d9389b8ac001010eb3717272ac045fc07482c9c103894c9dc33b7633f2dc237a3d52d3187b33f70a51d2b4d1422fa98189aa0baf7a3d17bcdb4edad61e8b7accf0ce1604db580f9bb844590e0e68a0647ba674a4ae835243c81cfb4c90d4c0615256651547bd2c42038f7f1936fe055ed8ff8236e53c05bd0b70e5e0adc5be09a93d6ad436b024ce7296c187195890cfb755923a2aad335b3716ad5fb3c50c5d11dc23287799cfdf6f0f17296eee54c4c78a60e45c334ea0a8cf8cb9a57dc5a9e62d2a0221130358f09acc33e8cb03b71e0035bdc556913401dc574a8b94d3089c2ccc5e0749e897b426b6c2cad2691841d37afd92b688d54905c361e34946e2b5f0fb5374c5c2eaf1602859dfbb064256abf3d24d6c7c1b73374f41fc835430532dff67760f1bed11dbc1c5ee764dd3e6adfb8c6ad6344d64ebca9435351f952d4a62d5bbdd69869050f76261fc8614822ba42a2bc503cbff1b23b3d7bacbef310a3a3bd9d6224d5cce91ce1c1627de3e7b05ce5e6dfc4f1c7e0ae533c15312786529cc50e442073f1a2b2addcc416e6e6306a4a10d10a2eb4549fe90da9d1f14d106c1aa6b947a51673894b852a77d4206ed851aaaff9306085b8dd56dc952f8d2b7bf72d4dcc5f6e60763477dcee3ac392fe642498680b3f36f0c9c51e15db906fadc126249a9311c89f5e4cb8b780066523f7f005af543995f8ded6546506badecbc39802ffa3740652c6038ce10df432c234f1bd8a6a9c24d5dab46badc509b6d20de511f0b523c13b9811d38ec9eb3d72565ccaa3770015c6647eb6de328e6c809e16590aa41281c015a7ce2b79968fc7daee30d205c4bef30ca745a7cd3f8e4c649c9a70979daf62467ac4eea7cebf4a59c350306782578588bfcc7ac17f42f4e35a0ccc5df20b2e64e0397c495bebf5aed96e322decaa68614ff3f1b4d1cd1392bb9702a252900f7d3c1be4874b458e27c6388961382dcb658db11e9499d7ff45ee7bac31fe643e9c46c6a099eb45b2492d939c20e1b3cab5c58a7a13c3ea3c37e04bbef1a511674dcab0965147512908beb8ebb429c58f9a6cfcc206bac9c255280374ffc03f1722b01555feb7781de4b1486afa816a355e028009a127030c0e547e70532c84f9844a75def31bf941f0b69e04ae0c100c93e15689c0a343ef7bb892e3235b7e98377a7938347242c81451c30be2189005aaded51d78787d9e7b33bcad05c95cc22ae7ef0ca263cb6c017aa42d9097cde2928d3034e137d66ab9b6c5a60021117e0f698fc629346cee87dcaa12cc7b89539c6770c41884a30e5693cfc3fda187332ceb5ad8f255848128ab952895fe2dab01b126c86aeee99891504e87570d40f926d23983a58a730ee0c968d7df94c2ba1a348b229900bcdeb6cd6bd37b1c4d7c6599653531d6a36d8cf11dd390a2b2ecaf42564687b3be1768e47a0591ff7536e7c6f866989f71656df6d80c9d0603f60d513e5c372abe6cca965915bba27f8bd184e5e54d240f89b72151a5ac1435629049b325b67d4d6c30ee61e4207fc5d1b54e3174d5ec0670f489fc228cd845ed8339e46b129e9f9ab8eed19fc68c6d6987b7cc037231238458534d7bcc324d7f275fe4707625261242752023a37cfd15dab39c76986a3555652652197bcaaeeadcc1ba12128fdab7258f9907941e50540d73b60dd64e4ce498c9a253c2b57dce03f69b24ac9a235668f20e06b7bc577f0405310cd836092ea70c76e327f46b58cedf524f5a952590276d8ef53de04cc0dfdbc5dbf51fffc0083e7afcfd824e2804a01311d7fec67a1503907938307f9ee1fb3013066ae17594d21440572fa566169a60ed0d20fbec30124a08327149a265c33c6eb10c868625c6a8c1f7a8d8fefe5d330fb8a064d6471124aab3c548576f954f4ef61c5ba6779e8f58ee93ef4f0627fd104fa4b907895fc64351fba9d9763ddd6bb4cb73263335aef1344d5fc46a6e558c8dd76d1450b7b2bdd81170590af3885251d78a97b5876176e99f43325b6e8769f97db86127c9d58aa21e4d8173a79d086df71df38153a82a49f5c56c717aa0bfc7c94e914207604cdbd63d6a9b356681eabd2d5538b1892ef782495b21777d652ac6a21f5dbca35fcab0e8868a4a3c133942e3ba54a65ee11a9e70bf92524f2c24f173e0b40323618ad2958bae02b2211bcf67553605dee04ed7e11dd052ce2a5cad8eb3448cc8199508371375869bd182ecba677144c21ad32e180242434a79f5d67237946a2b0432ff0e5f6513e318968f31422edab156d3b5e32fe69fc368323850250fe2681396164c370ea1ee9e83acf90c669f96aa9b58c3fa4ed369ed99590f87a93077612c0f6990ecb6761d2e500e2581166975ee7ba60a95bd583cee15c091f1b60e48b2fb3925349040cd7ae885df437a45bd404c33a5f31c909d55eb2230e3e5704ba1dc238d679177d30c9d1557a985bb13d6874f5945414847e8efc77ef730518e037dcf164464f7ae2777e3f58094ea8ba131432babd558a2862ddfc2c7ac7d40bb9c570bb8b3024d018a4ab2f6c3cd3b2880ae3478ebb629554e6a4ff5c564fbb97a55f516350ee575c3ee64157efba2f2e44549aba77877f2aa41ef962d8fc45245ac2465125f094ed8fe738f4ebefcfa6e84e3253aaca1355f990ab7284ea53de63fafe438f2809287766f3909126586094a082d3d8191553650c88d160bb9cfb4001bf757dd43b7e770e6fe17d472fd05194d441d5a9cd87f356c00378000cacf3fdada67d928d2cceee67be71c4096a00b64dfb0592ce3a158a8e8e49649268e0e1d9344cddab4b5a6ac7783f2400a6d12609b858d6d8c83562e3289bca8f5c999ed6157ef1e02810af3b88354300b3900341ec707dcc25ee2dca449ae02ea341b4cef3d194332d974e39860275d73b857fd394643a1bbc4d6f91bc4eaf9b6b4c3563a54293ef21ad61f3dc29bad52c18c376c5e6cc367b585db6985fd1d39bdbf132f0f48377d8798e36c8d0dadfc91be6aa361e7ccd3a8a3bce677d267f19b8384ea47bcc0537394195458af65921b5c1d7dc6989b369507880c44aa95b267236f70c5cbf509433d5beb30b78fd8d491c7c5a8cabaf314423c98f287024ac9423a072d4f3b0b1bceaf8cf3849cb232861419fa7557fb5a1bd34a2835035e757dc4742bd225f865318888737c4f1f53cfd18e0a6e76318ed296ccc8756c50c4970abae5e7683fa82798cd20c975e56451f3c4bfcd7ce4059b0749613acbb0e4f4e5459e4103e4cf55729529c2dde9f91351bee4aed7bd61193ba8af1ae704164a0caf0330f7d43e2b6f1f04e5f67fc2394f7e27732c5a901c53473190a4ac3bbcafbcd412d4f46b9ac7a73a3f1757d001ec706b6beccca4ee88b987defa36cf956dd01903feaea63c820466ee9111f3ffc8fb2113d777aee7d24d2ae8199522157e62b5a9fbd78c6cd2bfa67e70342e26fcd1f58f4b22761f7aae14f69a0ea754dd59259b7ae88e336757b04500702f00263a1b5397be7d1aed534a224b3659f6b54e01c23742e15207de6142734f7fc9eb79edb7081985d8f3f57007c58cb0f2c1b79f38029b0ef993ae2650bf663cacb4917940d69f649c7c46f3cb81b6d40070a2991fb0db4ecec4fa5ae0a818bb21163fb29fbb5683f4005f4a3fa0f16dbc562c00553e16a4b6fdceff1f11da763525b9b3f5f489a2236d03fb264478499d2a9ea6ff930e9b8973b66d2da2443707aef7a04cea626a3c70ce16a25cde762f89d48e2c63baadfc836a102185f77ba9949b9226e38fa948b2843f9d3b215b04a2235680779ac3e14a38956af88ab5d2142272b10214f09f7415d03e20ec8eef5989625d00126a0c577fee042d376eafe44363b811679668543f9efb5cb56b5441d170583e8e4382afffcd0540f5c6009f4c0fd52a43c29f3c639d6295357543eb2e4b55ab25c0f07c954cdbda30d2feaa5b70a47471967a5c9e3aaaef60d7ce7566e26f3f56b4cb12d313b6a22b67b5b702ba84a7da588b49b8b10a7919c0c01791aecb9c7f3334874196f6756d211aec7faf0bc644286b1b366adc7bbef83a787d45cce20730230326c52f066443213c775d23a33906cfdce32165b666dfa23414a1577304f1325d5c88a4063b0950be296555815ac7888c34845825bd6bd191141b72e99686cda2f1ee7bab94a400bf2ccaae273715a2b241fd93902f84c6f3d312ab1a7f01d57d6a411c8fcf9c1fd280f4011c2cd3e3bda3cd3d6292e6894b76441d44cf3570aa043bbc00d03fad8762fd86e068c7d4c6f471f8b6da30c233b9b02c0b6c8d31517e021a6a72715ab7516f3c48c79eef05b95d13fedb86a083a0ae71eacacecef8553a8ac85912fa6aab10236f05183c6dc445bd231f373902f1a435482afdbac794daf81485455985b44c20e69405925a629cd529e37e04ef2bddae72ee578667bf69c661c5c7e47dd57e8c0380dcda327fe12b8aa580c26510cf9526c8f86554f762f7d5cab18542a1cd6b77ef06c9d255822b926ae1bd65341fbefbc36e4ebda8c78d4638686e169e8401cb27a903e49cdf380ebc4487fe56f7987fa63cca05a7e8a81c8c989bf4ad41387d7310a35a142364e011537886ea844c4b1123240c507e8e702ee2af75c7de0fe276c33acabc73eff6c321f3fdf769b61ab6e52efade2c9f49aea6505f6cd1dcefaaa936cad1da1dda9ec00005f0faf9f7a1627a2b22e36649625276f01d0e046450c5629327bce5cb2022b4281673a16216e789b947c61ff72ddac106eab97e2b3cfc165cfb1804e18888732d8e92e061e5655b6ee605cbfdf8a261b719c9e2719c95be5b8ffa76a7447443c2b6b9b8bc4bd8ce1e1418590f928bb5f59d19a9c997d8310203c18c25705c90ff03f0c3757b06b8b189d19284680cf1bd53ec425ad657d8b6dbe39a6627d6e05ae3604876651fe832bed97763f01e35716e408a6fb174f6a98e879b7358ebb55a40e3ad9eb552f075f20854a44e02efa55057b4d256e9f4c7b08d4ce82a75e7e04098068fc78ab4b0fac16455ec6f5dc4f9db5a84e4355e2426ef98f66a99b5a137314d3a0f4254aa8879e710693c426cd6e3ee04bb0b088078ee4c566ba84b8f0bc04235304ea1115a6b5a333275b7e3f3231599f307dd5b500aeaf203bdea88cd0c8df102aa8777c6e9d955cfaaad20e5bbb01e2156c402d9ca5f765f34f1f0dd07d1a8dbf26bbce9c46d44b08ce07384ed1b229c32c659dd037fc7808460e3f69ad170352f96c644c6bb65d2fe64d7f0a4f1cf6509e2f124a235a155b084c5d4eb8c315811219d531ddceeadf18e301acd747c6b57c4e845fa45686bf425c453e9a300bb8a3ca5f0a558029ffdbfd6f88c36f1ecc1054ea1346526ede12e2af5d97c94e547e245b5a063df839873b73b45058f23ad5214d9389cb16d5929d9b0f8345d57e69112576f7340bb4643674d71d1c54f9effae72b1455bb3bc9754537e8bd0e4f6857a9f30f9b385dfc695eee38d65f1e5214954f998d9fb4ce971bace720d1472366f384b4be3d6b7e65ced3b17efc27fff4a7e432e4ed5cc947fe53444ee2ccb253fd8910d2d7d0a3abad56dee3c400413fe7f35d256f0c37bbf3b0cab246bbd308b415568bfcb40e4612a310e8485fd82365b59e1ce311c8046827fc55e8be1e7e52b2024e03893c5098489b84e275386c4ff820b3772e2cb46a58035f7a711cbd97aff31ee27de8128e5f49089e3710d9f61006c4e2f0d9fe54b19d7a2069ccde13fcd355ad06c76d5666ea4eb7a8297e85f6ac47b5381aeb8bc79504fc83b7f394f2f3ff298428962fa065fd52a09c5e35b1254c20667b2d2269251a0c66a07638bb26c60c8493b9a5545ad3060812c9dc86be261e150675c98729275cbfc3a85dda546d065e859e3e5671029b02de96b8d3fc68b479856be1503844b722299e0150bad08ba88ab6f2824eb55c3bff902fffc7272ce764da1a5781886dc3872e765c403424cfcdc8c525926152cb7db7fe362e78ff988bb6e7eef65525d3625402d49eb10cad554ec106e01810913475f7f3ac13579070add77ce7bc676aac10aff7add723b4f6a45745e26414444400323cfc9e7153c55a2c743da9f77f92a7d67e841921d9953960442c42ff502a5b51358cf3e7cb386176a625d42fa57d5adc9b7a047dd5879df9c1a42ef7f3856b370c042c76143c6d2121b2fea7b6a9a906b5185957fd1afd86034372f1e273435d428a34ac690c42368b763934bd11491e2df0e7f39ac2d6c875e38e539e41f457aa3914139795e5e3ec39060f5c58aa36c9b059f8d5618c39693a7c6bec47cef622337f614a31915e08d5ae289d2a9ca2d0f512f3d050e3bce0207951795301174f7e401a4b3dd03d06a739f09702f5bc1dfe44b5a4c24fd9a647bfc498c90dea7804e5fc215864b36eb493907def69bca5aaeadd7e5952c32b626bbf8c9ca5f853998fba94aa0d7675d85ed27253a60b701478d99e0a56540583f71b62276cef490346d5e44eae86c84b2d1520fe328d070867f7bbeebe052b8a0ac6e00b718a67bbd94f9ec1b10f21b3f4eab43c208473aab0f42bd4c2e940e18990e65c366ed1dbe95f6dec5afd08d504fb6e0c0f7a2981e2a781efcdfada40e8dcfa099f22b53139e5663884a539a88a201bf34b5e23e5e18135029951f557122d302488b93891b4f36ebc1e6e69950c9a632504cbf6bc1341288738546cb9d6a6fd9d039b400fa91609e6b6426eec8f9331dd2f9471bfd433e87ac544c7d8cc5b649b834015ce680fe7ee77824d10167df3d7f7a8c4c72095ac27f76d141430228d8c87c35632d26115408636d027aac18faa4434688a859f9ede98dd9a1d8252f6fdee974377628415f114445aa4292a88eb13f567dd8e6bb5d4eed474c125ae3abf5d436e3f0eff6d3ddc2496c756caa8745de7c8a30edb3c7283aee4a8b32602b4b38fdba343b3ec6d73a123bd0c3b96acbbf11a87a16dea35ff6f9a29e44cba52356d011fcbb4f72b5a56b4f780165933c8d1ad5c7a7a70ceb297414b5867a75795ebea05e7992ccffe25a9324280d4257bc0e61d3c11846739c82503f09f13a619d36dbb33a05925ceac7f11db13ddab2ed1a1b80ea7cce44e9bf6314be7b05d10c17b510d373ba77c573d7d6adfd27f2d17995ff724c83925ab7f06bdc3e32a66c8015554e1104228b08e509d7521d9e2552f6c032947d429513946a03369a7b1c3afdc67b04068a6b236d2691fcecf7791517f0cb2c6e3ef2cd956b8e911abbc98a5df49b11bbd5788fe6ca4e3c1fbb885be78afe2816972d5d93c455a23dcf5945487c0a60a002f4deee41c97ae55278e392c6299934da9875d8736909bee86ebc4258ac39a42a9e470d595cdfdf8104f4852c63e4c2aa890f29049fc4c135c2fa1e7ef7debffcc76d2025c898f077ad48faa599448ec7a5ba9a1155e81dab3364d7cf51e4e63412e2080b242291612cbbd6f277c9e237c34bcef81c04fb753937008c77ff8140f6619a5b0bb3967d22324c95f21ed704628d21d00a4ee928992ce9dd2ac03f3339f0cb4a97a8605b8ffc4a13ebf84870a4ba5bb4da59fcf354afd13c65c484a9db4db03d7e51bddd00d3197aceda85320afe67cb3eb768392168a48b80ff98ae35ceabb33ed162b9619a7c86e81ef82970195507de48c4cd9ef3696ad87e9dd5cc8f66dc0fefe7e87c1767582ccd1d57bae832e9b6da871dbdc641397eb2d9b5f572dffde5e78728af7a0762d1cdb917d8711096bb10366b3e26eee17f0b54400391cd2bab6b845c5ca23e28361d8dcb7168ba448a597ac10513595d013866e0cb11d84fb3bb6bee5e2114bdc636e9dcd07e21abab79f41221fbf1ecc5994715555cdae6aecc3b08a847daeb017223a3c058de93cd07f6cf38c74a73ebfdab12233c13ccb088bb16c2b8f0f8c9bd0aa12a4f7e98866a6280c260b36283a570d0464dce7f7620c5eb60739474a8e368ab5818e55946921df335280dacda375e012b137d741f3d0bd8db6a1137275cddbbcbe17ac5df25e2b6027185caa045f3b82feb1760b3e7c1f0740d5c20995e8fd2af513d7bda25efece2caf72daffc169d202aeb8a7d1e55b48968f9d355259de3841494b7dee8fad453f2292b28f4c31dac63429d102dd25770ea2e80825cb29d62352a0d53b16bf1836e8a482256fc327672d4a7d45ddaf5a3ce1dac1af64fedb07736a146f69cf37c6e608f214255db076cfbd61c1a3ae69596a70b84514b457f81666f577ef476511da13ee6bcf1354b124d82158843793422b2e84d269863dabe24f929385c9e836b7dd21ee8659f17b6e60c04c38ff69057ee56933bb57823cce6715dd8326a6edde49ce0172af3ed12e1f1262189f5b8897ced5d0a751e612b9e640029c4835f3ae422b06650e8d9289343628c3bb18c11a2a93d6457991abe6f40abc0d1c5c607e4b3921e3873233ea8aec305a83ba7be61336488179b88ef58fb1d1edfc61cffc5c58af78dd3a47cd3097e019643d3b6ed4be14783c14021f29729697bbbee395bdf8d66dc344448fb379971de0fbf54fc58faeb1cea1cb11b307d8dafee007b7d67176c42d819957ff51ad7fdd8acf8cbf7658441f2b25d98facb0e56fd717babb9a5cf4fe111a5b4f9186e563cdf6738a2b281f71233dd70dfaaf66396e390bb61007f4fdfb344dc6d661e57b84838c85d077cfd5cc073cfc604d997356b95d83f4708130751689356b2225b2c9834d847a872825802146c69db233b2559e8d22d00937328156427cdb57945f4a1af469ca499c836a834b3768e5478adf70667fc3215b6054eabfebe389bfdca577ccd945121c4de9be66aabb0a3fc6f5c8ee865ff1dc4c9f04162e9fb59cfe14b2af98b2d057f0685cd0acb4013d317e2b7a07ba29b9a18c565570862fd60f02723988a6a299960bcd92e2c085591d239cc6d9ddc19f6fd7148aafc4ae796d7d80a4ec3db0d121219ebccaad580f0fd0f852b3e1d96879af95c3fead4d4a8291ce8350782aa461c9083fb1c81ccd1bc7b2af05dddec6b9de381f1140c69c2683d62fbd206b15ba6046083eec7052942f84989d17d5fa4967142e5e37845522a72606f51f1a869609652c293a824f4537c1edb9023cd00906e46f3e5ea2233b679e6e7d2b94081cd10d46e549443a3ab3376451bed17b8ab33cde3bc9fc02f51798ef93ddc4740854282c72bad17b0c9bc1c7f0896cd9625d629f77defa7d36955fd88d781f33dd7545585a7fab81370aea5c89090dbdf4a2bd770af4b31838fbd2741c9ac432ac5f200b13d3ee05f74bb9a5e0875cd99c5e12e667083acd8e9d3c3daed00403465cdb9283a0ee5579a26ed2d688bc91920db9fb338925f054964770bef86621838c12746e120126cac967464fa2a3cf5d7dbba75f010ec74d6fd4cfed49639a9e64091b2d91ffe5800a2060195c49815f88595760fc43cf536a26bff7146a8d04a739357792c1951b957943bd5da27c144d73a3df1b344c342bdb353f36e6998568c07dbabf566fe1e9d4eda64628e68d72be94065bb610e8a81342df38d5041915aaf3dd18403934c635106c7c42b8855f2bc8570e3878abe9ea012cbf5159808f60077b3956efce2ec0e431464455cdc1ba9e24ce588238f38e37268dcb5042e2cbcdbe434d9cf01b0c0551f14bc4cb066079c9b0a4f02407142e3c1bb00e71d1f5496a52a1b229418d230e5d849178e527529ea391c44753c6cf1ef5c4632626a9b3ba172f8bbd6bfb96b7717f1bf34eb92f969fdf22783a4f0d4c1efedd2c5f4b1b79adcdb58692649aee412749e2863bbb7b5bf70e43370c9118b79b890111f993ee2a152c74f297b88e51614259c325ecb34bcb5720fd21939868ba3a2b61b7f26da378aac984bfb15cf1d98e6d450d046482f4ce6f45dcabc9ac5de6614916e41c81823a6d15592569024fe0b54ea6ebada3bd3795176dfd47ec4832284922b315abd4638c808755773f68bf7157bdc3f6cb5b15890d766d5c5b97b3dd9656845ef1d12fa759b7740780a0de5c8a6325b9b42bae4f14689beb126dea6a6a840ebcdd4249452fabc4aee88262fab9b199a002dd2a3d2ff57396a057a162111bd197d172e26eff65d23efd7a9b33b755896bd5534a75b3c1144607453661674c9774734fc218653ab40df7a6a00bf6279bb26e5a3557d05d6855ae3c0314372daa1d347623a485daf20c47772ec9dd6917b7845abc90bfb8881104e3589896808a8cfbf5600d447bc5a8c3ecd2d427229bd4293ee8d32b4d9768c4b28f1dec947a9f25d080e1df90e33a286ed911367059da91cb3f869c648d2f7f07583607329bf31ec56acf3366ac4b026c2fca4bd3be8ea5cc5f3b4e55b0e73d93904f2ff9a824f82c53687b2766eb69ea0e26c010bca76cc2a6b08bd9aa418ba674ac06452315f84350fdbf33b12227b216bc14505bb914e472f6d10bf0145ce2533d8e43d20e9f2cd581fff76bd4914507885a5aa6308b7582ffa896f4b038048cf3213465f0d838a2144d0baac92ccbbd078d91772af8ae02b9d25f11d1b9f67d7f12ec2ead7d5792c936edf95486c62c3671be6355ffc310ce356087035f92cf7252b32e74d299fdd50cb0b2574df94a5aefa4abb44b7bb99bb7df8c4169e266344f70433220f24c45a9409ec58036e5cd740e36998d4f56d3e9130d587fdb161c0c43eb0c5db208005ad19d7cb8d16e6c0e7795f5d5d5e79f0cd435b8a7194a7b856595a403cc04c64ca5fd564b33f4a280d668da784ed707907f2d8ecd1f73f593d9eafde80525466ef885f110c4e4c052d021b04d3cd4911e538b577870c5d3fe1576f61de25c97d4205e3e628c8fd6216cbbb6d2c5ec6270b420754bce888366a923b4485ddfe0cab0ddb37109ede831502e7d88f2b23cb4d94ab698d3ae77b7d25515fb6b2f4a01951376cad706de2708785f523e6aeb796291c7aba8a9797ad4c237d2a810d4a03e8c8223ade31c68dcefc35a0ff0687f7d7c51703a9782f0c958d9dc3a87cc53ff668ff9daa0fe07da1815c99f73e7f70d22e5d703c1b89feb6c95bedb7c8a62ec0a7296c9b41127aa48f84f030dd67cdb4ea4ad21962c2d85e1df0104ee820a0b90e2b47d953ce74c6d8851fd257648723b3c3ffee4160f951dd95d36a9b3228c0649c4c4f62022f29734494f12b3fe1ffe318ea08323e569e31f6efd5211e83c2aaf5af8d59c2184edd4df8d7dbc13f030ebdda86bc0455b0db419a68e32f8e53026968b63d979ae3b4b92d39c448a5c6c4096295d39a443259766276a76864fe411d32fdee19c326c608b1293f529f0c5797df91a46acf3ce7cfb391c64e5d51d57129376ae47e1796241792305ff853e0ac68c1105e2ce0492aa15a9c8ab7ec4925823a5a4864019639f2db3da5669389596e5b02c3d5cd75c661add4d92677f5fb652a4855ee8e8364ca04b21ac4ab2f24e6e189b96dc75e1c3dd201b03e34b24d7d1fe205260b4330ed6343e82752a799d679bdb1509da47f8dd6f1d6547cba7dc864fb1e49ed98b0e58df49a594daab21fd9a30a82c0fcae896649b88309f8928c68fde760e829878172f8922c43211056f23f2e0586d6b5d86add2b616991a96d947f0faf54cd3136361df423ff2f2c9bf54bbcddb1db3c70d1bc82f14709344f59651bbbb5630af434d1104ec95d58b25efa3e55cd9c831b1accbeea03a6218ad9e8e78947e187d020d14e3299816611f3adead299becd074c461739cf8bb9f3474f8ac2aa68d327436dd6b25df83154a0ff05dd94996b310db178e518d7fba49d27dc9691a0e88048bd7d063464bea62e1ddcf36064f5cc9179e1e427c0528bcd320798d805a0d8949e42a091f34140d84a35e067e420da821816179676d366301dec8b0d313fbadaf8149ba1f0dafc03dd37801ec5a70350b39b6f94c700b454c4b921c0ac1aca010014b47962915d301c87962221e0c9442765cbae865276fadff6b4f734425349533502ef64b609a36cbbab986d2530c82a3874ce4f59711b15288a97154f96f1c371ff1aa4be36f21b8905103824fd7fddb55621720daa61fc10878bea46afc74cf9a34a107db837e3abe986a6d1838784deeb606ba96a715945d38245b37fc5734c1aa06271d64f35808edd3138ee530feb90d2a7d462302e9523a9445addaaabf769cc973b6c622ae170a6b1507a2e839e4222764285838142fb6a8b2dde580b167141775d3e3635b9b07199366c4bafa23b2ed4638da818752aaec88472f6c4b3a1b399daf089a964e2a040ca549a4741d77daffcf15cc9762f876383825b91e6c5079800cd35a85a92a1fc3485ad51ee2b6699262eb3141feac6e944bf3524682693971246dfccfe4b1ec02bdce22a49a651ea39c96293e0c26357fc5fe8a12d394b47bb993293ad89e841481f8704b134b52cc58446944070a7282273cb90fc4b7d49b8d0b7cdaf44054bb8c7c3c6935e5f1e51fd5288137a99cbf938e46cd2ac5f4048c2360097f929accfb43373dea638c3b95beab0d96a6980770c6cefae8135a12ef8c8741bd82e530645b92f66b21a4918531059ec9760a0ff66ecaf9a36da9e69cf1d92ee51606ef83f3243d11dccbd1f19173427a128bde80cf0dd0429f743b624b165f94dc2ec1e68133f1d90968e01b78bc7a0be794cc9b304108b513daddf9bd4e06bf86ff9d58d1026f11c9c1be87cf00e1dc1e4e83419e5964aeb9a6f21e9aec2b680545ade9e413dae115d2ba55bb59eaf0e020f3274939934096719503e645e7a69b41f89ca42262240b92563490950e1f542abf14919c183238296fd650bad3332c3716f3e4ddc86770cd48629ca7910d3e6d1422de6030f4cc08516e27268ce91b30498128e18dbf0b1fa8ab45d27633467e9e8efccfa9fd9e71c89da2a438fb15df2f3cd8bb7bc7a2afeb865cfa2723af11efda202162f8bc144f9a02479310e6a5af0230820e9dca1f6e49b8e4119ef7f30e0c1e2c5fb05df2a443ceb284bb650c34b5cf33bd184469ff381687feb08d66b634fc2d4f4af4619f258c036f3041a4e0aa26fdb05e854b9a947ac20ef16930d2dca46fde20dec6202a83458ca4b38aa172d50656c4e7072cf0df4ab64950345279dde9fc2e6e885412b6694d9f41d9c5db3bdf3666bc5a82b1905f68929c9f45a57cc71ee7bbb8c5cbed5c6575ffe9c65c67728f648a9ad5d0dbb4fdcc3d13562049015e86c66f895af772cbcf7b892efe14302d518c745110929d2a4ffccb8463188fa381f8b8729f3255a121d3c7c02e29651b95eced00d71626ce7dd66f5ce02fcb0823c51f68dbc2958ec949c064db508094b6a4a17dce10ec7126caf370c932f6097949e2ca5153096a35084df87dc0aa400c820e25e17ac839479d35931cbf731115f4e03ab7123e47c6d04985f7bdbf67811609532d97d0bb57436ec866401a83284f4e80a5c0a8f3f3c6543b1182cf55b278e347a7223c85f2371fa6055b05b3be63bcf8682caed3794fe4cda1318fe21cf2222f637027617053fcb550336fe36f81e7d4a763f0226f165e715e3c72ecf846750ce028b38207be5e76989e1d71adde12f2a7d2a678c4ea7d639b638c936f36990cc9809ed1a987a4b1459d1d72b7b28e85d97fb7bebe600cccdefb67aaf9e5fe2a94d7d512d71ddc0d44c69178b73397aa319d18fdffe672b204a4478c0604ba16b19a72eee2b43800a67952278c468ad50dd8f57e5c545496002e84e1cf7b0547592c8eaa7596f4484381dfa58f81536eb26838cf26aa3ce730e931ab7189edc53ace1df29ce1360519852f68044ee7c2511717386e819c4b2f0a9cbe2d2ffe777087af77cd5e2aef632d509d97df2b7e80bcb5f80d4c942f41150142cfaac29b75d24fb7ebd493a13560d6d2025ca317e07d2e8744b8ffe25ecbc4ce33a4b09af967d744f8d6d4b52629114db3147dae070ee4cfbc6c93daf6354de4828328d0b783db172bfb5f89344f4f176221a3ac508861dfe3e126dcdb1f94e508cb66d06aef69b94899ce73df10d47be62d8845e7c7b613e8b9daa1467300f56a79406f780005b722ec7cb80dd904744341ce4f0f6d91372fd8104cde26d0d6b879ce95d27d091bfa7ebd4e42ae49ca887e6574c832dd3468246d11632186040b0038bc02621b1e211a1b9b169c7ddac10234690cbd45e162022744294b08e2c2585658044cde3a0af04eed9c40f180b37bd44d14845c725d63947ed574543ef3dbdf1941a82d84ad600ed0188f3d936f6be1f3a4db89994de23140e4ad7a0f18ea6e89d26023502b3e3726a5bca7bb5f99900eb1451267a3ce9d9ba00984427b61b8c59624b9cc32eaa1d41466984e8f5137740bb0779f42bf86e3ea5f7694d3c4aa5da514e2420036ad42ee8084f093643f8f2ded4affab3f65a8ed30ca2ca2809f3d50af0613280501e441ff84d26fcd82bc20c1960a43a3ea12112ac8820046f5d6b18004f3c2e7bb16c5f1c29d9d2a86a449ef8c735583a4a730db3674cb98a0b4981f5fc9c572af6d2b3676256f7aa932df7e67371e33a46afc9d1584d2f522f696ba9107030ee88f135aaf52f24a50bf4a0d3853581325138a64015cc2dd7c956a6c7fc9d4f062352aefb93818add01f751c1b53bfe36dfbd227a4d2f24192b2c6ce60efcae27cc33399ecce542407443e491476b8db0441e1dd595a6d93976db464f9dc23419e2e2e950b594b911fb42e88cf798137ca4a074b2f4bb3d4ae3c43723872142d6c1c4adcb4cfee39452941fe069aa6b8c8bc87715d92ef6dbd640788aaaa624e29b16c126701cef158534dc485f0e82757f1abe93903a41ebbf13b2eee26bd3921730228dc282f6893a3138672e1dbfce5739da669d39e032916e849ca4c574af66a961a58033d309581fbb2b8d9a7ca3dd9a62d45cdd2b93639d4a26fe53fc2756d2cfd6013816e2de47841164ae44d1b8dc5a5b517a7bc2c620793b5451bfde37e10db6e75918f2167fe6e1fcc87cb0676080eea12f15322d306a801378e9e5c788e98b0153ce3e426034d84c75b5355323792390a8c2e57b5011cbfffe4dbfde9dee03f602384777fd1cb9f18425bdb7db998b1dff1cd9f961e367db2b1e33d3fbeb2c1724753ea6288f6deaa4e2d69ffbbd5f03b9fb047633a10764d88b9d982cc3d6caad52c8916c8be698cd57eee114f2303e58ccd4d1474f6d600167a4cbb9976eec885eae157c88f05ed84f7bc9b195fbebd64d078a91189181cc2e48af1ca92a6965dac164eef7633b0d8c527716c130e2f7bc3fe94209d65133e48a10ccdece3666af30e66d2982d911dc770d9f3638630748103f2eb22db876a30d770b8af972bbe7a0062badb7221dc9d9cffd8f1029734447b86b00532571a8ff5998ea3e77dc6818486fcf9dd8481bba9bccd63cffbe38b2e63e58736194d700b1a40bef29df1dfd50af9abf2632bb953cfe92b0ef1f1c0afb3658e3526fc8ad537c17a5c4c7b6ab91951ad1bcf2d354d750a95c132dd21ccdd17890633deea80767b52f5183ff4747837a1ab0eaf4dfa46398ee82849c085ce5022e337cb8289a661c6bf1f55a13348fad9be8f4b419893bccc41064921f9cc7bfedb15a4351898b0e7516f4ad05cc7b902fce7bd3ba841a938020754a5a7d613a11d9ab7adff71a0de157bf1131a76cd7d4f9df68246c564b662f87583a8de5661fabd43121f22a855a1f03873fe05103b6f41c11b4fa235557b0fa309079859a9971f4688614e6b22342019593dfc0b8a6fbd38d5c5682bdad09554212d6701017ebcd236c43b3e01342d8b8eb8768963041be9840d2f0cb8c3693719ca3746d43a9197a0e54152039bc5913ed8f45e7007359aef74385ac45ac429bade25dba937b2a0b5383ef335611ac634f173196a6c56defce1cc65936cd79913557258f28f62257a86c838487b816a6cf592c2e10b43c66ae6730b6a87bdc65a3512d0f4fd50a70526f6d4f7c3b8a2a43b06fcb0f1f26d747bad4fdf2dfee9f3c86415c68bfc72868a62ca98ed851004eea82edb261416427abd60ce252286dca43571d6b330fb045f9ee65a8ea42736f204fb5734b249e474bb74ee73fdaf3091018aa2e67d089cb3754ad66cec28272342dd4bcbaadfa6eb71ddf0a8163cd13a19465053ff759c8c858ec20c0e6cf75dfc90ad74daa854f2100765e4ce422673bdeee9d2937511060cd2469e16e7b59063b59003d3a726664e3c0018ba726634a9eacec92d5071cb0b823987b05d540204e54258b03bf8185b618ec2cb9266c7e688a26e4c0303cb09e69a3d6cfb58893eddaf9b94f900a25d4b51df903cca99570c3d135e11a9b36b63f0627f21ba2ed998490fe5bcf38db27cc2ba4de6afa0be96471009b3d10b9a66282179e76e698ca3613b188ce7c28b4ffb71c073e68fe947f36a29a298bb97fa367c41bee2f86fd26dbb2243791c0b6d3941c0274bea4328d4d08f51ce69460d64381f268d81996b490e29a0737a205ffd51cb93c60464521b946dc26f6845bd0f539761b00154d3ce6063a55a074795944c1cbaaead0a52b376047c8e8a80e9f0cd3601070bfbdb1375759036a2e8cd9f7edaa11d0c48b36ab8fbccfdea792ba55df7c4438a90109cc81b174c0d7750fdaa712f86453f5173c453a2c2e3ec92c9779ceb6ce64a489494708d247f1e6d16aa76bd8d306f265d453c4cd11c443b3354b3a6979d64d4cabdfc4c2d0857172962b94a865b7b4791fcfce1e7e0044f25e27bef2d409df02e85c8d5c1b592f29b963bc4aa34eea1699b837acc4a05f59aef3159bf081b79e9f296a74f872aaf9f2ef273afeb79479b07405f9881800f8c3e2ca920a5e9effaca951e5c8ac69b54c9f6e3a87f4454346054fb7ba68e85e5d8d71891e5a912bbbf67a89b7fce15d11406ea0b7894415def96e0e7ad4e84656e88b5b8ed9cfe522ad2b548f3230ca4543b32d352b555c9b785d5c74aa694dab2710dff011ac736249a76a4ac0c72c7d8272fe7c89d1f311c0ad95eccd1323806761fe197cab57b21f2bccb0fe71e700a6bbff4238d8fc318e489622957f682f086be8dd04f301623887050cc7668d41152acba14ed27e5616f27c9f6d7b7e0cd8cef3dfb68e18787fe3971305f436e33e8c6f364505a84afc0ed579098cb3a1898ec1257a28346fef75215cbf173c9b970736cd9a563dd38c14860f848dbe07c9c373ad8201126b3324a4ddca0edab76142e901f3bf2c31f45b2aea4231a33252479e7b586da1d77918777616b3f11d4e76719239ba226e64768595c5efb8b87beb4a157925107bf75e30834dba52312ab3fe295ffe8a3755fce2e8828d883f2efeb40777022dcf582fe3f28a3b838a20a61f2e4684d99926c488b8540d44fbff0366ccf4ca7fd85f409a3921626a235f551712c5a5466ced4cd5cec472de071da9158363b2046de31ba4a42fc7303516fbe2d33f31664bbedd2dfd454dc46066c62998486fcf70c781a18ea844a68a4e727ba2837710a7a7a6722a766b7e6e1b18089b2501bebd18e265f89c472ae00f518b43a19dd62a1f9bd2ecb19e1b78c8bb1655fa26c609fcae6b752d457a583cdf28a37ad599dad443daacf70638aa893ad3ca702d70c2e19142e8f82206543522161a7241b2adb1c6d9a31f54aaaeb55ccaa01b113ef3263f0f82c06cf1b825c42f54122493cde607e268cfe474becc406c7984fb91694dff41192a4f60631166f26df0e204b600886eb97d466c5596aabaaea3b9cab353caf58a0365b205607e4287e8ee366930d3ce0d9ce33f22067d4a5b7bb46635f3b350b1e7b2264f9b7a61301efa35b9af0d3bc6b0034594a05b12a19f74170bdb22634b464cd94c8ed682dd66434f628335d2128b13517a5d151d1671c4b42ecde9a5560bca2e029392f88fa05272cc05c4bc82a1cee17f8254278caec3ae0e7a591ab5fcfd4319b329154642ccb672c222113c1407762a5214ea4faa88afcc6e1220aee446240f41baa1727c06c2176ceb93d6dce514c5f4e78ead50750917c02fdb4679bc3c6a2f28a4de2a08af7271c8ea980b7fe1f7ba15be149a0f2116072f885e382fd64c276b225dc5cfaf82fdc1b33e85425b4d5eb84e233da96fe23dd318786c0e39666d513815a166c6ea4a12802f0cd302b2492c74801e757071208b788418cabbe38c91dc58c7e621013d3d4133e7daa6b1e230c6df7261950025c4e3ba771ff22b666cef6c307bb4a60cc2b0f7e372fae97aae051bcba38debbc53c0b8671d0f16245fbbf33bdd068348be276cfcb74d2a1b6a472d3e6977a56a4c5bab1f88bd3561062fae77e6a85623b2d64184e80e0147b7a5a5ac06e441fee7c63ea2142df1ea9e0086678814e9d7e6ddc43dff1ac626627e5e84ae5ff7ff4dcd057cd8674adfdb8f3a14a98983c9f1a178eda754e6c82dc5b7cb67c55aeed056a75d2567193d0e28459c77283a87cdece7caaba410536621fbde28b299ec2d183c9801e32bd5e0ea6fe72e67b99bf32fad2c2e544465579c9bbde42377097625fcb6269bd946ab31f585987c0a41cb0752cbbe7681dba7a02538ebe33432d4ab434f483144cd3290134f86e6c98b4491f9cbd40a658b68b39933017962d85313546f30227c10bb4a8bb360902639a41a9dbc957d3fd95f933794cd3956b4514573b93fff8fef3f30ad0a49290c78f9b9250354caaaf4e4b301f1de8e69e43a57adc64a3d593ee161e836262dc5bb2279f3790dcf29a9a6b4adbeecb741fce973a35b54c5c504b6bf169f441f314acdcb6cf81c5bdfcb6ab20c1587cedc57b00c0f12e6b8169731d9d65e59e674bb85e0af010362f90c1b9eb6c5650631f414605efcb84dc78edb0c46bba385239f7206ebc6a2ba5f39a5b6f634d80037975a9f00f9b44c20bb7ad9dbba654de6670333dde4c948b34ba45b1393d0df25d7f744f50d30d77799280b49676ff722a150805495204b4dde5433fc92eb9cb2b9caea406277e68ef5435f77e0ba94d2db15c1d15db9a9a753c60f4f356f4dcbe206f7694cbfac715bf08ece032eba8719e1cee60dad6b0b68df76363a422335607dc99568bbdc9f583e8d6593f346c945002dae4cf0984f2922eba1adcd1cbbdc2956baa80fb3e529e5d32cdb38729c624fe106c1e0dbb70673e4387d06aee72b84e388267578e43f7577be44140ead33eff175511a2e4c80f74c1aeb77e3a1b2d4c451fed541f41e5e77186578ed9ed83e85e7b96f6c7585a76a423fd813014b2b81470e7482356efb63d44c6181f7f9a26944ff4029e75fb4f67ca4dc77882370087e072d597ff8767c2451ab09ab5ec561d7b79d9c95f65fa0390083d8a08aae69cb459ca5f7f082ec1f7aa61530ed6de192e3cf5f3bfb7a098ada8354391cfe11743097f1bd171d9f38289c4ac9b7b0924091f5a89ac5f53409808fd5556b428a04c5c31fb761c51e74de30f31a30e4677b356587888c194caa30e12ec0fe95a2cb8af9e12f876d192d26d837313d46120cf463805865ade5c092b14484fda0351e44b01a6c22903a9585a797e121c4a23744814308c0602ada621ead665fff758dfda7fff24d9d56a9184ff911688513d48f62621dc60340b0feacb6d43e5d7fdb7087663de77c4b80278ccc5f32d8e71a020015eed354b9692e2c20868595b508b2363518463fa0e324d7e8102145d987ea8b247786814df2eff559e71d2931f8ab6a0ef6900deb69ecad7a59485d771141f0a61565d5fb4354ff2887329b244e020ce99b499725dccd0a85fdc3768fab530a380eee77fb3cd5c4946dc50da6dfd89677930ed24bc48a99856458101119d34309a367ec7277b1cb153ea944eee9ffc9d375045454286a78f2472f9755d32d7f3a3d3e4ed947386aa7db73d29076dba5a79a40b1882272c56127bd8cd57a1964cae5689d89304484a2c429934d3d661234575e5d74b66a130759422ab59019e9ffde64f2a9ed5c975ddada70c2f81a6987467e7103421d0f26c9fa143319940a6468baa43b287be6876a7ed1940185d5d192e0b44ae9ebc117ce0977684da603b4b4b37531817b691f39e5bcf49c249135c04bc15e58e4525be68293c82aa8a4ec417943c4bccca07825227eb3af2d18635248be27d3426b197e62dad6dbee54b65bb4d5958ce114cd43054258d9b6e5654946972500ddb43e47b9a9c30568fdef63e943e1544aadb2e5f6e7213363acfcb6b51fa37b37a5806e1b24c5bcd1d0fb292f20b84617af83b164ac80a817b02d184040eaaa4c993d1131ad833e6551a64485177ed715abc45ea2aa54ac71ba4cd0f9277cebee726b473fd257018657af58e214bfda05dcebdc1ccdf8344d47b0c308c11fe2735edc4ad026c3b6bf19bd74b8ce94a1abaea5d65cf0a241b7c7811ad17ca094add65011b22bace6bc65ebbe5ab54f9b6758fbd13f2e7c3c3b1b7592c41af580f26b35594e3fc79d085f5cfa686a71f391061f1c0285798c104a5eb942c8349c1d9aeda1334735ba3960c5af4a1e6bc0650023d585a74ff755ad19f7b48c77dc9d8566d753013ad8096772dca1354681e00b091927cc5da268a9be3ac5e20f172951548b163fa63730304cd0a646f58d327a031a0ba8ef826e6de0537e620383d2a007917e896485f8d744213fb66cc439e6cb03b9db4dabaae024fa870e86992a818b2d226b1044a7e24773c16568d8fa2f095a56f55285db4950b6be8ac03db2d7b27567a4fd1ea6d1734c1d44ffdcaa230eab6b42ddc63433ed3098669e63fb873cf2a67346816ff5c81c8c682fc0e91972a187e26665f62e6675b2dcd04fa5b6859855c100f8ba9a30525b73f835bc8b13bbd24418c3821e6217f27b1d7d91f57dc82e2834a5bd470d31e84d3e4aa44418718c9accdc74ec170ab420b67129c174b76fe7f43fe4a35e119eebd5058a675f82f0a83296edd155df35e323b857f6b08a06900bdd210ec16e30f598927ca1ed2a28b7bd035fdbcf5e816e3987275c153c62661f116b5821ff1052cb5962e5cdbbf42fc61ead1029254726e9baa4e32b3869c2ecd6f62569a03c5d97aa0a625bfd1458a194af1cc2329bdc66db63e0412cc4bacf6cd347bd6fb50301c790c5e5fbca891160409db0f738b6bc6fada35931e9bf4f331c6fff9fe1aa713f41586e6921d912b06f9dad4242ac59167a8ee9031162bc75a9576d0790f58c50cda65e9fda5d7a5d26d9914d5285125ace67462d9f8a87829d43409684d90aa04df3720f63cd63825944918519b977719ed53c119ef7c94326679f14ef831d9a8565595f49f45add0590ee708ef6f2136ef7be096aed75e21f7aba0d3e927854e42f65131926c7d8322b18ecbda2f84bd0bc5e3cc021da8c95894d4db51708d9e7796fa1742fb6f1111194ac11c413934bc7e367f5244bf525485b09b5597c10fbfa9e0c14f4431322f0b28acc1b66847b444c5c205ca518da9e4d73a7578e013c650805a84242f98eef090360a3485fac4403a194b681dac1dee2dcf1b3ba601a3c4b9c35c4eb4b33a0cd456ec5e9c9581a8293e36d4e8115a24ad87913d130881e29267b74706b3a16f60d08475fdf4e0fcb69542f2e044dad97f75d47b4bd01d52259b0bb34ca74aef024a465b166a8b736fc381b2b1c2934dddbf53f388980bd0966551ac2153439e08faaf3df3e4b509b27a9272bbe851c3310b1663ba3d32143f3c592405a30005aa799d947323cac1a4a1cf1a0a50fab3c7a14687967219bc392dce852c746c9b6d716b1e335a838410ea1002cd6b7aceb51d9b76599a7554503e1e70243784f2d6a717b3b7c20820cd741ac8b39af42590e222764293d8703ba3e352c16b2843e013746e53dcf6fa311730a662e354854c3c9e59edad5d3f23cb12ab80f209dc43498fc3dcf0dce1cdaba51c65d6c0b496e20b74555a773932d970598d4a70df12f94e7bb1c51dbd3e042c29b422b0751094dd9284f3c1b8bba7a3e50a000d7b7f2ba26e79f4b680c3c2328faf6a8611cac117233711c62d112d4774f0b6af1e0bcc35411b802a602bca7cd6263fa0a55acaf4ab13a8dde4af20e3bbec5b61f5e52937880d4a008f275a63b22e8c9d735120e59cabf52a16642afdb2d56c5e710df1ffd00063ef0de8e3f8ce4217d79d73956017ffdcc68eb3dcdd2bfe692e27f746f652ba9a8f7fddf4a817d1f447442dfc9ef1bf211571efa976e3ce4921500a5032097e8a6af79404dba4d94c273a57e0ca2d38e3eb4bb5e8321705da1fbfbf1a96f8a65fa6de986c73f3975f04a4936d54b45598962c5f3ee463322b756b8f574e8b1107a70041381490383d0e3b21e8a2ae84ad38f57a4cdce4ac26f35f3542c9558b764c482df10b0e1c5dbb82c56c395445344b21c132a8916f96ab92dff2ed91d038671c2e5dac448c7f2436462721bd299bd7d1c28efe1a71ddfd749b026ac3a48c44c2c535589272c8da6c452441fbc17108140e6b0f70075c1962564d0376344da320e165847ad8ed81104993766685e8ddf4a9c2341b9e5fcdb6c1fd3e04931d6c594e90fce7d452a8c6c824d43d06ad9c1a2c658f340399cd57cc2b218fbe24eb8320520ddfb3c4d8b7e6a6fdcba5c5484269da6ec33ed2e4f652e5996cd48315b0e69c794d34c143aab47e42ab26ed256d9520cb8c48bb771e7ed6d543842368c01e098c3ca982ccce40009ebb0c6acc974ec97849594dedc4d1db36f4773d286091f8f5b76aa4314f29e110681136c71705978fb0468a063b65616579620b9f420f43142c0789f65a08d12c7e573aedbd4fb70caff740560ed01be01613fc21cabe7befc2d10eda6a90e8e76198726edd57d05a3bd6676aa1b7da834b6b2665b8387914bf764c777d3e1007abf7691a3b58fb422c45a5b8bd3e990c1e505321b58938039ce22bf0c8268fde99728190f6454db6d23552d7fe616627fcf004cf3063e3a024795501b70a7782c05d5bebd30fc307cfbedf5e70b1e8707e0df70a28d01fc903a8f18e542096f3802ebdcc73128464fe90579170c3e7223b19faf0dd283949ca312caf1eaf632090ed8650d425473d1eed697d78b0a0d06af067fab4ccaf45019bb0ed4fd50953ddc7e1c5da4d5f312e4f62e0f8b363f9430f96953057776f3bd38b46a1ed41d3f1184f32d119349b0dabf8476e27d7849572687e2fa03fb79b45311b59383af60c09865bc95c21d8b23ba2a303911503405f680f62988ae458a636990323e148ef126ca9aa22da9245e2d5e69a53894543f876bc26862b77a40b2ee7393c623d3af90eaac6789d36afb8fdd207337c3addeab233e54b40b46863d6c5ab292b5218687fec8093c140bc087f43d898704a6315a9a6480db877229e979f4b001b006f5d4e3801c4de09c8ebcff2ad437a57b300d5247452a87cf6a47bdfa1665968a0d17dd86b068b74deacd1f390f8bc0a9cdc2a7d59592fb5c13b55fddce667d75ff995a032fc17b29c470ae2a1da7cd8c825ca829694962ba120d770042e9a2de3b7c3298a579b1e09342772938136d06c31f0aed49f796c1c87f2477c2d9a24c1e892e2ebceaffa3c4e10ca0fd1406e71d01afb81569c16dc63e65ec1093fdb08f448750dcaa8e3a45cfa3a73bb2e729ebb477b9d764159f0008c405bf85af74444df7f0499e084d86cac307ad5d5cb71cd4a7ef35896d408329f1c877ae7c3c4fd9149aa4f49c8072cadc3c2261bb1dadd69e687bdb93ffba7b4f5cad91d06c99eb0e93f90a4adb3044d3c956b126f779497b65810809d95a6a2b4188c8d896553b0a4a37231c93af3b79cd49980018e7a2d87eaf562645906863f150899f2c44d5ea8b042412d6749358fc6d349747157f7cb2f4a0dcf7cb266d129c81ba987464421d131978349e501b087cf5b796f9adc05885dca77d49a4f609e99d6b4b16e93e4798c1f08a70e41daa7e52141661bf2bc994c49fda2ccb5be82feed7cd6148baacbf3f143c03a0a714c0ec17fa09feef01476d1fe68d30b1dd36647e79cdccd1e958a1b78ba5ff968dbd10e61a48ce8117b0c5846099e6a1c2e5841647afd1f23b2354f08b03d10d9e8405d979b747d5c537feeeefef8efe4cb3f9103ef4c1274be1c3f81ab4b678b68d06aa60791f8bee0df0b5d096af30b3a6c8bc7330b9e1d53fbfd0466050f0c9a58b94e02e606062844e8dba3455b30058c7ededdb14b399795e5a06753206237b25f109a3ffbd6be3d06298a8a9092bbf4ca989680b3178d1b63eb1b8b7805fb9805a27352d359d0722da72df94fe190a69c622e16d8896b227088bafc1d0ae5fd20c28e4aa37656bb0e8a479e5d4e523dc1d95035595c786e300fe1328175363da585ebbcd67ff11b4be665899c9d38629cf6d045c3573ab879de580bcb0bc20364d2030f541308f9f91b662d4965bf9c14b907a65c7b5eb1f3ac7918852e342e7e826a5b4762b73a5b09e5a9676225e873ddd2a04dd31a959fbcd929047ab7dac75249e3f0934f1e4a5612562f3e2aab6f5598c4efdd48bfc30c7994e710b18e64c9301131382a7875a0b3d9ade8aa0e8d0087211663124f9bed9f08fedf159c5905349a66820d129a948172ad626baeb38b95a3c7c31b009998562f5daac93ed6427e9506caaa77b777e65e610f4d5db0c1d643414af14f6bc9df952c2006da2b6ea61ffd77221a3272067b765f0a8fc6b42fb6691c5dae03bc66bc17da5d4183c5d7da08f5c9f0fad6eff5f24b4b512a9aff6af08fc5f1d1fcc0fec600e98c3f6932caf3c78c7c9d27b220e6635f6b499edc35c7fd9425a5ee081f994c0f0717a50d8aa176f7004899881ad23463829cef470ac99c3a22228862562ee01b6d83c1bc73ea6585f1d3700dfdac9c33bee274e4c9358a79bc203210fa738100a5b3fdd76e20220a232ce421fecb15bbe9de7e14eea29fd4a87560cd81866d745e565346b4880283de400c1c759eeede880894fc8847ed4aec20a598df0ce206426197e4417c7c031d00370d921a3c42726021b447262a3ab9f4ad526c7a82528b5cd7ef5a5d682bdea86430b335340f78102046812df44fcee782c4fe9d8ee0a7344dd8339fa4789c09d18735e6c5c6dfe22fb3f8902f7192c0ccc904a3db971e7c06122c03f468283587e0539f28a83d9da66fe4d3bfba49c665e9d9830f7adec94cf6a6429c751fbf9e7f84112300cef17e7144e5fcfdeb546cd25231a5043ce17c3864bf48f4aa0d406105ecc80b5069fe83dfe71d3051fc64871bc0a38284c88c11964813ec3a1d40802a1f8bbf83ca5030d725ec8903d89a2b8e266a26d185d88ecdaa149f0d82870c517ce259e4caeb4bf723a67278fe1b3589c8e8dfd3f2026614374abc6b101dd0329cf1cfd436c6bda51f6e916cfa43bc1c1b9e58887fc2871af0ea5aa28adc3e189e0479e9fd2b73c57cddfaa48b6d67bc1dcd16a1f0efb62c0b25411793d45370d8e95d7c37d996c75627d7898301183ad7b89115ee90b8b560a2d8f570a0a94279f462b7b226add12b1f9adb6c64b5b78445a3a7b27f7017beef7c2aa6dabaad1e0b521c580e67f6dd67efdbe5503e6b2024f62679249e3c175e50495fe6fc27824b3084874f6e8cb4f9f6a218b9e0759ed0668a62e6c96a573d74363ea6f9f636493668f6abbf2aec015c60451e27105b3f65539035a4a1fcce594ab155cc55c0fb3ac2418c683273370803a4636b37fc792b8c1dc0362434bf28cc7ffa381cb1f1a651cdadf17d6912139f5fc4bd90d2cf9c45932c2286b666d0bfe7bb0e6906091c62b1fd9f5d0b8a6cf1df39a8717937796186709c356513d1038db840c54cd728dc432fb71aed00b7af47827f04f82ff1531cd8210d49b5de4b3b500b0e05370cd4f7b42b807f40309660d547e6e1255b491278598f8ab87de084c89911b73b06d1b7be819506e7829c025c84611c3dd01b3fcfb99eadc6f3cf8a9c50436995b8169c67c6a68a3b95dfae6a5200dbdb245bf410c20938f3ba2b65350a842ef97d40ec411a5dacb2383d3b43ec37b0f0a5ff7fec23f0221d2f5bb314e465ba498a39d94e976d9f7ed4f1efed6f8f61d403a576f354fb7530ebc9eb3f1df7fa96c60fc4824d8f1b5240befc103b2f039ded1ba860eea33a616ae589d16d40bdeb872b016fb186ccd59d4f139ef0bffe3c34fb9a04107a6f420492e18b62fa322c0c57992ef51e0d6a321174941559546e5cd9780604edfff0e8d046d03109e82118a77fe5f7ccf5afcdd0d84ceac125f9797bb8c9d20daa2e0e7397a10b46f06677bb4204524252c557e11657a1c7bf3141e161c86a7e62083a04ac24e9110a15d57946b5fbc62341e84dfe515cbd5870b64fbd9ffd373223f17e662d4c50ad7dd838493fc5982eaf1431385cb019a6897494048577ea34b1040427c6724d60a8c840821d5fcabf28aace940664de96888ccc2052601de96cdd46039edae7ffa5646d40d3f764c3444aaca3b29bc4b463ab05df70544a585f2aa24fbe3e3f8efa3414486e211f935e01b7aab34904dfdcb17ac98e94c6942ab373446e89975d454198f41b80254a95c47d2fccac54d197b083136d694b824b1560037a4d37affc094f149e94080c3fada0d7754a3c842364b23e4888742fd1840776567147467ad38096cdd1f8cc4519a4640f9c774988aa80052b6ab17cbc72e46008a130fbcd3129ddbf4df12518e3001656e4007254966ed19c36ff1e740eb8f7340b930f74609dc781e1b1bdc1954ed513cac6321de7254cc120247848b67234936cf20d34ab198ab16624bd2b57e1b447cd1c53d4834eba00bd88579d94168542968eb94f760360e75ed3e3818c0a5c6345778f7e66c00b13ae42e95a4349471e4ec5785c26d625702e28cfa66ce395d88666b0531fe7ebeeb964b1ae93d1431bee7faeb33ae71e4a7d32f5e5a00c3b010ef1b723e14732288c3e53618bdd8d8fe6665df7bc463da592dc1df0143a9a0267796f309c0520aaeddfe29d97680ad027670b61ce4365b22d4d3d04f843fe2ac60f50953036c794171fb1366ddee3913f6b395713cf32c933d233e3f6a294d215fe3d9bfcdf5782ebe62937b4f1ab0cb85e3189dda6052f382611b1c079bfaac55e83887aa7c15a25482c55f535b249a425f2d50f3a716a0f92114eced0c1b1a796b6fd9eb44a913d581a78f45f35045405941c96cf4271e0f8119e34f9c0ea94ef55bab6b76185859adc146c672490a0bf1ccd1479a01cc134db6c2b5044ed962945c590a5e92203afce8ed06b6d73fc67cd51a712262eaeab6ff9d6701ec8652a36e7a5e7bf0a047540ddda839dc9d199cf8ac5cf12a8fc81e2d2596fb3497f5067e996caef31f1a69736b8329760e411a1b52ba89eaa318c85f9642116298637376b5be647f71fdac8e34406e29a122c806224e5b4b0da612086bcaec4b4b2fdaae5d5d2a3a31eaba0762a1f688eb347518f06be55b502017055a7e565b28fc8823a86c1031b89a18d653feacd33a2876c3407df3ebdd8136f58ca24f3eab313fdd3e37cdfe8de5eacf2fc7938e711d9052cc3ae9cb2034f180e237247e7a59f0ac775ef3e60dfc0c2d7125c8e9bdb2589935f1aee89217f2edc786d3367fcc6787057b1d1163adae0ef04d26b21333d8b1ee73a95dfc146312b15b9588cb3ed2ca98d0e840a524435edacc2e24ce85a8952b21ecf20e4faf7ea650b6aa4c3a5584f620a50da813687a909e1c9f55f3a08419364f5075fe0b45e26e6b135d37a67df4d03f4547eb7af46bae6d411afa43697a0fbd17025f1ffd0635c93efca057d55044a2a4e6952b138575cc0d01b00389bcec6007077a2a9596845ea316a3c39b8dd4ca2be7d176d95ea92cc6fd302adc9b763c4f78c45a9102b67c07ddddf432641d8bf0f380b3eeb174c6e35ebe6ba1ff16eefc997c371bdece351a2b2954073e9d8c56b7a1b48bf9088bfae447e718e9c86a84bb54df27033acdbdd3e85c6f3e8d9e06ff41732b70da52111ca9d7b4ce739cd585b0c048c9d0db8a646cb604d2c84c98dba52e1e209d137c3bf8a287f9d3ada5d3fa621fd9ea93dfa35892c8c5db090ee53abdabc4ca49342a1e173389ded4880da6fe964796aff7c3c76762f80d9bebfe98c95d64cb7e19197adfa8d6aff209797475b3cea9dd0c00cb8a57f613a3ff9da3c51168c45cadf4766e6d549383fabc5866ae4fd882b94889637e2e980277928afac89360df4f99779a753566493f704c66b46a7697205a5c7e3413a128f5f5e8570b7c44adacad46fcb61a4321d46354c4accd3132d1a127b74b48c9c6d267e9f33bffb4e188468215365b3914922248534801d04fd7cc14a54d3a560298ee9a69e2a78642b790bf97d00de773ced9e21711be0e9bb7db057a0b54fbc7b1238b01ea91b4f28d4dcace38e488b60fd63c917523e830db16bd9b134a63c162b383d5190b56bc863c4230f5eb1f96e4ee1a4bfe2b61e6095280022eee16aac2c6adc375686112025a491ef51695674ef4a39394e36d73739855e5d5b8f83f5f68d47de9a2fa79dd7de540e2d1cdbd65c470ac2960eee02174c31b4d01d9765385e7aaef2090b82c42c1d8e6eae1b482006dd3bc265e8776d197d86081c6456dd8a35c828f31f6ca72dff5193dffb548b91162bc6b269e5b86e563377cd1c668b2faa55504c3abd7bda2e9ef0564027c8561722f5d90261f50f54a886f16fd1acef0c37015bf9dc4c0d38c6e496673b47ce15b943741bc5f79ede65b9bd6f5592a7bdb8b70adea541aa917836db3d110bcf9a65e57ddda472f132960b70c6315b28dc883c24774a863c382be77b9c85f56176e5197d6ec7ee8c319df9b08f6fd654d3306c3d38984890886c76bf9b810b160dc0a245034364d73faeb0b10b4da28b0217d57b36774a2b17285a28d9021abde5468f4e0c8f70d6ca6fbffd877785f76a9de5d8a97b22dd4ff38ebf426bd200349af312db8ee6def5e00e7e069ef576b2dbfd933f16a6f051bd1bcc65428ace4dc74aa596ca4f80bcf00234cd6a430c523ce1e4d4a7f7d0a1b585bce941e18b1076871a56a590cf5ea83d489080c0fc8415a6226fffaa78a9e46a5876e730fc3fd902b4095d4dcc73bf8af29b1437b48fc4a57d0f3322fba392464cb22e04931e26cadd7757eaf36881ccf92b2dd24ab4780d283698cb95b8a564eec6f15cb4db829aa699ac6c17d60fc58df4f9273aa7e441403a170023d3d1bb3811eae2c871927c3606392452c0a28b49b12bcb2373ab2aaa2ddbfa578cf88f4a42dc52a6c9a4cd05ef72b9c1c0276aee15d9e9911d2b7699731e8e81d8746d44a12047b0c93ede7237c23df7add21af63cfc05ed05935bf240e086300d1ecbdfbf9647d116566d35ac902fd1135eabfe92a6037e0784e917ff3c800e8f5aeca76fbf74da8ef8df930db455fe5e82e87e16cdcedb06f2d40d9567f4f55b22ffed6f77457479bf1d499953de5488a0dae2f68445fe80cb66c9e3bf4bd28d4a08741fd582e9d36739a303091497d1233f74ef172be160290087a7e4383ec0df402781d4a564e6d010c56b34357516a787fa3de699d77dc634c4c0a3f26163263e3388ff91f312c55d01db23a81cbb1ee8d0ff7d74e53b38c7edbb83b69a516ebee95105cdd1ece61bba5f0f4b383ba98728cec83e771c2b3a498fd9f0f31c25d82279e6979fa3029b600930f0489c7e22016c54a6bbcae6ae48cde21c1b94219b8e25069d2e4a1677a83dcb37c0b7114cfe7b2ae27abce505518a21265c9c0cf78af27ebec3fd849c3d8ddff10c95b549c366852725924e4cadd246c3823034dd8e69f92480ed6b9392951137a151bc9e5c5b2c824a117edc6ab63621bf9d17b89ba880af5136fbc040f32ae7024edf8c6031dcdb1b6f749b0dfc0ddd0ddee898a20f9ae06f909a903a9b4c8c1bc4f0705cd44da022ed28fdff0c557eb61373e1f9a20e5de4dc558eb668ef1d8563a588422eca32114c678eefdc56f5ed2e3107e2b1be7251b8dd92e6b9560bf77c97207a8088b25b8016105c9eabadcfd0dbaeb55663ff137382e30f0cb3ccce242cfd081371cb01d2facd635671b8eb67d2f15e363bfdb54612a1969dc93fb635d13a53d8c608ed2dfce0e8c1e62835e1ab2515cace8aad91b67dd7950927fa5a54f3cabbd4b0066aeec0c5a871afad924395bf8168278874096a45fe6d472eb4bf448115ea1ed7bc181c0a017234aa8e52bae424c2991c872a304dc663fa9c4c9f6adc831964d6851ce0c5c635117355d635922624884d5953802c9b9fff9b205bacf784e121bc2c9bbf1f36c5c0dfe5ad8ff70bdb07c87ef7caf4f73a47ea7e9a3ed64c57157f485b68cdf48c5c26dcdc2fb2b920cf7017c36d033b69e92045119eef12588199af924b8d675260c702ef443e4c5169b442e7d3a8500f50f362e072d50023c10a339aaee92151235b40c7f1b94361d78b6d36a5d30c0ac207768bc398a57e03d979d68c6a2cfb546e0a392bc9ee6d7e691a446e13ea821600c0fb29936d8b33392e9cc6db6a8c2053724b4394b2570861b57f94d348caed280870829d7c1d803882264f2aff3e04d512024d2e2460ccc5e86175b1bfc5c72776b4da48688529e21ab56c203b7b2cfa928ba353d01151d8983aa4c391546a7903512a0fa6c8c778140b427f0afb6fb7a64ab45428c1e899f233bcb648d89be4c8dd796b1ddc65d3ff4fb6dc349d292d012f8ec566f16e587c680e73feb1742642bc8c279018ab7e09941e9c9584e76b49709c155260453a0867cec267281801d141a60d57cb3eb132c09a11935ac3a0869a5e17c771302e58c0557bcc2748991802789b4f92a6bfec2af5a7622350fc783af6790b9776279053f496d6ee889a2d9efce960b3486ee83899695b6e9d55940b37d8f50ea0e247e512a591d73128e2ac1e1512e39ee8fb0e13aa88309d64d44657128f536816745814f450099b2c573f2067135ca2051e6102f981ee15018c24458e5be465bad8dd0b45d2ebda12d18b716366a1ec59eee8155b161e9147be59497798237ebd47b840a81a710419e172d5dc7173add170cbb34443ff64985cc7d92b0250cf76732511bc6a323caf76c3d47211ba568e2c26924ff0b48691adcea7564d20685fa02d12585672728a848fb8e503472dab25bd646ead80cd0b2b720c7996d912c5302358002aa5a5ab063fc0a26c89cbe903f51b91a23ba13be1b48dea581c8c398e8d71c8df15be088c16ec853cf09561b49ec85229aaf58edd973b4d9a635079608a6d06d104de5bb2a06c97baf92008d4f71f3a7cca04086edcfc8c6929b6b7df2abeb324611d9dd05aff1cee5629819f45539a0905d1d28e1ccb9b9637455aa3f6fc4750f2aaec2052256a5d81149aa8204545e02a048a366babcc5a76eded0ac7182522e2ded3a60c590b4473a531754551c071faa67a1676205a041f318b0b38aa7e9c147b28bd7222066e415adb190fd008b5d19e613b53ac91504d298f0d2dbb4a3132772e3e2ce5a4df673d69524ee8f7225421224e975552755698e17dee46a977fce4974b0c5530d42e1e60415463979c176b61e283a9098965fa71b735b3ea3beeb0b3b756389ab7bbf847035b315289c66289c45d06c575c570633c1540674de816173ed11a908fb912d9e83e286f4fc2365367711480365f48e8f6dffeb0ca276079e0b347b97f0d7b06938399b74297b2b83742856b9a92cd5d2352300f65caa1071f0c81321c9a4b63a03b6cd680d0adba7435f87495bee0a56ed306e61fb19de7aef7774072025268cf356d86e096f6d5b843500ed308f7d8bfed371b225677cb5153fc92ee7b5dce3fc1f3d3b4554ec4b3ce35c33d5ac741658ab0eba8e5cafe7dfa6c51813685c0d04ef01de54137b31da0d247ecebf5077d298d91f71387ecd6683ad8656c6535b21ed3f51024061b5901aa9e7978e389cf91725253c23675cae613df9cd4735c500380bfb8a5f710654239cd61079571aab7af7566ea0438a17e7dcc07f9668704ba6b753ad7dd8f349b2c78c59e2b877f3c9f267d1a19f1da8853551e784d7ba8ab8d9501d90d03d5c40592288fb8d08f9e99bc21b2c2962ee47ae638c743edb803c91b54272d3486a80e306c3f77468f63fe1a3b71b8d881a7d0164bfc0df007e4ce7275e2fd09191cf67d975da40fe637d2adede21188ac46285c55a4b7f76fb076c83c387baf8ee402cac4963e662a0e71b6ffa54c35fbd43cc548b1d89454670a177228b1f08062e4650025f9d0ff5c24ae1c969b754b2137634041cde78326b7d003aace40d89546cceca7eadcf1fad7372e86664e5d3e72b53c3829a8ef2e9a473624a51aad18f72f47dabb7190ed7328b7c0e1dcc92955c320a614498b91cb20f8b6dd5841f89fb0b12d5d5587d302cb57f4e9130708ca6e35f430e15b02a0e33070f088b43a483c2e46cbf049ba28bd98b98bddeaa398e1a893306921d4cc5ebb625eb54abea91cb3e99b874a2948afc218c285863d6212cff9f17d61f6f2db2303a6b9490080698cd6110518065be4fb9671db42cd1f9b08ed5ac79a16e565c03945a2a110b95ff8b71e7c9d867e1e35dfc8fd046fd10fa91055ef6d787cb394f8ce6f2c8bd2e0576ad843b363e61f3ae3f23f8b518b59d3909f17343c6bbc42607fb4bbdf3f4080d69b01e0f6a5422b3d9e4440ec88bd9f6749e92a163598e1138504b4a601108ad1dfb92e5fe52a606b802bff5be40112de8e81395c2007e16235cbf2626df0c43610d4af53ade0fec3a7f43c9f384970e55745206db6b24d47521f6f87798bb797d7b440595810af44f69f2f70985846fd662cc963870f5928387ed687059f0f46cbae0fbc4c768b83d66adcd4efbd31b8dfc90f3c1aeb03babe4c770d0eeb77d86eee3e5e39c09cf244021ad0bce4811b5c1e0cf2da28213091c019050ad12a2d72f9dc147d87d971a638b448ae0ca7619e1863338123e45d1c50204ba8e855b2020c3d8b9ce6ac0dfb67a0d595826974ac2688ffa95d54470eba4c02e800666d075fd93e58440ffb4423ce80717d148c96abbd1b053fc4a897c1d078dffe802746c03fc7c96d81269e4eb4019ba4fca39c74fe77393b45e5ce9e6a2de876b7a8eb55e810ea55ecbfbc1ddca3d9ae89986c63d134360dedbf1fa44c55dad5db7ac3b8b5cfbf9873f0a07615d77918c166892546eb3a5b1a796b850440a10492beed0ab99ee467426f0d317a82bcb4128dd80d7356dba2691ad0b28473dc91c83d74f864eb70bc2bb6d3de59e9c928d2688f6f3c0661eaa7ef7a6f71fffe4f1a7a55a6f361d8b7d793b945971f95711326fc743fcd38f63d57036ce9e4adf4b41197bab3126b4296f4de989c2dc3dc8c8daafc5f17a412d6fbaadeba48065a091bd684f906184adb4e315d93e3db9308770d2bc821f3eb23be44741d42bd6d18f02dcfcdbda30626a92f31ef5630b1b949949fb7c11db28b5032bad9d9c222e7fc56a445edffae3b246763e14099dfd48b659bd15a01635af9d4911f18fb1dfbde04780f5be4cb11b3f2e4e79a77d7f29edf2a90808d47ac55ef816df6727a7037429f141a501e12b1f533c63335b24ac5e99c41531210b9713977e021c5d1cf65dd4fc0f449c353ccc81fca099dc963c63fdec497e5ae04434c194aa1e4ebb0fc8df499b8202b01543c7d5eb7d7743ab3f2d8a976693f7ae127be3f9716f1204341d3df3a8026da9e7f87936c26d44b38b41b742ead6c1f5e3024babd1f1ca938be40cbbffb1b8477cc145bce0f553c719a6e57d887befa262ef9bfcb8a42f2c9fb0962a9516c80f5da363c2895ee36aad015ec2202c48007d878a6fdefc17a92a06241d791e2245d71b038c89a04e32ec1e5bdf92173fb0e605b269e6c2f91ea09ea22c5d1cd70804c3b105ece0ffc01e223d1541184beeb48357f3c433ee41d0750fe05e6114d5f0f4d1deaf1064ff53142f3ee0032ec0dbc474767c83bd479c34d0da3672e3939d129daa0a4bb442d4d3edff992d333a6af03ed25fbe855db8ba3a0719dc987f5eeb9c75c1aabccc780f8984683de21bf1e9cfe239faa408c3583be0516aee48c8d5c7fa4f9a98430ed27012dc70a1fd9a52551c1c190b9bc01c224b22448cc4e9507657f20962c2c23ac8b51d954fec1654dc09eba9cb01036ceca5ee20b2357a63fd7ff8da443a16f5e959d2349095e3993fef3f44e53e73a0c26bf7477c14c2d5ce3a7b30fecbe981e99189ab01f73cace1b813bc3628ca51e03b83ed1756c4513b30cd498df9de8cbbd0d469306a1e9c66d558eca30f5704f8744514e183cc97e3d7d044c5934fbeefa801fd93d096cb5cc06908b66c359ae37f7effdd96176db043b360db80b90de55fa03894a202eec99d9a0612cdb6a7bfeaad8431e82105eaf606ebd3945032570221ee7e45a6f2e7b530cca22f68479cc219df487a1d77916388dbe07b9c8d7734b2a836e483a5b09bda30b537532db6d2f4e1bbacdb8479aab4dde79058c38a851c0565361bd62510a4fcb56d58bcb6f5685a2f61044ba6942ee774b44092d2c5422d3c9d039a58f427fd561e4cd390f3b8b38c11bc8003fe8fd4719ad6c48c3268f42593e01da089eae6f711383fbc61761d452f9b3cccc6416397ff03b86f947883f1cb1662cee1407b25f1f0a1a9335c3ce0643e447e66f57ec473849a0ffadda9a78e6adb25f588330321667b3f80782a6aa5e5cdfd9e2eaaad0a9c848c235671648092eaf220c678313433497c68ecae7690596eb413f16327de9e23c657dcca300b4833443b272c4c6ed0fd1b2a75d40c18574bd31d34f37d58deede5e1ff8a1baab5b2345ab2d5094bb2ec7a2246df2258ea5352a44664238e093ea43eb0f0e64b13a278fdd185b9c102d452e64dce8eb0c7f25263bf14d393b23617fcb7541d84d4311f10a3b82aeba69a1a3ba59f012d73c68ac8c79a6cffa4a1e64dc53fe2847cadf5dd430dfdf706fc62b026bd2459ae3ddedd4f27fa0337442fd5a8ac8ba84cd5922d4f3f021c1467b542a82addc49439f677ce3bdceb2aef021f9149a3c607af8468bae8017efbd04c0c4ad5bcdb74a88acdeff6ede0c7d9aa1562f9f2b4093ced1a8aa22b7d135ed62d7da7ab2b5a7d0fc65e8a813d4eb8c919a9c6ff1d9e38173baafd81d23856c5711aaedae38427eaf00029c4d3e205f77ebb43f526cf7900146ef3ec3e345c4c75d50b317e9336ae467465c7ec33889551c7be6a4fe22de61075a6220592e6bb669a1b913caa11f03b1899e5f8904df24f7799038ac3e1f07008b75af354ea698174d13bcc0b013b8299185fa82f218ce21fbd0575513f2f71fa98475f5d87bf7a5ef7ad2a36fc083f8b92fe84118118e45d4ac394da8b8a98fbeff3d427ce27e1eb0d7f6279b92574ddc9b777b85571c84ede1722a0d52b75121a7a984c246d9af1e28bec6e8f9d5c2a7bd02193ebe8697b6d86bdcde90acb8f20e8d7356676e2cdbf66c307b235ec96052dbb1c4c08bac82350592ecfd812f4b0ebc1d7bae6619718b902aa5c1cac236bf4b1dec45afdb87ef208ac2f6c2ba8e1656ffde90bb3ba437bbce0f14c26d22ef66db7d357a5fb584338ce19d19aa74b7e3f4a759af2520b98441eb690846e6ac80fae85ad67e04af2cba3465ed200c2863e46fe704166637d067fc12228fd001e29045c1ccb79a85d710999db2ea8affa4dec6680fc126e9fe9ce147e952fb990f2d6b86f84a4d39a17c5ef1a6e78d0453ee095abf31a352af66c84c30b8dffee54509ec1ed4cb01bf619b8057c1183a6697aa14f477ecb37fb4595d233bd1b9369f8c3d784dbc8adacaa18d7cb7d37aef8d1835535a517dcfc33daf49f656c2f8838ad771758a7af692a19a63f21a250316af2d67d6f4bfeb2e74dede0c5faf15d43d6fb2dd429b48e8781230071507f6fc08c90d47979e6e1a591762694a9eda5f2db57f2cd8019dac3b6bf44a9cf80d853532dbd5c7ec4cf35cc248c5982d884a99529ef90e14ddf2c2d4d421c7955bcc8dda82c9430213b3eadd8c87ccb5175493bc0199dba4e2919ba80b684c889587304b7e66336a504d9e340925e0fa08d2dafda76e645ac2355d36bab5eb80f30696ed5d9fed77c3f6e61f32e2d5f610623f87fee4107b3b3d84ca710aa1ee24980fc971d6e40b290d074a33e376c73de6dc4f35be62dc1577dd15fa9ec003d0c5e746b61b5d976b343333e84e9182ac787f0284516d11bfae2e549b2865f64c2dfc3c2a260fdb31e7792d506057d05d38b0654b31541fcdc72b4d63f8841043ce49963a05562964d8e14df8697d81a03907e2be3be757758acb5454cb77970a59934ac40fbef8e714a1e5941b278c584efef506a6faa3e6d0bbc3b099d5264956e5bf2aae6bbfa62f3137ab56d00f76b0ef581d477b06c9774e1bff4a584cc9b2141226030a7a0429de422b60259a85e075ce2fd7c31be40bb68a620260b751d682235541f8d72f90c0a41c14b4da9132cfc4726f367691ee7de96f991c7069fc5f85f1ae6f4f51dfc3f1f6751fdf1b9afd910027282fcc433d2d6fafac3a5a9daa44bdfabe3355b80594c207457458e82179b1e1657cf36bc208acd29df60e27129fc5ea8f544043483298d52b49c45bf79e8183092c434df950f042d49fa7860dd7d5289cf3ae4898d2e7a7166207c31c661879cb3515292101f13b8eb6b482c6546225e20e4ecf4952831631c1f55ceac33268b84a0a70a21bb2b3a6537cce6f4e360649f525b59443fe4e0a01c3eb9ce55e7d9f37dc24eac79b11f3f75ff2771edd6378335e4aa6affc16cb6c77a38e94b7b2506fae3ee1298859246664bc9efab193c17ebcc69eb777534086cce5b173a6cb89c3e736ffed00ab1f5747c92dee631ee258672dbbb61739eb8e81006f5a4a7c46f5d892a539ba6d3a09172c324fee35e4de6f927a7e68036e5fcc06bb4b105f2ecf431c64ceddc38b6d23d988bf92f7cb27aaff5d2aaf9025d1ac00ca9a2bee4e0e90d0fb8a26abb2cdaf72cf774cacbea311d13c0903a6d21c2ad8b4930cb4f49d426931a5132711b10d80c7e4858ab5e064c4e6c78f27488db9e3fb59a9a4cba68f2c374c77a1b3b30f069ebdf278842b410ba2c6a5d67496354cf92c4a68fd4528c53f9eb813b46f83221c83741dde6573b88470dea0ce83e53c73e0fd5d64fdbb1c180a6996ed5017990273755ad86848f50268d1523b7fd78d17645db8b5da2585e62ec837d4b79bc444882fa0b8512a0d1b38ee59ae4f1c95185cd808814f8c197c4136ccb5357b2495ab681ef94cfa134625eb8ccd48909c76d6c5db7ee30981e6c4cc913d37e186504d277297a04d3828bcfb16868c00dd830e507967f0a78d08301fe50ce783df7f36850fbe7dc2415725760acbc0c69dd037ae9f7c241b4c510e416a98886876248b5eebbb2e97e42293beb640076904fdd0850e34222dd9b9294410d6e271af1139f120b2145e73b785614e33e59a7aa0a8d44e91668f5a5fcf98a9e7e98217c81c0ce48e19bad6ef68a6fd39e28ef76da75c26562664008c484118d20fdfd9068d862935bc950ce5888622553d56022794f00445559e8c5d139f97c90a225d0ca1bfc9bc54d52c83af02809eb21fd07f281f3c0f1025f6ac92a5d8278ac81149c7954857bd318ecd57e90597bc89486f591e60910d85d0de0db56b1e4e34b9f8081e2200c59292fd95a1ea146999fa4aba535fd54efbaff1ac61343cda1e4d8560aa6648865c12e7d21f30a099d1da1e5ba05c7a2425dee883d115de901ec14a04f0f1d1d1829b3da25d63dc3742a3af515c089080e8ff015d61646300b2c53ed501e73f8576502a9704d3bea629f249e81af78ee9e4090f257f9cd826d9aec1689ecfa9a59df70a99dc8563c35eac4c935f68a7f7aaa17469eba65e5ae099e4bcb0dff6caddda33f5ec971cde84594d6e3d6a61baa195f70e5c26340a9575a4839955fa3c7cb76d9bc879cfc29cda6973395c270312bf86b6020d0ad5fc64007a3fe5913c0d48d453c5827c959a796cdbf39102d9481508e9b7e56d6a499debd8493fc8b592602fb2853c2ef9a61b215cdce97b004f2f6541adfa596645d6715ac84b1b11226709f636202b0499a0c5014bbacb1a7ee439747b9712c655a9ab43d86ff7f6d36d471e4cef68ff76000d6fbeccef93616a3a1066748013cd47da8f0c83694b2ecb81faebb619cdc43ac146c0aa3980e86f29c2e5ab99542c47ca0e29acb79795d4ae50821965e02eb4bebff4e9aaebf83bcc9696d16c8d9f07e9d22ac7cf513a6606b115197348dad63afc7d507288c4a6bc6d60b20b2d892a556e491d37cfdc9fd2d84f888438dc794cf10480fda3a3348747d1bbf936d13878ada582988e814a80d1d799b2373835098443d3908c8efd124998ad00c4cbefa4a24382d97bc1db9f2dcd44a7674559e3136323c747e2413b27a6f1f1caeebd89e7f83ce6282c4e387b75aa03b68e6f22d33c7fd6a7afdd30be7743df6e983e755aa6ab5e68cb2cd196df3b4a695f38f744fdd3dd3bf253dac9a0da620266a4d75a698e46782fd89c61cb328540c225f3387eac5c4766f81c4796e808854251f23b20b663b1a448a1366b6512f67bb9fb34b62f64716b6d393cc22253883c71d2610618e188e191668a5326bc7c6f5ae7213f198974f341e2c396ea3235d5c1f4b4ecfa9bca11707cde36681d404e31598f6b49b18024e4787606d3cab19c50e6079efe977e0aa28677feb22112d58e0a0f8cfd6f1ce3b4de238cfbc6589623c1ddaa2278913496c89265d0d9ee1ad3d12680ea71fb0f1297b024d8994a10f5e836260f0c9a88616a60748cee6df7c2903e27c466e595d6dce247bcb4ac9704cc590744b70b29142d4def8e9e269f4122c006a1d41ab58ef1968cce203e523e5c69abd64fbb1896c226b488818f04af166685fc2c9ebf6862504b316725e0d4ba8e97c24fc9b59ceca725be15d05d408b4f3d904475672b039b30c54755b6a8d9a7522b1df8400ea3ac02284df813f02f73d7ca4e9150152bb17842b71b125575e54e373addabdd3854d203d27d75e9dec2af2447828b1930910382be7d46975ced8cad5e02da70798caddeff8e19b7e3800e5e530ffc9196136ee834772af3f9e143b29efa793849fe78ab6c862b316ee482740980c3bb4cfe41e55274c8173c925daf19faf6b0eb4b3953c20685687d0ff8a92e0f8f0bd3b168538b6d5299bf0d3a132ff0e1a76a55c0be075d64acb95678a8fb61b705f1a3e411e9dee69a9e2ac5cea3cc30e39ce17de8026dc78f7fb8da4379195605c512fdf2d9577ad8ad72edf5f80c392fd2d5552e0d146390938c1a259d8780067ae8fed0bbf82de56a1a6a60ff10f91eb081ce770dfdb5d0c2829a6b9f12ef298e8b12d2a320fd424a20f580c2f10c9be312e125d82c8888079d233949ae17bf8154652b4e447117545685a9bdd6af288764be0407b8d20d5c05ffc2bec2b84d156fa2ff7d2e9fb554c792f4fd96ab7673dca13b78685d14888bcc96dce5a40f0a5be505f3f8ece3348a47f3548e05e5539cb029740013c4777eeaae0d8da2c730ccba1bc2461f36be7ccb0a90b015fdca9fea1853a692cbca568824402656624f58a2edb1c20e7779d234411e300611bb7f6ffe96dceb6dbffb10052d9eb866c3945f2ced226a15e9d20efa10e432473a96ba1a4b2c4ccc7c70effabd587c6390ffe4fb293222e0a7dc8b2a78a2d2d02caf338dd93985fe6b01a4447c1635d65811212454a18c457eb192c59da58cb9229ae2c84e98fab9438a15cb294de9ed1721ba4ef39cb9161d39b99696775abdd9df49f44384426ec865884d5d214fc8e9352533c27d562e2dcdfd4de91c05a4703b416a8667e79d9a1b16d41fc52109ff2ee28c731de9f2dd580caf230de6f24b4becd8fe3e6fad195e68616b9f0a7310d19123639d47518edbf3b4f581f1a3554a6aba852ffe18aa38d24467dbf619685db3a63642be2d8d72a16d411d4c15cfeb269e357c9dc937522868ca959d99d5e666e5a83650df92c43f747bc387ef7ddb939bd1d01a73271de5ed9effecc7892189b90b47c188a7fcae550726e928be40f8c05af4ca41bfded3cfe99cabe51b2a045351f97fa100f7e2b6fa823cbc76bcfcc96f6ef147c48e19daaea8ff312516b1e781b9229117c5591fd02a1c71ecdc11dd2e94f9a9fa5b9f93e214ea8018cb73c988276fb0b26f074b0369dd79cb6a02a78040edb13752aa41731d9fbaef0eaee12948bf60990206cc73d1843396319d878507419cd87a2022d4748b19e7d466d0c8053f348c5b55420805350ca9309b01d919a129a2fc58ad1a2b5e46f416425c4e6ba94b320d41f2c9611bef5076f280354ef661acf7554dac83ccb9ee0cde22f2c3da5bba002792671757991c790ce98d2c5256f951870e3520916b4ce96660df6638988493db412b5d6074cd08aeb1b79d4e975e20f16b27c561e54f4d6346583b725c6c00781dd8c48d14e70f68eeac604c7aed609cc6684e1442480357bca39eb3349bc5358a0b31cab6fe1b38f805c806d7cc35fb5b66b1b068c7dd3a0a0f56e7140da53139a2e4c926739454254d3f877a9290c78c3040343203310394d2e1558cd97ed6615a65de54461132b7c7f9fb6bbecac1a36ab74b6b98603d1f3836034158ab55d3b3cb98e8a756286103384ad3bb7b5f04c5a9741781cfa6bddec58918e1ffdf6485ad2a318b65ae2cc7d48223ec5dfe127d2c35334a663ff1741e0df151c3c93bf9d160d939603757adb75bcfc98d954b76817efae0c442cda7d19ec355c0c4953ec01341b6c84966b293ec4d2223b46289f7b6ff38555cbf0c6967bab2ef2de9e0f00a54b0cd2390a50efcdb1ebb7cfe26d4776985d8b7866e004526dbf6660f4f3cc5def329651edfede3eac1961ef339041c6776a71b2e588de33c89332bfabb6ac6a3e04f73c21cdfc8c9c6a4803a19ec50c9851e849b56d3d9f902356a5a4792d2ea8276f2cd58577fb19d5c45160ee11898125a38f9641ff57849d20cc11125185afc02b660f6779604bce6fd6a20713035d26f21fd190fe5495b17783b9aef557c94817f91758be1e23751a217ca70059bff1f19c74f7367ae8650ebc8029fbc3e65d91a67d59c18c83def06017e3b210d916fa06dfa1b4998774f723496fcbe720758d570b0dd6b775be3df01157424b654cf4c3a000f5429ebe5b71fb51396a35c9b67ed9647a5a644dabd3265ee7c9122f3dab1574609c7a73667e39e0aabbaa66da70cf7388b7486daf78f1f425a433b08c17925141898925393eca14cdde18ead71218026f0114911b6bd7dfad5a1e3676fe120b245136d960df7a5ddd8f5de547ce92482d54d79539baf0308908cb24b0dd45d2b72cca72fbef2c5dbeab4c7a85b7a18437bce4305cb2f0ed56d1aa0a5c207c28c5e1909ed17972af9141dee4419bfe474ba583ee1db1af819efa0f67351c1d92fec05e123ba1c50372a1a0ff98c018400b218048480ab23e230504afa6492603257ca6521c188936c1f00ab20580f5d1d41cbedbc9d68fe23bce923239d28b68f32ec6a66801b3168a2c624271c46fc659b9d4c3c20f7ec740b8cdff8cf7880dedeb91fdbcd2bc4adc9a0643144e3791fc3e3ed3d34bb665900746e44a79f3a7d6e2003ff6e32ec6dc16a5670ed8e51d6137b7bd10071ca15396b0936c73e418d1aca3009430e174ae4662e3ca16b3b4718495382198deff61f95c85b132fc87f47bcf039f4ce449c4ef1899875d79d72549b95b3239ab5c428eab4042bc8ac92ef7f6aee0a0ad2b0829bc1340a2f80570a96bd9aac1270910fad84c489ef3024602a7fb4cd61dc412a583f025058db5de3ad5092c3b185e8ed8388a7db3e0aee93bce36456aa45c92ece2babc703ed5d3cd5427460d7dc6e8abcd3038686e2a8137273c61302aa579a3a0c28c651cce12d8a15ad17c52ac2d03c27423e9379932de4603010f68a31c491ad979c1b1f787df8f839d0607d6bd4f3993a689d58566e93642db1c9038a07bd1434284697c58cd7f62c88a8241c7ea5c376c5ffc78ec4f0782077a15891116a6c79dc711c7176609df563f10446deb842023882e24753c7b13a3064e57df2669004a98477a8e35cbd9a31f4d6066a1571d05f17c73c95756dc752d58f0f4c8fec9be12da06a632d4e595796503ca5d296c2dba66fa05fee2e41b20bd7fc68ff1632d8a470f12a4cc9da2e3b1d70adfc47efa9780f23b66897d8b8d73f16b84eb0773dade948188d738b0df1bca812db4cbf5efac9457e1c6090353656cbce8ac335149425ac882101851ed93c93c912d44f62d9176a88dda3250554c0d913013b30dbc45a37749093e8f6d4f8641484846318aebc00a0c8b9f331429a3dabe5f6c94a5b7cd2f24b5efd9c968c7a8787a16237d7e0666ac25dd9fedda13fb83b68631dac025e2b7dfb9767a9a00d67673012950c044417428948a7b389fd6528a475511da9c699b714a7cbdda363073fc8fab679f7c3019391e0552a1a2ca5201687f4291cab92e52cfcbd65f5fc6e99b3e414cb4c4474f025ffe148485787b26091ce0d153f9c941377c3bfa4266da14f5e26219c9eab185ac3e188f38a3a14e3523967e6ad2f645dfc6d618e4e50a7dbe0893d088369a50693e9887a8439f47099efd14a5073391b0634726f8ed1e55dba7ae89bd2cc69c65964e01343b2406a0cb44d45772ecac4154b8d365d9910d4ff4106033e7bb09370953fe834c352a24b9cf0216ce6cf054bf829cec264e056605bf01cd05f46b77f2686ab8f72dfc183926a6da320a6cbbf848aa95fec844036e3af7cb8ab7b6155986cd7703d7095340e5451236f552e576ea3fa81ffc8798f37eaa0a9ece3b963c8499596c5f2c27a584ea205c1cf2fddc2d5f25e8f8c74302e5bebea023e4d73d33bea1c6732bdc2997ecdd9de5b190f7c10986f01c5cd9f4b78f60011e50f77abdf41a6e1ea94ecce963d073036c1e4bbda285bd8e3a3cf27344df878ce79f792d52a9133bee11d2eccc94ae861b366f3f3cb751934d9e7ea74d0665a5385bedb09ddd096c782084b2d1b6f05553e0f390adcfa401bbdecc2eccef41c6a8f4cd62745020963d3dee7384b9af73026f27bc4311b54217b9f483390a967929d8d5cfaddf278c797e98861d857e2ea0ecbd041a9455e4eedcfea3cbd3231b3da4dcc8569d60f529a9a8bc1a2809573715d2b5092550c73cba236179e63c1784ca8705609b8b3de7ebc0103d96274e2e1d590d12c50e29d20473831c106f658a22a5d7c18617efb44b49bdd8663605b4f7ba684c110076c47a04dc25bcd81b7026f395aff0b7df3cf07d01b9820238b3bc26739bca59e321705cd90a048e5fa03549512bab502ace1da6c3346134c47ce9065255e866b868427e98f4817185513aa4ca35c3ef03327f36269108b295503350b39420baacb4165c16c53c517c3b78c866d30ed2e9a3f033eb546e906daf1349db77af720ffa2a865175b6a92a51b4f15e03e0615dac73d69235c86ae49a304c7518dab2c65aa841394afa528d069e9949c981aa4e0b8cdbdec04330bdb6cd745910741d3be91dc59207aa0073b8d4a80bc693c2360cb078ae385711769bab4c892ad7ca534ac840f843043e8f11a9153dfed83a880d51a3f215716a8acfddff90b8dacf0d4b36bc072a049b084e7109661e73a05f759243056ec27133af4c9b8c7d8fc4de5ee040d06aed06c2b7b592c12b2ab9ba7608a4b3385dfa26e54f937f401e8d8bb19028a98aab1925568cff768297b8f1297bfd506fd9f965d96abe8a6120b1860981f63204b9074e017add59ca0b749906510dfcba5974b41c0918ff236915982c2d37e7e531987bf6e69b6e129a95dabbff25d59894080fb3a6367d397b51618c71d772d405ac32b41d0fe979d188bea4193556c162b7a756cfe80c13248f60f7f6b886a299ae9a46976f54357fa01742cb7eaea63e4842b640fa300e7be6abd6ed70aa8ec9f12f266cdc354bbf9d6b8bbfd21a5f4973a7a5d208aa915c67e5b534790fc35bbf4286f6042187ad759ae130b0ed5805ecc845093001aeb412be26cd9fd46ec60e2cf3c8407dc95359c14f254f162854fe68a58a7de93c1b898610fb879971e7d000241db7bb1c9fd037d789ea861b2b11d569def1fd1de981023f92ba4a5fb46a565f7d8903375abdfbff6ce112acca558d99a236b32c9a1e4527b0f32a73c2dda5d05afaf1b3f5537dacacda01a0c241b6e4f182177b15814bb8ae25baeb44df9ec16130302a32b386c5c28da14e0d596c7a1598a48ff4f7c8a0381ef3fd89eb15d3d3c68ccc8ee29d60fb29622989096f064cda86fd28b30a79a09ad215007740cc5d6e7d77f546cc3fe4c25b37c6b56b73c603d144d383cfcd51fb069058b6a08831fea04e42a679da241f596a2565ea2082f1b7f98ae6fed532755720b36cf2a8d4c68e1ec75165af084465849b2cabc9710d3d1b8b60b88777e72396ca79e22a5e29c448f8ce0ee8c950533c9af3ee622db2224601980f4121683706836c85841569382470fe1432b052b8e47c8b0bacf8d9665737c7db53eb4ef3e56bb164c40d652e3855ec8b252dbd60c20bdf5e0709607afc6ffacb06c530d72e361a1f805f327aad1a90d5e1f7fa85d8413aed18b98b02334ecf72de04c5e5800d04c34b3910b7692bc1c4e0dea424e25022a4ff0bec25332bc0752abdb8e6a22361ae94bc69dd9e28a1aefbda9a71f1215d44f06469c28a2d6a66ed3491b3fa4e997324ba3a6686e397ef247554f22987ad9067a5200b6c57bd2beacc7251535da89b14813f741973f826f54d6388129e61ab3a5cbdeddafc558dd900040df88ebb10b83a18a008cd600a1d4df44f6394159c43928a1bfe99983e89b2cb170ddda6a29f8c87a1a50f3dc737900129d707a8ba0729f02faa7b7180c6226454f8a8f4bde49631e2eb4ea153fdba79cccab7c38f39c5209a1e2d0a5bd7812967444eb7a2880c615b306417132e9231bff8c9c0d03df3cf8b61ddefa8374ec164a2f5648e5ec25294968677c009e4653bafd7b2a5449becd25d8d4ac8961e3455fffc56e5708d26c78888af7d4d286b1b6e19a4a283f4f3fddaa0d12e293f34d7fbafba233b8aafcc6ee0714a26afc5ae7d75b7ab43622a7877f0958845932bd3550cabddb9229b942e9383f195485ed0c8e7e1f4a08c61bb8756b09e80dfa9672e406dae7d503d9c6c1ae9a0587bccfe751693637f156595d7a8a4db592feef4d2967598d9b0df1d399f069e00b9b025db4e2df51e6572e483a2948071bbb478086c34d471bb193eabbf5e850f0bf0ba9699314b9ac375cdb74524f9a5d1dd82a557390f7b538dcc1781e33c95ec966bc877509c5b564daa0bb5bdb19b98b1c8999b4489ae40e376275d50f3a13996c8176a6df2a3ece19e2aff6e140faf646a643dd310a2079a96885d7927fd96a1d6ade478537b891a6fa6f7da74161a7ec1ffcf3ec2923346c15d16f28d6f5fb6d31272084d3a3c1d8cd967597fe6801339e587db259085e6f05843bf2803a8651dc7c888b0a8b71e97d1abbcdbc31f07b60f9b49d48662f3eeb53c030fd4655dc9715bc8696f2ecc37ed75d7e8323443e4ad8bd896b782bfebed734960e486eb636f52afec95914736a68d1dbb2f3b479a81b52489be9f31eae1274b33e56ef760e4175a81c1a3e45e47ac7c8cb98fb8ee3d940b9173cef09f9b60ee89d739c3c8d8205414c70df253a61bbbf1d7d02790ffbe6b97dafe800ae659afbb50d76c409f02a437eea0cc5d54d50f83d947b97964bc0752c5a435f844032de2f9d521847261b8e77533285ae495b7facf21976feb404d7b4a0b43a284aaec03c0d8fd65d0327a733eab274e4f5ebb9f39e0025f0c352791a3de5569a4f1d2066702839dac68780f48bc131d1241b5f79327622c11f06c1e26e676eaf2dd1d5a39c3b4adb2dbfbf06e28711217fe67e064ab8736473fcc15c237cdfa2d253fa147a35686ebed083fa23675ac4bfa6aef0871a075601c5ec98f0eb1a94b2278efabffa12a532ad1f09763127240465eeb57a14555930a7abf070315bf595ebad68d65e5519a91922c7e4d0bdf802c0d708a7718b86ecb14caabc11566e8f56fd85bae3c09439ede1ac6cc7418ba94db3ab8f1a7ad8ba23b37a2fbf019d7293bd1a501db5c0a82776f5c851ce01ff27b4193bf79d85ea06ed43fa2738eef37fa50e3c6431e8923ed1b3dc97b537149bb907ad4a35f30e7b341c09fa52423723525caf72bd422b7d8a67019af513a59fae00e3138653efb96d30430420d6569b596463bdaa2fd0dcb7382d0d6956cfc4a5e198a2cee6fce81a676d51c88f23c4213a7b3db887836f70ef16c9dce9d99510744ee606ffdffe06b854e86eaf2340766569dc42effb928b2f8e209bd296a56ec2831e07f642c97e8d4fefd6df38d072249259da58b436182a6565a8b29345e4f5b22cd15182c4281b649df6da733c14c54e340e958812551807cb71bbe725b001e5aa251892fd88908d7790ff4b26551431a8e1f492f433e0953d7a54bdf3a529c6d5882fa85ad79cff9d73231877ee80405942b68ca0d6f6399c374d09ae34af5670604849d531c844b969fae34df0c4c7aaeffb04e1f85f42fac2d1c909b2edbc6e6365981d540ecb96952719a2b2d79f9938a0c75fc4336cacf85d3b8af8dbcc9ae141c8638d090e817da8075282e4a6c997340ad3676db8cf26f18ce91a7dd2dabd38e3a4edea87509aa3b2fe99d9d1d919d3c7d8e971614547f6282eab6609909ffdbf1b4fc5828fe51f435e0da89f3f20402b2cd89ef095109fdab9346063491e71e6acc3729ceda736dde1142b1a85ae65e18077322031829bf52138d9c05951a7b7c55ac7e0de9129c50fb7a791d91f35da9e4e6236bfbf348660d6e3c96e80b63d55b53c73493b1bfd5b32da4c72f9d1ca6a2ef6cbdba972944832abb5fc75a6141bd849e707470c8a025893cd8a061005f69cded656e5969274fde200ad5662b86d1f58e55068043b19afbb9e336b5cb380a257b46606a4972ca8bbaec6ac49d9b4280eb5b4caf75c6c1087e7196e57c5858073d64f835e833bbab81467be1286c361bd79ea5a4cbf5fe5f99b1f762d8ba07514078c9d1c452de9f52050a6d22658a31834afce4d4c078eb40b3b0a8d009f5d56030a19cd321257ced1de9907ac03fbeed270a2d4ca1454adbf9a18e4bd5fd3e59c3ac4544c9100e6e3ad89f0cd508a1d5e7b704fb6d8e304110ff16880d4653f7901209d2257a5343900ec2752c361f49ff60a09730a75aa0c758a3c0a073bd5c1ce0e26f1407f9b24819b55a99f46a6c4017b30946a742426b842ba9e832b312ff7ed2f7d880e6d0a0283f1acda0eff5b3b90b97363fec318e49a9557e70b8f7b53a3e93a731f60bb9d58d609ce847cd3369b9d4e0a6b5493a1348a4dd4425c1d94f7d386a14301034609243a8b60dde99eee705ef33704bdfd4dc9ef244c3a4fce3d5e970c47ecd6e4f8adf455dc6250a6c10bcdb87a5f320e9787f73d682e9b68c00bbb377ae3ab6e68c3bfab7d30d2f4814a21b4bd37d88586b94eb9911e73e816583ff95acb372765eec000f483b338d75cfa51b949dd570d3ab6033768e8778baaaddbbd9e3fa84aba4f4b4e4da6293145b8b85fb4d000ae677ddfbf9e6edfc6269a821dc7ff3555a24c442e5f81ec126d8918b6eceb1024d95a21728f2606d1c3d1cf2c02e0bb4e647c4b66ff76648ff7d4de4993c92ca8b594a523e10fb9af3de9196016f312a2e2a8275797ae1ac1dc30a30d78b2798513b82579e55f316a9cd84b425a2a5164ce5541a96827478b2c3b01398573796c89ada5639f087d8e8c49f979acbf2db1db1de2d56d5337c6bd068e80961ee743cdb387ad3b7987d831ac3bd42ff3687e2c0609869694bde9c30bd28596315bb6c65a14d3199e8f3639d1ce5ce2ceb79d39159d58259a44324b7e02a6b220f39fb6beba1ca7bfbb4b8ad28a1f9df7cf5c4b2cd509863d0e77acadb1c2dd52ba502724f489f873eb5e0c58c5339a2d59d87f4f972a1758eea7b26840ccdd392901d6bb8b06d2c47e39889c5f9c16c90eeea7b56b98d37c3ba96847ee8d16a33bfb37b356647634a9719c6ac9677e70c6f58106c62b7ddcd2c591c344506045c09b70767cfd859509067c9634baa3ec6508261ae2f76d204d8449c8836243b1c13a626cd25bfc12c6a6437cf32c352bb2927e9e1ea611d0bb7cb6c872931f03cdca053d495e643a9789fa1b0ba7922b3bbd94a62e696829c7ab4f8345de5f6efe6bb88688472bf8cf7e536da2688d65fcabf11db2d0ad3a6039888ac1d667e49f4e230e8f9839babc6705f15ebff88f35c82ebe408fbd3c2f7f558613b8d8017a5d7a1694d07ea34005b2a8abd92afb724c7924c2ddbb61333638f01a877c094920052ed7db5d437c8a3a44592ef2f95d876bfd1af095df4bf21a8c67ff2f53c5b54c711208798735dd9633ffa86df353ae9d18ef7f4674cba92c1636c90b1749544cec563a4374f3c951266e791a8243c38233aa1646e81d7e5a49bdaa10950ca70f44e7772e2f6279e115ea349a0d63ffb962960889217b1b1a335235af8053aeb344128f8a2a42cc8ccebe2b84c31f3d9017be6c20fab518d4cc201a88d1a4689560e1a7bb4b0f3c8f3bb3c19b3ffc727389a453d5fbebadba470e4de0ea3705156e13db621adf00c3f90a232202d691defae795be48372452fbb644988d8fd973ef72f14893afb540587d33cffb2c58ed3b88f10f2c159fb221c073706196e912793ad36bab0e1adc1625b472404327626db78ba1111616fddae1ddd1d7f2c3a462b7ef7c28d052b044cd295c02643e5fa22ec5afb38cd03ae81b1ccce3d94281022de66cf6c4d9761198564d2ee83d802ff1e0d08fe8e20b89d69a9b45ddfe7e16c827982dd549f3846a465534e711e4064629875c8bf37a42c8657290a2779cd6c7757b11f6c85b7495a62745ef151988c7b47a26933c82475a2af77333b6bc312842475b73461e98530074caa08e567facb02e3db71de518227bd92d6add163e190c259b1644fa49f0dd4fe14316a70b772f40407663b3ab0273dd0385ff78a90517e2b66a095ab52f1ed711d7411e5ca3cbdc901a115aabb0806844c8b602cd656f05c3d4ad4da45f1e6c302a8c01ad381c1bf274ceb34ed8ebcbf53632c7b2e9645c1ad67ba3ca9417d1bbf53e5db572fbbaa6ed0ba9d356b985078670ceed13bbc0180d8c523e4e765b1c9ccf4ee81c7c4454ce76e7136f81dbc737a9fc8ca91f55898ab41cb267699ce67b167e3dfcabd98607b40e9aa59a37a6bad725e3ae23bf653b0e4a81ff876be2fbf8b690001c492a99b25545a52e433dcccbca2104d63cd44d5ccae70fa0c5bd2604690561ec007a73760dc5b1adf6550b5aab39f368148b694391655e650ec97508dce11d820e1f65f0da52ebdeddb68fccdf0902ab7422ae85e69b97338a0585743f2bc4856770251b0cb0b0f1ca37ffcec07f7c16fb3714fe656e3c84759d14e08662cb4a811149257685327c6faa34874bd586e4cf0591ed36dc61cb9d6f2a091f604d0ed85b1f08617c7cf3c90a04d04ef2fd7dfe7630b8c776dfac7fe92567b68df723bac4a26560fcc4706a4efba90774128d49f356da9e013136a89e6174130f7ee92f86ad42b7c739ce44fd886dc9526ca4249d3fcf552474b1d834dc0bdb561603a8e8077a3ea8996aa94b721209d4f5a79566741568e00749e7723b1789fd27192e6c204670c77273d3372182d3652c057df31be384fa9a39e73a5725e189c1ea7a22fa55bcc485b7b500e93dec46a8615a0a573323aa98809f23a21513b5b69064eb06b054bd6598b6439cfa4df635153c012d6ad8f0719866caa215b8eb69a4919243ec32ac4f990dd8740ff5a10bd489f8fc75131e220857ec9388f60715902a85ab610afec46bb9f9dfbb22788334061dd76c2437b8295096adcd47ecd32687f79bd861749fa84fe1399b2eaade30cd80fec729eb0e4f098544ae0c98303000e0eabdf893f5af7413ddba6b28fdf450b7935a47cdd2bc458ec96e56f006695b602a0fdabe93efa22ad7a8206c6ea5ee72e16c1ded338cf314244ff8f729430814ea70cd6211284926925f9bdca60627ae7316cfc044bebceeafb9deda3ad062f74f19344230e90291decae1b924c23a1464dcc505b6d7660a4449c177018157dcf2eda0f3ef7a4bcaa7ab874536a796f21f49597c8bdde1395781c88b645761128b4c2e7e31c210b10fa88ab309c6da7b5ece835aabb0e1b832f2b20e4cd17e3395495bb8141187929eb2cbb105df7d94ca3c4e1efad12a394fc86e468fb0f201377cf606cd7db264173992fe34ec2c9028643c3719f12b3f945f1b479c17a464905579ac71c6a99cf4650a22e00156a85629670b5ee4bbd5f07cc40fcef48fe787e58c3135ccc661feefdf20fd4273905092f6617ca25298561414cb721e2db70168789dd8caba8be8df55d5836fb7b8d43f0647e75376d45ecc93949a0c1aef24578da01e7694b5ed39764d10689ff0fbde6fc5eb8558ddd773c4a7022248a04dc15c1fac05c78564457df9aba17b78813d09fdd165443c923bcaaa319069a7ad1eb4d711b02f1decd3fdc5e3b82169be119b4bda960a6326cc7e089a6b4d552cc233b4bcbdcbd30e370ef5cfadf2e1cbb63e9bc4b6def0b6bdd4cbe7b201f775c949460e19821bf4b2b22c29e6959fddb2bc97f429688f11f42be47a73f6f5424ae6fdda8b12e637cc6a2bdac87b026dfd2abfa8160bc93e9949817e920ed6370d6328f313ef9bbba142f389fee618494423fb2d9e547b1e870baa576744fde3a9068215f20293e3ee924aeac2f06f6d38460b5f817bd87546d4e182a20b1158c51f86e1ef1037b482ab3f30e536f3111bf69702835ffb66214236f28d4ca64697a8dc7dffd868e52741a8ee3fd4a986ff3cc380392082dae7b19d9da47aa7301074cf07bb909cfc6e98df8a7fdb5ef8da8ec8f3d712ab1ade7a683897bb28cb50710962ed226b069270d26bd8788c68ed1f70049a65be1ac65b18c6618b0b453481556f1323fc5a05c75a56550a87ded33313d813d8520a01e24cdab6112bc740d17ad76c3af04b590570a4cee06db200de01780da0f99cd9c6d6b00cc1c3e88e87ddace03f46f6d897d14fd3166d848b03715dcc4d5eda8ff8b58601447dfd701506a708e02b810ed43dcaaaa0e343421649e82a29e5e90445de7b6432e5ab57380c82cde2bf7e7f1ca5c8d598c98a20fd582da49f6cbb69b601ccbaa67a66dd050e287e2c66a8f4db9e7b161b48a93e1d3cbf4384493715ac30aa7db7d29754d8abb20cbafd7543201692a59b16c77b74f5d51c3ad803decac6fa4e985fc97343d5fb15bda6b5eb4af464e02c61609283f8bbdb749ed753f38cb7a22c2ac2c51842bc83d9646b3e2c195045db4df003a60f2468cd71fa235431efff938b5e8bdde2fd04e05ef812f1e59272779a83d7a2e7028b07666e420d3dadfbed36fa13cc1cf3d29bf06094e38ec99a4c227fce0596744901301377aee37b65f38efe8c59e9ef161dc656fc140f5210c6ec8cd4bb784c82053f0428cb9f3109c387c46586004aa8faa84b110034181e43f58c53e5403067093ce36a1e11d0e456182413568cabca723ee53171306ae8c4fdf85c5bf55cf0a8e4a8826690dc03114487150a5ea258fc674bac52935c947a21866554c3494cbbd7ab11b53bdace29a18e76c3ce4a3f6156d9cf9cdf76c04e7a8c56ead1b7b9bc208fb6a3323c04268c4efad8aa6c1426316eb670f11567bb08a8137935ac89a83696b65ea2262d07953a26454de579dfb0a81bc75804c423e57b19fe79006b3889c947b0488ed8bba78d8244d0214493d718ea2c803e082988992cf0b2ec35929c0043e12052cf3ead66520ecf165863130f5d2d2e4557c6b27c0fa95c34326baaaf342c46c48b34eb46771b465a48ab1056630a035e2f3bfbf3aef5db06e117130662d82eb2085894ca61f871637a22684afb3760716b5f93683be3526a75226af77a4e2f48e74fbde5c65a13450b4090b8bbe2a8c6ea03c78393eddcb1b0c40e370766fadbd8dc4d68847eacbc36fd4c8a533155dc4d401487bb2c86cc871148f28c9a498dc1fd65f772d7125e8a771be5a63dd6a2192aa5644f95c28be4a2a159cd83530e7ed0881b58cb11997c015078dee0434d271b4adfc6f3d83240d3c8418bbe76c9fb83fb600b550a73e808a3bb2b01525ce327e3f8432183a11b00cda3b5816038a9a35f8d8746ea39594512e448ff8a694fd0c3af175b756706d81fd72f15ee93b351e1ba700aebf22aebe6784ac4d7febadc1f671425caee77b4d56cae6af365a8414390449491b2877f642765185e9b0c39f0ad2085715647ecdf3383c7abb62b2d9d8d49f43f53b08e97f19f9357e8cece6fe4c72fd585628bc2937c3c18051084fc4ef6b4eb70d1b1d24afa1386fc930834b6bf759d7100c08043f9669c185050c0c7593421fe7c60dac490ce8ef8ace3855991d2243ee29a833ba583702233873c12489ec10f469c3c1b215818b4c7d628ea196d9566b4f14d1827da4c95a94685e6c8e30fd78231bdf14ee75d68ad2e77b22c9efd70b45f5e0f82c27480c819d5dfadc5c646e35631784accadae646ccaf63a4cbb51f202080a3a137a5fe7403172826c2c73b2445e44113b6f09540459df7dc4669dbcb7d775987435a9c35984d883a702831bed2eb8767bdec3bfb461bc7ebc74dee2cbd6a77ce2026655a5886a7442f6360902d068d788c1c82fffbd4338dccdbc1d6f14093a2ad5432d8052dc331e643d1bc3d969fd08c2672e77607bd73843c6a6903494bee9fbb86a732ca949a073bac5af6344523f2c6ae7c06434edfd51a8e68f14ee39341beae80ebed1a5496249875000db76e5c7b83a3c9854616e2b820b6ef13586ae015a937e074a03d5de2867052107e78739c81c2660ffbcf3e84e239b60784194f5a824b34ec6b85b9370600e8bebaff67d499ec084c30ff63dde1fd61dd14336e30b825cd6b5263f59b9a5c87a8e8dd5318cea006c83ee6d589ffa411a417e1a23c2f8368f2a9dbdbd6650dd7cbc7b5f2cab1647fcb883f9a7cc77e9f3a7d687de833797ac52203c5032216771514e03a7fd6132b99fdab2683b73d323b25147e7f92ed33508ee30eec831d63384b83a70ea5f1d0534683ec7ca6c8920f1735aa681906b4dbcf906d164df1ec4233b985ec83622eb63a43c812fe0729c2c2572dcaa5b855079a8a258fff928a5fd802bed46219d5d71e296690970f16173ee457cd6d0ba46e4b4a85a777cc84c85c9df6c4d85c6ccb1985a5bff7ce678284b4b911bcb3ebac71b57083930b591b3f0382a24d4f4da7df90e5351d07e86511c755edeafdd1b06610d9c592abe5d48c39b87b86523914cb4c3d2205e481100d3c1894335c2b11f136da826b35e6b99756426a4ee2b207b512af647535552846815c270ca62a054b4c56aa5d52fc99befa1a043374a398c5bc47e1ab80485e581fb9e5db0d2915ae15eda744dfa176ba640821f6dc2cbfe769ecf144d9b63ef5ee24e669aa8251a4a9f8c7112f2d7e37609ee63ff2d5c71d131907c52bfafce9a246c35a291afeab261bb5ba639be522d06c3089f541807d285f17200f9be883940c700cb354d8c7a4993c7ccf83fabfd23851c31a90a881e725e18fa1aa3cb075c0973c5eec42a1009753bf44c044766f59c3a0086083630fa41e9e8f6af19949da4a24ca1e2c3cf74b81ba161cccbff422f0f1a6711f7165840a9573d475c79ba6d110d4a5b877de6adc2bf61ddd2890ee360dca46df09fbaac8f9cc6ecc368e3bd311e98ce82c0ff03f1399ade84b6fb563b19fcf5c89e1f87cb1e2d7bce66115708548ca960bdceb5889d32166b5c0567b39bf69ce7193ed937655b6f024a98b346b1b01b27d33e196e78306af75d171a1ceaeac092819a2f2731e3f3f2cf55615804c3b8f74b9c8171cf0c50ae311bc0337b676b78b309694bd93a5d23d38eb633a582bcacfe43f8b3b1f168d1d34949c960d1c929c8927b468bb4ccbb69846616f756ce146d10bea5b9395898761eacef75cb4c78a7297d4293c6be0b43bd6b8ba4cba6c46bd8c131ed0edb9b704301ef44a35ea9bff526b821be4ed27c5ec0d35e0de6bf5b342a26bf6fc04a86825d5d8d451a18a384742b6d5752880589411b38d9f1b38c1919e6896aaf8c9bc069b2dbf8895f738ec5bdd08d59525acddb5d3391efaabae9f0d763a12a39f772d27c9846559e52e1a4745149be07d63ac4821c8fd708094a9e21830976edd692722f05fee4971ad3b27f17652214e808e09fb2b21e61529f27cd44d96834de21477d8d3ac7f73cacac278f7731a76d70418f0ce3fea7c45c510cd34b59d65af32278cd271218d109db5bb9e2eff7b93462339eb604660957d87c2404fdf86e3df1f6285b34f10f0cbba209d221f1d9fc401421edbbd72a9790bc2792ccf242b9385ab604e1fbb945b399581ada191d7b5373a80cc24dd22eca452603cef6d53a0bac0c3c51a1a164d5fc426926fe9fe885af0be627b14d368302f628a70e1ca7857204b94cd5aee93f3bad4f5dbd117eeea7db7780c5a206df6f5ef2e22b9bb0632ca5f9f28a5eb9e9673189a8c77cae63a73107728c7691660ea19963e6983dadcfdcbfb015dfbb21c5e0f1abfd64f5de52f4a838b880c5f5e413e53427743fccc57be38342dda61d1e87430e4da1cf88778160278f421e6d81885248227e59b6ee1fb996fd10c117a6f8fa7a0021f4167026157f0e90681dcd934dbdc86225fb83a6511f89a7f508d8ef7e3251c8bc690424a3dc066bd32b72ce9479c12423cdfffaba140be6eb243423ec5340e96ab15dfb57d2dba57e684d0b2652cfd392c32210b30821b80b5b5964fbde43565732a9b55a65ec9091c0ac62df738c7bb50578a9b2e68749556c8dda1a341a7426840496e23998cf6296d1143fc98ce2515f5fac4dc9e1d38a40f7a88940b23b680c21c5fef31d33fb268b53b11ca4bed35b8068869a0548f737fee60817bb107a9c79f926aa642ac965c199b2499d0fc13f38aa395281e3ff10bf32f38352e991bc6c1fd7e0dc46b77cc0b6133d9a5f2e076d2abdb5495216bdc2d55685eaba0522580feabace4a086ec0d62dfc68a91d68c8daeb092ec2dc85293e0ee51ef02cc2c1a25c2cf4e9ac7620c81c180b8ca5acb02a81f5e2508f357ef9f9166b57a204d82de39f77f920766632997a82c71ed0f981ad6f290788f63c138cbd1047e3001a28bf446177709b04eed31e98dfa76f3228dee3536c3e2e293e4d7b4a8c185ceb75cebe5bff63c0975916277f6642743fbff2bbef212f7726d7eff413aa7ffd183e3526df92ade801f6e28c9966bc29fdc317fdf1d13f48d2a646b9c9729fcc519303685bb5db230c9cb488f4d42ce028c81763ee10e5f67e6551e91417934195f8d4c2bbb881cb2e0574088ade0bf5f65641e3dc5f81da84ade7afa060a53454701c40a31c33b4c8fe1f90c68f4f467218ddd7f02f1fb02980ecb17c0e1721d72a1e2c3742f7d42baa7916b9967a360d32f81dc19ed01b38c576db4e911ba15cb61519a9991f6e101930110c73f73744b99dced87b9aa2eadc94a8c9754a0a7adf5b174e7f0f944758a824ebe3a74722d89211498b77bf7b595df323b720f9dcc7870595ccea361b2d1c615153c1ad60bf7324b6066a91f01cd4c8cf01ea17fae07aab3e1cb7debe918c4f2ed42a2bea0de0d1e2ef71c172d39d7ef69e890fcbc461bc8385bfbd9d3b3bb9ca3d1098e2cf5a58daca920786f694b32102a5d7f676739a1deddc4be21af6e7b9d7cf8ae14f49815238482a92a1ff03e2b9e14187d6f1b9db102c5226afc28e2fbe3a972cda413bf8554da53e73b7c42521403f87949ece2304f62feedf601ba7cde545a9b7ea4ab29184b11f8e8ce093a905b7d2c140d9fc2b014c4191d019daf1370b20abb202511bbceb4f7014b32989e75421871fcd291156b55b569cf991c3b20881305ec86553b97bb15420fe56f8e65e0071362292eb0ca736c712dd4ec620e4d413ddf11c0e7ece35c8a5d8ab1494ad615b02c303b8aba95af09da6a58449a5987b0324c46c99023cc9ee37aea2ebdfecf79d090f33846285f24c85e5e5c4f315253f561b0fee1c65779bd8905760078926904253dfb3e07d4cf68a6a98f4589e798e2bf4c2e406cbe6b9eba44ddb40f859aeb2f3723bc05ab9086b63f2cf88c849c4142b212993fbf89095d90481f9546eac452560ba90c59203d59cb4f032dd83b8ad94c8257bf4b5067d363b2f0d39d6671825e1b022809d4d8f712e8cd545aae568f4778366dbfeb937d652473731343fc8ee8282127e1cace66af28ddbcb95292c0283a5050ee5b4ef3e07226dd80daa76902e402422450c2600f7b810b61abd72adf4c3af51d89d6215cd00d3d0b0fb91f48e5a146f96ffd09080b64b3013e5397d3f3bea5d581742b347ef341848658aee070e56af259fef6dfcde32bdf9939197d219c7572ee21621dc62b5ec1b284d5ef4eff89f7b92640248f1894cdef6d51f232dd4fff8d77e020e3344e12ce3d20fe62c7c51dbe456f50f4c6002dcc93d6103ef4dc2e6a9980457700629feea8a49c87eb0322c5b1ac63db1208619f9271d4653d711253cf193b772fe1d653576b8da574dd42c80097c0922c4871fa55e09113884c8fe23831205825f42c188a3744f8ef1a5fdd022a15c862b52536726e282094012d70990c99e507d4c4a3e523fd69d89e5b36d5cab6f8e7d68bd08231164f65b2f24a8c66ce1dff1d33b29f15aaa2e031cebcb4b02c23e1c14592c498c1596b884c61687c0c18907c59a68fb7b3c88eecc6293b41e6296fb9c235b6228ec77abc70c8496b25130eb3d0442aae0cf3d15f52b4d98b9eebafb62a625d3d920e3cbda997f4329e8cf2b47ee0129c36ebeca6209dd409e187b32477deb7b0ad88e073024dafbebb65d10dbdb583777de89c656cc022e2acd297bbba7aedba9ce2f5f764a7509c94ca5e60b44f1ba5b896cea05be28ba0857ad7d6ea3ce7541d9f4cc557bc4ac09be24acf932c4354ad27b15552415676452797cb832e09a3e612e3e1e1cffc586ca4478fe9c7b20e5fe97dcf4b0e8724a4b8dba01800da020934d85f7981e6d12eb6e1908c4008d535c2e425afec45e2c3063f8cc7d58044fdc148ba61de66a0a62aa9159f647e8e40b157e27751c44c19800dd0191871ba2102a986f03bbfd648e1582d01b263c1d35f044674f4390bd7d3c9e9de7b09035599e3ffe77343fee6840b395a3cbd39a85cbd8b4ec63aa28a9a5ff3bfc7422461091676130a441def069303b33a3f25e1f2eb9ccc47c6b676fab157b36ac306fc837da84e77c849721f19e39de2bfdfb0ab4c44bb1d0a1f4ddcef60e6e4ac0d2c4d2e8de7bdccfc59330cc1e4d2a4881c76cb18ed593b281e1b73e7fa4288d7897dc5cdb68c743b9a6b64879f7b23a737e5eccfae988f328b038b8b1412a44d2dc711c4b6f562bf5cf5ec6f9962f9ba9e3dcd5565b8915a6567cfbffdd253f310fc301036a835ec9fec77fcff1f7604eb9d1910a41cbdaee6db52943a7f5cdb9380df5c9fd76fc7308a3a35ccf9438923d47584d3598dd2cb331cd4e9052e8ad7a8d0aebb05cdf8a872ffdd8825dcdb941992696fc1d01fdfee238f9e0bbd55fd778edc36739f583cd4ea5d4b4c3636dec64125933729be30e55c5a514f2d31c8472560e73fdadd3d0b7363a2327dc1f85b9992f63c5e0e18fc61f42d486d3fa4fcd21abf60df512009088a95b5f81b58798298a5188cd25d7400a94247a1245cba256c99d7bb2dbcaf04163d5769a3454a8639ba358010de9b7c6cb8e49dc5e10b31f1396a897060e1a364fb15a4c7e614f8fb5318dfaadb8f42bd96a902515fba64dd207cbfc6d5104723dc8ca1048a9f4debf98d74dc58dbf365a5a193898cb102eac0aeaf034946200f0e6c2b655d9d9f14a14e7dbaa5be85099bd9ca29819210a80a9d91fb2da07a8b782a7a4359330bbf3c15e2a3c9e86321a1ca831cb053d02b35d9609ccecad34e0c0e1e6e2a63a8e193e5ae7c10efe0ab49878f1e25b86a9c2a7c5e8215767de91a24c033d982d8b2e0216e93f5ede95892d73606f8036f426f1874c0b1b0c2c2a6e321dd2ae6ae43177324df3953db323ad6868d831eaf4d1815281959e020d9095e29019ef6cfe893eff6edcbd2a76b5c03b12112c63ee851492ab0c32e288b87ed3e79c0e10fa90c92c85529d8878a450286202a4391366e08e362435ef0554fae0ae22958481bf032b5a17be0d85c1c59cd698238501942db137cfaf2209cc2cedffb13fae3e7b91f46f540a0ebc694e2d71c26b32d34d56482c1ea956e9f5df3924248a7d6e0dbe324be74fd86ad477fb6b62db910ff11c34d2b9b620a28e5bdc263c3939bfde13868612d62896dacc2a8ce664b3cd6beed0944662684fe7fcad558eb4b96b25a01ea812aae63fc89de2d19941f5b026a70c12ee184768279dee52d3044f6a770c18004a91498e7defc79e09a2e67536700689843085ca465befc3ad8824cb08d0e6d3af13d15e35242613a7cca88de0912fc3145bc1800ecece16a849470d4a6935be4d7351834161ba11491519e80badfac64d636d63b62d02048ff30d9b03c8d4fefeb504c0993725b2e1f5151027de5a49638d1e2f2b9443a23933ff819ec426d1d477cc6943ff45e99b89ee9cb04839710b1fc8579a9eb3d0ad21b3ef172111e50d2498e0cf9900a16bf1d2c2d7826abe8497fc6277e3d92432348820168e0467f346b86038c47881075859c1f568b8cc48c0464dc4f61992c93854b6dcd355c7424b54af0f200dd195bcc79278d90e7553c6ab8c19194cba8f7f0d776116d033af7900198e5025dbb1a7b98c1eba7d4504eba22a2397f1758bf8e39fb0b416aab34887974c9d0b0e332189cec1d324f61c208957742bb1f4dc20982aab7363ad27531adf244e56922f510796efbbb14088d3e075350379ae4510f4d25f2c38bc654cdaee531e8d842f41d2ac74761d15b0feadfa0178283ee992d78562ee5469ad9d46b01e19670d543de811ed74ad23b90087d73a67b3b956cfb2bdfbdbcfb2f8ca1677649210fd9ea7ce0684f57ae1a93528b7d7c36c392f801869e4524ddf3131a8e63b79668b7460b0f9a8896ac8123eec1a72b6cc1e612dbea00b16a879061b044200b9bd978c3728631868ab6b7eeaf558cf64bdab22ba8eff03d97205cbd791e456439d7dad54a4f52dab4363661dd92e9c8799f17000a4591bb93f43c72c9e6c59310dbb40d6f578b59b75cd2ef1bb1d0390de0bafb16cdb62f3f29d60d14b465ae62d028f954703abcc798da3161a0c966b67cc52d57e4e4d3e6a580fdb5bb75b4b1624e4e613eac34d182524a0bf6aca089fa3745e6b16a0bedaa5e65e4ae627d621c72df1c99cd18bb95c9e8f9f179ac37d38554750f770a3bdc039f51eaa32418e6a5a5875bee377ec3c6cdf6e56d9bade545656409344c67818031b5c86b10f96d79468ab8a25ce44197d110ec3b8a957554181afa8bfb408e8fcbe383620f1118a7b7fdb066a61b15052809ae5629c62e31ade59550247db7333b009c5cbff1c2d523a9dd165fd132954090cd2449cfbd30d9c03a19cd1663d1a0370f4f77610d7669ba96724cd658eb99f06c94c67232b08db0da0286e47a5038de9b2a4bc08d16e57d8129e0c44158141898850d9498fb8a96962e22f69210b6b85b53209e2f0186887ba8383730c564d91d26f009418b7da69115347600d8dba7a63c3cfc84a1864ab1cf8c8b02e676b28c53635ff7692707635ca14f866e7d915a8c0d1569be590c5efd989f89864504a553436b7819a5eeea4c39dd16131892d3380eccc968642d76676377f28ca6e9be4bc3b04e8a7715a419f2ac8425271dc420e417a18301171b2134871a4471bd98da3749f2bda4df5ac603070d95e8b16b37130be157ee966e535f1a7a063232e4dc0de70e0bf12fb937503f8caf533410ed3caa111fddfb67d5210986763f9c88d88906f2412bfd57f1000561d11b406039e06388ffe66d5ddc792ed834bf1b35b964b15cba95879408d13921092ce6327dc95eaff35d62cac27d94f15103fdde65b4a285bd54ef266d6a412201db7538c436f0935f23ee234c182e6a6868dc73e1c6267f4d42f8c80fd349eeada7522f97a1582fd3b24e727d29446cdedccd2c3b4b3b57c20da4d2173414bf497cf3dfd4dbbe2dc71714bd81520deaee542b6dc25c1815e9aa71ed651db246b727ca2ecbcfa4c518af5f68f75ea3c7740903a6f2dbfd5131236794f3cdd211138f0928d82de4c3a4b4d08e9f2c43d5c3f6f80b222d6b933e65c77fef2bad17aa13855704eae62e431ac08cbb7e041e32e3b5c3fa61b8d7a4d0e105bb479f295637c03c9822dd1f539d5c6553e09ec97a6b9f67f4e2568c2d178911196b8b36c3286f74d85f7a61fcf8124e7e18c561551ee1638fdbf6d0be4e3c1a01e5e5aaf3f3215f3f8c48fdd7e20b1731e41ef4cc76997ead00f21a2fc6c5e938b90c110dc7b776e0c1274dc491831189b267f7416e0040da85066c97ee8c2fac3b552db29030fb5e1f5655cd8b3829a4655a50aee093d7f636c47fb4c4e61f51c3e7d6d3f7bce7d763d40325e94d6b869e2cc71ec05d37cd5a66f3672d535d8a92fa0f23bcd29cd771beca3129bc480dbe34ca4cdbb47546c27eb78d43a0bae83045bf941670650a58dd8f2f00cf4dca083026d7d6fe056226261d8af1cfd8a706c838f32d9ccf93fa6db10066a7095ec2520d77acc43936436e154fd5b510eda38cbb15a85a94ace5d1d5a4c3556010983080d7d80baee6ba80827ad5a2d5a37e6d77d2b41c83f34ea7a02694e362be3be483d257a2d139db099e9ab8e91a81af6e6627f7a398a6c24ecbc84011eab4c1c2a14fe88d19d7dde93017350a1fca2cd674e207756d6cd7813189be8dad976a321248ff7fd246fdc71a182fca4f61e0c6ed975241acdce931bbf04dfa7c3e82e779a4ce96b04c5e5cdd8a2ef6ae9e507120a0f8fe377c78bd8817a92ac85e37d31a715a4da9c2a4828c6be4e9f45b445cff5bd694b8556d4c4579fac1ef0ef1f9f9c9d20fd1a7c114d13db11023f998c1fce6baee7a19cf8b278c2552a7c3f98b8e950116f1229f2d484504af9b1e327bdf886e3e7672f5615f7843d9b7d5412f0ef70f6e0f105e66a5bffb4e69d2f6883856abd9d793fbebb726294e143ad34cc44bbfe1e9f4898fbb114d071ea38caeba90df57a038cff988d2227cf7edafd4c24ab268ea400a9092c5f1697c7100b6d5fa2edcaacdac384131347dbdccf060b9b18046da5aaaaf62eee5642bebb825f50ab88a3f35194019eb94178014dacbe09b55206556cf40a413446820b6246e0758dec35b6062035dfe20e18f604510f7354f513db7c86d30b6a7fdb24bdfb40dce01b6069a3f289a8af7a3fe0f8f202e9cc5921a0ef9f375cbf1a5676298cc4163c11cb2cdb28cca14fc10cba21aa383ac1354fc07af162cafbfcb29bbea1c2513366eea6934fab4326e0a401889e10babf606819720c6723155c1add06906b65a35dbefa5831f3421e502880f807b3d729e631de75a8d199cd572ede5300e25e7ceb389004f2de02784e9aaa379b1f9e8503f801682c39897c4dfd5104bf78aafde54a77af2d4480c406490274eef7b1d562de6c2c507fb1430d85fa3a41a832f404f6a3f6974b2e6672cd01fd7b0bacc1b3603d278514a01294d2eb453202f76802a484c026af501a26e2a3fc8b2e68cc83dccb5ac63aceb73abe490337b48402a0553ac638ef9e4af9c20b5f7d17545d14f91af471cbcf9a45a56df6bc5927ecab8d94634e1e5a8162cf1953b4feb0763cd9fb30fb361f5efd7ff7b7935186319af7e23050cba8b22f3e3086977e3542e96ff8df24744b75f9cd27d799930b0a44b4c4bb3c18232978b850a6c92e2e25963887599ecf5d2e87eb862cb2009085d37e550ac37002b869ee53b0f7302683fbfbf60e09d6d00327f3822809f34802eff99085e6ab051721dc1d6eff48bfb1a350e6e6814014f78a1a41a7597b451c1a739c4a69ba78e84570495435105787c07fd0fba7ad6d7ec141a73e649dff3e1f7d6ce82213cc52e0d921b7ca94e9efa210bc782d3295e6713da114b6ef035e026baed89aae0574789d3fc8a955eeeb3e2b8f29e2bcf43b49e7efdbb81bcf438d969936f5718be197c3c812eb101d15a9a69d1d66087381442912791c4dd9938eeece7a9b88eaf368c711f0a22471d106aee61b9e3c4290381f5f00bf4541399730ba8fb40ba0499834f4d146c7cebb50697cab510f3157df60d725c37a65b790ba57324eff1f4e5ea3c76b9eb6e85e2a327fad9f035ec231313a7d3819558ae27923176ae2b0318a7bec67e63ecdb793c64abb4a7b0d2ba5cdea6d0e68a4ace7942effd3b4f72fe73f20f832bc1840fafe072758006a927960088f7766c76db9a6b106942020371b3d2fcd6c83392a7d6e563a6426ce6579cc878ff34396d5e73af4c492d25452fd87eb01df0b3207eabe3eb25fc2a7b8273c35e20711d18a4a0ce801a8bd40d4f20f7e532ee353529d1ba8e1def98a1a2c3a776790663b1ead087c6916275ccda4a6815c87bd5b0a68950b7200737f657706dfd9387e97ba3df3be82638627e800d20952336976bf02756fadf8510d8c21622757d36c36cfc0617b97329174ad5d10cdee908c99aae4e03d45f8e5e6143b44e0e766140d76a251695b179b3324b94eb017ed30b573fb90257291b39efad99c78b7b4bd9f6bd9f176ccb6760543e612a5e54dbdaefc5e968fd83f8d30f36bd53930218076fcc820d866e9835200d074f7ab532b32b8389ab51c51502bfa4c78cd6500e55a8ff24cbf8639ebaab263593053abdeea361fbcf386cdd6bbd05dc743506d469d1d1122032bb897440e659947ff25bfea95de2ba98e0c3e337f1e593717ae07edcfdbb316e0d795cfcb875378a31c672232a3ac6521804afc31f2f48fd050ead0c31299959587c516b0893ed27be7cf2e416a70549facbb3eaed5df84c6f27b3e60be3234f67118f09bd144e614ee7cc3a69a8da63a63de66cc30d41a7bf8b5127dc823590a5b751cc221b1a3585320b2f3d2eaece1207cbc4b403c2097850dfdf896b0db5a075dbe3d63a7d8704261b1eb8045f6b1d71a6eaf139ae1e6942ae66c9d40aa43a4c4fb5e4da7009bb47bbd26115e743d320b9e7b6357f754352670fabeeae49f34c2bb0b7520b9be1df2e02ddb3c14a3022d837faba9ca2352eb81d24c75083adf65b423133d435976cfb57339e6aa791243e8197218ab6dc718689746e2a15c3d4a4dde6e001c77e6a943b5a5743e5314e527534099aaa44cafbd9a2da23ec0905a6746ecb4024f211c7b2944285bf9c5aab475cd1688424b4e44d9ff52b3e2de2c5790d2d35009825e43fc89674bcb1434fff1806cadc4ba80ac3cc87887ef99e631c147ea0458d749cb4b532e95794bb4d7cf92510d5b9749a20c18cbf469d1ae7571600c35e77ab3d1325e1be4d47f98ded1b0ed5380907232126464a3809b66d78921a0879645e9d0e8b4c58d5a6dbb9bd7188e3ef6745e1b833ffe421efa609b84ef06f7c51f23072d4b114d0949658cb828c3e5b2c93a9582bebf919a61aacd64e6491e8d6244d22abbd5a6e3da1cdae8f472f7832209159a2e13e93650e85d6a4cb9d1aa2f16e08c84b28cd0d0ad2cb85dea89280257006c993da41301450c489b336c426a20f6abfbe21d31ddde9f62f5785f245a3a763d6b35d57822559bb775c6592294d52773bad453af10bad073fa79bf19fd77b7103da5d69c79e2d4375afe9a859e6d49ebac71aaf6a0b3ff8c867ff5683a41a47f8776c63ec739bf91498dbe82d4a5f23df980546ae94d5edcd2b7873e5d621c0275714066bc4b63fb25615a06d7b150b563cc545a5845a90087372251411ce68273556d0fe20e71877242cd5457d735ed44bfc27e10c55a464f0a49e242b9abce479543839b7782a57c81987607ad96ed7e0785b5e31822ece0b2d2d1fbaf4d04dbd55b96843145116ba753a231ef194a2796fa42c6315aea26409d836e0d27b86e457872b4c37f64e5f9bc2eefdd2723895e28198d5f8ddcdacbf0a8ff5c9ea2ab49ddabb0a96b5f535a902152c2d3d1b867254010d16f3d9f341db61040bbabe5b83fa55bc9a39b0c0b3b1a2c6fbc428f913a25229a7d59bc6ac1db498a2dab5a226a7f12df2be3aeda55e1d425499bf79507fa58b39ccc3c428d7579d82511d60a6b64d210b8dfd7ecf4b22ac075c93d6360d753f4e7ba00f0cdd3e215572c5c31c0bf47d5e6713289edb2ff1ed9a4d72a1e56c2b926ab291366cb84da057dbadf7c280b4af049ff34a5244bcf2bfa0c353ed521325c4312a7ebf0d891d359696334df5e8ac2791654ae272c3638cd84aa7281299ab8061a5f34040708f6dfef283dfdb37ca52b427bffd8fc45a91f0b6fa3d1f0241a8be2ef5216f8b6708b47e2bff102398bde759e84aabccc70a7513120d658b567f14e0db901e89b63ea469d66aa191324dfbdea459d6a3dabfcdbd2962da982c245fdfae93602150105b47bda337d65d85ffe19c11d836af375df53b648f16ff2632b1dbd6718d0bccbb7240d138d1aeafbed43091371d389cafed0fba2b5809343dfed8ce3044aab4d4ccd52c683543a432ce03627bfdfbcf1c9be104c317fd3c5fb6e4745c6e4ece70ed26e684ac51cc6e6bff237b7c75b827407ec7dc53f171ce3e0a4e7cb2345daf86b3f686d22b47a014f8b78a845613b951052740deb1735102ab6d4f2f6cec8b46ae853110d64c8035ca118d49eac62988caeb2c32f4477897e2b68fde1790abac58e341339ef50bd308ff9b93ee1814ee72447de06657408415ef1b29c9dcf8e35e1b5d1030ff5dea594690119d39e157e69c6b80bfbaceb349c34a420a8b5f5bf0d487c0e85d71d404415035454c831bcd4ffc94185576c6f7d3debaf3381bdcb7682bd8e70f79f89076e7bc97b4f704ed817b40e75f1d458389b630c037c29f50344b0fe0a03c744f2b8cc1fcd97e5df10064c8492ac25720a3c4e9c65e738d3be7dc460f2649ebab56f039537ee3a8582c92a2dffbfabd00f630aecbd210fa74a774dbf6d96de237b9a0e65b46a462f7ad64b06a325e6dcc5e5b27f262efe37dc9392f16d3c54d00012df227096f98a28a0f0a305855e4de85fd938380d26cd56e9212d77911670d58bbeb6ad5f93524e212936256fdad56eef18b673f3e33e70883155ff21c7461ff2faf94d624ecd981f37417828e0d05d92d6f803043670ef79831b17266df7969723a03e4379be1c73d942e685a83a65b09edf31f037439ee26d536a5736248180e8aae8c8c5e0fc746a1fd1228bbac84bc6f5785075c503e41219b2618df691fa5c223aa30c47d3d3e7b103f3f0c5c284bb8a00e8e4764bc0c729f2390d9d327b53f624928c739e0a3984dbf1d4709267de414629e900f5aa5e4ad3e54ebd1a848ea0368a7311ea75b02b2f27173c84e1bf02954c87e04c484aaf7be985ed89522f41f3749c2031b1db1b09641bb581770c93cd1dfb77bd551cc7e97c6e806f900950d3fed6a953f1a503eca1617b5c35df31fbbef28d3c04b7a2eebdabe670b8b80bc45e5d8eac3806b08bd0bc1d5ee379c924342f5d18d37866d8e37a6264bdef06aaf46bbb56518a93316801579a266c6acfb157b5db503423556e9a917e092abe87e19e3c17f3b0779d84b3adeb49d1a81b99d6a42aa5f3f00666e9266d3cb873eec1306f9cd7fc2032750bb72d61a292cae0271b595ba896e0b0483c36100bfa79f534687df3f4e9d11ac72ca869f0a2f4ead524859411f43cf79bc4bf28fac794c8941ca4c472257f4385b374a6bee193ab8d683e6a49b75e205b722c7bc41687e9a0201aa8f65803e80675636d2387863dd510466a947d11985165c2180c4da9f4711852b20f020c5892190419a08699f823390b31d2f51176860a15e6d7ed6e96efdb9155735a4b596912e98b6a136924cdf9f2a1547843af9247247a7b49c06ed0e84c238d58afe132a16df422eb0e08da38b960a3de0b977c453a0a7b361ce4261cb894ab1b458fa481bd82c645793bfa9d9bdfd988d7e4519fa2075c094bae465c8cf2e02d56ac8133a3c237e58c7b25873ba260b4bddf7000a0e6dd2cb676e2b1f3fda3e8bcdc3de592206705389c89b553590a77b5bf54fd8c932e850567ec6f943dce5bf315e7a6c598ed71e4b39691b8e01ecc59d723d0d7ef5a6179bfebd36546ac6964355b03ede5167f6e1d73875b25dda0be6463ec2db6cf134316ff098b97a2fc0b8e8d0cee50660ddce40da9ea4d9f90fe113fa932db6ae0ed39a719ac417d98a18677201756f161c41c1764490881cb00492b3b46553227e87749ca331304999e652e29bce688ddd3c2df8e7175a6055715d5dc3b69999d061b080a7185cebb17cf48786aa37263672f648e5cc3f73cfd7c3fe8d61e7659193c6114ac76f1671a0325663c7610c8780f5670ece1b93a6d866b17f8dcfb4023e474db4aad369ec213731d64d873a0b6555012b1e127a2ed5714716d5e27479a6bebe5c194d59c95b3c90a12f68ed4944faaa66a6850d47eacd11a45f04c0d5a4ecc6940e371f29b2f20bb48c5cdf8566748364a3468b8a36e7245b77bceeff385e2b633c76aab9c34281a8e2ab4aabe55aaac639400a6c129756d9dd08ed1e8a2f4c5fba0f6d3fb0d4add3b5f2cb5d640aa71025d986ca350064c47e5480d13e4114ce180be544f08966848858520f9fe7a229e182693a0431e43d4eb091955581cffc0e707d86559dbda17e620e93b150404763fda44a519c277396c64ccc00067b6cb7bfb28af55ddc836986a2d4d6190b38aaec0a52ffc72d0bc1170a694d3da5077bd3cf47d3131b71621523e00bdcff6046fdfb79ca89d9e258a8d8bdab5138899d10d827907dc0a6a1d27a4e3ee5ef1422dcfdf905b5a6ac2a630a8061323f4cc65a5ebc560808a03c20c612aa8baedeabc620924ca2c1e0832624bfb7eaee3c0d788b5aafedad6fc50520cfe5b4724c3423a957d85981c424b8ce6d10ada130426f03683cd1501a4a710dbf43c8ef5ab43f4fd46aab6261f761b9e6b0f26506bb223e2a51400b5d0f5d0bf6eefdbd23f8d1df4b2c43762bf1eff53ea9b09887211c1976579d2c3c35d2d811fb5202d57b317dd56e06789f3ee44187171c79834013d5b58ee86f8e5fdb9221df94e62d9a6e69aa1d2e3fa53fd3e84c8f552053bf6dbcbe545f91ae21b5859941f147d05ab1eb49b97b586940ff23a0be3fcd6d2778133d1905cb8bd8a6c4433c182f18d1bc6a9263633f0afd0e03da3acf6c87973b5e8dc716075c6e3b49f1487c1e4813864b3c8e245122d3274fc1402f1997e9b7c2f2feed2cedd7507fee79ddabbe9d750937bc29b7873420c165018af6dd6297d4063c3d6820060eac135db9759b70ef87e0bedf9ad59ed640f4201cd9686ebd87d46aaa907149e915f9444dd3ee219f421febacd6dbfd52c0828d67f7b08250f6f2a062ef6b935b4f8997eb36402d5de34cc40ec2c744d9df90552240abe54d92ba90d7173efd3e7ee1631151aa8bbd1ae76570b4ca0ef2e243ed7bc4d23559aec311c7bd7965a97b2b8a6ce347605e2cbfe0657be357f61f6b53385a98b04273ac8819fa8e1f2527f2b98b19a92e0e2070a7e52267cc77f127996a4d76f749f064a5c0f89d65506d60d12a4564cb2c06015adb4337a56767a74701cedcc09ac075011880556c920cc4919791c1fac7ae594ef55cd10de21c6b6e90284a78e62a939c7efbc20122106ba369f02325df898b10257d62f2760ac92bf610542707a6249873d23bab5b16df34a7c6eb462a5dd570ffb5270961dff912166c3a0e50f5d44d72260074efee4ba46161d315b11f585610387acf54a44dbd6c80ad7db0aa8174000b4201de143b48c04ba0a11d3f6b8f77872fe887bd160b172994253bc0124dd50483952f6487b4bfd10c5dc89868b74760885d0ba513e7da0829d348fae24602a2f60e2d4c425775e53afa04b1ddc3f04422c67551f3ffd1c4309fa72b9a0abdd5b6e50e88334b44887727ae7620e8b4ff0836efc1dfd9ccae2fad956d1827f2f1310e4c719e2ffe155e68a65b4670cba6b83ac49e6a0887538d93c5de9e737e926e04374862569e92576a26c0e4b5fea44dfe2b75ee92223d61b473a96d74df2e303ea2882307f5923dba011637a4def63db1b0e3926a4938eced7e055fcc65b37910a3ee689cf9569ed9b8e0f67828f8df6a9642940b238742bd7f210a43204a92c7168d4a9c5d0e4232a23bd134fb3af0b77d423534a706b1c157da7c0c70e1ae90d93d52d2514363028eff957ca48f100819fc5c25588990f187b0fd4c019757715ee20ea79875895bfbb8658f3ba3d339e91ba696331aaf9e17f8dcd0a0f67bf2ccf4c927cffd4426b17b851aa7a4f29c7a6bfa224201a3b7e18900f07872653adc99b976639559f877a81dd722942ab868986562acb2e69d7d725c667cb9e65222a8d832793f01762a409291f697fb016ccb9eec02665280f1e0ee5e61b5e8f6cae98620cf8fb2c7005fd73abe7bd2667366123f834a1ddb84303a8c49cfa04f9a288481eabfd59001c921f15b89329c0facdbdbb74032a31c426e3fe49708388f2c96e0e7b48e9a2202c598184660c23aaf74cb844c95e0ccee248096ab197b0c475e510fe14125afc9dbdcab247cc23ef0723247a3d394356562075f5d4fd0c8395af4d481cee70696da45578cd823fbae0972050b6c8cd76ecb4b3143ca9718ae2999828afd6baf8698560a1c5c6e7997f718f0c1dfb96e76349dda464ff8646f79c1cec22406ca49187860681f8bdaa393c044b9040b30bf2ece3cde3081591225152b5d98a25310fe532f7dfed0505c0ea666edc5906cabf2be18524372d009ee107d9b24cc9560bd62a026f5c3188deda2723a23ff319e66ba6fc8bffda970787876ba2c47dac65e51b7bff409490842df4548818dd7f77acfa902b7600fcbde2301b5ac8aaecf6e4aad7fb5ae38a8dbb836653cb093effe0e1f3891209bd55a671fce0d9f5102fc2b5c228fec3c21c3fed8c168626161c64a7a973b5a767978ec8f03e19470852157ffca64b833a0f152b681ba61ef238627608ca08837a88805c48fe6803917cea7c64c0eb9b8929597001fafa18a0bf4ab95026b7a44fad8a2ebca469a2e220143ad5870f97c9653179030d5fd5200236ea7f799fcb8712a1f418549d3a6159a9a29f5ce766ce8e8e3ea83586e91e5c64a9d5e951ebc0652c9a66f8c19a3ab6d88fdc30ba2d3772457524fecbc8907f2726e4ed96e2702347acb81cb88d77e1e85e270ce74d1ddbac7cdd92470bca6d75212bdbaf71840631ac27b289e4ef452544482225ec083b4dbaaf3e100913e8510f9d448bf38235b42636738b0cd7c3ab304ad239dcdd705f8460d8413bff6a314e4ab83a88f367c5fb27d58a4744f67330a8f6ce91ce46a71684758b3b1c648d6e04d99ba689e7546f7c8058f44e6361b79fdd4c72d2fd550c4f445018f7641e43b564591233bbcfe88adc3be4067d013e09ce1614d1abda3fd411125f25a671e79879679e4401ffbef4d3727bf19bd483831c5778ec188d958b329c16b42355464134307953173d61264f2c7d25d213b55b447eecc2f1d64c5b8e726d125f8d226443ad885d9833716df95dcb8eaacf69137c14721e59353740fcebe40fcf0851731bf833ff2237cfae4e85c357b95abf9ae05bede2c329ed175846e3a8547b867af5dc2ffc4e6b6caec1272f798f89e411e560ec8b82eb907e2612e96396969989dc136fad45088c12ba40ae0a9519dfe9154424f47c775a8421fc3cd34f6653f0b01d241a992a7e75273410755dac8699a79ad94d38d30dda99f282ed1386a52377dc917d21ac48b61da2cc6046d6af6dd1b39b333ac8896ed34241bfc7c584b98c8e60bdeac1f45d38d4ad157ac8f43fe597b2602061b14f83b9ce78a68658e5427a257f166749986dd76f420200117f736302a8e150363ce19d7628f8fdc2e2364a3df0961ca952c1e1d4dd300613e0306e06bc1fa784bec337413d2ad355d3d434749ae11b2547a2f2c475bafcbbdd142c68483087c3e6b167675b1dcb5df898e8a263b77254d6b47bb903f20ae93875b4d483a3cd273690f44dd97251a492263c286d6e55829fa7f6e5fa75d3b9e2932d6c1e321a6bb238dfd3c6edeb98524b238b10b5912da7ee2eab10743b799937b69fc669819d37734607b5056ea334a8e5c141126de5570720f17a4bbc86ed006c284c4ab9275d85838e0fee205cf8c2a4170abc4404d19b9a644d9d235b6f61738a6924ffa089b57f01281cc313744925cb3a3a355bc21e3d2e92fa130422f20d0d6987a8562eca83a9a05f03b920489984ca0c53520508577eaf073d3e98d571b0ed0ba0fe11acb01c9654a59e0a3d2328f89e9dae072d25909a1f9d951ef571f402e287b0303c839162c5b765262c6be11c34ada1ac5ada0556da6641146e943b5b86b7442ecd74a1c522b249d1b7a9c1662e8824c83d9649a8a011cacac3df8a259525b161f2940d0e9d2a71df48b403ad499ba30a12cb8e8fa3d1c7d8c4552ac6f19816090cf84e10943282cf278c099a4ed1dbce9387121db597b70d19edafdc4cbe8eba1f86126f38c5c7d2c7545dda09c6644068f61a8e875424d07240bdf2929f8ceb964991dd3f675f3933c762cb988d85a2a3c040bf12116498deda794b296968a9465e1b37a6139825b3634d40ea38d995257f206cf77c816140f332e50f538504fd2d5f51a00f00b5db43a1127ddf0968dffd4623327f6c810a50a1f7e28149e7bcd3068de33b059252a187f33df29fa4abfdeeb271f23449c6c1ddc5d4bbf45a591aae6e0ea3680dc95267b8dc5470f2149b7d4605114ee753423e3d0ee8d37e416d78ac6d46c7e963cb304eb16a03ea22c8f21f70389a00a43a57a4022a89972170dc548c1a4a682b0c70fd8e7a6864eab4d6b11b1b232c97287cc1714300eb5d7716270652bb998b5b7a2af44d69075164d942dab0792f0564562e06689bc242bedb8f1b9aa3b8a2b98fb91b9d7f21fb049e84435c749c593b82960af2c4fc1fb09db17ae9d5505815591ea436d9533921e1257326dcb7ba97329ea0d70a54ffad85f06b5188ecceec573411b38753c9aa5df918a10258dd24d54b5dbd21baf3a45a3d2a96192f639bfef4891b66ef40fbbbf5a01e9155275eefe844f78184a671b239b86705f6416ec50b518336678186704cb3fe69895be421bee50feb2c6708d4b466838a1fc489e7ca53c9f6f0155100a2cf54d711efbc5af4f8f9f66a555d9c8d1a62b81d4a60746c2d506791382bce0a6a1b79acf4b1386b877cfdfbf4c4679882c334ca2d77e8e6686e2f124a07f24fc928c6e42c5dee0ff028cfbd721baed98e7b7d576e0c4510f6244fd1060cba6cf7ad4b9a9743738f82bf7405fa73e2bd2793374299eae07adfc0b2dbf61585ff7a920a803523365335f50e369ae9139882bfa949fbddcfe3cc43a1de6b23867f66953266c9a18127b20c2499654690c2bdafe7a1c4ae1a327d695be5cd1dd87c87092458bc0c8153bc4bc7c6345879e36d3f672240d43f0600fafc7007a89ad54d0e1e3db63a96bc75eae094094356ed4d6db3cd66a9f32abf2db1f75b2b0a150839b57ecc43a386db6943ce1422287391208586fb440e978b5263357ca78c17a7a8abd5939ebdd10d037fe710d17c63a40210014a23dc507a72b723b90b0d87e619ffc80a3e2d44323a40dad7d495ad29e5029819922d4bff9b9cda8e4d0bd90559874c4c537761549faee92b7c6edbac6ba4dffe7ef90fb592b53926e368a0c7718c8535c9ed464259f7a1454c7bcc7b49a7fcd0b463593f45409727812a75e1badf98582f2ce397e8ce70854215a121fbf37e6dda50d2a6a876c9175fcbe61c3d107c1c49640be6b1a7685169c2c82545c65a4847778355926996b013c1d93aa1d1f17841173454521b4739c494131096745200e5bf0c45fe0c5fd9a172cb1f4a87d7e59ad1037a18b7d646d57f9a86ea5b5f082bec07b289190c57427049ff6fc56e22393e6bbc0313243fb5f0c25ea4e6163d76d25b6dac68abaa9f70b5a52205c016afc8129c258ca5d0132f37d9815558b04a54f0785767789a6926ea81bf8277dff394b22bb7ad46b1e94de1945c038828b11d6956990f611b33bb71c6594bbadc360ccbb7366083aad516584a8399e757f0240a57e9533865d12e3dc9c41b64b8b17964894357991c8eee838329bd7358aa32d28e3abdec693df7dfb5580cd307710c1164a38ac8fdc46f4447e6c6941238b771940191635d609863968dee864a9ae67e29ac336e2fe135774e29c244277538e39e9eedfe33fcc021c852099580ece5d176d67fd5ad98731406873ea26b0cbf3bc6d7f5ffca947fbda653a50cea6917d239e2fd1f2dd47409763c97f1c850f030d331a48dcfbf698c174dcea79dfe691d4646c2d25374c6b511efaee50b86069a12f322bae901bb773693e0e0f92d4e0c5a51a55f6e65c896602e872bb7efa6b0d746fba83b4dc576cf0149fba523c18ae1ac16bb301b1a93111c8fa166a76f8a4576b691bb9c4efbb629f8c199a83cdd0a6856ea8e0bb3b1d7a9d52683e780e5208f8070c46090b812c4385759f961c9897b622b158e8269613bb250aa97f88434bb96764a2c893e3497da8d61664be754aba838f1b8862c2395863a7a96f6ca4755d27d489c3320921d4f893c62ae9e3aceed7675935c46f1a006b3e848fab93c6afb553fac0b4d85195111e7f39a359154c328f844b9177b7aaecb0a79bf3987ebe8444ae5f969e82eae9b278280f458eeb4df7210a422960694e7a15a6d4303f5afd4695f2b99e105cb2d944485a56335775a93b1319f90875d97cd8ddacbc097d868e20f68d0b40e270e3c4131514c88869e27ca5537035557869dcf219e989dba79539ee738cc69f90db2314889cb4b71fe1c2d331088e949b496015c413bb5130e872ff2a41aebb01988708818765933e0e92fe8de2585672fa801f213dcd4f1c2976728f0637d28525b8b035963a13079f71f4134f1546a21df70f8c6c7b95b9c812d2b6a9f01f1a4eba741c71a1f8bf7225133054fc97440498776824a83a1e53aec100a97196c4f5066ec56dcef891f20aed850c2ad8f44b312643e2a9a84a13c99e8ec86fa7f80337f78ef91a1fa1be92494031ad8af7f811a96372c0b702ad795bcce19c9ce727169fa745a9f53b447ae3c9a52629f1c1160edffacc362346f395ef9b0cc8b7494015a31af4ae9d81200fde3ed7453a555a46d4a8c3c3bd2a6407160e21d493f7a547e4eb3d9e335e56a5e6475a97418c85708613300db9ddef5715f8f7b48353dc823746c02f8d5f39a03832d3ff6c1c60990259aaa58098a9fb20719d36567ba34522a3db2e2ba81de1298a4d321bcb09bc597094439beb3d8312aa12512544ff1fab89d556cd752bea8d9fea7008785ee1b5b7a8eabae8f63ff2758e1f1ed61f5dbd529c595894f802aca8e90710abca34d86c55be1971da7c792f2bd2a716c120a6d0e683d30fb8ea40bb8c490760ccbe105edcd6fa5a4183c5f3850a91e8240f8ac21e7c90ffa4d46b0f2913da64dd6157b9dd9d7e2db89cf83c1ab7a86abc82ac16c6c633681a761ce10c05e4502ffc358a875596d30b74124c993b224d134ffcce4f542a5c14706dc5c520fd9379572cc84e3ca117ecda8117ab2ff649fa3620c650207e65caf647872d1d61095b08880d58dafdb99cb6cf0feba632bb90e21c488553243a2b1abff6421018ae022b8c71eeee20669bdb200d6a5ba0ae8561932fadfeebdaf5412e4d3304a5f05faa9e1c7bf913c0124fcf113c82f660772414aa1146263023349cdcc79f4eeec7d5da07f8aa105760b6f9cdfbc82096b0b73fa5ddc03d82b324be2ba55823d2139cb9085bd6677cb0b62e51a02c8bc5154a4f8c9074c69fd8772a1607607bee2259c9d55da65fa4216eb03de35974b3d4b18d705ec984271a5c14deddc675892c8bce13af7dfb74d9aa01df2e6401636534c392d14b50e4eba7b683d60d50f8a2979252f69cdce28608091fa76a9dd6ce7778bf969b6b9cc1577f9bd4fe3287c21575e5b6ef02592486c8f67552811397a1f7a08f8bb6fd18978a7af9c5725b96dcf4aa11e1c11f4b32b3fdefd2e64fe58a429bc08146e762e0427b4d19f4e01315c7cfd6f50f554c7907d431590bd804d54932e5d03537b7e090c164ba8904471b3e13d9489433116b8475029acf04f44e5ccefadea0bcfad6d5a4a70130c07038d580abe6c478d5e23d45c4dc78717f3e941c9a9c78c0c216124db44808abd84b8296a23ba5a6def5eef699c0877d1a2afbe66a2c193dbb5718b672970aa0baf04758afdbb9141b78946ce04ba760dd62f8d4f0d8eff108c07581f2aff355b62bb3f7f8ff829b8512fedf0eb9cdf99013f4486fe1b86f0c2e1dd30c4e3217ae125e44f2021d0ff1b5377f7a9916eef6c94f471fc4d9d0c6ff5da98ba6139032b60f1bc473b61ed7a787d53d244b754be096b3cbd3d49afc86f0365d6d27ac39dfce3616a259b21a4d7bbd610687f71c681b87ddc78d9512ef2607735d425db5ca83494ea6839b9df518cd565e29e6cca86f4589a5337abc5b816b8afe80640e891bed960814b8d2fcf4b98d92df0938b8e323528221b1752542601fcac3ea64e47730e5ceb9536fd94801a18ea08d12ed40b6951588c4742d332eae1507eea4e400c5b47d232f0e7616f11262d5fe888c6af265d2cbb82f2f5d122a8a3c5b79739dac517c98ddbe366cbe7e4d865b541c92df7886250eedadfc613cce0d6ae90f773f1df7fd7db657275ddc698d85bdf47623b6f023f09eac9350140d9b824e432320c640928e29988ff34f2f8369d6f05a8dc507df2d7526f7b100337814c2d607c60429c8c4bf4ce8c00aaba60160027129a3655c2d80d1201a597aa14f3c5454d4d1fb7351c157b6a3ee58285035e920c8b239130884ec77a3b4a4cfac763d87f986c6e5c9de4a6d05464938779414e2b60396dfafc6fd7c529ce2464a25d17ee6df260b146a60ad837cd11c3de079ace8d7640222f31474332ce76ef5ab513e0b04a4090fa13c9ca60e804ccd11abae6afff9bd90feb027f10ed0836b7cf5077014f9fecc1bcb0f2f85015e607a5da6d871874afd753dd765ffb408d6b43ad4c0527bcc0bf4b970bcb92e946400620080a0b75996dfa79ce4f2d27ae6c43ee48214dd20305b50c24f366bd6c180229122de5cddfaca51a525605024046c25b937c4e7b7dc8466a1af15da56227e508b2b7c75b3a05720387eeb4df8ad26b71283210a5ce56caa19d77d3979240e365b7b74e5a5a0d65fcfc6e1b7e94e6ae4470ad31efcf3ba08ef93c592318aeee9891c63afe210ae3c2644a32545b8cb20820f1997c665fc84b0f6ec5d24a585ecbb498d3c8b81f27bcf824115b5c40be341e472ed3ff1bc3588590db92cb1a0f4cbe87e74171125cb9e29a737609c16dcf021384cb4348f4892e0a1672454708e203beac4b35a6b8d9eef115eb233eb5f90955abe37b963b4d5947bf9d3fa86e585c069c210556e59056427a8b6860b68d16761b30fcddff233733af1049a7781d8ad5b5fa07a23ed87ce86f50e0fdb453d4b1ebcae94a6a58452e2a4883256f5091c95241c91838dc5553f1181952ca934e07d9428a7cc15c72a46242fddfd4a70c2a0423e815e49023d678a5ff2760691636de449f76ac4a1876dae8ad16a32b630ba2e19f5142ba991d0b06877a9422f79ef5c890f1d2b34ce02d0f5de03d64b176c0aea9f5546b32813199fecc162f0da423830e931600853f9097dee779bd6a153b6e58d29d55e802c81107d7315f26b25a75096744eacbd04f70536b3ed6eeabaaeb4f9828e52d9f6e1db17a7987ef8a0995b1201a0e3d791a02d12f8565f632397d20eef9d461ec4b8eee9549bfca02e1cf1988c33f7f04391d54a901765321a67ebc067be69fccaad1fb1813e4060dce5fed85cbb88c5329a4d57796f9474c53cf7e296618b6a665bdfcd9c16715af53d089b90d9d977a4bde468851a8c59d243b13d58fe084412037bdf336974c4b024fb7108cc2eea91b17e394dbbbc6b968f9b78222b3dbd6002cf788a4ae5692ecb417f1c9fba5be57c21380ab61a74116716aac18fdc9e768a7fa015ff20364b04d41e74d1cf70ad37e1e669dfecbb6e574c240fc5401dca644dc1d06001d80f640f96a5560b49a3f306a1ba707dc82ace733e2e2ebee84e6f18a85d84f9c289ddaf72b239723b73ee9f6008477f5f8130b939f8328750f1060912c0f39ee91853b9d2e124e3c18608e98b386be072a9bb53325dbc9696f11ea46f38043abffe4ae641c1e3e37546e74b365358937924045824df5a37dc39baf82325a729c0f91b641913c7ed3b67674325ec693c23d62256ba50af0d3ec0aa2a5fe0d88f098cbeef3784e7f3a1d5ff03c80deded32dbd9daafb55cff9c9fda1ed06545fb8e74b07f81bb1f9cfe2fbf7bba2235eace308916605137f83bfebfd04244be73e87435ad02e6e02d593300cd0884d89cfbc53579b9e77f6397fe5b2289418c4be91030c4738a7ffe57efcf3c2385eba604a66381791101b72898bbf42c0fa388f0bd0599c2efeb539f42be26dc712c93747bff0929c710237703281c922f99b92c89887d0b718df5224a2ea828c633217de019280bb01384968f5fb364fd15ca89df162f8a7350084e7cc09a654f25a0080390c9335d09df1a1bd472127ba10ed4ad7b76f717c50fb5a89164ab1ef458474beca87f63a3857fa7b35475e6190365aecaac52cd4c1bff635f595b09168fa7269780f367cb8f95c5c7626dc7382a8466fff64a0c92213fc7ec5d1ecab38db33dec151f898587d266c7a93f716eab13b2610ae638f70aef0a7b4e52f8620e44bcaa40d7f412373b251078842e3d83d3d27ba5e26d0c9747153f2b478d64dd5a17264e2aef5ad5e8c4862a7ecf7f93d97246ce2b3fc409947aeb4ae0eb540d30f2af77fee27d8c1ee7eb1aae6596bc6da536533a6a36f49152fa0b099e4be4e0591a1c95db8ca0f7d294651918191df3dd1891c13f3103d4974d7d4dc685ac344df4f7c8f7e547f99681669fa68983da0515a2fe301f21bc4b9a94a1e681651b55042c3fd04e50f4d17f9d982f0e31f005000ff3a0451aabad5a79a20ff0e6c353328a04931de909e780026919b0840788766699b727164655c8a867b8e982b312d39e3f34309fb59a13305a1638d3e0242a1286ff04a8ca2d6bedec79650a9b2535563993bf0057af6c8f4e9b840c910933e3eb57bae1e23309e11752f85a1927083909511d103ce70612c4f6ebad0e45141e79bdc2450b98e707bdf99cb307fefe661c725825e19ae4e05fc87112495603cfccb5fb0a5e4f8fd97c7a5e7ae4a8a1104289100dd48581f4e774c704c487474fed5c35fa6b52d4ebe2875abd387fd2fdb7b0a89ff6d6dd5e22f6e6b682074b9c1ff95cfff8e7a99c49ccd43e0704820ae48a7b9e093a43639220a1fd4ee35bd0ed374ab4b3c0cc1e259a24a49687d525ddc11755f9497901bf1055cc60ff70845e84e262acf6d8ec602880c62ec0b091687ea422140654b2b30b4ff91c94fc50ef0dbb53c122e5d8d4094bc0dcca5942458a62f3eebc0db6bbed159a1fa37e2bed37c3f001ff3549d6538a71a14e1a577f0761a93f51ca6c4975bf35f5e81f8b51f9792d75ec61aa6f34fb14e6f2a01f58042665a7fe0e10728458c3f86867240d72e40fb3826758a3b57a223118f1df1ad6ab373fcb2270bc30a1d365b12df67353ab6a2dd84ee661d36b6810cbd219306199b0f17ed652a456f7c69fb165dfab444fa2602cd4b83d9c7dd369d9cdd3c6fb704c75058d4616f87c84862ef052239604d116cc222404155538906efad9522d878a31eedcdb203ec436e66244852decf08f716f5fc1b7805890c40c12ac26550f410dfca0835a9bff4306e560825c1836a64def730bf738ca400a2c15ab36511004b529d5e5bbe5b7a8db89b3fe6a7aef68d76457cf328c92da1e3fd0b00a0f11622449c5d47aa8c5aa00d7ea5530edf397601331acf7044092a81d9bd47b288e636d00373cddb77a5917c77518fe9aa5eb4ced4e51a36caa1b0fe2cb764f63b39b2ce23c1b798cc53e6bf1931d2e936e7cb24ef44c2e17c4fe1351601791a6aeeeec48e9b205b04f8894b4a986d4bc011cf8eb3b0250b4ae9b127bc97343c2655d0cf872e1bc315fe067a2d03d43635ddd23fe1a3af5bfb736d2a89ade3d772371bc4ff60fdad54f321437aeffa47a5275b045cca6e833e4018169b6896f9d73f3cb81b2a7ab3bda69284bef94b5a10f68bad29bc7a0b5bccfb279af6a754575e289e9921a185d6c7e9678a9b64ef346ec9e9e38481fa238bb45dfdd3b40cc14a0a0d12b96fb84533039975b720bd7fef445123361c14e95ca0eba5862f72d22266892f31118657dc2cb264084a47b23b69cadfbd5e72e6d62b57bc7fc991f51f20a1f31fc531f5946cacfd9b71c311023f6d320191ac068936069946818761949dbbe5bf2cac6599e26c02b4b6151f44b25f4ef8bb032fd24ee7376f616e98b69ac5e0273444aa633035e6f2980d427849ddfb64a34d29bd6b4c07ad0ab146aa05bf6c4777eccb37e4ca843b87bff0c622706af4ab2494cd47d819c9f5d3c4198abfb770277db210bc3defc1a40e2d477a35ba3425d43210ffd80fe5399e728a6ad6c2a8f158e0d0276498e76199bd418d4504f0f35a35a302f50cbebd71c7e54524f66efa5396baa070ea5e10690e02f86e38911880a26fb187e84ca121107e1ac2d43fc534a75d449c6413f8f509a53c5d3478a9ed90690ac0d56af85ed0619df26aa9a0469e95d387491085ae65a5f8e627e067c3f3e50b8a51ddd986e16fa4965ee0966347dedd90afabdf4959824506b5bc9a4fd5874cce948f56fbcc07fac4d3243280ded6c003da9524b64a4c99b6893760f4566f8930d084b09ca69c13ccf16a1abb6be1b14face8d50c63fb3a2b58c0bb3146a52c794e3ba66d7c4f4b3678ab1b51270d0cdb83b29f81eed33ce31f4dff5e430c34e42d02d8eb596abdca4167624136b0dc667a3b3288d4d5c2927a9e85efc3399f29452e9bf7e3b9dbabc05830a3753e1f7cdff5ddd6972c314b1e581cf105b5d80585ddf39ab6af866e34bc9a6d495e2458c72bf66cebdf46da39eabb03accb2e715e849396a0d6ecc83fdb9678069ca18b46fc0857b1df826e60aa75aa00cc8b0dae3e8dd0314703cab6c48b97acf11dbae44a3e8912bff8a4939987f524c8c724c9be070b85aa5d65cd89280ade7377a788339ad781c6fd47d2d3b49cd6142b5553ac67f9fe099c14e3ec900469b147bbf6c4b616a47f1fa137ca66811e06be3be4efd2ad910bc9f4cef2bfa47447a90b3c28ef1b106ba86d970c7cea5a72d4fea720047cbaf4b95e7ec6ec29a1ab82242c7947cca865901f73b3c58415a56f9188eb7cf292c6bf761168dfb00230039113fee06bc546f720dc389e454265d835d2ecb2d793fc07010e4f56bca82af9a46a3604ddd5fdd6a21f5fa1b9d391f09837487554f3f8cef7dbf28d0273e0775c7b12dc188549f8e4217e74f48d1a7eff5a45374362f632b2f2afad6b967478d9814c392c88ff4c770ccac3f79679d130142655d0aa271cd38d8a8de7954d2a5b6ed92467059cc07a94fa2246fc150291336d7efbfc342c1066853e8e6f064d61190f2f3c22e52c2e2f42587db147de8b1050d64049b3cf89a35ba6059fe17191f4c0b618ec011e2c9b2498e47c5b079e46443149280ef661b44edaf8b68ed12b1b48a2c4564b0cefdcabfff03f52aab665adc5e375944df6ad1a9c7f021dc3adc96c7a493e4302b56baeccf198c28b8419823a4fedc1820c22061c974caf673d69af2dcd9576d95b37481436fec3be93ae45260d8599d38c45b601fb9f383012d6817d41c2e31eba37ab83c6d316d6956216b0c650e0aa0a3cb0422004a27a7ecc431d4819ec012280ee995e441c0965ebe8e96d330ccc56adfd747ec5b8c847246444fce496ad9f0f2c135bc2564a30e6b76ea1ef89080da9bbf99c8ebd3d3d33bea9fd53de666a24097c1a5cd8103b00265c3b3894d0bdab740050277e0c058af21e238e4e0980bc9d51db0573c46840bb3878da34abfc23c9c526a75c324fdea5f1ef8a2ba2f81e805039a4fa2b3de10233c296238b64d7dfa04169bb31f414b2fb80ebef32d91f92834d25b2da213dbb1df6d58a111dabc4c3867097742a880ed847e0bd74710002991c6779ba19957ebaa22b1d718a4d38417f92887e9896b80ee4c8b021b02cdadbd52317201de651e7764bce31b38a975347e26d5081a6914fed2e9a0d8f70c4aff15cfa9c07adc9603e48e4e067c886d075585b09be95edbcdee0c3dc1af2723469d4935c61f558a25541546647c0c17bacc05126f421b158a24431c69d235b37fe409f34108da1d49836d903c90761b2fea0c38b2b30aba2c82dcddf17f31f121f8cb5a3e32eec7ad00aa1cbb7ecca56709b5d21be31e7de9712f9a6d6f24ad3cb1e35cc2af8463f561ab6814ddac37773df0942bcfa8ecd02fdd709eff1773185c40ecb1578633d94e3a0134c3081f1d79ac6578b2a0f6b1369407d5a8ab702e7e6d6f7e247410584b12bdf36cb1838a6db5ce5a227e323678f522d35c876e58800ff8f5d6792993f1990fe7ac1861d7249b6d5bf33aca190534cf79a1a0c797b59951920e023ce794d95cf71d60be36fc7164d29585aabfe07911d31ce7c4a8ea2f6cef2f060f82b9f98fd6e6bd8ad236774b6e46c38becd9dfbc712259a1bc5b7595dcee6459897bddbcda4bfcba9fc4613acbe93dd9a777a731cd118bf98b3541b088e4b5a11471b32af9664d6fe0b932c148f41dc172d0b3eed04e441d8fbad547517535cf31a9c96ba6afab702a2250618b615e16e711893555207f74e735b69125ba87f43e149bef646ceecab2a98e78ff77f66be785f178d57b071d6bb18505c603f4cc2061ba2747bf168bba58828e1fa45e69d26e8d640c75d1c80ecbb3124bffec89b6af4fb37b28e7193e39d295c641886846258dfcc174fa1e03f02bc5cbe26360d39b10cdc2732474d10d399b2706ba841c508d02e447620cacaa1ccb429e5fdaa505f15f5be8e3f81188a695809ffdae4ab0f22f8d529da11c3846d6d0c905e09f44e296f2102479bcc75fad7dede3412981305543eec50a18eb148f0e61d4d47f8707858d960a3410d050ca61925ea0c67713f0b5b0777d56b1192a636752977864d0edacbe441ce4ed23fff027a012cc055ebde77b24333f4430424c0fb88b4d735f8b7a69fabae293609d7198215e5d8de910a429fd6b6f86c6b7d7550dad9d8caac9293736a42f2c051c4d0c3e996ea2898b301f9747341dff21620665a9b7c493cad3361d80ef0f5214e04eac0f4f606d7d2a934aa08bbe0f8ac7c0f3fcec6a15492998fa8530b17ee9912dca19bd7ef951d21db215acf88d4eeac347151fb335a7c118620fb7aab7252247d0c413c56f8bd2a3bbf0c83bd06b28a79ba405b62cca4f7eec58ff8f15eb57ffb40cae53f78e31dab956308b16a62e76e1c85294f2620cf094cdd63393ba28d1b9bdd485b95a1bff0376aa9c1e765d196a2a7125204791816b8c7b61d5a0c3038c73ae8c773078422b7ca0f91cfacb5089e614cb0697dfadbf9eee5bdbc15c013e58efee25ec53a64656da97bf7fa340bae32ae243524e29796a903ad422547a31cf171b1db3d6f001d098676c808bbbd34d1d84cb3a6231996c509939ab87a137fa1cd2acb3b67567a9a7b7df63b746d281001fba5b0a5026331e0b635f7ac16d9a1a3374e0876df3c9f0881dfa9154839a697f28c1e887da585c0460b2185fb3abd15778580e3bd029fb7d156f206c352447cf50880627c06cc1db72e24ef073062d2666ee02cea323e85c6f72d2c9ef1a08b6a2a860bbdfa06b8eaf7a6afe95d2eec343f9c752e13ade607ef762ff565251393ed5ac5635fd5aca7ddf51ecb0df02d00bffa5ce341a1568b434d9a099a99859213b93c87192e8c9d0a10d8ef5465578afe569fc1d7143ac13f4272f2e60e84c1e75b795f028fb5dbd02e6f469b6175edc98811d844866a38d7a2b34f0653fe3b7ef2f8e4e67ee707650544ca45169db26896f80a236cc244bfd36cf872b541888b72162b9bcac9274244c12248a0ccffcbc2f6bf2fd8410db93091fa89307b0f8d96f870fc23126b021d5c6d057dcc87a26044efaeffef63724f9fbaad956e447ecebf60717373a17a1452f9b0fb4c2c0336425b4c9fcd74b03f4f84cf580c65c24aa8cf9f73854269b5b388f536ac41285c9b35cb97ad9be5d89cd339ab87da66bf0457d8f2efd617e06698b5dd9d7ec0205cca8d509d4be3b0fc81a5cefd7d6cdd04fc5204346f9a187af2d5d7c016e3f7727c76d936bae3a80dc6e432bde395baf31f8060c7f65583a5bb86414bbdbd6a4db3e2ae38ec7d39fb123e5c84353807c026cb1949b487a8352add4f8e0125ce28e1476f191a1722c24992048e66e2a56991b2a599474b746ac68f644c7bf1406b10c1658a6f8528cc87031aaf4eba558a11a23966368f24720cbe3c04fd58a197a3e87a6bf433a2f5ae064018282bbfd0e3c616636176fca1d04c87968b095898c5a1c8f8f992df0b5852580a0d067bb50f8cf0c50f2a90422d7d2693555ce362e315d7f20f29ee30802834f127bd15bf05e62e5f9420d15f7ae240d295bdefd183c71a05d8b724e4d5cbb71548413b4cdd598ce4957539e8f5f54200a430211916470c7b7aa3c41be26d22d246ce42afff54f2f7403646bb3c2bfa2a0ca0177b6aeebf732032d83921441dc7c54c5e832f7519a70a0a6e403595118b45f5bdc90d22fbc925589cfca8aa5bbf4c29a6fb136306e8c5d03e2b2834a73b35efc0889c03ffcb482a907289ea6ce72932f58df7953540832807949a8e7b79cfaeb4599e06a9a3af8b9db0d5996df458affe5aeaf102d75da8820b0fb4e5b647d4766b2fcc49c13d9dd55e7aebe16c81b4066ef452ce627e42e50cdab7368744d53e235c64658603daf7dfa634f96c17ae6d755f355a2522d855f48a03c83ea7ecfc331f89b2a15c53dc393638f4dcfdb5405d4cdbea0c77242879a16eb56dc89b5fe48e5cdc813df363a4a4cc2590a9b552e0d904960f8c4b17a6c84b909489b0d72d65643938f2c6ed670e8032619fa9095e9bff63f972cfebfdc16036ec93a9bd77b2d06e04e68b6e824d2047914cc957102804390eca23f802d8722687faae2bdf605712dfc1e1165c1745e3a8dbb7a917eb2bf99ebe0e0d6ae955d0e2b4b6d08329fb708f4de8411c7040286ef207e3f3e9ff8a25703e74fff790c7b358654e7005e35cc67634a141291840b94937f320402965a7af13ad5df11ba492bb1fd39c81c17550ee605bbf22878da6f0d11cfa5436d4aaac7c6e9fdde06f8703e038839254713bda8df79314493e470cd72298462d466871e935e470e59722e14b39f574ff2d1ff5aa333317fe77ed1bf1932a9c37a080517ac6d16bd49fad0a997ae1c211bf2e5703efe51d19bfca9090f830462f5896fc722fc4e6a013f5bc17c982a91c67756969330f30e68e17f03e5d9df79adee6e4b44291ff28b0188177016a5d2eb24a28cc9d7022ac0cdde6ca154d279eb23be14933c61506da1ee6aaf82dcd909ebbb2b55aeab33a3dade9bbc711e2cf2ced647a64b709cfb0dbb53558a915a33dc373a8256c33d5e23cc77053d010ed6de7dcffe0eb42b0da785d0a39ed7bef8eba00c5c71d83f2b1a07508465c114be91599e1d41b7f17ea24c5113cbe91656a7564a0daf91260e580269f993585ce3a9241c15fda8ef60ca4633bd37ed637a6576a845c8f600be6ca2804f7a98ea1c3537a7c741cbc5e666721884fe777b1eee9336ae326adb645fed250932370325714a992e62e8bb9d4c5da2bbe467a2fc3edc046581020109887d70dfaf43c18a417b081e30b629bfd62b6e2e29794dfb185e27d35158116236a241ad838b2ad01cc624808de5a62153784ac3e9c1e6c3a8dfc3a9171e54a626fb3a69f3f4a1cf7e8f4d27e81b94485d7dcd994df79933ec9fa8983a23fdd742ebe99852063822f4932581e0b9fbb17dbd90e5ff09bf6c5efaeea9d5e9c996f79cdee8394cc85912cd672f450f8f9d7497eac33650f9e276964abf51871157847be18bb67f60a1674b1e6ced495587ed531bb3260e1ba0b0bf633d884f23dca3d71ef34ed56a2ba103f0a0a4cc9d6c98276fe14b717d693073cf2611a277979b39624ccb8df669868da47379b4260ad9d21339522c25985d564f980e3be4c33956f1620e45ea997531b974decdb4cfae2ad6a9c1c6e17cd19641c4238168b0726858f99b469215b16ecb4658db3f1c8bd57e11dcdeeae3aec95b586c400528a237e28eafcaa4466afa327a104ffb7fbdef10f7e202cebf8ec1451a8e6f3b8dbab3e2ee5581b8437c0d81ad5e00555d1a8dc25a9ba8f91523714d7c6ab3cf0b0f2b8456b840993b1cb80d09875971209435a37ea04ed5c9757e942edb51d462149a95a582970b8d267018d85dc9408957e0455f01ade86c4e45cd7a967051311af737edaed5bc8a27baa107ef862c45b34e7536e5cac2036eb1fdb0e084ed04b2d3b6640630da2e068b7985b2dfea71331fb759a62e1eb5a4535b438e5a673383be855dece6bb649ad67e2b141468ab4051599003fc0114b0c20884d6ce7cd0fa3c8598060d5b6234fc5104b18c3ca87f3223f779671f58d2287824ce764c48f5c4547548f54d20e944b3e97205e09350bf10c37663af2129a3700f868dfa7c90882801d79c0ffea85d6c9690089cf93c3ff4a4ea0ea08e9fcb7840d26d375d09d98682f965f53f38841efaba406aa03beb8a006edae3b9564e77ee2362365ff1c5625af3c369b21df343d824c3c34023172d97f79fde0c750fecc7ceeb632cfe207afcc4ff38a0013c6f7fcac8100ed0afdd781a95a67c7b5ea543693201d2c521860afe67e2ebca4ef22a7f7881cd923f4dbb22ee23a07bc88b5abcb31f734257e09fa1c8e8ada0472148f9f9898769921c601f850f550beb4a5d9bf60ce9583b101ec406baddba043ec8ad93c45d9724b428a3c845964694bde8742aba53d8268a86a132e00f183d4967577e9ba7006b4d1987a9ef3bf1b8885a9af6facb15341852a0ce48dde85a8f36dccbdd606f201091d9a60e90519ccc89b56e9e261a1dbb934386198a853b9c455f19f78121dd12a82496cfcf578a9dfc0fc07af855bf3bee24b1924061c5c54fda6be7342095fe39a03f0afcabd60ae1973083d16d1221a0bde55554ded6a1efdfad8a84548e3dccddcf031167d6491c029c3408e5fce490bbc5c4ff34042741d10283b4a1a7527b58f04f2f368118ada14f45234b3fed9030eb46a0714604154fb3c8bb5beacbc85b1a6ac33b92a2e0aa5946b22c369782d09eae0f4b4d0e078ba13617cf02405217367e57a1fae0899f6552f213717abfd4756a66b33a817dd17961097f51539e2ef3b154924789eea17bd86da215aa51287d7aadb0e8621eb75e96fdcf617887169784a0667e0bb430651967607b87dbe9787bdac2898e2da1c8b468c2471686d0c6a556f3ce28570e4b0be79629fa450e014684ab6d1a850ed7f3dc37723df0b51151361f0a85c05e2399445d766e7d0679983010fdfb4e50681357c37005bd40a0439a5d31705c2854b6adacd61ff1be7fdbde887fce831e055791536d5cd244f15e5bc0e7543623dea83dd49b08ec7be43c1b83faaf1dd2fc59212a4063345cb9ba4e0ed264f715ae78ebc2fef44cc668444d365e8e323909981291282d0a1d3fe9a9ebafb84c4c4774397e919cbd1e4424595174f7404620c08214fc2b9f06ad812bc4683a74e86d556fc8bc2bd1debce094c2ff64975eaaee3619026903ed8648063016bc02d67e473a2144215e1946f8527082f8b0382a4788056dd99f86f9e638aedf51497e00be358072725adddb0a51582931ec7a0ba32993f3bcfe8e0f833388a3602efa0655df4738fe829384c18b0d55a5a4d2a26cd37e5d0d77293d3735d547f4b57e1f5ff25317cd52a2bac5606893ab7d41aa7b0f5649435d993b4e805ada7413355ab6dfb2e8adb37baab0b571b5936457dade7b72243db5a464ec6015b32e27c1dcb23930f940873a6054387b38410f861ba4db9c0a21f314a66d0ee6bde7087e567d7edc872bb344b3403c84fa9b19cc0343001228cd57c7034a4114509f214e3ff383823aa64d5bbb52dcf14dbce2680156e944940c4c7d7d1e9c9e839d09a2dbecac376d7d337630868b7f4d22f62f278eb82fcbdee9fb0d4ee9fe7464f2c6da10dea027b50667eb73263d75670c3e8d0e564955d79e32c97af0f05a5568fc1b3fb3495e3ddd0814c6a7387fc783f8ebd574259e0957bd4be15d975ab61fac82566c27751d6b23cb99721a25dca70db7a82caff380d8b59ab75636b4e8ddd9a60637269eb080eaca798b9eb12f18b955582a20ffb833a5364013daa0de9aa51956f2999a62674526285591d8a5e2ce8829d9c1127aa679185bda170bb40b0358ad9e70aec6f24a1353f2fe5a12e9f81f370e295bbeb1667ab692a1ec99a6e827eb7ed8ab57b0fbef4f5d9e179bb19da0706c31059a789d95ec36d0585960ae546654e676cf26c98f785efd5770aa2a0a07c7ca95f1512bfeea377e5dbecde625e16bb6e93f9724d647332925deebfd01e42eb579ae0ecf6abda66bcb222c6b57b0db4270c1839f10797a7ee8870c91123fc5692b2168e997bfbf03cc874d11a0f9a90342a079c2a4ea29c2e7eb835c1e707bcfa360be3b63659dc8cea4339c86d3ba5c6d5bc30458c3acfae8d168b69f726ef4f597a91e06e45765804e7e01e870404af4ad3afd0b8b3f842cae2e9c65d18b1b77bb0ddfd08dd14e294c1ba2ec3ec8d7048d09c5afbac99a674251ab1991c1d70796c906a4d6c68d52cc098294254bf184a59f9f9db04fdc9fa00de6f384106acbbda214ef1daaec1af57cc33ca0fc90df5155b255db1f23dc9b27f5c78a3e9eb3b0bdcffe53dc41c1e1d6f41035e71769ca8b799eb2d51760520de4fa4daf831567dead80d5aa6d9cb0595e4fe427a371f044a89a9f191c45ae8ebedbbf2d92a0bfc49f9ef31b085d88183666ce4ce91b37db1f5f5d88cf07d36ac1a579674112df86a01306079448f6981bf3b50d340f5fee81a87bdd0302f6350a4aa4313af267d44fb3cabf6caebb24fc6af88cb23a170b96ff04a83a94a61fc490fd41c79030c9011eaca7ad6b2f6fb77aa6239c2aa19a62ceaa39c0fe8c8d822b706a46d110e375020b7dff2e72d55135eb612d2d1ed4338194d7e93e357f1e7f212a9018d11f8dc4ce6c9a1f1ef78ab5aac1d47bff0f90b8c8ac4c9c0d7e86c30d2628d49ecd218fcb6f09f6ebcce8e6a8134ff6d49b1d53efb5784b8bf1ab6dd80b49f1cae59d7c4fe6850f6820b1d1cf66f578a4a617e1b19b8ddd4e53908711ad2f494ac8b31569776ed4224ad75c08eed5ee54050f477dfcf261eff90c1b5adb2800b5a496ec4f4078f929247b39868b1e9900d76fbe8f1733c4b76d15aea791ef0faea1fcfda0c71f1556b6eeab8c8a209f60b06702803f9a96b4f255eb82d173b559f454820edd8b3a1602a1e258f9d2eb6af9c6182bbd11d2b9d7f4995c0df408cc1294acd46bb903ac02973f1a82e968876b83f956ca844319a5d5b00048a5675bfa88942616178f8de277e0ac3230cf501faa0edeef7c589599220fe9495367b8caae603dd694d0a0548e3ca88bf33ca1edbbf8b219c7de86fe26fb935f1df18901ff3b602825fd4aa97ae7ee7b389876d491288fffa04341dc3c8ec984f75e79cad8ea679168418f16888e0eb075e887a1b0ff8004f6d29fb29b89a6a7b7cc37e36fcaebc63f341ff24bfbecc1751b666d5ae58ad96acf3583597a17662743a58ae8f2771100316fdfc7d535b0f1791d0256e7c1f480e75488d909d9215929e3c4d52333c2b747b520db2e148526f7b98bc9255c906afda0a3f5c10c166309f3910249027b0875589c2b26815b2eb2c10f5a308c821b0f93210b4a97ea906c5f1a55eea477ccb406ece4c7b1e7316b2dbc137a71f22f82cebc02f692bd3d89766b979306aafda45bea94cc320946c7f58d409b9fafc9361d90e6119100c3f342ccc2052ff92f0fad011cc866006b33634eca311d36191b5db937f5e2eb2e3b1e47735b9751434c23bb1ab29e3d4c5bddab7d2230034f7f299c4449edf49eb7c71b6ee99d2ee67336da02dbdcf13da0119ff616c7a8190a4a55c28b8e2bc20fc78d1128bb11f25a120513edec8608bcf5836225a4a1199cb3da642ff4b6e39e0794a6bbb2eae0023c6b14fa830ecd8fad6d5860eef9c6a97d481e06d9a1ec200082e437829e98969a822b041440ec5039e260c29c1c255ff64c12787273ee82ad76fe14b0cab629f064e1c23ca102160beb56a1d49ff36a2cdf85ec7dbcdbda79adc9e223a257fe3391f0154f2ba176c88c898473bef712fa2e1064b86c37ff2e4db2c72fbc90b1ac063256bdf59883e70d5eb4d099b0755af6d48c60f462e5cbb02e313ec06242876344b80d64949ba6aa9882fbe88b59e79608ba45eaa007999ba2a38202fa79cf0a73da95fb1195b8466c6ee80a321f1f571fe28b70fc2936f3d952f2324cef006c926abaa9e95d2755aca261ebad997d921391aac9ad8ee8a2844a36fab92ec8e0069164d025090a9b3387d5d05615045aca304dc6e09de6003d8fff3dc09e21bc6cfd8e5ea8f3ee786a65741c4e1740ae15fc3f451c2106368829eb7eb4a4ede82c74744266ac21b3848dc253ecb6bc613bc441f3d5008f03e16818621161b7f1d76f5d639d0a453f7e6bde58773a295ac620538def26e402845b92947a946b2581f6c52a9099c171ddd47879a674c316c6046dcac15839b83ff75085411eff2c8cc2855228e39e8242b25c61663a910f21ccde231038ee740105a91c3b0874d7370583b18c9090ff343f7ae9a15f9115f8fb88907500748b6b3474cdb27d8b8f4589bd426710203ee7c2403937133be4a6c09a17530376e2f2df0ff57803fa215b9ba334d4bf4472c02c6100aef92dbbcc55d857a68893382b5594b893074ed96ee67532092f59229e7fa4510866d0b69555a324a3eb2b19037b07e995daf5176a8a60913583aedeb5de21ac3ee708ca008037933bce90660d626ea1dcf5cee4c70805c5597992295436c9594b392f0a003139f5a65cc1720b99efb8a6f93946a429db2b730b948203ac829a9a80e31db809b1da7a2f3281c645a25077801a61d1a095bfd99078580a11570363e79de31fa09a3ff12491540ced0bec6f245753e3c6b56acf9df753649c685ac62b9a6042755d4d440a6ee2b4e4bf5e4f470c13ccc1a74ef7322c8fbd55fb4991fc7e45af9c2ec6829f5d41c2cafaf9f7f05ca8abde68bdeaaf546dbdef26cdad458e264a782b26c84305139f25e6773b76362addd69e17abfbbf6662e752d0671e21c5da5605b06295a12272c2d4cd499548d087299dc4159404a64146e152d8f3561f944a290642a2b6f3a7298f49e00ee4f85c882e9b03fc9c2731ce37bcd9317f0fad288bd93737e58ba1544de44ce3f32b00b1910d8aec35cae2fd75678a8dc3d00f547d3b0a1f4673ec5b9d97853dd0570c8f2f54bf978f4f5e231b87a0caee009e15af6eb9dbfb3c838b4a934fcca2f4a38666d36cd3a22150d07f54ca6bcec9933963b375773b88131afed9f4d2836545534b21b5f3aa2c0b7f172eebf50dc79cc21ee415d7fd9056452c3183cdbdc0ce9259533b5f5ea21e1177ffb2e8a353c8bbee734b452cef0b20a9cdd5fa283aaca5ec0bf17eb53acb464ebe99b33d8b9ef41f3fb1d6b526f360bab9236e3f845149ad99eb0674b7920360baf69a9880894d4ca657888f8936d25e83916d3e3bc52eeea2b27b89348c11141bb1b05816a9e7c7642df034fec3ee5259c00cbb4a1fe2384c49698ad37390591d1284269df9a7b888c584001536a25e8f5ca440f96358d4526886bca2330b701848a54ec627da3cc2f4e9980c399832bba241382c42db645a97a1cf8d94705b315b1ce7de72aa2bc5947003ed9e5fa2b477d12e77923462750829db2cc31f116910614352ebd01b24b3498814bdb5298941264468a2c54b4a669e30d826004d04ded213ac37af99350c1263ce0124b4634fba2c760544a2bad93685fd0b46333a8cad8083c57407a8bde9581d94324dbf19835ada43316ea1e29a4b860e5565c4e8747d713fa4e894bde11121f3089146320157f49448ea01de076709204b99a7fdfe12875940e66bf212f7656cb3c5fd096f8e81899cccc37ecb17685d208c8e67a833b387ca284583291fc4ed551adcef049dbc0a6267f810816f85934e02a635318f28af64c13e003ed48b0edd671d919e99cc24f57b2ac6e8e1916f22a685bb296e1774129b74420d2672f797a81ce69ffb0098d6f9e3c98b83c4e9a445c2061af4d31ff08a8fc510cfb02bffd34906e1faaaba4321473438c938f0259bfae1804ba29dab1cf874d3c00159f5cfca02d05e2ea187726d731f17b9bcdb4abe5419fc05d6f93582f9e93eae025dd2f4aa17bc866503246687bbaf726c9491f030ba1b347831d621778689eaa398a84fdfbf5c0dafa0438ef999230babcebcfa37382dd018511d5d7d5db212f09ac085dd185b790f10862069fbcac456179b0b7e158472d40df9f453a84ba9481257f8ec7b414bc90a925cf762d9fcb980995d9110337af2fa10e5085578f6f8ac9ff8c7d03dbf94cf81349a575d0d520840bc1137256788fe3440eae26773910bdfb26f96d25496640a78a2f1c19ed766127496d627549389d030d3c4e19f2729400c55a786c88abfc16018ee3538f93fe4d7c82311fbf6cb1f141115a66929fda72638e7ad76775f5b9e08228d0f9fea43fb568693a40bdd97f0e4bfc8f764458d464021e0ebfa09172f1ec7d50fa03571736a2801b072905a2c401018ea1fe93c2fc4f4bee7dff54e7b833c12b25c6b1c3b204d4a64a538530b24f9a48219ab33061a823fd3879723ed1b4ee731f744b7fe786d0a2c886ab4fc8b40f0d617e5a73ff303172843d381a213088b9367824845cd8a8dbf06057c610ee8f219d4ed91cadacbf76f1ebc2c9d5f5080f7f41ee512e8c65a8624306e2667cdecd5522cde8d5295460842a4ac31cc3c31316b3ef74b20aaf85f4ed57de2277a17c73ac29a2bd663aa1c724a20b894b23b8d9379cc076b4d2e9d1f0142c8421e44ba63dbbfc129ea708c81b32a5d008c09f06719e6d47917c36589dbb775fa4479bf5a01b81884a911c7b201b0430d57e4907ede5d01e5e07d732eaa6d7c60d72ef6877e478af1de5bb554385b7822faa25676f9255dc3985ad5749d366a37693aad4148ce682c5579de652833ff93e8cbddd22bc9e5580e2255c488adf62974c8fa376a92f58b07af05e8e2f6467af075689a4c5d6aced0bc0eaccd3a9aee1d5f36c7fc0df84e25856120c2c1770beb62ee4b2249ed35fa1aa4f247246caf77340ed410608e2ddf860b5137f95f901eac6998a0d2880873094f75cb20cf097ab3334b71d988326a02b8301fcf2f66f91accc9c2e0f61d128c5590d1c7fa45d774c53089562c27c5adbcb2143bafca9616dcaf6d2810846535e997d3d294870a13ea0b52b6c00ff7ed56afba2a08383fca83a3238a628cbd0c6ddc28b7bf449e0956187a55a1d6e37c938429c03963fdab49bad5df60a43eb1c44d5d0c777523fd6099e0d843099be4c53706c018591636c41f72237d2ed091a503828b7204f6b278283deee7b9d9da464fe640111e71239a5beff36e350623beb97ce4e33fd41ae4b898f9ad669f4c0eecf76e688f9016694fa3b9fb078d543e11ae9e6010e584f52ad337ca881b9f7c583f9eb4b2175507bddda48083236b0c37f5b6451cd3aa35182418554841532f7137a154865dacba175a369e3c7cb43d5d4b0b13be53dd2b89b88474eeb10d251882bf933b0f4a2eec766e67f0c95f40778e2212808e15c85020b954f9a7f25599f1c5aa1e9ebe798818f78029265364fd7ff1566378cf7ad1e8562ca255a2a4d15ac43d0985f96be890b3aee328d59f963ac39592b401afd7d4f2e426acb7d2c5fec604332451710d6fde1d24f0b8689073341d735c91b413c3666122c558ee921cdcbc41d5aabaa4b88834f01580967211c14d5c62258aacc1b4aa9711a629ff5dc3fdf8f6416a0b05cd40629911dac9c1ac7ba0d12dc8808ca84b9cfd9b2f62fe01b9f6397640083ae78fedfb5b23def1388494ac3965c3b7a9b9efe9ff596e660da40106e3e4fb08a2385755a5b35b32d0bb47b93fe75dd9c1bb34ee1d30e8b207b8c3a0fd9b2d023eb99c319a9a7d60da0fef6d00f53e053c4196343d96536996bbb95c2d31ff349a544bdd8fe36e56d134fd5e1471da567b53444640e10515a643b8a23d5ecd4d3b99e45ed24f95390100c47f128c3f412b97bac1840244d68d08d19f84bbd2089529491fe6fc53c096693c24e551b453478e91670944527a84727b561e0e78378f90baa9cc75ce4f598ca9c467303a852e8a781973d989e0305aff93415e382bb3c66fc44f078ac575a998e8712d05abc275fa8edaf8ef69a4cca18d443d86c3d6d1e3e08f069f6cc9c5f70cdb1387e51d7d0e0fca73e830ecd6e69592694253f55e22609224b361ca0c21b168fbe31b15eba42d9f64a5646ff5921dbaab8b6ba1458836fcc5194705717895854a1d817cbd8f002ec1538cdb4f808c98423c9337b33420226ad73e8c1898d9245b5ad95834ce466fd523ca434c6a42aadc3006b30c70a0854ae9d0bfa2d138c10a1cefd31fd1d0c7c7cbef558afe0ddb91d64ca6158ec4e04e0182cc10bb022c0ff8eba228bf622e2d0b639e3e44d4797a757964a9c8c98667f1dc74fb1b9c27f9a04d32f189e892ba8e9040c8b7a757a800c0ac2a00c8ae9e055a61425356d05fab1cbb4e6757d2c3b52941ddf6046dfd34bed700f94557ddacd69afbb733aa068a194dcdf1f3814372e7db0855c1fa468b4b0a4c348969e75d0faaf7163251c132e75f9854247ac4b9f47873099df81bd7c6c70c039a3bb4ba1dc1495dfe889222751a905dc45a09519c71acb72a117db11c423c21482b92c875ff9fa099437184911f3f9f0755bf0daf663de28f49218400a011a472c6c20b431749a090b298cf504d466ee9fef5e756e9a8435568939e1bcb806b0bd0063e32e812ba1f4f57cf6a8ed6f500fbb2db7dedd774e89edf0ea3a3d68cd2aee57490f4c22a169dd6381751a057f0aa708688c831f1dd3fb30b1fe95e3d108b84273ada9038a8a873024ae0dc252c57226143d377b1af35149e5c586ca162041e26b47a3b40ecbb909d7bf7eadf7b801acf6232095b8ea88637876a27b404b473774a9ace64d75b7373e147b9f36d0ca29186819e5d36ef4a1d1a3fa648c115928dfade030ca8fa8a28e43f9844660cca740987fe9502dbb0d8e41a049036d9344fc8851424efdbcf950b90118c528a5176731ee0a90c3badcbe78944d45672f4faf9bbe7d30a367619eabcbe5c3da16fd5fced13513e6ae4028357b9a20fa77b08d670bd4ef4f8ef7e0871748b831d495e9c7832a12a0cd1bc75987737cd59ba277324b038aa4dcb8df8ee612da3472d313e634cadddc76b66d9cb5e384fe2953ad38014b907a3d8529af9956e9e10974a886a8d9e14e7c3b132f33fd26083ca0ac5c6ed31b295b165eff4f2274fbf0894f3fda7ec4b46d6f2ef07472d0fbbebd2bf65ffb0197dfa49d3398f1c77ec6097f996d9c91ff009ff6ae3ae22adebc2085505496709bbfbd2bdf17f73a950571ad72f8e759e17fc785d3e2e5627948e2c457116da22e59af7770245219879e2cbf22db52a2829e026a28a5da45ddc6e80f9128bcd6f97ad0ea514b7509b92d53483fb76ebcc6536ea006bd0f87aa4b32d6cdf72a4f9d74b783036061d867bbf67df2406d2a8cff4531325b4ced7ecbd0d62473e073fd4904b7eb8553e518e4539e9b3fc64bf844886d526534c43342bf85095007cc6522881d160e8b14b6573f1e33991353fae1f2d5a7895a0da8bc9e7ba517fa92207d8a9e8288c6baef6ba079f03216424b8bf61728c5244a817ea45007e35bd4231eb11e32fe64facf873c01cb314f591c4ffc49cee36a930d821a090cf5363aba1362014489a05ef25313052f0e7fc0724729f6275eccc3aa0014bbe4c696e32efc0837477a09493a437b0f6b34db388c26e5c7137b053be391c80d3c4ebbdd47dea54404c43e4255926920f0742e514caf7f2b5f6db94d3764c915b16c1bab2064f36cdbf4c8ceb56659674df0282a839c862196d0cae5b30ebc875f767ce8636de44f427ebb985bafff78e35ff64a5fb3119d6cc37429b9678771838774f59007e9530adf2d10b0aadd3444817d4a377eac68450b26b2e448a1788a11c69e75ef594f1bc8f162836cb69afa116f89745e4a4dabaeed43d5870b60c00eef4bf63a00fcbf556690b11f91479c68f9443454f7a11e5a530558d5f5bb24b38b590df487fa424ef2fe73a331ba6384ca9bd569ff1861c9b21c343ba34ac941ca755fb56f6dc2171c910d41ba365c73488dd23ae6af4df7dd8f9b5be260e20522a13246592b149b5d8359290e1a249fbaaab6345d2ca50877b406032a3aa11b50138706b469afe9b785b732b09eb426a6b2e0ac29f1614d1a9c76f34505f24e99e994c313201a68e08180597e20e6f19928d8ad8340e6cecc1bd2438acde2b3259d8aeb6703827d4f78f2e4e5738d6c7bb9f893e3f30f960aa19605818f4d254a9bb613d50e5fe0f774d1b69a6a04ea651a0152a7df299a803d79b9dc0e2bd53a76fcb870f53fbd5f0adf35c555e8a76e12494a448c0ff0a904b18719e553dbd5310be88ce90981e6dc738a1bb41c909b595885e4f96630c66fcee08f9e5db8225e02c8bf2b04262b092ed18854e5d7e89b8ad2ded5ddd4ddc45619f3d394e28b9f1dbcca0fe71c007cd60a84f9e62b52920fd8c4ce01230cdf64c9a616908e2af7717331086e71d88dcbe727d50a69d99d9c78764704434642943d8da226f8470facf9784de867c3f967ac42e2ff606df581938fa18d2fc7ddfb3d06744b38ec8a128110f411b6f9c29fb9572c879c438dc27026277d40c195f76d03a44596bdd5c181c79ef430cbd5a13ab7729ef311793e79b271fd0e466fb8fd9b8669b4bd748410dae222e847f2d3ecb9f5f9371740a7061f88fb17107e9192b1ae107defff7d39c618736ec11a9d29e3a52e7740ff95742fc5642294552630a855a0f7d1275ee74911b327871b9f233d842a8bd9df368df526950906c91d93ba8f4d37ba8e9d39a0c4fb54b23edb099b2fc687fb799af8d3881529b27557d243666782785f9e94cec4777f40c40923f17cb0e8eb265a07355022ca697ab01e2eb5abdb27e31ed3c28d88a9f661e6099d9f9657d8761b13beba61fd810b072b7b2060b1f6a8e253a94e9ad0deda22da5730a582e6a956d962934d00537f3cd9ef62c4317069292c5a4255e579d7e19bdf77115840ac9193eab0867dbd45dc1d988da312c1649b1b21274aadb8b39b0119420dd248aba61f0a8dd43c7bd4f018ecf4eb5f08f2eb2c8623159cf6baf7de79213d9a6c80310276e7d0f36e74446410f78616c0b41af9e7d538daf3da03f0b5974f4d982e1b8bdcbb6e3f1140668eec562bb85dc54018291b4ae68671f3ab50fd44445b5ada5e331cd7ece685fe7fab62ce4eeafe39d91cc1a0e8f1478fcab77cd1eeec8f4d341284922368bb6a0087b08e36d16952f87a84beed0b1f909c86da453a32dfe7e2b269492ce11350a3b2d61c2bac62de516195de39048ef2f5f1dad68e583ae1e31ddc029a6f04ea5aafc69f9898f9b671a8bca97f17837fe87ff6a0577a1c92988af26555aef2369138abe75680756da0d1ca9f38fb3fd7fc245de90eef52e34883689db5a6e5d32d93b4bcccaf0d8f8dac1488cecb683514556433f8878fb404957aecbf0159cba358e8c2c0e286d711cbfa672d1a00a0fa0eb0d08d72d1d20acea74afc52a5643fc0d7ac99822da2105e3db329249c9662f282b042b53f676b5135d32da2d7615fddfdc16a6dce57190ae00b25d4deb9cbe95eb417786a9bee2663de9e444bd52cde860ee67e10dda8cf979acae04d554901fc2a9cc1a69c3bcd33afe976287299ec262b2f4f7cda03fa89d8bd7d9a2859584a220c7b87b2711712fed32ce96e768f7e4144d3cb39cdc6d81ba3ca49bd5f565a12dadbd62298ec28503c7c4a49795c84020def6ea72872cc7618be8cab892a4e58c16be027ea3ff0c6f723e169356f8622f5c02aae3d74f186a13c58cbdd40d0a1fb671bee1f7cef1af61c2058d01c919f6312bc7fd280bb011cc407969735a87c0e87f42b3af45cd691ef31a8248f5fee1f4b402400276228b4e1a24428671937b0c6cadd61756f4593025c1ff9a9dfd0631b52486708df9d36a8369a401a33903a424720366b78bc462c9baf2c2fd4db5afd90fd19dcb4ba682f36f2902f0a790f07494313a1157bc44fbf9c985c510c8daea4d1385aecaaa0322925134c58b8e5bc6abb2717817ca860c28a214cf6891b746aacfcea65422d1a58e8e9cbca4bcb147b4d82aa2e20c5c5028a93557ba8dc7efdb6613f33e11fcc13776ec6e7960a0edc55b19da906655ee19e007faf0e5a58c7d818094b85c5b19f91c1ce911df605a7d1d707f6a164bcc3b6fcbf3d1b0790c1cebb2ef60251c531b34e152ac4fe3ef646532d2ca1ae50509e21318873ff5782286135a98765bcab274cb1544698d28d2f73a71b424b0674ac327d4c4119aa5fe101e572d71f249ed7ac531c28c39ce708e277d908179d0613513dada7287edc4fb1a47567bce266042c24ebb3430c0c878dfa6b59430ed752971c1a74ffc54736ef070564cd6f311ef761b1a3094821f9d8236d8c30fced2a2509dba22ee21b121bdb876a86e8e18617a0c60c59bc600605788628becb3adfac831c0a5653b01e69c400fc0499d2d9fe4b48210ca6f89ab42d217fecaff3bae38dfcdf5d5ba6c68c15e5eee0bb856b9cfb8671f46de554f6ccf9a79d7d28c406d11f7b22684c08ff55c578d35bb8e0132bb00bf225f44d0556f6ef13fac837a3aad12132929ac8babebb0a08d1c29b305328f220ad4cda7b60d15582bb4080372d3329ece1cb6e9bf16e98a2ca06075ccb9fad177b4bbb37c3b8babca69f3baf0c7803b82125860306b0eed6c3b8e21802d13477e1c666a25f33d0b87a3cf4e725313fe28955419bd41bf1ab2d2bb5a53969f31e4fe54b6a121c3b50bd6d1d6b7471554680f9a1c2e2340483778a949dfacb8aa6d403d1b3073d7e9f4f1e2a2a99fea95644eff2bccb0f73d46af2f4a75d4603619c92fea219c89c8a1b37d3fef995548c61e513eda883593fbdd6b2562d143d844ba4546add95cb25c96ea49a4827c14e21cb14d4daf5af10ea4100e6150383fbe30fc5ce4705c3f4334e10ec73979f3e6b42ec748b14a209f91aaa4dc0cc1b4fa84fbc7d5fefb179d83703355329d31d4d81a556096a68161a2038695086847d47b284f921500533c160a2f18f44e37ec4e6005687afb7fffd29777e2cea0da0494ab9f0b2838c79ea8e309b7757609ebeb8e9ef13f9d7e16a9177dd5e5aec9342d5e8180135edb7160ef1e1c8f5a26610a9458d8d6aa4d6491f9e4144f15503949bd0f8054317b056cf3dea5c8022ffe21c988ab7623a8589c65fa62338f0844a6cae8d006897669f77ca79f5a52c5b8a78bc7f30521c2ccc13f3ccf885fa38731f278775c2aacc63cbafdbef525872fb415948f4d324da1699d2ae3fc2b3cb6a3d68126b0d397772fe63c3cfc752a5b3595e2188e783b8eea51e0887e0f2240090ed187dd5c3d66553f229a5ca052c1db46b02fc8c60a6f025d624e98624e96267b8b3a4ec93d30cd28de6138f367b12d2d339f4319cb8fb6d642cead1d57a0d89998eebd4213073dfd96f7706bb5bc75413731b1d7a1102ab02428501557ca0eb2b7c6d3c1217d6ae80b1396225113cee2167e685bae9db8b21bd591b3110e8c51fed9e161a16e525533ce641122592cc32d42230fd480edc0ca8bd91bf10ecfa941fd2df2e052c6e6840ce3c0ca2f77fe1a73e9b42950fab0f3ff0a6b40bf74d54eca0303dc8ba09e7f9749e66899b924fa7298a5883e54d532e5c94d47692720f81edeb646a705af34e0db42afe3ca4390ec3d13871618d93655c007a0f38556195c98f5cb2876c243c52c6713d2b0422798040161dbc7d778be923ee4840f33d5edeee56312fea446d2cf784accfefd2f91b77b8e64690cfe3a1c172b84b2326d4e85167afc8a27d6f6b0733b47d5df5a6a0802e29cbb75f4c4b657bb1e960b2f499de382fd1ac147d3063817a738363479ec31ce058f73f6afb44f591b7728a5a2bcb3a149b8263a0d9f30102957e8447345a7f4c535088bac71059fcfb49bc413fc41b6907518e79ce06a5a00f472e195ecaa5d85a23a05e87a31bec454ae1a4661411deb38a5d6f55ba2f2ea4c7d516914bf80788ae341214c53e2036b30fdff7b1c0c4ef26f01c5c9fbf5766bce6483e9c3c86d051b4865dc59f136f9f9ffa1d32c0476efa76633c1e5058aff8f1f3d7d159341223a861f767ae9eca00ffe165bbd37fd24e9d9fdd1e8a8c65680a5d633f484b7935ed46be8202cf6546ac5d4d30f82d36ec8511335f1ae9daa323c81fe4b323d37b97a7e49c1f8cc2e483e5b083286aa4e6066ee12f83d09a8d60430232c27a32116b91b4009bcc0f3ed6fd11be42cf21039e1917b14bb75c6ad0d579af437721ee38737d82d6dd4d65c2feb96be9332f8c90e7ceb1a0fe90ed6f644e87e7b688368498314104ca7c0fbe135b490d6f9b49a6f999c1d34cddad6ecc7dd55e30f8a0199138f9348745192aa1d77a06f8e90174d83d1606e7e529ebe76a5b844c2a3e7301bc730841247093f47c57d268e7d44254121c3ac001b86f688d1005ac60d43df1712e7c0ba1d5ee890526a9efdcef287628ff194e0c3b72151eb962e544e119f01278ffc02b1911af84477dfbfd2dee3b26bb614e4cb50faa76cc0fd0e044c7ea82bca38f1a30b5483d6be5d88db79cc8e806e19481c104d60d74ce7ba1940828b8424d77a1677c7486970a89bf8c8028b48ffb9dab44597b2e21b127f3c635bce67c2858374e7da45f5f359fe9fbbe4eb8914de08b3e8f830e3f9b5c35409774a1816338b8f4650a0475a832884af1a585f1bbae005dbffe26fbd448cd59642afb91eb2f10bfd4aba1f997a4a490308cb35a2f6542c5a1741514e053ee59528118af86290e31e773b3222bef4e264cac25bc35f504f2fa6fcaa15eca3be76952b34bafb4a11395a6ea739b3b06f2deb3ccd20e561ddf03de728ccf662b61f4657be9150b348c9b46850b5fed4b4da87bee4dc01f4a7ed954871a418711186f2c7a8f3f03b89186b1cff0831c9032638927fd9506bcb9753bde87462ecf03169f6d21d5bf5604a2ed231f517d3c4567c995f9fe08e7b97897a4325c52ba03aa404c33cae7b2c59ed6aeed5b5c8eac25d8ff7aab813a6c9dc3a8278b449e7ccdc21e19c87354f1b659f506bd9dcd0d8a67f574af44be513b19f491f422ff1b9296cbee5401d77083b87511facdf349ec7773ec0f3cf98d36ac9e8c69cdd1b72ccee5577da7f8c27059c51b9cb31d70cdc0be9ba68edbe5b6dde844280b796f246bc33f94037ab07c54626d769ba894e554e3a54dd67d5e1818b0a633ac5a4fa8404ecb67e502fdd62a9e23427bd5a3efa7c79a6a7b2652f6b9795b5c2dc7e29bc1ed2e1fc120035d0f4c9b09e47ba8d97d2e8fb9da6e4c7322fe509fba0804c8fee31aa72eba184757fb6d79def170e469b89f97822b141ac523c3416aa458ea10acfc311e447bafbde2cc35f4e55f28599d95ba92c1097b43d3bf86e8a417010f54c17f80017705c6fbadb06218e8e44061292e44080536739f93411031f6eff0aa9e6c838562687cb94b363c9c21a24c0eff3269c2886958b2219e113351df25e8993919a9b7a74a4e8f829dd3728a9a7a49458a5759fe0611713c656188ffc95b6e2d56153da4da3bbfc270a8c958d630e4d727da127df81535c4d724002e4a280b5638051ae5805c86b4c33089b96a64245dbd667f2a913f815e299b56d140a66c0e66e4f37848de457fc8cdefc137a150ed1a8d747972fec544a77ee6b4613906ab5acda395ee076f7597b7141eb11258417b1783d308e1fdfa71f092bedcc415c409f505201705f192efe81b1c0b10b296e6a02f0870f5caf85c91fd9e46449dca1520d8dc02d61a3590a8a5c706163f8b5840445f6fde5d0fdafcb497485be6adb3b7064378301a236beb59e67e9eac5f2c9ec7f3e58b986f6ad5f3a59b069c6de228ef621b576a0b92f4ef77c48867cbcc8268dcb34504b817e402decc00d56da8367e63a6e10c34ed92660fd0b273a6250ff5a523118b4159092eebb41a2faa3908f3c93e6a3ed18db5eb84a244bb7063f59e853b941a1022cd808ed40eff3a7d4503014b646db4826775a98d2c06254d8d0d65baba6d92cb1b66d256daaae9d47a458a44d91210b7965d686cbc177faedeb1be21f8b24850303dfff0f3e4143b4342b80e15f593890b345f4e317dd45b5d1e5dc547dee3617ab8070dba96f83810b94ace1a60527f4a0cd9ee2fc063c0803d954c6e53702c51ccfe25e3cedc2922436d59a400c083fb1948f8bbad881bb67a837ac9c10604e4703795e26fd49bff3e228b354e62e0d332e722e1042d434e2189ff39ea96a5d5e3fa2148eb99944738918c343e4f04d432020595835b183e3017ba5ff72f90e828e410ba66775e446c146f0a6117968a96d0bcfa0f0518c416a9edcafdb423b79289362bb31126582071a34fa8b258a8ec86e541a343122118989f832a5853d4ab11c13db1b52b2a06b540731a96a109b730dc1a08ef17fe19b39a667ca80ac57f26fd2b27950e8996b7561df315decb046c2113dc6e154477e1e6e4b65cdb102b1ea4894e0da554d122d5cfded1d312ecf9547440facd7fb0ee6c2bfc1d340a7c38bbf8caba549b46a4c8b344c272ade8c5e5560a8b9011281f133bda835f395084798597021604e528580e825f99edcd3f47e3636b57279f65b78a0cfb18f46c5bac2b7f63b1a669c1c40342765f5d5a3b3626a2da02e6b1f15bf5337e2b225c36de53b667733e3dea47fec1b72ca31c44b407b635da365eaf35aafd784d729024de0d2f5e953a9a05224e8a223ef34e2e0a2fdfb8d5fae0ce7d80f7034a470e53102c91653b8daed5d24b88881a72efa743e186f57ba9fe22139a43cc3fa7742c918f24d08d1e4d685b9648a7e598c37aa792a2cc9b09b2c36b0801d6b9e586c29e92878c11434ee513eb91d0d5a072448342b9e74a64d96323b97b7bca0d478c2cbe160c5e88e46adc7091fbcec21a79117e98cdea9dcc289316c6d3e6cdb03a2aac0ce37379f6a153bdad971d21a8b726c68ee7f1afdbaeb589d555132cfa64d9c7a1e0e961bce643f89aa5ec58c3843b83f0fb7d7328a109a66b93edfc0cdbb3b4e79b061f3b4c383df854c84cb584b0b5c60a08e5c2ac713a400c203e75e164398e84db68851cbdbcc27ee02d41ccfc264f9120f885addac0b0f1617ac5c896ffd694e7e79f059647302f37d18754b86bfc71e82b90e2532a23235c57860aeea952bfa6606984d127d7cb128c95437cccbed8ce92dacb523fc77692e10b522196eaaa021d21941a8664f4e8a3beca653e58a07c5ebf9410fed7a2790ac5933193c40ad9e821311b4258e9572af08a0c7a685e7469e83173e79c7b2e767865651abedb5e153bbc3c7f19d7724ea1da654008c292fe454edcd6e552dde35c5992318fb3e126189d859aad3c21a352eec2da64fd86337d127b2a64f278026739b17ed7b21a5faafcd74af7d386af84c8e3b1cf67248aa45902d670bb4f9ffecd3a97593d491f6c3086d4837599778cd6ccc3af07da75bd6b82ba477db91e4f413bdc741c7e05b9fd2abebdd8a4f257910b13c434c6a425b12bbd88154c5681b4e55b9abd4760e5d5010abe1928a36a668814a5beeb7ce41539308328d95ee1b0c686d943d87cbeb12c26364212010113de5f7b4ea57f84d97105e1e3185b33751aae85632163b8d00c3da970c77194eac03e7ab73da2a0988f6e7af7256ee7e81191eb5f528980d47dd88596e132ad3447900e528eb224ffc8c092b2b96004bb07f48ac5c4a210a16b36f6cd813ad0d0284ad67c75b66768d23e6c5e400425f295530bd9f9e4ed99ff11620c749cc56ce1b621190d6415fe4cd0c66143127ce2a56d71d4330a9d8ada96a8755f273a3997167ef1577b95bb69193c19a4d66ef1b86e8a8c3b8cebce2f1bcee46d8ce57ae7c1d1dd669380edb28d52bf36da6cd1980190c7a242b90dee5d3ac815d798b9ff0664d74148600b1d3997625262bae529c0a0b86c38df5bd2780169d87f97b1ce6436b36491f9b534b4095f621b43cab540f95a0b2489b246b29cc79c29848fafcd2d59451a302bb22e1215f5f007f6c58140ed90ed42b49ffb48317c0e081495480378a4c37c7f00d6da52098b6318aaf205b559cc36ea1522fdcd031f7828a9dabcf98356199a71d995532cbbbc5a1b8497e55d7aeecc93ab2ff634c535bff41da638186dd2dc0557f430f677737cf108aebf23d531032f377a55e956b08b9146fc1503f988b2da96ed4a0a92bdf8d8dc19976b1a28d9d182bc6de3e154598cc8c8d404b6673918c3581729c5ad73f7f9712df17a31ab2e278902147a0fef3a2d8dfc6f0170036d89a935d1c76755a504ff26f0959c144076de7654c038d19a41b13fb53d750d336292ecec34fff3915597a253424cac774067e62a55206e06565447a793e5e43ef41630a92b352258b5dc94096a4ccc6c3f9f51df6df8a0f9308fdcb7e2703d70e50ae52de9f81ac6130996ad07aa616a323b6d81141f177145d8a3a07f0523818051058608f74ce4444d55130806f3199577a434bcbffffd1542ee5b73cedbd310a91bd4f66c5407c80cf8198ca55f474226089d045d29a573d16e4b666ca7bb78228a8b5a96fe6215d0abdf0141f2f3b1ccaeccfd48f979d81ec892bb32b017afbc63e001d46ba19019cc437b5f46013512c59808315c09015c1cee6b561845e60f1549a1ecefac5410b3cdad3ae254d878d6084bff883d4773d3dd725b551fef9d77f7bd9055932ea5658303c472e7533aee08f2f99475aa1f0f53b72e16963aef18a27c92c404a760fcd0a4650d6ec3babfa012ad2e13617074584aa462653a6e02b75a62fcce35128b7642dd67b72ce080fb218cb29f8f98179272420a43047dadf841563ce8a77ad791935ef64e1c15e09343dc2e8c2b834bae0b4eef446ef5aade08f529a557416218bc3ef1907bcfb0db8d1a9720935d28666e7fe5f67e97b75da2aee8ef9aeafc0d7a68bc6b54318ab719621f367c1f92b10987afc728d84716f9437ea70de0e7be34bd58049e7d7c948d7590140329d4c5b15ebfac43000b8e5296908610d92a59fac50831fe5df49f34e691e863e3d3b72ea27acf9f4938e7c03c5221f3bfddd6c469ce06b063d4a6260fdec8fdab017ff24a677d1cb0f4482f16dfdef02ccc264e8d65dd4c1bb36ae397d77792d6fbbd73ae250c59b7219462a35df37f0726ba7fce80cd662c7b59cf40b402070dac9c237597070047ea3bb5c2ae1cdbfc4619a79ca4bf8f06a537cff7658d5d8d0892783ca8f5520e3efc81e60259b7af1372840f1b8eaa13109a46992a196e1078e3d7ce4418c0d0b6735862ac68305c9865cbf8300dda24a0c39960bd2b217dd2ebeb901716aa2b0bb1f209e49df9feaf14d3bd35cad7bc1be171e38e73f50d8347290eb43b70cab832abbc8542632646fde501d196fcab435ca181eb1886765aa228babb942ff7d3e6eaa240a6f5d8d7e25e03356892e1b1002bb5923195c2e93e645e947d0d1a75e0d80e9b5a209d581fbe15094aefc0f93a28e808a52fd7d962d250880c9a8f02cd2a1844ecceb2501614cb6ef8fee04cb0f666eb2b11e68e15d452e28e4920cb5c212408eaf2731205cc40cc885cb4bed242b524008ed4f7886dac25edb3e8a41fad8dca1175cc563f4f468beeeddee62c4bde9a26f159d0679b017ed6fb544891426259130587dceec637e4b81e4f0219788a7d558e018f133f6dee1b9581eba67a821597f29f4a937f143118d29a888c3a20a597855b08f8517f1816db65feb23a1359e359fa38db9d1c216a52ef8eebf28448348828de42bf77418d2f7dae7f0bc0c0a6b6200c4dd548d3097e03ce29d422e073b1777ebcb47529065a35342a6271c6768ae742c1740ed1295dc26ab8918702e4f966123683b2df316b5acb25d2cc0e35ad38e3443696cc78836a6bab6b77817077e233d4630e2d991a06356be41e21cc7f4aeed9938071c12986b0ba02786335fa2dfc6d3c64a49ccc146de103596b82a085b32bb80c2868045310d91379532453dfeec18ad7cf06f68c4a1185718842b8bcd5811dc7d76922774f135d02ee62718f59d71c543e64d27d582a2080b5d50afdec4d19ee95a943b1038d794926069ef1a16593a715da81cad470d4c5e447306c1ea7aba31ee153adb767c0fa8166e6cbeb5988b029a1265e89c0120d8b4dc62eba77745ae804d30023647ed5e3d1ce3fb46beadc57f25b2685d174abe22ec8ee7cf73915a3e1a237d30227b5742c17a59375834a9dcfe7c33c238f67e64cb586cd0bc2cb6c5cc7a5d0a43b22af0bcf0922440605f00c4bb602734827ba5083056518d468bde5ecab56a8045c7d98059bbdbc53b7c1578f012b1415a7778896d10ab8d33214fc5db759f46cbde9fc4dfe8026176b1fdc41b1406797d6f490396bf245238c05ea359e94281a06cec30bf44f76e538b8249c3446f6b7921f42461cda18e60f6ca3adebea9b6b86dc61734e8611e49aee8e9bb1915e896289fdbcc973ce060aeffb11518d09a13022f8e70bdc61992051528d0b8d083bdb0d9b2182933a2e276f272e367faae88304ff813d26ab59b8a90eeb2e7f28469c56e5922f37dcc2a8cce367c5079d70136f247b789c9900a684df16224134dc0ac99e93f6d0be3f05d8ab4559d577439c5b29f1a55a57e13e4b443a4589e39b6363c41c7a6525dd56205039813be889e80c2990c28e9d454932311e5e3aa0a328b79ac74bd9745f8aadcf0a9469c2035ba64f06e3ff459ae380801b478a067909b817847730d70e5760cbb1e68432f1f90fedb548cb71f571f1722289d74456b86be6c3f304aead6af395e14223b9e3d276c0d238565e5638ef543d07f08fe3d0d58ea3db11a1856ffae0ffaf4cc5770703000844ec1184f1513f028e3bde3a2162408bb3b80f4f0ec19a112be02382e787f04c0dd8cbb497a46513776b10c3b82c714b218df8a33f81e5e7ef5553c422e4518f549c6c2af1f9b31e7b4803f9a99bcfc42efe26120ab61aeb6eaeab9e2ce8a67d4ce87c1aa385511644882484660c5fe6f787df7c63b1abb8862a67ba8a70bc238603a88a4f14e6f273431bf95c04e1eb2afad3b3662337091d590a27510b4c7122213a3c76c5f3177fbe9c03d07eb32a8cd639dd3208f20a53468437447bcc916bcdf0bb578901b127dbd810ba4f5989c321a2308006d86957a6c53a57df15d5198e5d6441098abfd22e7a1d24bd8f714dc5417088e03f69c9c8a0304cac71d62aa51af4435a9c5a9e8c87a5ee1dfa42969f3fb256a72e20a5c4c1b446f3cf76cd3cf90ffd241c3b8f251f1d1e4463f33e124bce257a4a0fe3ec3fcfde340ca48598059ea24e0ba4c858ed6d227b4bd0ff42f80f84b05f61feadb49ec5f7f0a99348927e105581b299e5a94c841843d493396d70de3127ddec980b75710389c169b5688630d73e43914c032fbd9f31704221a5a768d734527236b4dc3a676ac32474b3d9bafd14ee689394ebc5a7236d94c16d23e0111edd4ca3cea768c03db9c85f2bd5861ae36634dd920012ccf3dbedceed8b77d14261f82261a83c7337ceb5f0d65eac2189392ce2547c773d9230867b8b38a2243042337a669069ea754f78fe263c333709bfd871aa335c51923de349598fd0d8b7b66812b0bb935cc6ab9ceaf52abc8b03822669d4a6fcf125bc631cd4a362bab82b8757aca2a77c4fbf0ab415e2c5432f40f72296762a5de2bfbf0b86b2b937c182db40957f5d221e6d2253f27c55959805b2f9e0c5274a0dc4e11f4885f4c1aeabff9555ba57b667bdadb775072f3112c6678ef4207a0e67e479079729c0d3e273590abe384f2f8f3d0b90bdc91f20515973337d13806ec967146daea6eddf9564ab23e461de426c5abb78c8589e43d94cf96ff415a45b7f6deec58325dddb6d7ef49307c95986ce4b3df5b7c679f6b658c0e8227e79fdae716119865e16573b004ef31a05138eb151438b8ce284f7e6e5b88d9f5dbd8d10bd358800488bc26bd8f72ba0e4a18acbdc9260bdb997b7808ccf5fb466254b06ab99c101c34fda69d375381a4650760dcc7827d8ea9cc2a346ef521341b771b7d58a72929749089f3559b11886d9aa0bb28aa63b5d44335ba130294d151839dba9994b0e68ae1ce65ff0cc04f0e566cf4ffd9bfdfab185efc8bc2e1c7b39d899da98aef9b5a56e0f29c66b6629c85ffd0ce20e6fe7a61294d351e58aec4bce2c2cbaa49f24e89efeb61a78d0cfade7b64f87578d266397ffe452ea48a15b47a1ad845bb310dd40c6eedee5a00109f2f673f181f463a579fe052dbf285e7d00569a793f94259221b06b855e43be38245a2a1660b76b080f4ef0909d9eedd6fc89be10d006d48195f52d2ab300fedadbe7a781ab6359e781fe9c4156a0504f6f6c1b26e8063d141fc0e367ecbcef261f6a9f5804955f044ec6d54fa30787b97920e3f652871c5c3e32cd548ecd815772aaa5eabaad09a6f7a4db540d3aeb70e7a9fba58ceac37053deb88936546ce2bb8fc1e255c4dd483690b2764b6e6dc2dfe4154c0657d58c962d6a6552ac6c050d28151e9fac9a111c8acfe98069b043abdb782cc7c0adf7a9f25c949d097ee4239bfb6317a3a0fb1d0d54d29bd9f080ac69b567ae553db14030cff9b62f6977c096b595ef46a8978c46f28208f7b20f67ad1992394e76a1d573ac51a9ed273e18a87967d11570210b3a108fd88ce144e377a4c1cfe04113d8b17c5b73410cf4000b6e1bf970e7799abf0527378cc27e8829b9f91c1319c61dcffd41b98c91d5267e88683e5e2a12c653fb55770af9ba018f24efdce5423e97a9f29b8b78615ac97049aa4105fab7017bfc83cd9c6fe6416e7d2b1412a55e77a26c029e54d4eb77e9582659bfb2c1b3c4130ac7333931f2c6112f0fa86bc6d3d26f0f06e0683579291e4aab5828fa65b03153abfe7ace718248ba34b6f7fd54849e5d7315aeb3234752ba24cd23a8b2627bdc4ac8e59c94b500d8e1c91307b2eb5e3a13894bf44317a63724b0cc4a105c10c5a3aeaa10b5594f55097d11e41aba716fcfa31dbc78ec76c973acb763e66e2b4b3bb22ec894b6035862702d9b117261c53a409134b7dd560397ed2824c0dc4414f17d1686857d4118a2bbdbd86c4b3596496a8b272df284698c95949658213863e3b5134c2dfada7ab3c3a4af01ae861959bebf9a45f6e2c960d3b69e4fde7c900384cdbbf6382ecdd951850f77fca594dd3ebf28c85aff38456cea70898c5f68fc499f644403baa12db5639a09163858af7cbde2500ea627666215c522a22426a5b93423c3f7e3976981006c7aa533ab198ca3b0b865aaba10686a443507a44af28f338dabd3611e0df644b18942b2f8d014d8465123216fa6cd56a4f5cec26bfcced1a0c47fcf376a66a284b3771b641962ff6f20e380cb687c2ee41a989a7d0402367f066b29c6308f5efe837b8bb04caf20dd738002183916dc363565e6450d9ffff5dbde781d34e71a4f6e0c09256a4ac375268ce03b9c4f3acf70fd2075ee6d2a6898cf112eb6ad8eee98443d4a6548d0824dde562bf365c22f6cf01fb0d4577f9e6ab6068d241e98187cc312787b482de375eb4366e4ae6acc57c18698e6f7cf3966d6bd08f989e1e938e29f3c2ffc8813b63b068ff38545ae39b4e2d859e59403b5432dce741b2b61b080f0ebf3f6819918127b493ac9234716367b63f0bf1a34c14d948d28c3105c419d089a2be944fe06afa69240f0da2f1c3fd9fd19a7e86f115caa2e74007af4ebfa463b173d05d4722137d6847390289204ea634f04d8815dc5021ba948c3f922e6e6ea8042c1ed84ef0bd4e5f762ff0c65d0934a4a020a366a592af1666b548393dce18cb0cf9f6a741f8a677f333310993e33143685a2287f412fb9b2bf94c15f132bbdbc33541a53621e6baa5896a330abcd6b7056940a958330e44069ef53faf87dadc85a255a6d0e620178212f7621d5ac49fbb367c383eebbd29cba36949dac912e7ecebc00929a16dfae51d3c915627430a28db3c89b33fb2075073154df78b6e77dcc6ffab0204e876c5c0d5c7dd53f713cc5c92c5ecf33250c067dc73e9b632d1127caefa4db524efbb0e4d5e3a8e9defeb6b92d3ad50f9fdf0d96d8fe39dca463eae52a6e3af032a73e254b0957d8162517ee5ed25a794671f67279834c7eeba8c9bd278965fdea441b7746ff4d5ecb879baf834665f80a4b3999ae61e5c3e89bbd9cfdce6240fe7166298ccf620adfc5753d3547e192217fea3a290ca5d4bfce7183ec995299d27a9041f61f375d3c3d1b1abacede7b32dd54d1b6b661d5e475895acad209e411bf6ee7b44a68eee2add1e5abc6416a5395c40941d134ff2bda57c2725d2ca5d2b1bdd780c67d8bcc7ea3a0ead5fa9b878ab8caec8cd05a0712f2698995add16d042ecba8810f5aea164dbf9cf116a89779089201b4725c22697751a58481ce6088795a378a209bddb6249f6ea63727a57a701521ef8293bd4859ce6aa95b918a2597f673cd024219a26da465255f7fff523324b71fccca4b256c634613feb80f306896e6794a69d91c170665815bfdb98e19337b1462ee51b9cb5785f7ea049a72c5bdbf3079b6ed646f956a88eda89b3366a64a971eea3374ac7fe4373544ed104357bd2ca5366863d01d2029e8825fc36883a7c7eada43b0b3c7872ef6c7dc518718fb9a72c44a1e8c36aaedb60d26bcbb777e2967928f06c9d2d1de6a845cc851bc2f46b443ad31c1395fce70ee019a652452cd68f0ef9bf0cccd59d5f9fe5eb9d3cf059a2c12b00ff75ec90cfba885e9e6af23f72789e97184423ddbd230c7c9322292aa1a786272042c1dfde8297a3135b4cf861daad25f1faf85e4b51a9fab2a5ec1da953ef225a99fa23ec015d4397cb47cb9b2fa601fecde64370ed7b42d42d531cd4b72c6975cf1cab68151b0b45f469c72daf51b0cdddbc696fb93b2a179e59e786dd5b1507ebe55d2248aaf493662cd94849e50d05ba8280e236cb87d0c09e246c6a6c971db839e96c854f16bd3b6b1d83b38f169002e1d469a83b8b8c14f4bbd2a78effc1166399ace96d84ac6ecc5aa6e4ef47043d0711fe5cb8a8bdd0924791e63a7ec86b64c61a2bc22e1a9c0010da1d98bcddf489ee525f4503b8b4f4bd9042c9680bafa21bf38ab6f023526bb4dea78850ce2117eb02b35a306aa6424f94dc9cc0efa5c1cb370a7987e8b356007a7da583058ca9b8716b409e0b9b35c2da4c89435dd7e71d211d9f67d756953bc8c7859a24dfbbb259434354d662962e9896ae3ef820debfe43aac92a192c0affdb8feeb64ea9b9fd4c645d7c73d75091020778daa18ecee6bbecf50be4e87a24b459305a76306bc08e85d03bfdd0f0344f4e041ce4ba24ae1c9b2e3fe1a4f76d8cb8ac8d2bc9e7f6ad86039132f1b60abe2a891545586dd26b12108c227300c58b52d3209a9bc7e837077db8e412e2cafba3904c6fb9fe72ad291272161ec37a1748d332b14adcff106d8ca307d56d428f9c4ce5063629c7b85a99c7fd2dcf2d40e3446357f18fdf75256daff4baacfb9cf55ee10f670c03d9dac7557feff020294cad8cc4363c35252be7e1927b4e3942e872e243e307dbb0bf5339dd5b82325253d7a85d9d58568099c0f5b3a38860f14fed1400a10b2b5f24764e28985b61877bdf80f0e2c33cd8bbeaf2de5bdaa9cfe2ad11ba60ca1903e52a926b6be2d567baeba058a460115503705c6d7f92bc57c57d5c7fe2d344d3aa45ff09a70b11d14d3b65538bb6b6ec64f52097dfd63b96604d3e0d531251fdc0e9b7cd6e9e8867996ef9fe4fcc398fc57d889cfead38448921f29e8114b64f1ad1d5c48dbc9a893dd56babe5f3d504afe3e4919e93a106caba70afdd114472b2012f416436c505dc72a19d1812a54300516f509c0b684743fccef473cbb650d7651a1d10d3b8e5de2acbf40e5b799813cab40e9116194c2e7fc143bfad7ffc9a5d5d8ea446f0682f5d95304111eb387c881a8915d1eb7a0d09b53a428f3403b9ec3572639632bd9739b06a79e215eeddd1be46e7c385de4c021426be7b019e068f363f3be201bbde9c2030fc62873075aaf5a955a4710cf8a74c804b89126799d9268624e0654cd77af10cabc59799ea687287f1d4d39f6df56dce81f7ee051eb5cdb18bfcfc6d9d022c66d1f827ab95198b9f095df4b5773e43768d6869bc00c72ab4a7bb7f188912f4e6da0a7bbd1cc98655cb9d3254608699b9a699cc1c50c28d8c5e3bf710cc3018298128c2f35b3749725a099c6516a857d10576306af778d3f5331d205521e33312653ec6176dcd8abfce152c9f9f56d4aec32ad517b35ad025aadaab8a49418d99c0a2f90e14652a6feae129a56d897bbeb726634e15a89ebe7f9ad7c907f37845d73fad3bc34f869c4e2f6a85c6fe18937dc5930be06efd6f4c7b58a2326d7ee48677543ab7807f411b19f81817e315dee77a26f5a87f5b6921bff02473e01f10f3aa3cbe189124515a39fe05284320f816ea675cf7bf193cc0fc41d60e3de17815a9d2686fd186b5a6c365cec0247898cc58b65a0372782d992f8d79103d7ab3cd6df64fa1a682070b7093f25e528527d706c3506b5c76a9464191497a38b8345779c7a73fc047971da9fd1988f8ef8ce88ba41325485af3b1596a894045fa33603c9e8d5ffb031b059446b2332128a7b9ff0d79076b62d3a8b74ccac7ecad0246bf2327cbd51abc47e553c0fe07a8bb1e42c614aaf805f55155b48f49ec40643201b2b90cca348a71f9ea3576f933f5af9650217ee2baee7c903fbd2d9b9aac4e1dff63fcdb71e30554a10689cda29b3a413f8d2ea7e3754088f465a9246276453656a6342d447ac523e6eede88f5937de16632d07a1b3cd039343204b2d6fe64764ab6f0650b7d7821da674323b0d7f404f060e2b09a25fb89511edc97beb03a6dd29cc5a6266f5146e761a5a08f3738e67898cf510c1ee05742da1fb427715b8286da6bc2972159a50b2b840961c098e2db412116bab3828ede6c8c5b2fd2996157316f108c2abf076eaf94c42e60d28b9de0db6395832594440ca0569b7d8ffea0977726891616bf3ae746df0c19a635639b1ee38bb6cbaf5c4ee65ae4aad1a51874afd58b919dba4c2d0d16bc435448e5e486a51bed0b6b2d095c02d23d3b83337a9277c8836d2b52ddff56d6d73d8d121e66f20611ba875d3bf46bdf7468c3710623b7bce84fb98fd91a1ac4725447a52bc071703b39b14fc4e894137cebee685678b9ef1e605f4d6851616c2d3fb1c7cffa89ca89efe9affb50460e70312ad66362e4e1e021472da2f9d26757a4a191199d47b7c011354e49e56af385c40c05cfca24e146cfe75ea1a2f947dc8ab50f3b189318c28a38f027fdfc31f33e9d3654ad5d4b14d97359507af967ae2356522933153f1e60fd9022dea5ed327868a16497121c6af64e8e8057366fc60667e0098729ea53a8f51fab281c8b1ce74feeb50ed99ef3f6cc4a0d597fb59242b352d75ccfbc46602ed5eff334189f8294ffedb49ef0dca64a132d91e7344258a9ae9c6b5aec7aa2e870e66b3e2586cade21dfdf14f7c713de36fae95a506dd16b437ab70945df87cef3818720b4c369c9b4c71ef7f02d755d31ae1fd43ba61fd072f180a172d576e8edd46eb6cacaeda04ef1ef43332d480d3a0520989cdb1f23ffad220c55257f9f6a324e6cc90a7706f3a6c00770518bfeaa9b8640eea3e54c8f3850cffdd0a8988399b6e2d1a29980d040e944fd93d7f5aaf1dd78dae99b7c556e233b17314c53b7e72135097cb9193bfe84334c85428ae15b5747951825c5e37b46cdb3630d230e6836b4ab3588cbca2fe5a23b5e7d77bd7c100acfa0a48660530004620ece2f2aee30e0f28b8699e3eeb1cd05ab2932fd8f76efd8268305cca16f7cedcc5071e8629fbaa9f75a1086f81b5c50002282942e82bf3b1d469fe0286d0ea234f4e7e1ff382ecd19dc7a7e0f69d4c3f282a9e4066be0e4935a05c9a054cd6d9d7c2740b3b150c363d5aa7b36ab575fc7a70b16a03165520edf5b93b05bf8c31a55a8ffafb54d74f65667b5f0bc8571746d440658cc33da5c7ecc1c67728438a1036d416292e0bcd7087e1c1db3e02cf0db374530e762d9886b241dcbafbe22933b1eb423d568512318f0732e7cd256c525ddf4f92addf690a514669b10066d30591bbb0e4df106ffd55d418a3579e3b79c941d41a3f4b13f52630b4151a5a97f9e84b5a248fb14f6eb4b6ddcfe7a146b4e823516d0a01fb6050855643e737df9fda32f557c7f780a1e28087a41661ad0c188e4e4d17dfc900bd64cc0f5119606593f5e5e86deb8e23cc33b112535f496d0b4135b982a4ec356270e3edd2edf306f5b1a52d42b5fa1ad5b6489b488c861fdf311b7ac2bd4f2579fa94f37d0e00e2adce819d75b9e59b9332cefd00f32acce2d645fdc5d9f8e77d3d6df5918d60d4efbd796ad580f603f3eb1d0e3a7958553229f9975f3a856b548c7c3c4afef20958cf833ceedf7a3f659d014bce23406c4a3528a738eb6ff2ed7157574efc27cf2d22bfdc984a19d822b4cb9a4df3040f0d88c00621d6b8435812d651a2333bcef02c60ef868240ea0995df6ef8bdbdbf94089893fb9a29ae0ebd0b2d651af58e93b4ac454f1e2c0f34bdd326b47ca35ab5ab8be014597bac357fb114c1fb182988cc242b82b05fa8bdf6817927b0ea156aacd115c37382cd250e09a9dc8763583a0503fb3f8abae4afd8f24372cd1e7ccc5f5cf4a5f68fd73db9ce5977372ff8ae301687290f155d25f89f479bf1f4564835aa98c11fac38e6d0f4285646f2acf6a6a037bbb58d38786008a700524ab2acd7a8eedfa063eba7c03b27f336997573fcc717acb125f7ce5eaf103db67f35679b90220e1687a20514970a7564345f047fffc4502fcf259c71a252e093ca0c1982293a29e5453a90b6b5c95d667fe9a8e2639b7b32fcbdffea07a66661ca1fff01d0dae2ea1affca9fb07df00793e3ab07eac8ee5500cfd1286706451b102a0dc4f7ed349e45c8ea4b0490cff6ca639fe13b5926acf61fcebc6e5a5b406d05c0cb9eca96a8d477083d76192e7b59fd1bd7e78cc78d7203889a6c6b936b7eda415f080defaa6bbfbf98086ed93dea3b89c0631ecaed22e8720a26f70a284245051ef2c2bc7a5891469176049237028a994b024f9a6249a26969807b2797de589ff12eca456115e0b66345e97f9209596d0e55dc0bcb2cb4d897178ef5653f33f50c98f30159d2a4479594c864ad218997d0038cd2b08d34733b1a160d5cc00e3c6cd05499273c17e427d03cba7182244401b032d972737b95e8735e6d3ffbc19e1888ee7a38c3ebe8a3d1f086563d6919a1ddde0c968367d1e1dfa2b99d59db475d333858074f2b516fc904e1df0412be6b22e1c549a9af676b42e671e89a21154cd59b887289666202844ebd2f0019b47b9922cb30233f9011fb594bd1dcc96bba6309738845002eca038b815786eb0805914f61f58582841f467a3069e2aafe1f9827d849bec615df292b0d4fe6f8e1ed5d27691b89f062830938384852c2176a0639bf9d2232d27b21f496dd9870a6f9e322193e8e933750ff993e80c286006824890c487f950a358175f86b844219276aa438c5309ad368848918e4f0dbca732613635d09d5b3747224114fa8225c2878a936e3246ee4f6719e702b4d9c41246f9568bc1d7db7a165429aafd4280a5c816147ca7a329df3fdbe7dce98a2d42bd623db0df4979b5bc219ceb3d3617f3da6f59df83bfc202f9ffbbd181b10e247e9b77e4ccf9405d7b5a9d627bf735a78b2fffd64a0c2e527df59f518db2f8ca90ce2f8c5f0ba8c7169fb0721f50ab87664cfb5592b865a89eb841627ad82074eeb7b541c0b4e90c512b66b6a319ccea34666df80ee3760ca17f83c0e8984521338d877ed1aed93e7e69f57060be3f4f6884188feb3e941f0f896a4351d04e57a7141880a3799014a2117cc62baaa3b7050fec9708f5740b15961ae4f76f19d0e0147c8174f394aabf7c7198c31b056c6a3c1103d2e67c13a7d6da204dd8dec8d55903b9575c862f273969722de7e8582bfd7c114d08223d1ada69ec9aa8fca5b0fbdd2d4632dbc302eccffd8d472e7059efbe699a82c73693e06bec5acb60aca72fe89e7eff11ca287cb6b5dc2c32ee23de5c909179cb44b0b06fbd038451b66121fea0582a70d07e76fcbb8e619b2021c801a5c611e2fa140299b3cafe1be9c60f9f7822a493d776b2f8f3d01662835e13a45ca172351ad4d0f3a7eeb919f1e339bf7a75dabdae9ff1a2ba9c849ac4b037c9d755ec668f12edf0a7a1c19bcfea073979013d3aad20627318233bcd599e1efcf135c12adf2ddc381b51aaa9c1f0a0299b1cdd0d26d56138cf2f6d452dee8ca5ec5ff12879c3997bda8cf048a5bfa2e6bf47d0604ab03b46e63c3db3613011edce83eda8445078399fa0a7999d8c0b12097969a69ae5f1360fce92acd3ec5d2cfe391c3da9066c97b144252e6fbd08c2394c72d880b26b48904bb0310b2a471cfbc43a51f21fe3f3408847d4ade3254a0644374975db0019a6a6185986c6bcc87dbaea81f331bae19a94e7d360ccaa481241b67219d1cd64da8465be52d25d7062d8e7140090f929c8b9c419dda147048cba58326f07728388062420b6cad2ecae0a562d3023e4801ef9235aa4a73deeefdd388b29f9f84780b37270a27341983cdd9292d6aec86b8bd63b3ab71be84fdd24863ce24708ac0298b091aa59dbffc6cec1cdd638c687b7353adf4683a3625134e9e7209528f1dbbfa44578c76edc15f23b892070f4b6eb76ebb20b3688f61c00923fb7dc75ab61dbbccc924b932566b017b322775572802d7f8824aa143b4eaafbeaa1bb1fad25907a642acc056e0f079f28b8a31be9321fc9968dfe045533d4193dc4eee0ab9196150fbbed73c6aed4aa46bfb9ecbdf096c8a0beb3b50a88bc61d9974a8b6d1d26db7e710f9c91dc796515bc20820ac5ab467d5b5673a440d1d74773e1db5214ceedd2d809a45f91502adaf34292cdfcfb774e2220d957f574fcfa37e1c434198a09865b5d7122a708e0cb9bee5865376d4935d93d865942a9cc5ffa20308ebfb0e297e18e953d116fea400c902c9c97d255a76fba7296ecf8c5dcc2ce0d57580735baae90a448a5935696bbc588cdf74e82398a3365614f5ee442577c122fdbc8dc98920d5352f61d3044846c6020ed51d9b32be19c526448d681c437fa6863b05d295335600c5c891c636f09151b0af5b8534c471ffa950ab5aaafe67eda8f043c48577cc739c7191d075cedc81ca5fcb57e19e82f8df21a84eb63cd1b275d3c5c7ccfe83b033b7e6f927b45446c855807d8cab273cb970b603e25accf81b26eb725c5ca1c8d542c7ec7341b8326a8d2f68b3aa16f5f2a2c37b96c97d003213595dda966e0b737cddbcd7ff263309fea3cbd0a30fa200e346faa1918883ea8f8ad4b0757db7aeb1373a86a97e54e42259a89eaa68a2523dfac5e21767d44455cd8d3e61fe01002c51cf51cb9760455dfd8f6c65366d43d000047febca92e2472e163f6a97c0ad9c42e30ba02a2b994bb229ef9acb25ca88d0df03bc9620b489ebdcf0a60b6fefcd111ea356ceaff8973668a9d4dc207c684b576d22e602f7fc8fbab1dd1b149647f28c1d3b96b1ddbbc3d630090ff38b5faaa7a7d7c4d97deef4757128d49fb0a693a5b3a52f804f02d59f7af0c1b8de36d917f4b3aa339ccaed5092d08d87c68d00133055183b5025c868ccb42e93afdf117395dc134cc45f1e69477fa7ad842c88e9436a895004cd7db642a262fd53da47a982a874edd830105708be63f38ef87c9f21021935ee7538210b4173e68d6dfca88fa15404bd3e72392462a5673897dfbd65ca7bbe07f8aa2c28478b7d0a93db5684f0d3b54a1a1eb606c177201829a189329a33b0a3efa7c5d7b4d6f42a87d52871029ea86779f0b0c2ed4ee3ca07ecc3219985ebef19392886e1fdd508e0011a0ce9405e0079e7afb2c12c088260280548dfb2828dc631f48430ee70943ceb26f46ebee43098f2c52de7be8e8f7c9e3c368367a7f114b27f02d3ef4a3a744a67a2144b2fe66898deb02171a1ac1aca274bec8dc773e7283d33c77b67108757b66134b111c767715b3578a959091d5507f93f8ba63cccb105997a8f6abe0b893562919071de32154b28d282505020cbc792ebd98e56145a8651137f169fa94f129239aaf9f0f7650e6ed5750534d80b265ef0d3bedd4605e7e59a26b0c799cfd37d0df58dca06263adb92c0d798da038cef40120c1cbd06f3ef3f255ebac4843cbf055483ee731144cb6ba717826c10f25b54fdb4025b0452ad4128850b1ebce97c6a0f5ea72afa7a77358f14ffabd60ae8917d857bc565fe564d65e68fc8754d65f070adb7439bf60e3cfe422a4a808f4126832ef4a13d5a780bddcdca8fa721250a88274a62f86d931c4fd0864578a6858d20b00007450ebd125cc5ad2a401230f9c90aa5435ede4914a16d9fc806ecb2d6cf39f3ce383f122b489768e025dca0c4786570bf99cbf23f7e3ac254b8b808e9f21578ba93eafddd76a7a5c1e6419a9d248a3ed33ddf80a20769f476f4dc34e6f8dedd4ccf2befbb1b30a3ebbe710a896ec6ff8d021b60d33bd4ab83c8dd2929531102c5a9347609a7c493f4469cb80c51f36566d16bef8bf7a12589fd8e9c47f5b2485ebf58947719818073b424cd0d3f3974de09bf8c92e5f04f1b6f2be8cf2765294c443d2d66b4f10f844fe280d89898db3a6a8513c0c2c626bba9654a6f72a8fc664387771860f1e42c944369c47f3314e93b1b01b1233bc6780d386573d1ad2ceb6cd3a492b7b2de46442d2b24df957478450a30e0b87f168575a257109d5ebf4d15483ba21a4cb1fe8c11e5fbedb7ee1ee6f118971b9810d6b3839e97ee7de5138c1d8d408fc976fdbdda23571ebc5b6e435124b029dd5b39733de6aae8d4e4d881cab6e52e2e9c7b506a46acff4dd7d5e0eb8914450196f8b81f69b11ef49b75b2b9969546eb48fc0bada87f22af880eddc63b303ac92057b3f5456a4124a697d597e2722cb47988440399ab5305391bad52287c71192819e4c3a190de58cd74ceff252b30c5dd032a22fbd3a25b2aea8cf907c8b0b00923817a2e93073aca5455e9d4716f8f53f87d4c4ead51b3708c55d8e89d9249af74af47f3c3a31a47d424c6c906fe7e44ffd4b31d14a55b6342d4471e5e76e3e8c25327611cc9db5ca324fbe20fb8e550df73aec09b4b84907bc5c45bff77e9eebbf740d18bb384483d8887b8892da4083a4c410cb8ee80b915d38c7a77155dd14966b5374b493d36632dabf84eed389114c18ff64e4bf6a556faca7972c4df3991bf28b6afe88cf332bcb6a0cf35f407c7cf5d1030f8c6c7a59bcfee0dd37c426750e5dd882f9417db6560bd946cf1e18b1f447aeb9c96f8658dbc201db3f11ab641d86562639f033e5fd345aa4b72f958676e2ce68aa00291591cca62315806a92cec102d316bdea48b9a307b39d41133c3781b0465e4558f61866bd49238ad80c14304c30a52a3de876697baf17a54196f41d4d5213fd02b705b28fc0f91e9ff8f3047288946dd732052061a02b14f2219b048e5b28740693f7c4cb9da06eaf4c23818348c3316efe5f0723b12202bf17f9e351d646e14ee968253c3078797a0ab4e61e43f897a34a07c638a2cecd7590a59b3d732f83e2312042e818776552453a31b10e7f0850cf3a6b462603235fe244645e8b33f51664d5e33d346adbbb74283cdd8996e934300ab74598b7ff31918fe1ff2af527c429bd0c295c9d9855ec9850edf494a3b85446a4a6e64d82888d0c73c9cd76678c667d5cc475a311b475a5717688963abed6c94db1bc90fdbbc69807827e6aabf704b21856ed37d38733b9b6d806e35fe0548ca5e21204ff8952d8348c554f2bcbfa4d1b86460f91abd94ba078d2e2047d0c595c369c7e10d0e58b694d415fc35e36bec4e5d46af4b8446bfaa8beebf3cddbbbd486787c184913175c87f32f9d980d8c3d81996d9b22d7de1dd319ad7f20662494a0a79822cc64bfa57c8ceaab05f5cd967bd70de157ddef149da76a5eacba142d9930215ac02c5ada2e4d16dbc66de9ae2acc34456b89c9c57658399e19673022a8341249afb34bf5531bac7f49241d2847d882a8afa6678f02b089690414bee6fa45f34a11f3a2414c8ccaf159159c4b1250b9060385ea587a436805d1f307b7b8f1d71d795ee3b25057acf84048a1a355ada0e202658a92fa1717a0b354982b94dcb5d9af99c7bbea9a4e81ca18528fb8f089a8b804f483b6f8d4eb3eb790c324c3c62d19a996b486233a4168db3f948e57b205692eb2ef961a1057f592363281a992aaee5d374f9eef8edc8dca7b1103bfaf42739a6d4a8439264104a36518725443aacc8ef8c98bdcdd3c4d7f7d564b4ff40cf3120187a35bbd81bb8e8518c944fda19a2f411c8260ef1efea5c8e09239a90ef7e5635fe613cfe694234dafc77690293d08d02348503fa06860d38a921877898079f1facaf85bda23a978c2bb5fb443b4b239e305d1cf37f570aa0d8394e9dd68c224ea7c010557088e118f54af3248fa9db26bcc21807525122115e1957e5c6f09a9055844b29b015060d26a375564632098f810d1dc42f607ee95b00d570185ec65223a1996bbdd74c83b12ad21e49d9630451de8a37c1e408058a1a827271dff8205a1f422aa289839febd1beb3a48b75d7969746768b8b139f9c35e61580cfe9875977805f1568adfe083d0db50b685512f97dbd408a4e14363b6e53569c0bb353e70ee02fa55cc6ed53a869a450abb12ed41704ec3f960d2669498a0002a8844d1572a7b5000bcb1862cdb47b53fb5d98bb301bf01724b844f1393f6168bfaf025a258467e9c2060f1bbae846b88eb5d6df83f43c005919f795093c1868a52b9fbc50bdeac9c6a776dda5ea3836a6f91b6ad8922333c0c53a467e55dc646e4c442bed49ea8244bca35dcb113b3cf923acdad36c8033710820e9b889c95d260974cb7a0b5b42fa16e6db9877aafb96940c7e74e7b0e1910433932df489011407485576528533b1c4e8b1bf3cb8646b28d05e61fa32241660a0da6fa276e160e8ff5263fb25e208aa9dc141b79bcbc36d2ff442138d779dd750bfd05737978a33c99bfb91011738f536fc31af81316fcb57d75ed382cb2c9a44b9f8c4cfe376e02c513874ef5dec7e0d45bed7ecd6bbebd3c1dc09ad4fd02184fc943a5201d85d12e65a3dfd5a012d37640a2646d8fbf7e13ae6bd2692c25c9274bb0c2621e1c7f05c722ad133f5df2ea39175a2c135840699518f1290e1d7f5738d7c8ccd8ab6baa87d27538edde401bd2d159213d0f142f74589dd31a9d8d16337cc4158ccd1cba01fff36301eae173dd819e5ac8e6e1967118c11b2e3b245e139864fa3ec2cc845b3be534b60b77eb4c2d8d5737bf4548d34ea0efb3bbe07e79e0027f1e012b63a61a92b53e40351b7f2e183b1ed846aba4bee8147483f89cf00ed9e042c1c1dab7f06df89a4a7e03920b4739b0552d10882e5002f4ff0ad837c80dd0500063e991527b9ba4999fb4ce35b7e752d4b6f1f824a49e015bad74bcca8313cf59c490672ae8d59dc9defeda1863568d3370c9f5eb18a5a868c603537cd72a156313c317e7509dfa76128d73a4a7292c287da1a274937f5a38a1f4557ea1a2f76cdd690d504f4f0aa46e0efb49839094fabaac1a1ffaef5c13d5616421e3a79bc4d29a0ace63db1faa81eaff63eccbbdf1d3221873c10cf27e8e813482e36aa9c83e84e89c216805811a868b22f466c5959b42dca9cfef9f2787bf60b1492e6eb0fb139aa6b65ed602af6fb43a6103b40ff6a55c6bfdd17842a85e657ea045c3d9945b37bccf3df032ee0a6b557de89c58acc9e16d41c28bb8d0859fd55f52ab8fdc097c2f05a2895571cc585c7a1c6a9513e83f525d0ef220d34d31e26c7af76c6a817503de94e9f567dfc2484d8ce310f114c6170511685e74f93f1aa0d1d133f10ba8ed9dbe88cfe29cab070c59eaceb08bd9c343fc9dbf71e6ff6ac71cff4f8ce9f068db3a49f8f186df2c8d06bd55e17f34196ecce11ccbbd9e67091e28f79ad3fe4605189d792ba38e877a13215e7619c592476a3493cf0a33dccb84ad2c8c961dd457ea048011502395321b870ea6abf8c9e40f4035484edc62d932882f78bb01caf516774cf85a28b41aaea9d693c471b1e8a83c4f3abc64b9320405760b4bd021d669ed3b973e3bcd26edaa8a907a200d31b091ba57e2cefd6ad8cde3d1e11ffef9688b95596b045395ebb34b8d9381cb9eebe566c45d12938d835abbd1786fa36cfdc11643aad82eae2433bf82441d8990847ef153304ac85d159e1e044dd97182afcdeb3606909056f7533028c690f3646a0a4e0678cfb716205c05f57c988cc10ee73ba2359204d68f0468282d3a602ecad75f866daf4ef36bef829f626bcca644916b7e5761edee8200c410bcccce51614fec057908bbfc957ffd37d905c87fb6f0df170e012c3ba9c9d070e8ee40da82fc8ac85fb1be481bd88b12f1e5a4c5f499f08bd06fc9e42d85beec83052310c9b5977a449a76797ac5cc24be51762735d7be02014eb91ebf5c6e9ce8e0e4371c9c080eea7bde28c666311c982604319d13903b569ecd2d92a0984168ceb31778dde79a83c614dae138dc58c2282d14209a727a2ea0d10f839c3a422fc6e63e68bf602983db800defb4fdcb24ed5d4675517e8ed3f143db8c0045f4a00c2c1025991296ef729c545222429d65b830eb1ed248b811c0c4926cd09d43034e4e2b3c2959d2adf9f028e7e4a9ed28253b4fa8d793dd1aed0571a3e1a03a2c64b982d206792a0fe15b3fe54940af2bd81ba5c8bda744a87ed2083022f93094fc369b1f6b50d5e3dbf9f2ce7456e7459866e7fc79670c7f166e974753f67f7dabd1af67f9390dedeb7dacf244e2bb365b8f19ff88e87912c2142b27ad1ed866fdd17173b2c55e5a76f94ef7641ddb6cf9945c906e9a968edec97104ae1bcbf71588fa6f205ab56d98dac962b51b030ed17a762e3249a73b01e230d2ea8fa86087ac0cbe2cb7c46a305a7cb5727eba09d20f806d0cea2360561906086e7f31a765003529ce0acf84ff87039782b174b9bafe00a531b2b269151a9cb43cf635f44b9017ad644f1c9001025637c84f251f423338c8cc2f6105b0637a462984b9d37158fbcf751b9e4f06d17ab076c99cab18426d6d51d73cc740ec058905ed861ed264889982ab12ed225a7703782bba7d83b512ad797a36464b3b30af6db8100b50c6b53bbf566b62ae70e3dc35af1224a2fcb902390c074e2b7319a2f0f166efe95bc85d090dfa00a583a16661a82c122f942ee7e79eb40c7ba8998e89ff4e2ea407826004a5001e9698c681f01b6d91bd5c3180b6a9079bab1a2a19df0064ef3e77f2cec08989782a6fb812b2257a09d7e66e067e306cadcbe57fa8cedbe06cf79fdd8346012f622080d1449fcf7a0e51dc8d6841358fad46285246a18ef9c13b6ca397b4bd1d3a132bc74ca2e6e570697652b2f61aaeeae286283d0f4cf9ede071460c36e0388252befa8bcc788808f820171e601252f02ff251e95440e2f94e6fd6c0468b2d3505036d677c71dd35fd2a11e2d0a500d5302c44841850ebc5c8c510f6b7b63dee158a5491f2638cf0ad8e4530efdc570fbc8159ffbe61c2b7863cc8df6e60e378f9782dabd26340bc358ce569a5de2b278832580e2354e33ffbca91633e9f3a611692e64326aacce5d09dc9fa93698fe9452bcbf4e86a3ba6e65b6c74f5de3bb008b1ef7c991392a0a9d25a923b85171db45c93059c6cd5ece0f949d47e63fb2274297c7ad97de80877388e5b255ef48969a1002362e6fd93d532f0386f52831313d0f85817a222224e73650281859b7dd34ed8b2ad0c269f773e9196faa315bd1cbfba6102070de0eb559e425e685cd0be62e7577c179feb4faf5f29720bf662bed6917e0b42b47401eb0b158f8599bd2a47143d671324726bc07ff8a0bc6272fb099b5d5df6e27b79a5344330ed8c5b87bbd0a9ae02a496076ba3e05667ed29f46dae750e1c1a9cef6c45ddf214c9346d85989cb9ad8936c785f179a2f9cdc5b3a36b02c5ffd6138294a46f2f0f17e66d57c407a9f5b7fe566333461a7afcbf5a7b04083c8f88b8ebde0d4bab9e0d3aca10ad7e0a762b68e7f02a9e330ac7fc29eef710fac19fc0a9ee1f6fecdcee3ac631d2735d8bf572cfc9d2f83996906a63fb9d48fa9a3362d1cb4193e28df01d34e8006896c8a7240af7d6739c016203aeaa2c69185f56a98b299e494a5cabd1bfdda377218563a57beff1a90365a9bb1cd1ded41e61fde7e41c514a07afcd9ca74db68771b76d4f4af0511f06f9414dd6d75d257242eb871fa1aa444ffcaf463a41e4ada6a9076aab1abbf9e2406bd6cf3e732e7b33af965eb1893a77c538b94cc5ee00b67be1633d0213203b8ccc8a15fdef9e869735142360d1394efd47493a0147bd83fba85c9b5f792c82f016ede886424161f9266b5cd1d83ed433000f2aca76abefc83ad7c0310ac0502a2d9c477bff233e44473b223b229a4c401932d89578e7cd4e1eba8ea30d5533e9ab21d33a0ef8719d84a3cd3fd65ea0510ee495d3d91571600f50b67eab3bcf1e38dd0e008b7b0c3540cefda93635f503665918e14fce37542dfb68d756d888d4ca5d98cd818d924e198cf2312fa3b518c4ef57c4b9278f660bfd8622704ed2e6bef331adce654fcd4f705252703ad103fe12d52a36484dcdaf0a142be966eaea9431acfb1c410953488fd0ea90ade1bb6edb9d2f7c3ed517c1617019e7ba4d7ea018168976736ac282568a047bd85c9a4e31a9d0d1fcb73a6081d0d3ec49e23553296bb8a426c5ee2da96f84fd30570619cfce75bbac4ca9ac6df7f801e2c976df5b9f8d289ddeb70567f67bd55af5fd865117c4ffe69b8f38be8d6b77d61399c44c8d2df94eae94ab0861d7afb9164cc32f289620a9041387534d4ad9af3d3dc5eaa73d9c31c1daad964a7a59d2e489ceb8253943bd194fe3f071949fc262f8039f74b9bb9d2935180c9b40e726ad0bd02fec313db85fd8104ebb712504ecd467c1885e9d1cb1d611a616108225283283c640592215818cce2d75585dbb1c73cd7f35ececd454afb8e1f68e48573cd93234e65605170120791bae5f978206ed8966b01cc958e57130e3781cb36858546b724fea4d3c90111912f51c42426f8b96bd4ef1246119493a05bcf7ff8cda81e897905a184fec0e24d27d9a791406c0e016284d42431aa0d7ceb87eed0a8df69ec1162e4896b43850b11e5a5d5690b35351ffcda37de405900bf6c7cc374f8274f6ab992456df82646e9b44039398bc62ce9efb034bcb7bd5e690d9a1aecfe7a690b16f0cb713fdf436c17c6ec8b5dc9857b46fe23d2bb7d5ae5f03a2861207611ff36c7306aee638c54abe776cefd96266d97f9e40e1b486adb403111055e23331c52bf65f1615efc22c966f26740f080132a6294532c323c4bb139c4b3a6f5c909de930f8f02d5b85d2edcec1281f75f05da969db0298ee68de7144093aa745e37f92990350a6bbff2f90de7949aee9d111362d5e0a589715dddd491c03d249986b294915b7d08dedb93feccda07d9b24102f98e76f3d9262c4fe4097ebab4d9c62dddad730cefcf200a0a2b7425f084a79b597e64c38aec75f81be224c237e4503e473e3b5b4fe600a2824e0a9c838869d0f619a872939b09438e201d1a2085da947321bec09c2d9d6d69ff7fc142c9a25025804e733c2e164332916047ef519fa416e81e0a3f6f05e192a2efd61fe7a842ef09fe6992188121195dc6d21e223bdf081c86a6057a952e9a4761f409eec13f77018943332e7ed2b9c46cfcb2cc9b8c13b64caa1183829a27470ba19966b1cb1e2948efc0401e824f255abc8180cf362be0d38b6e4905a88024fc625559406753090134470b7fb54d39f482095f4366974406fe2621f8b403b961135e613b6a1cb7ff6a5af69172580ecebe243b63eecf61fd91aebf7275c9e8a5051b70a498bfc3e665f15d28c74b2179fb1a4368b38a369d46dfeaebe3b91603b08ed448b9500b5ec683f7eb1849c07d33758d4f083dece95dcf64f04fe726a9bfeb1c1d09039024ac81ba05853e35ca2493752ea53c3bc1927bc12bfd2749ac732df6cd95f48ff00d9ee1719b84b2c250c0a94cab8328202fc5c46dc1a695aafc1ff56553858db008ad793a679b97090463b18b2c2610473e09003d500c07ff890be7c54a3e566b3de65df06502d1fb7e80b0f0f3ba954451e05faa07d22a6e9e5ae20a04a99b6b54ed386ef9d04b5da95adcce12cfa67a2f9732428659cf27203330404dabd7eda6d196b8e9a658e06d9d1be583edca529bf0f53af8f267f071b27880a142c3074f1c9e2c4e22dc51ee1c2860aa86b1448c0b8d5a9e7b6100d27294f8b8c12be29359d9f3e7b7db866512a6cb83b990bf0729bc5f8d4db63405c559a3a2bad206f1a33c3e2aed6ad879badba79e843c4ed99cc6900c2ed5f754e4a774f9b4b632a1d9fc7c66bd7fd062afb6e12f2bfd690740fe0c39c836460a3381be19abe22ff438b2e68065aa35c0a39e68f5e6fac26bd136014a47ea4581eec9b5e498af55747c4286bee8c1f00e0f4b38f464115e7689aace7993d0701df5be5d6f5da265f06cb0cf826bba10ee49cc7513f79705b2a4b62cd25d4ef08c5870b0bf7ca1c312d9b8f88f374010340e016ec14d34969f2755d02effd478784417c9f57f31b7ace5b98b3a479e0734ebf1eba91f13368103f3f78745770e515f1448cdc028c6834cd9249027e68b07f846e9a3a2d2007b062ba179379d1166bae07cb9d91986072c4d6930a2a601e605c2367b44e50c63a3d1697580abeae9302710fe6a36dac684ec21887bd45e041d6a6baf110ee68e4f0515ef9e2b4980323eff95ad6bc1a57630027643c4682b96284c25aa4f8fea3ced28296091e93bbdfc6de7c795921620a3b42d1100e82b0162f7feb789c1e38d2d56af4f76d46612cf4706833c5ec362b398fdfd4900566cc84b961dcab1448a252acc1e6ceffcf8ebbcc18f936a7f39294e9cc41931d7075b334c53e450850e5edf3e9d1f84708fdb3337bd6013a69ff0aadee5f66691a0ada4e39d9929b406401a8276e14218c94e27547a0c00ddc6c78c4ceff559760ed9185eb027d0250339a5d1077df20da5ee9fe7ad7b1df5ca327348afe5be8d5ddae5ae7f8a936853530eb7e02a3a90dfcadd3672bb81f0b9e684b1bebe5e5adc31365eebc3310c11c8e8e20be7243e667c8aad5d8311a95f3300a6c9818f7cd3564b6120d4b251a7d7cb6f681c76a56a0712075b6ad84b6128078ffdb9cdbf5ba69a3293b839b6a17eaeeee24f5cdc31be3c4c7ad868eddb97c3454108be5433004bb480f4569a1cc3e5d769b3cbf3ad292d9a740c6257c9b5e8a87ec152d176c821b0ba597314d317900680509d1ecb61a5120c2c1f6ebc538fb4cdfbad4ded54bab58e9a3affa042c33a2d52fa82df104d4a2b9d580dfffda65bb59ad95a0745793d06502a561f1e3e88ed329e93bef22e2a959cb623a6d86f5f3d0fb5bbd9fe9646d7177a2a727b0318007dde68e37084bd5e51e901b168d83e073845d83385464b4c27d693b8dee630ee81838929bd166f4eca1049955e0abff3a32dc5fc7504b7c91d24dc28b24b076bc76622e2ecfa228640740d3287c25e1d6fbba739b9da426c6acb371e4c7b80cc4fe4051bc541de18f11aaa7c9d56051335a0a984e2f620c68325f5c79967f29784d16039414661b224662f56ffd5c9ca0729a6bf16737284c63462ce16561f863b8ed62b6db7ee477f852d9de3aef56fcedf6cd48c7a581a2476ab17a2f00fb1dd4f007bf023e553059be4e7193393af8fb67c5312c76d8419ea1308fd960111a42e815ba7e290935272ec8f34615656cc800d21e0120e33a8b9bb5c45da53eb4770fb11e85f3d0c30f11d1c1f53fcf5a32b5eb842cf4d730587a1ad918f4a8e082614da95bd1192e446dab79ba2a7dede184938781e81c7a41027fb4203890aeb56ac1758f87b756f4a9d8c816a94e81c18824dc4b64c26d8dc2e5ed88ba8698d6d90349349252b4815bd01175cf95aaf553e8c484cba790579385d65efc800d45c5e7242f6276c491f729d7af9761be8188f40a9e2c6ce6b34599f5aa2fdbae7fc61622a82e3b70f05eebc722c89075fa4d408ef8b5f626604e172173d1ce8ba770327c0ef98cf2ebed9643b3f49608449902b4564cca634038bf2744ff1e54c61699874065c3be1d824660a538c2e23c42201d83c365a55740fbd469b5b577f80a0aa497be9a13df022d766d8ecef4c3bafdf7c1b2752c7d3d42f95d5ffc0edf3931241ae516801a1b45532fddabde7fe7072e7e89e2407faf79212d97168a887010b3b3960b8cc38407a3cecb0fa3ddd3964b638f46c56827d89bdb0e11ec28aa1e41ee991878c460607a5c990ae640b697dd9c4338b8c7965bc9cdfcf20c34bc7fafa4c19a073037de87b58869a81040a38e3ced85b3b5c8c3c2a5b291a8fc48f7ac0d205fcf89f2a5b5263b877aeb476052eed3c26bec2ceeaf2b4a169017ce709034609dd011714a8ae8371777886a97eb9877f69bbcaa297d967f803775feab7d66733c2b8b7233d5537cb73e6fcf6f754b6d807138b5851ed86e68d21cfb8885270d8d4edd7c353150696ee40235ba22f49afd2f50a100a15a95e3298e581835de0caf94edafe0f201b9bb3d19c89f28b64353606acd02ed138e4c2c7416f64c16349e47a1c4dbfe442243ea6dd0e143ba8503db808ff09fd8560a39358e08f033c0eb050cc65b266584c1959dc17e98f0b55be8c356e5d60e534e8127e51c15ec1f3a86178632d3a297e4e4465353bdfb791092e6568f417f2ec446afe08737773c131ab063bdc79be5f62bd67ed28e228d39f745c7377af393cf33004963d5cc6e106920638f6241c7bfd7f204479445e9362bd1d8f991c660fa029582349afd9fbd650cbc2c1259ba97e6c96b95ad56479c41987e657b0b681bdc55e5e22419894d37e2a3781ad67ec60c486a87d1e5a477ce89e59628532136b5aab0809acaec9bab2fd75fab78b7f54b9beceb546f1fabc0d801a939d69e7d01f3868a9fe641df2b96a814667c69d9ad726aec938a67bd8ba0675608838087711de97df761aa46ff906a576b5a31096bc49275f01ea3aeab2afe979466aa014ac21495aa6e32475eb0051b8dc6251bf2106c9def439b3eb487d0a8a5b08aeaf5a33bdd29e2b995d5c978e6ec031605630bbbf68c56bbaeccea9eba413743058ad7217af2515e61fc12af0dcc10018b629cb2d1634403a660a0f7ec8d5bfa9bdc2abfaac32737b27b46120b981be76016d272207aad5afec41dd68d46f5dd48b5ad5c231bfd6f9929e2dc3cb6a7e8a690367474dd9f828be6a4fd703795f8d8a874af78df26de5547b78542643f056223706d72e6a0a54d356e46b66d9c1c99066a4620734882dd163ef0a2464623b19a7134c7024c1909c997825772391d57a002f4ab6803945bcf7bb0a1e8b60e478875d17d1386df437619a7713c10313053cc2966a4f5cf7db61afdb3c9987eb33c79089c40c133c524a2b771cada0044d9d049f6f970cf0d126c262b3a884343b2292ac85801e38dcf56891316603f5df1fa69fa4259cb7268417e111df0474ad94b244da65f87b016205ebaa56e828b35c8efdb496d392d96caeea1f3614da48cd8fd59df9ac93a5a49820ec52a73de80a29d1c30428c8d9ed9aad00a5b9458710362b4fec6be959a24b47e1f1412bc96dd711181648478ad9869808d5cb94e9fee922156b2b3df7a254ee0f6c7a6ef8c051d597f48f83e0a553712d058d7600ba64a0d55a3e2447c384c14124920bea4aa25b5f4cc28d95d226013483c0d4201303f4d2d2ed57a6a6a683d685f8235b8e1fe6023bc746290b8a0e948e16caa7f97c1c6bc93c6e6cede0377f4780dbc625c5b309afbb426cae892cb4ae8dd481f05ea29e7d39c2922572c616bbdbb472664e1a5b4bbad3bcb58c95bcb43d75714f8161647f913b4ef63aae39e2528277a3d0762d40f4616e352a8fbdfce3312bb13f3a391a14e87d1f1cfe94b8a1f10a0e0e9bfb21e724d9839659ecafee8aee8e25e89f7095f7f4232d9adeb473399137ff40c8d0b345c210181730dd795a5a3315b05c297abebdcaa1733d0cd35d359475548482b64c077925b9dcbf90808d6230835e0e3e1d68563360a122be6ae931362e6d592c291b14e85c529ca3e107e845b42f1ccddf701449283e1e8d0c34fc6414937a5722d27c6a6924004744640bd29c069bed7e5b61b30e580713728e73c390aff104926e59927aea7b2a419716c625f51f2a870142fc23d961034e0c0cb2c42f38b521384363dc365c3fb36a73cab2b0a5fa045ffff73e59d6c6c2c4255c3651dfaab3dc26758b726922337cbff7fd2d0f360ddfdc7fb966d6a8d4af81fc3e8dcbc7511b5c03e32a73b50cf8ed3978d56882033d8cfb488d2c5376feb77d47b921e3918e29b2650c3aaf54cff5649c5f019de3491d2f0c1362fa320b1416b513911b17c139200907a5eaea72675e8796892d7b101263436dc9a4acc2ba989b93037b1af94b5e83e0cbd945c69c2ba7bc68ab2587b9aa1e6f04b78a4117b68293bb576270412611d3fd39a554da231e34b3e84c7a11032c29b1314096dc8d61123a6df33c92b4dab65bec272abed77700b58057b9129174bf6cbb22028ffbc6c4304ed57d6f64235cb7edd86bfecc9410479058263176d2bc0a49a1f28dd07582a4f0ec52f2d4b7d2412af465b2ce6ac288ada00c2da13b541c245396e3ca9c3fa5bc8bceb03643425a8f2e7ff6a687c13615fa225754667818a57d46441d7cb0ac85f2cab7c315240dcd72bcecc48bd026538c4fbad4a6c4414c614b6a76b5297bc2745fcf5a98a7954cde252467863f2818aa5f68dde1853fd692dd7612e4fd1a2dcf321ae0a463b51244b95764fff37496d82809b17c03822f25ddaf090636737b6224806a78585de0a0b4d25e3ad83db8b05511936f0a3019f3570d0848c70c120bfad1efc21f92c490359e5bbd82ea33d4c06e87a0974288afad653370a1ec6bb2a43d6c71466108aee8d97cde65df026c51b74d7cb977c94a0e03e70457a42d3e72cb096aae1a57b9628401d1f59333da9e9e5a3967c663dda0eb80b6dca8a7e730bb46cfc16285e364a1ca57f8bada47761944c1b74969c514830c579f1af3e66627cc47d50109af48c7226c1c35a53209010f7f961f4f1d34d35129504535241519ec60f0219a7cb832122e8bf5065277803d7e177483fb94969f0702e5114accf1a7496e2c6e6b50629f089c08dea5f3b5c1adce8d17b79615495d088c5848a34881730631eaf3b051c843c19de09d008fcd92ba2a3875159741ecf795fc4cb865cebcc28d478817748c2d603c505be6a31a3ec617bb0b8c13fbda86ee5a3e06b4e0d4a2361f6559f1b7d3b6a45db95f41c29ff6343e8af8bd763107ee77e257c5017c841bb3040448be79eda44228ab65324427e62d66997df0cbe446b6cd3e76b274fbf3d1d43db83c4d124422c02fff639bdabaa2ed2c0e632e9937a58374afb00a6d6ffdbbab0f29228035ae3e717d1b45dbb1a04e3f9e658bbee6fdfa50550cc0c9164b521914d4874eb5433193783d1c3010993102a940ffc3decea771f90f632f20c7b0cdefbba4f043663a86b03dfc6f0dda8c8c105fd967508faf40f7e9b8c9f4662d6c7238103d4b2abbf615bd1fba8fb9b47a8410e7976e5000ab2755da76f20a8c768a54822d1ee5f050e6f3d4857c6a8a2505267eeae27e37de7fa25921ba6e15edff3f4eb99ac7a32a4f1e94c831145a60e5f3c39d02958fcbe3f085aeb66af236703eaa45076dccff5bd2ca6af4e72008c4123baffe2f3b7c6d6de26fc7157d58912ee6c51db0c9c26ac79a24881792df6da70d49a03e013e82a54e4e55c7ad5ae5c40965d7bf8a14434ed060010ff535c169ae0a71bef4f872c8ed8464a4e93d0999d086041da9d5a785146ab2a697a5f968429203031ab19ba3d0a911cbf55997ddebd33818311c990f2303b9a8e54b4862a45b315e58f857151314c1552d15a3403eada15352d65b670ed7a3360af8189cda66ebc36455314b0dcd4da7232fcb582222cf2758fc7732408a992e5667af6fad73fafb2400c3cb7abacf2a3f1b77663a6fd301a2de6a78c1b2c99ef85bdd11f43a55067e173c992b60c35532cff355c9d08abe928d9308285f47cdd68d031442d408b54a4565cfafc36b1b684d3089bf98f8bb6203680fcc820d02ddbc1ad5a60fd9b026946787db7bf48ab630356637f5481d03a02db3f9b13dabf037ee97030c61d6c421b0f94cba9fdc097b4e21ef8278be5c022fc6c96f13d812db6c8ea93026bd6f8e068d7ed0ba31bfda4743d136ca1b20a90b159fc1fcdd84066706e78c352d3ffecf38e42e6f23c19da61f9dd2824f4d3001379769a9ff28bd775993a7545c2fa966f63068d99aa32e814a0029bb08364e064563027847f45416e9cb93ca1681fc217af4c4835903d3cb50977d6021d0d236a0fd813f6219d911a1bf90ffabb1cae890f4928f4ef27869ec2528d62603007b74029a429da8f0cc0d40843d6724c642531c797225dfb48573db31a3cfdb6859bd2252379476045f96e71d4cfe76127edff328bf614450a9034ded6748d69708c711ab320067d345a46f8e2a7c8c909317e614fbff371fed536450d16a08382344881037fb37e86765c5db56a1df2f1b2ff86d98e0ebe7bbcefe68b633df8dc1fb2f7a62e1b6f39ae019eeae26a1453ebc84f8b8b22cbcb50b2ba8056b4cae1e29662f882e56e9554a5bd4a5422601889ff91f5ea4a9da5f1a3b0f7e5ce020c315feb9d35e9dfeecbb485ddb8d22e52b28cf568955072b5fad07d2e171c63ef5517111e0d01fccb33c48f5701722bf3c5d0ee8db08319dfdf951a9f36c0ca3df7844f66e2623486e5e0961654e2fef41b6c2abd29d17d4d362953080da12223738176b9099f5a397c680a360540e173b7bfbd04aa3010f393aa9baf0bae41954cc39c9f64991e83d918406bbe52658cc26d8a685fb664b8723b750b23fae96b9c017461c5877a0e9252eedfaf46c01699e3400a6590402d905256284d343367088e1ac539381d2d464b3ab7bf6f53f123fb71cadc16b4d420a8909ef82365197b0cd5be1cf4b499a5a09812267e0f86a0bc6fc2b9191219cb72d8ec1ba3e190135200ffd19a894f667e687ca9ef9e69e63060ba36d43536f7086cebf9838664b8af1431e52160dd85dfbe1d2ce81accbb6d33d5905ffd95de07d89ac14161d7d59c4e78db89585afa6e6403deffb8d65ace97b89b667d46920b78ba4a55c7d851772ee839ccedce93e12e88a5431636a95570b47e2e410b34ebb96b010b718c6f4ccdea7f67741dfdffec7359c287b483594f6e4b1f9fb1879f477c167e58471c6eb425d208e6303d39fbe6d3dff525a8b6301b1bd647bce23eadaf4306dec70e24a34308204f50e8d65a2999dd730ae814220a3d55fd2c5de8de24cbd62c0a96f2e8ae38fc7eea654596175fcda00aead8a697aca6122490c5dd8a60c084433be7ad5ddf39695f8dcc03dab860fbf36a60c15b4193ab52016a09d8d509597a09e2bdc45ebd2d7f8c53cfb24f19948b234744c3fe949ca5627dfd8571914ac92de9bb950d7ffc2a789a2b0f8d50254667dc655ce6d7d9891dce373d540147d0453d8daaade2a67a1e9eece190f884a2b75c8e137e7fc5652dee66266ccacb1a60138c6b5255f3f46e5138f1f0f77b93fd008e365c203421f46db4f514adea7f1a748eb39684a8e85b802b63b3d7808a8ddfa5f1a7dbbf4e0f9db60f24c3192cc273c075738bf994c8f56dfc62f5bf3c133acba9da9bcbc966a52a5224d06e8f6bbbb7dac227410aa208558f8fdbf3e03d583e9f788fb8b8d538446e24b5a7aaa69854364355082f615cf51c89e046801734b7874033c01e68dfea225f00b91fd8d93799de62cff84fc7715b77395cc0034ebfb8a46f00dc0943446363a912f0028e5b216ca02ea62b3f991fefb20de23a89d5ba28fadcb9ce2d9ff98ad1afce0cfe8832cbd98be3684296a356689cabccb80a9622022c702d0e6e60d51e3a7d0571c59070a6034eaca3ac91b525fadedb8350c0872e327b460a97a0545c5e460522f10a64fcbec252770666c16d1588e98ce53a7beb7e11aa5ecf292462cb39777f1782e79cc765b5e0ba63e298445070da375214c636ec4f2ffe93f3e4916349b1b9e7925ba012e7af066bb62767bc2b70d49b64460fc06d03a21281553ce48242656d88c2da5627653dbd848a3b2fbe52e49acdc9fab545711b3f365e6512b7c5ca6aaaae0f5e8c141a6bcb9551fa9d9ffc16eeefb2dffd913055f5ae091d0295e155e2a9976a2482eb2ad8a2bc8ab9afeae23643d1f0d6cb169d7c99cea6cdaeff6e3f40c483d5f510b0ff11519ed6d488ad39a6a8898ccaa95a8d472a6a21f7499bc64fdb5bd934f7939cd6232c00cb95a185f65f96a4e09ad7594a0525a641e6eae954574d9042cf8c30c9612d38206cf9fd0b9b991619225453a15709b601c2b9d29686ccd6eb3e6fefa7d06e1b9e860e433872f185a620db22af3cc7a2f1ac21b3fce7821f1a097afc001e5efdbac74d7a22624f381e52b67a8995f47a207418ae1a9bfebf2bd0a7a9f1abfb5d4b4f2adb35207a7581121d11fdf4c06faae1bd7fda54518a64f4127d60b093e63f7911435312234a554b78890315a456f25514d66f85abd3c3f2352d209c3d7dba80e05474bf86049e1a2fc9050f7296a785421f2bbb5f8772b3855811c18fa8a540162a61d6dab7a0252585af93f1c6f778e5a380bef348072359be2a5cc336ddb49f9cf8daee6a26c55ebb4d3d4841f50fc9ace80819571f4ba1a890e4e06da0b13e467bfdfc06900f085e36f180e6c95e61163665f4b45b5e31cdee48fb4b28a57f608d0f6431c2873072403500b5f0d792e7135cfa66c5404ca6460cc395c59094e3aa4c2c8ccca36887d1d7a88cc4cc9ba9c4822cb4df99b96e234636068422ec623e874daca82bc9a9026ff18e06aeed7ef75eddc428c47fe3fda4c0eb579419f3ad65653ae52a931e4cbeb38ddbf504a7c0069b0410f8a613de914c365a2242d468749dd0b5fae6dc7ac55ec94616ce6c8d590bbf99140462db8c216f1d420c5022d58e1858efd230e422ae59af99c9de22c72182ba1fe40949d4a5823c6d976e984cc94e6ddc20a61843c1844f6d55ccb57e29f96d16bb1c04bbf8187f46d6381a17287d71babe95189a7924fb32064fa2a56a11cbdec4822a7d966b9e871853a2d690a0f3e505a3437359b06d00571e83544ce97cdf3b92659d8f58be650cccb088aeae5c711df0b782bb160e0fab458db66f4a4794f6867e7a1422cdf07f25624e6ca8c7a37d6f11f839a2c5a514553416bc8768127377827e56dcf3def34d12abe27816c872135ef1de3c8aabfe2051d6a6886899e8e466a1a275f464d5f95368b998a271cbe747a5943ab53217fe10414116e92609a57042af797ff971e4c47773af56cd095c43ebb733c42ece55f3d43d81cbe7918b44840f2c23dc2e29a41adf1ceb88cf94feca0adad3dd6a9d514f13d3db73c53cc6fe5168f41669694019f34df5380482f3949fe7f938145ed0a9a3a8b55cb4066c81c28b351ce95152b5cd5dd3b647ae94b1b25da76662d901adbc990411a71a27a3818d5b0ae5cc72f08b19636be34f3ab9130084788284a205ab3f858e34df9feca24bfec04acd5e8d9e5bc226c378e7e480045232378c851f9655a502c0acce173ff5f90f91dc5e6c568b5a9a6b23bd2a2599186f411ec6fff81491ecc4a8ba11d1aaab4f16e44134f657434e2332e6305fc1975650dcc94b7c78e6d31bca9df1fa4108f23bb67611143babe5239fbcd2fa6a1acea7fe1a9883589472d103452e5a3ea46444b7a3440b4b94247df76fa44970b9aed581a4cb2acc0911fe8b50383cc9a8c9c52af497ad5158b8a49ecdacde724b78895dc3fb17efddc62dcafe53a560a160caea3a4082ca4871af63e294b0e7d1f35383facf6890ae0763c64d7a40c212ef08500ccc3afc467aea0a01027869d4563b3efc6682fd76c61181eb25b22a8d76114b05ff060adbf889b533f0dc5e5a73a3a3099bef802d8573b80f88eab752bfc5d4b769b3b0696f3c515c27a910d6d3e5ec29419b15bb5f2f95801c29b5e38b4ac808cccb3c9fb9acc6feabdcf1ad925c55ee37a4abf303b3ac67fe47d6b259638c4b4efb4d94cdd2597c031c4044d1e0e1a88e7d867ef5f877de18dbe64e84238ead5c0007548d1916ee1bd5dbf0b8f13cc57afcc78c448b4fe7cab30a21923802057c0628a6c088a3dcf64f597fc7fa3bf2ae0880893c839f2588fc024450cdfee72076c9a6fa99751f8036f2d0cdd1569312dec1f2d759097d61141d46d5ad7648ad131a583880a81b175a87e122db4fc8f25adb49d6e277802ca9034b25065ab1bfeaeeb23bf96e34857a2cf14bbbf9dadf5ac390c6afba55dc0e1635aef1a79aca8a009cf29af4e564d605a9e15386ddbbfa299d9da5155ef37a9660aca31c7a862ab8f893d1e1459c0740e7ceea75c5ca4073d454f59d959f6369b1f135157339f0e93bf1e6a823af3bc53cd21ef92b77b7c354636e7b2f8a77f0e07ebe2f034046ea55c6c7637f1dae9ca913d172eb398bc8c6f81071772f0d21f3be011ce3067f2483b11033f7a034c9e1c0cdc0c00a2400a698b8896042c920620f48b3c70e127f7ee487b9be9ae9d16fe0a219f9266191a3f4f631ad4d64e2fa3d5c6d77dc128201737e3680f311bfce9d7cf69d12764fffc524e2be385bca4cbde2ff56971cab3b9f327e92cdcd7a30c036adc1fa7b14f19a81b519e7a9d22b8f8941721833cc91806ee7db78a1e7a89fd24b4133072deaee977519277c7acf2ceebe6f2349192464917975a9e4731cce0e5a6fcac21b9ac12fd05a90aa2e070408fa0c46f37a57d94caa8bf6531b884a243a5b7181b8495a6f61e9ab1949e314661e785ae7c68f15e1c632fddaa6cab0b9efdb43a7181ff469691cf41a3660cd6d47c810655882fc926d4613e9d1cf500470a99e5651978733eab4e557bb43d35d4e2a7a6174fad60713ac6051435d19cf618d8bd2e0c25b1a09bc2dbb1e3eec7da5a152a1fb5436c50f451a8927fd378eb611613eb348372dc560d44b10ebfde089533b2eaa89a4e79d2a2783f8c25d24718f4f2450372771639b0765531c9277f9eac4cb128bdd0ec0e08ded6f1d6b70a98aa0af2badfc47967dd7ca5c1d52576841ee00e99c33b547d007f34d942c98453c70d4d4790969649292b81d25dae6089e38ce23f7fa53dcbcb57960eca21ef63a994992b3616858687552ee4ef6839e015a4c08b85645b9e500148752b5735b15bd793b5d72cfcca7f68b23b867784fa55b4fb758cd62f374789d78f81e59539ef9646eed5e5d884c724a77e3465d7f9830d11e9e4c107666f8af5c21221c5f153dc1c258de65362fd03c4be859f99f01c107e0f510e3e5bbbb30a3795afe11f2f057b7ca2ad77e4bf733ef4e01c645397873f5efa4efea081d8f76cc3b60458f1c769c9ab96123b821678f08cf93e8ba59271d41ecddeb1c1861d7d861133742d4599e336ba61fc3f6b8da4bca83c51181a75d8550c5eab11b8361d45a0a10db5abff2424a105850f0bb0369bf12970c1c032677f5cfbe92df7318846ed5dc6fec6404157dd9746827bb2793e5ab381fd1dce0d62ebc3960e00c5e4a63bebaa0baa177b822eaeef9f60a6bb3c1a20d5c31ae0721c4056dfe4462edce55cc52f9ebdb9cfbd2aa755bd875be658f0a98f0c36e04c9b926f5097cb72609a5ef9a7ef45f52189171362e40be329f32f7cb416a459b26e6611e4e356273559880fa90f7c866b48ae5d812abddbfd19afa6b29faf9cd67688faf0d429d21bee504a75a8dd6fcb36fb92c212eaee661df7c2ec072581645ca47b6896fcf28fb5ec3d7483be1c1be2bbb05e879c90be504f4a9c0416f51723c818b553b5d091c0d246ce339579cd980334a8dd3b06d4d8beca1f77cf801dd795259740d20f48624257fdf954c6187a3518ec9cc0b7df4b57da37ee2c9b50bf96c22d70963f144de9c924928e893c08752d696a1f99002e01810b40e33f6caeec85da5e7248ff099f4a4fe1e8497f9735ef645864fb69de8e7a4496e18c1bc6302a4489d057fa244928c9305281af8697f7c0cf5fc113166db410f67809d91be79984f54689faf183eddeeca643825427c07cb59e2ea31fdf0149e20576cd364bc8103deb688e44eb110cf79529b5ce3ed95fcb0b4db0291736d2c342e30ac7bf5b5019497c04508e67911d8696e77880d348e9b3c3e15351108ebb18c530da6a159f2e4b466962ee9b37ec456815455fc560ca9a070834062658a01677a160957b55194a50dd2af8c953be723c811bd325e8dca602558717a8319726c21fa63bb044dc006ad94447cc2bb784e57b78714f8145f8d7081ab827707fba77b2c58a4444251933ad1faede074d4bceb2d10b210cd4920840eb28dc8c8415e5b7954dd03c246bda5b4a742c9b29132016e18c19982f716596ceef1f05aaa1f3f8eb949c4b80e1786688286db14d983759ced155686c2a4a3b834cdaab19cbb6b351236d09ac3afc5f4ad18e6659a220cd3a35b7ed95f62b7a62af9c8f32d74a2feb7bf81c939c2c7b622eb0cf1bc00a52a26e1782df87e34a524767c63336bb3be97530a9ee0ffe4823c977f4ac4ebe83aa2f1ad8600286da2f3873f1811dbf3533a40e8b61e5ef2fb7811a83afd6d58f69458957fad8fccdfab221073d21a3ee674cdb091776fa6bfcf04feef965089ce3d53ca4c2b9130ced695e8d2aa292404bea8ec1c8daa65358e34d9c39163cdf3eb5158a1fb545d03099fde00be42f5a4ba0d167b9926a044bcec2bc2dfcbf8781d2da03bb5ec27c3a8a285c9a6da2353e80ce0d5b0468730ae523d41870f672e7c4af3c15578fa2aa5b95dbc667cc596a0853f59889ea1f53731cc5af97ee303bb5dc4c9c33e95390f846d20870047ace9eeff679aeb3fa329a522670e60d8387a6d300e066d4ca06cf61e81f6f51b958d243781f61900550054b0087aa4d108cdcb516eeb5484a286921aeec757e459fb6190876261dd37e6eaf7c6233a1e67ce9d78229638f99c971d2813dc931878d851fb7e2db361a075cfb2af15e75c75960d39e90b55f2014ad907184b0522b5ac1b99c7c88334c8cc8cce7c155d2803041cb5f4ab26dc3b72cd4963957f93c59202c9193114be886a399cae1e3838c5b18ea5730fb6570a5f21de5dbe6772f06b8712274f64a0378a19e9bc6a6ac4746f5d0362417acd91416b3b97f19f58c9fa5d7f8226b814c41efadf209cb40245f36f21a83d8a9094340c2db8fc52be3d38952c3991d02cb6f653b849cc1fb2431401e59836dcacaff7b704b201f29d9d6be282cc7ea59ae4f3a209f9922cc559c832f49e1d55daedc42c5021a495b78693ecd5754575e7d6766c3888c30eac93a879490c116b56e6f0cd1077896a7e7ee89bafc4508b85f55482f316891c1d26cda8dac462634d1008a2a1658e8d72fd3e27e0944fdab48fcfe332ad611d9a39aa7cb9ecbd906c920554d5bfb93b7f8ec2d4a3b151d40f732bb4133f960f14e2a022722cfda1f02e102064f3094fbd8b39a934bc70a7b4284697d97b475bb6834feff51e409ae281109dc239463119eefee54d3d8459bdf90918e71c13ceef090cfe29457d3355cd18b3f4a30db5e3ed3c0a6c0b583b9521803b439768e35456cc5127a149803ed5d3917e34e62e65af8c4d359cca35d5aef9b2e1dbea45dfe74c8f31846194b2e5296e1b787300fedee574b700257bcdf5c0a449cfb98e04964eb340c0d46cae60f2a2f5e82b71823e73048364c821f11d12db2e6805b9a8e52327603ba98147d4e73565c0bd715a71694be0a4860cf4e6ea1d1b207d662c2207d1d1b5710abd2dd5b2cd5359d43ff95f7d04e1a29960a905c4fd1f4c5707c856296e6e5a1c6874b03e10b940991fbcda6cb9123844069f876ecbdc530a69fb783c7a438b9a6f6c1eabfc35835133889ff92107b343e8328edbe5ef5288f7b14720d11521497185ecd93f0290e7c3a0b2b8711e9e18ac4b07ce1aa64a1e293610e2973a39bc161571f38263b429a09d69015de1acea7bfbfd1af9cf9cc23378b5a59e85cbefea3bb460ee762514272fa85839449e32ecf5150b9f52625742fa1e3ee7ac94f1119ebe4639b0eaae68cf7d4268dcf0a87e6878963bea306d1454f559c7e889db6e93fd2681a4a4075065c46de90c7dc104424c331c23778cea35762146788737e7055f758da7922d155c3a200deb2378c11dbcf2077e80b2c1292abf31462f207c67edb4066b8f427bd2c580d910b8f9946b18827cb671160ebbe3be0838e534611bed7412718ad1923ac118f345f601f7da52d1f405e525028c76ff7ed9eb932ae22bde2ce093039461d16b191522e9d803c7c6fda57f6d2753e3ed159deac79e29118e057676e4ec91d4f0f153b9c2adeb695b7328df56d0de0862a720c3f43e8949aced1224cbb923b13e024097a7cfe7349f8746bfbe9c4d28a3ad446dd877c593824c5be1e558a2987eb80954b9d50c143dfd96cdff4d3af8211acc0a17a5aac06b78119b4e84111af35a73dc68884333fe4646bd498335786cfc90f783ef2579e7fd4e2e03168aca36a3b6b20f3d72cbd5b03e22c3b5bbbd2085224ccb1e50e58c6ea96cfc68fe6647103840da01e0b13a7c6a458b354381dbe65d9802ed1ab475664254686eb52392d647e6f2a7ac14546ab25bb3b056fadc1822f3fd3cb34e6ae6a380d4d6d31422ba61431d02e5856c4c60788fd96f81400b01453f2b0aa63f3bc889418a20c7c431c728d1fd6575ce411167dc67a10dbf00b718130c909658b6994fe2efbdd7a23a5b7dfceeb9c981f2afa53cd44f8c3877c191c6cb78e748cb5377cbf40051d4193e9928117e6264da61ce647668c099ab488b8fc28f79ade8b86604ae4a52d8f96400ab0680ab601b1dfcf38845172d3fa2c5f316c21da309283c0597600fdbabecf17d79274669291f1f46571a267a1dfe8fa1396138d76ca8b03822f6e88358063ae7ff3b46a1c399d17ccf3b12247708c700d71607d0f49cf2b2abac083404be1d6fde667a98468ff2fa18c065800bca374ce6016f5a3c0e75f46615c2c20549d0d43cf00fd75331bd6cdab135f04454f564916651cd55d9a035c13cf1268bccc4b6c3f1fd3ba4d33e546bddb5bfa2dbe34d06b03334bdf178f28750ebe5ee6d5f7fe3b9cfa04d5f8ec3956d9b15a35073aa527971525135b0d79d79b2f8bf93bda7021e462efec1c9921639263637b5e4f52a32509004e187aa6697ed467a85d1803d29429343618627b4e278b51741f6df5135ffc7ae03715c68d346e3eeb2b3f658e5369159a268cb0b43b137253c115d3bc50f3c9a51eb944653371c55a963a7d6e9a35383bece5286584547f09cf3e16321a2cf8251c73be34342b49f1c1218635457362025adc5bc7334d41ffe57a1022c53a13805ef0058d6b7a709ca9a5a3a1b2f603c23aac37020b3d53dd5f06c2b4384555c31bf6873709cc6ce6d02b04c851eb767e940c4650ea6bf141ddf85f7a29ee02f327cf7832cd98e638d1969da06b54a4f25e5f274a46d045b742bea96dfe30c09a2b216673f8efc9b46891a43c490a5bb8a391ca342e70a68093be0392aa0a3f9fef949af79bc621a0ccca631cd59ba69f66436cf6fff35f9e973ac9424661951a3d82295acf3706e02cfc821d7719145a1916b41fb60eac88c1390567fa6b348941a4446c95bd81a16b2e48f7901b27c1376c60b054213225ef90e18ab57e580fd03b824ba8cac619704a1b0ae3043fcd64aff63bd4832a3aa1ad47d061735792c5ab2b2185ce70c0d079f709f6fdb3156e13e42531e526529dd7b4d8ed4758dc6d7718e7311572c22eda50c80a24ad843cf21a4d24faf7c9d5b9753c2cdc4644d1c072f02a57cfb929fbc9ac20e46c42d938a30fc4a78ecf461423ca292bb062b915375d305d21d5d99c612cefe3f699438ac89afd0771fa9935432a1fe3acc3aac4fcca731afc32d068a127ad776fb2d154c4ee198fada64ee53ba421fc1a9c1073274d9d054739510c3867c22eba91609b98c8406fee3179721a60dc5293765d67755d52412f80c1d66c6cb3f15b30bdd7bbbc6ab4ce46c0e658f0fcd152f35e41061632f7725e7d7f1d2e41bd75d363323cb6f739df3f0a523c3d76d8e563b38013be3bce1941d8e3c203b5d505b06faeac930273dbc76af30d2150ec77289fa13ca49aeb5f8fae67910c88bada7b4bab6f2584c7abf51c8e5b7e79530439a6164743bbd96b5f91060bb30344a453bad4c970bf04aecf8850be3e4fbf39c55df5a2a5fbce428905974e6a2abc6a45ca9c74617e65c5dc2618a25d814602db326da41d2f773c702fd50f76a1f19960e408344f97201e96b7aaaa64838b73fbe82b7360cffb402d84a22ec8fe7ade44d33ba96c3705e462fb649f4e6b603eaf82ce0421263717ffc3665fd1617ff9061a065eb15c91021588a13b459c1c5ec78e69b4bed76e720fe509d9b296e9bda06490601391574531dc9cc73c7966b7f45f24fdcaf3a2d258df7a3a84429f737fa62cb1e5d1f3e3a08127618798ee9853c319d2b7fc75dacd20bcb27f014f0381afdeb13d22fc34c40f8d5092441df6780082239d06cfd9ea0c50c90ffa41c22f2fa79553d43c293c2636d15150cbe49ac327b2cb3b6464438674799bfdb91f79392a8394fc39f0157d8ba1a11763acf5a07271bf49679244e567b86026674b01cb8cabfb00a01bbace202ff34d7277fc1ee92fe9f13d7e4c0c70877ce7d6a23c1e47287872b4610b16bd960a83cddcbf4e9d1b477398fa6997faecd3c0615226191326662f40f812e7354980f6b94d9d9e099b524f1e5e04b6d759d233514865b69adc654a7c16d77a428e3e58992c5ec68d17686b58966ececa0ac0f503237d22a487b86dde0754d401cc248be4ebffef0bfbc4ae3b9be033bf5bd6556321821dce5b5fe89c5109f5d292f34fc56894b420894530ecbc5f222a39ba87af39a26e57a682deabdf63c8fef802f980194bae51180c48346236be03363f7b766abb50b9dea443e3c8706525eac00e7b46a68f2966b1dbccfea6f64216d95a2848a2c341edb84210dc470980ac4528d2a865dc944bde82440b6cfba58c4dc3fbaa7835cfdce7774eb9890e5feac13b1a895ba3279f320c05831f189344b57e0f80ff567722c3093ae1ed894a153af332a025584546ff0faa6962dcc7033852e9e945931c570b2b3ef03fcc3da0a09adac09716253ca280e72ea2c74b4587672d3ff1913b6fe8af615e55475c430c403f4b55c9fa53018a05ecdead7e6470d3dcc26f392b43e56f910a5886e531aed2c172363f7f458f1f5ac7c9c99338c0b17d76aaf079aaf0a1e6a6435094fbed683b15e5f2025d0c29df8e8b43f8140c8633809cc6a24d27e59946af53049d9a9c43adb4e0413d8a5d215a61a98523270197df20a7f248ac226f21bee6f6c486e9f4ee96dae7b6058d697dc57861e7960ef726c99d66111a78f9c745afed59574d06fcc6f61a6f2acee0bb6b43b23b91111aa810801d5626f074b065969809ae1b12a564d5a9fa9d5c3daf1fee7a70dd1b31bc6125fb0bed6f269e53cfcc51f2bd8500784c421a34e41f43ecef5ca125a2696368fcd0640c05c70a008a9069b8a8f220c89cb601023d843baa5bc7b1fdbff612a8df4f69093d8bfaffa0cb1b0938cc65f3cdbd44347822fb6cb98e21f6051d346dd8802ba5a8179375306ec36d04b8e53c800e10a4fa6819cb30f0ab0ffd942716b52e15b9b5c998bbc14e518ae553dd57a6407853d6bcecde55a23af57faf0dcc2e65626cef0cf53fc1c7e49011fab1b5918e1714fa8962d0af2c1d12a5c4bccdc8052ae06c7281caf3a64c678f8e48e9dce7a096e56341c5970d5ed87bcd69d7e73ff21c7e07991a1a87cb7d77c43af3a36737fc73f2c0ce9f29dd792bacecf65513eb1eaf7247cfa1b22fc446ec5544a980471fc227b427f4185720e3a81e8d02d491b2e6c205be51ae54105c013b54bcbff56b3f9abf16d3dc2412a25637929f527a0a6785d153212de82cd6cf636f8475fa665c3ec4ad5d4780a769591703df8f7ade7dcfc1b014079fb7c147c8f16cdbc75e96cdac38262aec3e2d0bfabb8eb5b789db7c0eb52e0be2bea49eeba94c6c943854a34a67b8b27fb2d7e905afd9729d01e7f75fde8b34ffa6fde6965ec90d059ed520f17501c03ad2ac56d5ce144232cb6b2dcf62baf4227c3d0f5507f5703c82fc5eaa3eb3dc44ba01f6bbb76a5533b7dc057509248af3242481f7a8ad6a6553f030c00f5657787f653a230f831da207c5e22028049a3aec8df9be44c3632006ad20281c9eb360682802933db302e0b7993dd8bbc41a197695183135e140751df22821ebd179f870d9811c29f833315d5c7998d8b3f78e93b94d393e052a42201b07591c6782790c9cd4ff7219eb9ec06397318594dd7316039cbcbed8fd8a8f70174a2768757a8889d75a3e7648ae5468cba51830a7f0bfed393eead195a418771c1449f045e47f9012ade821f8605db9ad50a76f4220d15434483b747a92dd06b4a5595e282aae25b06291b2c16d415ad6df59ba7f28c87472556920aab16c5dcaf2ef61066d17a2f440c6cd8b5b5612f22318d2184fb905cfc3e4ee99c918e0aaebdb34e6639849d0cadc52ab42ff0ced69c1203aa216da8b7791511b709bf216533bdf4368aca2c24e48e764e73c637ddeedcd7a7b44287bbcb5e9c29431949d9eeaf75b877129e54a107e00e1b4221a7742e4f9852d1543b3eef795ea8fb89504adf13ee78b2a744848d9f037b28ba67f72be840791f6f355cc8c93d5f0572faf0b3822bc81cf6704800e96bf1246b0634db9f54cb8881ef73d5a37e1fe8d26be5f09b218a189217f433cf17f0a9319434bbfb88af453b4f3d522c421232220f0f863a6ab2e880a1f495e2910a4ea1c558919383fbfa514542927ff331c2afe62d713f14c18d0a2f43e85f67479eaee582ee8f6d4fc4992b8c5f6ef6d27269c01fdece2f409187c036d119f62ce51cfb4ba16147af6708df756929416aca6aecdbf8cbbc156ccbd0abd884dd5599b15da6e7a453fd17dbb043560e9f9da68c395d4ba120888f5365b9cfb6a99cfba6f4b89fc4229b90d95ee26bbf6f5e5b0a7f6c6fa62c88274cd3e66ca60a89f7bda149da585c50d9a98bd23b09d61a30b1b8e88cbb3657dc147207d134534ab9a0fc4d2e6d72d417266b9427d548daccd687a8efc386ffc360e4ec24d790df5a7c3cebf48bef27080831f77c4eb242521493c34be77e2801b0f010ca9a9227f6547686f52e560e468c4daf9ada19e97fc92d7c3935257a4f5152165db287ee3669dd71b00eef0ba1f4b82d638c333bdbc3538137fe625c92aa1164c942580c42263dc1c41a499aac5205d67df6538a165d914463d6f26870c4f52273af1d341e8e2776f83edba33342653f7ca6ee47f7c370975c17c9fc14b5a84a325109a53c04483bf28e633f9bbbfb01c14673a0da6d6bae6f6591757d518db6c6345d8377eab03e6609e721783813226378a0ae4616eec0b12e580273483ef06e70d0452e592e5ffa00ced43b98cb332ac0937539d58718b3320c03b5772c6fb530ff40b4eb64914e124270a19d0d9723e2fe9cd9197d7b74a2a65772a545f5c140205be204177e3f96a77c5c4b3bd12f766877856ae2141071a92de1dd6a0bba865204798a23c3627f555e57b428648f90d95a901134be16eec1a105b5da8c4ca12fd8f033ea22fef06ef0388af2d6c7281f9f53acbbb8ecc97dfc2660441dce8b1a919541c4a1235e1fe986d02ba177015a537af2ba4e106ddbf0dd1b177e2d49db0bbbdc9d8a698cddd5b7e8d120deb8aa574353c7961264bf20838fabb1cce540c12321abcda073e19532cbbbd76f7f55a7dbea737542b01f4238a0ed21f29a2c121c45e839208c4ee8337fd8b6d2956611662c4f2c1d076642477f531032dad4108300e7b03c9ed03679c2b49a6d2c5ab8672239c27178f1208bab6f8b07b77623c8a045035657f59bb5f692fb8ba28db928b95a74dce5cef831176ebe5ddeda8852691a5415f38bac770106ba79bf80be22957cbac10cff4e55aee95aad3607f73d06b03cd427b97da9152d696ce46138b973dedbd50b26e2f57ee2c408ddbf12cf454f2130952a7c2b16ab4fdf411cafbc06135fc794f774dce46a5db0bdd9bc7bf61c852d4f4b560cf6b776a5e7bec996b168f3fd0227f0cccbe7e6ce6ce55369d1543f4080c326994c86a051c2e5aed1c7396a97b0c89c5135b05cd322877dfdeed4adcbd336f5dfeefbf7efcfb9e0ac7e4aa4c7d34d498db10776878426185dd506541c6aaff86cdcd7d89bf86e38fcca5997acb3db9d3a7c7d0bb328bfee4f4ba39936f5d54c82cedb1d32e42cd25a09a1179538f6599bd17c163c73a9f74bbeea434876e2581895e01f493ed4e359db98479e826405e06c0ce9d40b241984a1d757ea9a28d9dda47631d11ed2bd509f9306585408fa155528f74bf1085b44955df7ee65773b72e63fc472573f8c9630b1b3097323701ccf76ab699ed027d802822e1c200c20923af13fb08351dafad060e3f1aad7de06a6409cfc01fd8d58c9757e64057c95e01a1df92edbfff01a5e44286c1aea74c674ec9d633c8ca2256b53bc3f795503ed15e0ecfeb07dfee323ce46d6c5ee29e892a97705eaa320d8cb6a82444237f9ae1ef0b0edf6843b53fa966429a6338421e0a990129e838d4f784b22d045d080c8048b0a332c76293618c49c3bfcbde4f4238ea2ab0f7686ed43bcfe94e7a0b305a763d5bdc77a218f86c9f09d0d3f3760166900d68ef0b8d88e8b66f1c722b4f21adde58112ff6062cc3026c94d987b36b566be9ac3794d54139245a26f25bfa3f4644428f74c852136a31e2b76399331e1e33bbe3def8c58dcd70cc745a05062cde530fe4fa2f573c2d22d4d6b6df8dcee58509e940af26e6d817c27ef45075492feaaccc61c64b8f53b96c9dedf0c322c93f37f2082f643cf9ce4d91870f88df75c33c39e02913b8fdf0b8681acad536f2f1075a2e3857660a2be8a9f1a9117465dd2422ece09670e987ba3ded08a48fa8c031e74ee265e58f97c3518d289a1066b2609a771cd92da88b970063ad181defc688e2fc99a4c1a942ac8daf9e105f5bd2acb87d89c9edb7acc8d571c0542ad43c539e4c2927677e62895d40f43969c4bafe2cf96e8cc13d9300a0e02d9493dcc8fa2683742d6de389d2061da5618aac94a66fd714cc2bc88dd1cc06e74f1b584561d5f2ad902ea8afc3021f0f0c59f5c8adc3aa15cab1f808764b947e2b4a076789f6fe43993fbcc0d4879c79bc6844648038e926b23aefdb328054fdd944ac8c6ecf13535976d543727ccee2231ce5dfb7a8a8baa73ca95b0c0525c47a539f82da4143409b9f00afee8474e1dbe884d6b4cf822aa2bafb3ccaad50b264db35bc590d1af967aeacd9007f5f545b737d7b3757e0eae369b5a0f135fd50e553d5b4b63cf33a9c2785cfbb8059585b031239facb57e1df061b4b3f9ceeb1b38cabdeea2caa429f22641faac94e6531a4593585b25034e21dba863e5838c178a3a81d3a13962e6be7d8fe271fdd591abc84d6b486ac6c202047976c26417a6d93bd4d755afa3b4a9855b32f2ec794d6adff455c8b38c9b3ecf93c226ebd9219b7fb6972b6c4ad7c2a5272cc3969b05dd71134ae54408a4cba0849cc8f362a88bd8cacea7e17ed6e8b5705c2c65b139af7da6415616cbf76015a06827299dfe3c1ea494432ac68ca1f7b5ed2e0fb596e081ac7c562c4f5e50b3c83ce15b8a9bee6e5b1bd757a40b9ca2a9cb99039d38def71aabf83b30b777a650ba7ea41eac55c23b4ccaf76519570b5ce141829c30603c452741537c8fadb278a1c93c001c69f249d923736cb4285d151d23c3246c85346dc76bcd782e3e4718683e8892a286baae176cd38492fc49b39a1471273a290456630370c5548ac8e15210616c8a89ea36deb67fe2b92a1fea7fb855d12a8820bf28ab4ebe7811c04757119c8ef52aadbdadddd6493a26e7a31e730ded7bf0003ac55e88101f4c4452c2067cf00913b5153f768e50e56918357691bef39c1d9f3705efe64a6acd4143b1d7829df63e543023709bcbd1fbb37d18e95a192084d816f1906ce9a346fb81ac29add271b6d9c5453b1842a2c2fc8286cc28495938091488eee28bf30b3ff3242e2c4434cb6f7ad35b616b689cc8563c5f6c79331069bd237b9c7ee224874682b0244635779d4e5abdafd27ac3c6f3214aa278f6573114cd71c03467f653e5aa6f0f6ab866860509a84a355006b97a7ca3dbca7ffb81de01e76a5c7ade0880f9b1db16116d1fc170c2c524a428581f883378c7208f12dc907e2b295ae8d67ff79f48f0cddc59d432b473ed50fd362c734b8f20bcfdcc403abadbe4e3179a5756131721c899f3ddfcf7e3f3f5360f3ce077c0afcc9a693834dc338eda4e28765a1d8f541856218f6dd271e008c379494e502c8264bebc4912b20d396d9d87dba1c5c3112c2018dda23b280025d41e67a52fed8100caeb4fbfb3b4142a6d806089bd2a9e8fb01ba647cd9d9b6e4b815d7816679c09e3c1fca38c702d49697b0a2de145684faf812d9dc7548896a755075ac6eca3d4547ed770cdfe6b22eb59f9ad5d9c4e46461d95f5a98972c984cd493ee1f9dc9e172213ecad2822ffec6f561d65df4a408e458debd6b52b357e6aa4c99590253d6716fcd49e45d18d8dfe4b7554f92efe2918952fbea5d40adc39101d9719d47186e0254ca32484a1bb75ba11bdc13f8c7cace597e9b950efa7b683f9aae3749a8e4a3123d2cff4f2652a3db263b57b456054ca1aeec764271fc7de693a49a6cfb9f36887ed4ecd613def06d1429f9665b333b0d6b8311766f55358a80fe31ae1fe5c1e06f39db1dd95371ae569fb1d7cbad2f6dde34d76f33e67aff05c9bc1929d6d53c107e64e1fb0f433b1adc1ff372578692c647a6aac9274e6d8aa87c3fcc14cceeae7b0170384ea535dd44b4e66cbf6ead2ca2f004a13eb4292431837b207e91d3726f8d410972bed278d646bbca6000680ed4861370057bae83103c997c8a1d4421937d68f27948043d09506e570fc10539cb3c87e2c564e501d0284e5fd408064adb8489de58f53642ee70fff415be0d29d061b239e0259d1791a870e6b41de9b83275b88960f3247320735c9c70e35b5718d47505a1d1dcfc6d8c1e0135ece1d7b027e05c8f1c4b63b79d1344ef62fa549fe247674bb630d4e0471a04451ffa4c9d2a9bce5a61e75bf79dc7c11aa8ce90bb25b3074ae123b409c6713281ac45199a318a498ceeba5f6151539d690520fcff24302bee691218ab0fb369244f624e98b8dd2963036222fbaf5a24e1c7a6bd926c43e3d3c102f80206bcb0fa364e922ef133cd5aede7d752a1628018c0880df9a902cc51bc99e22ff2f17d82b389f1049c6dd89242c9b328edc733d3514e645c10c0359d8ac48c61bd5c2b19e0eccfca63bfbeba4912b32797ef52ba331212c03bd77e3f5f2ea9b332061f1473776ff7b61c81c2945e09e11ed1499d1046b0012a9f58dab0e469b170fa1a2515286507c9213f631f78805331eaa9caa1fd9002261e4a58ef3a200639b8536e94481e622b0f37b9effe865ad37f0519dc239954804d30bd0da4506f024a1f53e0c33134c24fddcbb9eb9ffda31213e86bd660c0d92c26154a446c98e6de300fda9a5fae65a833406c2780731355adace5b523947776579aaa1e5d54ef39d6d82a715c6d2a7cf34e20aad1c843b393504c4f0bc36f9a818837408f36f8851e274b68268b328dfec3272fdc7a221821b1f8339819cc1c753fd7e2ab5e75f663b2dcf7d7fd8f980edd0d83739185a8d51b859417e921da3090991f51c35bc970dc4c8c036b9b9472fe2ed1a38996e6b86f30e814eafe0a537d1e62ed01678f075504353be5600d1fa1c2d85419c747328037794ed0fbcab3111c3442cbd2d268932e3f973dd003bc0a92448104e58f2fb051e58b26face91d41972621d00e41516a00a095a9166e71ddceb692d1d097219eb64020b4477daab767cca14dd2635977b9e2a7f2fc638993de37bf98e883dd4bf5863c12586c4c17bb98bf36c1b4118a3c1eb5cda2d5e04c4495fb5a73e72520859201935e1c2398e0f1234ebdca63f30ffdc3e91f59c45bd13440063191925f7d4f5cab843111adcd35f3f6272336fa8610fb5a621802123a3617f95d7c06d181379f11d7de04f7e9ebc402036b1e2df76a751eda6555b2ee24d7bd76f7b55cece8bff3f166a64c4c095f837aa69c50c1a6dd56e7f9a2992210e0e513c2864bc05734f20299744fc2b73afd9dc370b32d1513b50865648c5e1559a83b52467aa69e1cebffd0e1ab1161bd7b077999126179aaf07a207686c4412a6bf3169f9f27aa35bf7d7ee79584e5e179dbae2b479b3662800ed0f9e50e37d3a2b106d5d58aaa981190f1a7e5174b5bf8d2a91970b5d2e36f9242d44cd3d13633b1667cda7716b36d6ba3d85914b2e105369dbd5414a304dbf87eeaefcefcf96404240d2ff1c7fe13ddd1847b06f99126e8fa392aeafcee570777a2e30b2161a7d7c8b969b1b63d336d1e3da4b837b7dfa39b8adcc35287239861862b2362af6647e7ff7354ec15fd9b16d0a332affa77ade350cd51495c466acc559294213325b3451020e920a1c61758791f60aa3b32cea304495ce350c21d230c1a5518b6cd19e355af275e692eb1e45ec9ece12bcb3c2dae6174114e28006c70be8ea96a42be4dec4fa40acc1efcde95cbb6f11d21e590bc143c007860e76fd228b80f3c2589d68e1bafa1a49efae3ca3554e0881324f6ce35ec4a2bd39d743b6d882a79ae7075901813016b90d0b439e07d31d8bb6b97bc73e63af513d41efb506cf2d6c0c30a53d2c82cf9367c50c2ceb61d5ad2827c1fffcfc09a62d0a5f809563d1c521f5da66b41e5ee223a4067e8825315637a8b53df5a938bc97c0aa5204b351c1d08beb48c6c8c324a82ada8aa74bdc17a504f8338a93aade86752c10616c9f2913a1c2c5b23bfa4baa20d93d6c0fc4ca8cc120b16dc90eb51657b93c49ed2834ae092d943318dcb80b4a8bb7400626df7ff0a4d498bbac60496b51dcce17507e42539f13bec85d6d52d04062470eb0fd185be1325134b8f861a51a7165aedf1a065dc1649b306a6108280caaee742f694bcbfcbfd2b4ccd6189b31b61d6736c72dad5ea52073220f19d259793ec2168984545ec74a7ed7e6f98cba3534031d43ef322152a91315b0c43d20546d32dad1c5a20bbe6fe2a4fe07a0dca690fabab8f40199bc139b6b51a2ea6afe6ebd6686fe99035f4ee05ae64cc18afb5debd0e09e83d8f10a0557613f471284baff3cb4d275f2da82a2e593e1e34c4e2c22d52308057c52271bd904d218afaa90a17d0ae5e8cbeef00e6b90ff9f510c25285a56f71c495e1adb5a17873b0364e9595bb6162618a559383f96a303bf3dacdc1781721acfa5f116ddf258fcfa7441508f477087e76fcfe0d84366d3d9370e3663480c0dbed1101477b5f112bf172fdcd989a0bed29738813b4c90caf827077e72995540a1405a6b0e1429be3c4a17ae29c6d837e9d06c1e7ab52695db984d3bf280824085fb2a905bf35886287c3e1cb7a7091e7938c808aeb92bd39721c8d8839ed2072097a6479d346040c7c81a6c4a415dcb55b32d3c7c5c96b9a7c0e122c0cfe62c57966d52eb4505537a63042d5f2d1a671c34ff83f5f8a996f9653c1cb4968b89e28a7f01263b249965d2085f1a0a9e84ff65d8c0c4a8ad9162161dfdf33659e60785abbb3287802edb9fa71840b1eba0a6a12712d591b0883164b689069f147e612ffd53c9f7db965ab35bcd13744433e2b2ce34a6ab8b4b845e5fb2e66f52440cc9b9b428e07242cc7084fcafc23bfc1f3a689d64dbfcf963e3f59324c8b050a70637fc76404a6b60acf90652cd303bc86203eb54e06147408bee42d571817fac079d44f3128707f71ba47a47ea075ba12cdb797897b5071b0676dd19764579133cca38e15affc7215ad165da2eb28f85e40c641b4f0d64c160069b7dfcbdd1f29aad606a1640be90cf08b2807cd738431b2b2f0ae92fa3059361d36dab0bb7dc2b991dfc9ac478bae6d5469f14cbda7eadea61cff5cf9a4c3ee8925fc75b039ba7d56b1e83d52fd0a30ca70fa8dedb993fae8e051b0c4c4c4ae47feb1823f5f2e06b4b2282f38237dee62eab2d10c5f141d315ca129abfe3715ac128032e4751a67445fbc32f03a9257fc053796ec30870f5bea81aff0e3432dc8fdf57ebe509f80d76a698937ebfa6faa81aa9b2edd48926e5908b2fa87d485433fbf2447952e95234988d01b9f8484332079678e766c92c324a6bc4a29c1f270ff95ca29cbffc5e5c4e0ecde923ed6cb1bb82d5d4e58c4a24dc88bcf133da92c7d12ac2d5e7b3af3262a64ba7771338ccdfe82d5de35b526deeb18da821730f028d32c04c632c9cb412554c44fadb8521462c0c8269fd2cf5a8486fd05635a42fe2742133948c5e6d83dff640243435ca63605feb9a15f9fb8dc0afaf2db65f1931d2f518f04eba15985b2c854717a71a0f02ca6b6c6088eb813c3ee3c24c9227b1abbb6b140a89f7f50058e08f1589129fe578836ef7e7c05572fb03a8c2c2894ea4970811bcf13ac65e90ab5e73ee89f062818ec5015fa15b92dfe4703df69df72885be87deafa1f9df757b2e7182ca02492d2b8200fa69b7ad645d2eebbf3ed26a4a557fe3c9bdf87f05bccfa0a9af526fa920a555f8bf3c99abb18e51caa9cdbaea7c12e3013b2314b82fb7c405966bb81d4d02c4df35cc5f2100d95c660975d82c9ebaff3ab557bce4a7ebaadb758df1041cdd6bb0f6bb1f0af8eb8581fdf26202a1e6d017ec3aa346f3109e054aff5599bacca140130608d256c75cef97bca0a633fc86051281af9cc0d848f5ebbbb8b31ba143c3f8e212d163aa8b535db859a76238ddf5a54f5428d1f831c0eadbdce493e5c96b115edd03e3d706289ce0e867bb30053fb7eefa9378436f709c3a536fa2aedc2d006567c5584cf8a8a2b120de592268c011c46e04698ada7d6361c702acc9cd90689fafb99986d62c27fe4f264a617dc0ad40967ac15b5bc8a3d29d372965839990673bdfea5f55a56c179cf47aefb9d79d1af6507b162405067b34e0bb65df04239546e2e25e47366b984dc37b70a9a8becc188ec03f9d740cbda937ecbdcfba1f12837d0a140b430e60851ac93e74b49d28974a7935220daec3477083a1df741f42822fbf86da6c382f099b5ea323cbf09a5b7ac551f2b293dcb2449a1a9dde2c239bfa498a9a311ce12e68c464a02f3d85148dfd1cb941f643504ac9b010fa874553c40e63a3ab7ad11921ade01c12f01d00c48c577587a6f49e3b1360669ae39477c2fafba4a9392ea7626906fe0581adfbb507d3bc4f56403b8dde571002b169ef04dcc676819567de136079d800129c4c9b0bf9416e6f488a0ec60d05cbb7e8016fc6419195687846e6203ea0ed408bfc7f2c7aff712f0027d26097b22d994c704ac1787f111a0d2bae56c1d3ae3910350fcd64de33928caa4456a689ca483bf10489c3cd9eb550d76d44e86f1ad87830537946d71f0ee68198f8b78f333a2af90beee0868f3bab4a63749498fa77ff5bc9d714b2135f5806e3d59b3584080e0116aa2438bf1660771a80a103fbd3e5c596be9f5d0ab44497290804799906de21be20348dcd86956af92e1a0c8d156f3456d102faa416c2caa4fecadb0172b96c29bcaa78145134d963c03991c89ad1535c164873f63568a4ee4a7affe7b4d812a842e8743ff3803760d369136f1e4426004b5ecb5cda3ace5233fbffcfce2e464262bcf88aa1859156763c7fd2db2eb78f505246d1df51e5dff4496822e2f1a873a4667416f23a4211497b60531d3e8f69e192ab101dad6d1019cb4286eace3450a867639707ebf4797b1cdc958eb70fbee9456c597faccdc2aff63fca907b3684fb59963f278e7b2aa37997f8517f7a86b70048c9d4e17d33e53a390b969e44aa24e1d6151f666ce12d546511976f5eeae67eca34e27d3c686e4e9ff103111b4a20a8ff55913a14be60ea5f231cdd2bd6bbe8d754fd8b7a4a6ec5bb846d59d153962c0958a80b399a14f45f8f5ba0f8b30a533e483734bca15ab1754e7abfaeba08ed65aac6491b6c017be01d3116890041e3a1ceae3feb0fc262850470d033bf482b2466a2ed5e0c5ee747a352e9025e51363b408a1d7a4883e2d2d62b5333b6fc64645cef567c51584054c3f6f83e7b79e146ef42a2062e49985998f4d3103e3a81fbae55f83824a4e02f55b398f50c52ed249320e9b73595f91dac9520298d8ce4c0ca03667056408a65f92b0ee59dc61abb501c905707370c92762a60d3c1bcbc8068d9fb27bd3338f32c4a55e6a826afe41aec9ecc9ee1f235adc452e6879c07a54732df090d2a3652dc5d60455aba44ba1bbc142edb5d11ac860aae672a10f8a3f3df78c59d751ac92a36a2a506bde79df478dd64c361c897c55254a5dfabd27c33988879c1eeca373515d71d75e8e7caa03529f3d4afc54fe5f121bdb0667d92034a1fda9fe97ab00ada92cfbcddddf8ac23b125776e79474ba02ec0dfb4ee601d46f2c38dd6c55b7552c118fc267c73c093ed257f9b9bb067f6debde23267f5bb9fc93041b576c7302a16160e656bd50158dfe00b70b37e5da509ee9f300dfa548c8305bb1e4cb09e42762f97147389f08c833bae5598560eb0c3c9fef93c6f3d7ac8330ecc6573ad4180d22029682d0cb71ab1d1671f9aa18b084f3524bc4f70b2d0cbf2168e6636fed1fd2138024329c565ce78a1a2296834dc91d46ca55be8ce5b9f5c53e7bf261b0ffb4238e20f3aaa252c98286c4aa78652ab665f2c6225a11880639e33120ecb2a34028eac419b5b14351bd35caf53f1013d27c2681248e0dfc1621e242d14f19fd8219cdbab5f01ae0ca8029e8e3287f4963c594027254e35758372b31e0ed6a124a9f57a38cd4fe68f01c9144c9bbe91ce292880183993a1a354f3018708c9a50b325915383f8e46345f779fbac0ab9b0fc67ba18479812aa1a6867f2e5e70aa480e61e5463ca1088af63b2061be9ba005b815e796d7359b20dd1a3b90c2831f6900d876556ed9541e8156285af6738ac5accd89168f32f2a935cca0beb8bced94d1218f6e4f72a65d2a52e87864046f18fe90fb15127fd843967b8619c266f88855867d1e55cc9f0ccae7f6fe73f5514c3f3981eb559bc3fbecb48dcadda715b3a691ada47ab69a713cd47954975afaf81589003d054bc051b2dd4a577fcf8f80fe9d1db001ffe4e4e0bc30a46f72a88616280b6cb27b39131fffdb2067ea00cc404d7defb5bac67cd5f5071ff880a1730dcd63ef6aab0186727220448dcf871c5f837cf05b1c11a1704d55a483206003c3d27f8fa140c94406be651f54c8d4d1c2ba46fa48036949f8b46ee7d0dc4d2c22b0c0b42dd4ac736db4e4483c0371dc6295baa0c3334a1dbc40567543e964f05e465d9792a20ec058d3de91f6966509fe7c453b0f8db6bb482cce1fcd0da6873985ecb7c1c4882503dc3c473742b9e3af21a7787e47a8bba4a4c4ad7698d3cb206da4200ab4435938d58df84c67efc55117be4e148e928aebc36e8dffc992a2aa716fee1cfe09ae4122c1c52c574d9c80899d80d60e476a35a96943000b567ccd688c5922e22ed247bd77ed10173e022c46e9e30090cb080f4ae6d045ddd9b0f5b96a498b9896c52457c175e1b94f16c6b71fd12aab4272320d0d7aabae571106a67dd3b45cad4ba4aba0403ba2e5e8131aa8bb199758c477c378635923c38a907219f5ab0ff8e8ab4fd5f2ee24508408625a1f3930ed7f96e3d2bc3a297e221f3540c226b8477587a15e2953a3b316620236d02ac1cec4099de0401de12fb28f9938a40c1275b2f8f389900404df82fedc3fbfb35c3391ce374b52d3d74d52ab30e38fb5c33641011012c4b13954978f38e1bcd45d4440639a287d192b27354b93e1446316edf5272f1979de12b0c54e320fded3a31b3f9ef84c81e73cdb8ccb88f1e5eaa81fc1c0c5e8129e57944794993f364a4554971bb886c2a0fa3486c3bb6c7cab134542dc0756cb96af0f0ba7b3ed459518945dba2a7c072a6bd0c13245e8fe31f7fb8f0f17903c84975b7407b5ce7f18564f14531b0680c3d123181f2a885d16b5b7cda12983acf1cd4effa6c41999156619b98f4c15396deb219d3db1ef960933599a6f38a77b8ac0c00f7d6f1188a3d5f6dc3318be0c746da28ac2ea82dfc3a8e3734a5c3486f51e96eed96192083311e726d91fbbc2a14d89b52381684ec7fc3dafd4f20701700182a4e4c972614ca851775f070285f3df90c06acba5c989525506394900e34f4f0fbdec676d7236283a0bc4d3e544e675a6d8e52bcd75cc71f6281092fe7c4610ddb122e4f7f08f867aba3bee2413a9cde9bbe52c44c65345d7d4dc16a88f897069c6f647a6773f9edc7dec2631e5eed082390b4a5e775f09c3e12b1caadf8b8390956be5a3cf48e3d2e661fefc8a9cf8076809abcb50171dd35d154b35cddcc8afc99ee38880350859adf006f7fba9cd5a179ea5f802c38862ac3bb91983159908ca3fdfa0b31800c2468773469b075adf1c0f0e03ab1e34648be008f937005084ae1a2de5892c01aa8624c367611a139707f4dd846315ac2e7d76deccad7381ac237c744a2b8c678a127d492e3288cb59bf1e486576c41f5841588ff50d57d404bf1bedba8f9c27daa0a1be3c008bc2ccc83fab3139ec2207f1c8b3d0a22d77c46507a4f355ffdee3fd535309e38d7303a6a8496db7e4eeb277f39368d27b001f3ebcbcccf29ef5ef80da303ea5b8f7e6a7272a816c7ffcc34e9e1ebd70252f087a69fb3d33a93da6a546270b272a982e63cf65e54dcf948437ed51575d0b2fd9b2984f29e5675b748a97120e9ae07c6d60cca24f7856d068becd6d02dc7b437e7e8543828572875cdf3622e88d31451134412b359002c805bf3117717366d05d99bb9d865f664d3a3ee75ffc71fb9b169aaef63eea59fdb69fcdf86506bc6f4c0ea9c09e6bce0500cd8578055c943a4d626554440e9490519c973d4493091d08226983134ea13387be2d140ebcd835ad8a0d6fdec15b857962b167e0051d2e405ebe49970e65556bed67cfe7ac738bf26ac5a685ba75149deed712689b697a20e913f745ab0a3d78c29e4b315d7661881fa54817b73d10c871fc2912280145a2c2a2a5255770ef8d57069cbcfd13821bde65d1cc51659c204351fe82e66a25212d9f91d32160a03601cc964dadfae8c2b4169bcc22c2896a3d6fc9e8c4aaee96da8097486e2bd8c474bd9de8f9ed6a236c9a9503ffa8e2a71fddcee35c7a193d093817d8a1e41e7065d4a90ca86e194e250020d1bcb3f10c1a370d29b8160d123136747963c4b9a49131d2f2c94f3c3561e3cc7caadebb0dc4ffd4361b8135812a2441ba88c397ed317a8133dd40e7c549eee0d75a2acdc783493771309f782643897b1ad40204c5c0efaa69c426a530c987a3e1f1b407347b079ee0a8ea96c96e4a89415ecf4d24397947a8a9c526e83250b696e0982366a78f38c66b8e0c43fb80a05f5dca3435ddba1fe57ebc79d5011d662e71a552c958108c7ecb993531211fa759f8b59a53655d4a615e49b724ee63acc963f9d30f8e780d7cbd3e667bb4e5af90a37f02c1f8de6d83977d12395d8c45b3581c7ff589a34ee462eb82770e338f6b62bbe932872b0e84ba6f130061a4042482d01ee1899499719135bc42614e896ffc05cfe2ac850c347326210604fe34a9ce811109b74ca66fc424610d70f0d2b46c5543cb4392e6a58f2df8af4da6bd90c2d8fb9004802d745ba983e90ac38d328cf8630192da93ece7c97ff2e2adb61c0e736ae9d56cba7358078c898e47c25ced91856c5ba509bd344400ffb4b1821074907653eddc77c5d82199632041c6103a46e4860344cd36eed4c67afa4eb280c8062820292ed29818704ea311bcc53e0091bf43c2c19103975c48c7d8d70c446bd168f54ecb8bc8effe48fc892b2cb9628cac635d731bfe36225a203f0d6d5834fafed27b488c057b8221e830394b6c1c321971a39505c589318a661f2c2512f3e54cdba092dc1d94b9c9ad298ac3feb8a33a5fd057b0f5e1ad76915051f0dbf7501b2bda85176aa9b5ea3c6e64fcd54d57e948bdbff373d6bdcd59edd4635c0df06ab13f686f7d63f2db374501b20c7af9c5bec7bf5dd41d00d227fcf23dfdbfbea6da07e38c24edd9e293a7adc0d77f9c5c8f789448fbeafc9e79f693da660f70402cd565493b070fd47e783a6f57b127a2a46f6fb614a8fe3e917d87e85931ec31af431ee25ad4f2003d5fa4b148d23e27a4bfc88129fdaca99c8a4f405b4082dde2b99df8b967b1ea2a1288d9687a6d7112cd4fca70ad179aad2f67651f84d88974a1851b1f423eade2b9194ecd6ddb3571546feafd116ab6b8ae6403e266cff567c20539c158b159392d4151dc9ac0f3dce91b5e669c5b5c2d72ceee7d7e193a2a3a5b6edd6d9a37b1e23e53d9a60835a620aba3a38f32bd6e49a89dcdd0ca9b7a04c4bdddab0efd77741bb9943b03a26cb65a56f9eaae77d38f406712a54f50e197fbc85ec56a813a93dbcce40d1189bce8058bbe4d83d54cb290b469e5aa26f517385deb7bb599029229207358eae07ab84e53dcbb3a6eb484712825198b3228adde84d664992e727c0d778582a7e46437259f4c46b558c8997a8374fe8f6f91ccc003afb2b9bba7733c36eb1ef798a58c228841fd278864b35208cf11e774d554237c9f60d0b1fdda40d41cae3a8979f7e61b541aca7b9c8044982c3a80c6e5ca72c8b778aac1de38d4571e951b50d33c0f99190e062f873803417044e5d3ea3ced4f9507ee3576ca0216d62be3c7d74e85a736096eab2f8110588af128c836fe45bde2d3724b57f8a71e7e7f6806ca94d1f9ad29a488a1d222471b0b9696eeb8cabc2682ade4242a4d9c1bb0667d3811e935c1e5c97846d4bbcabe0fc7058323da0a188060bf6fb4a4e3b13b3df315cf8f6ef4a4fe742488c5b7a28bfce2487853dba80fe45be74bf8fd77ffa15d7336c339d832ce7021f783920f4202a9a90636dc6c0eba60d87df52a1ca8ee26a08e3f20ba5182a354d265ef6479f9e239516134bfed5afc85a783609c43182c1a56818435506764d24b0a67e7c63b6e2f75cd2256b64f89bb484dbb82fbff6a67e6fe6d85a9c62554522f7da2098f6628e00351019e4b5b8ed03ae05b86247a180e35f7ad1770c340bc54f2c757d971b804b1d6db3db21a57cd3af5bcd952b824fd12e2b09a2886a9c0bba0c0b15240cf8d5c4a6c6b65884c2a385a314fa16ba223229175b6f793a7ab0a3e0a713f42ec0eddea0009a1329aaa2c91c05e5dc0f00e8d3b574f2ff0e1cfb07b1ca35239f95fd03b032b39b56a52dd3749324e2556c136c25c31d404256296983129481576a7c814825c59362892327e63122eeea35e58ca605cd6069ae1d79d35096f5ba053a6ac57c94bcdf96044ed2918701af47f3558973f35e75662af417ebd4ad297ba7b312b2bdd6e0ef33a733abca344e795317b82131b2c35bccf12e18e389396509eb27847ff50cdd901eb10d1b4f5cabff3b652e2f1d050dde591cbe994317a0423dbc9a2b799b77748024e28dc88de5ca27afe9b9471c98f0a1e8992bb224545621482ce80b174a2cf9fb9e27b09ee606c99b3dfa73bbefb5140f4f7112a9655e49d236aa7120abe8767ff5b1406024dbec9ce8632cd8e5d2670677da0306356bd9954a8a78769d8a0c8a88229f4fdb536d1714b4a138181bb10d6436cb02b903e896a5e86afe4645ca6358762506161b2704b91dd5e356ddadfca846a6c3147e7a6743f2d93c59442372f6718e5800191ca9a293b70dd3bd71428d85670c679eb3d4e75338448d047ace599aba2d8ec569ba96d9a4fcb84a176503b044bad27de1f99f04b2ba6e3a9ba3dc60592cf342cc17969c95b3f2d0e273acf387145ee87c1c24360f76f838e1e4d6524a1de09b54c97b3004e34db17801ecaab13226c5171f15e4a78ea852f07bf682937a70b6ce08d4467771f73840e135f398d8cb275fd7250bc6c27c68ec70319b610d11335d22e426b2936dd9cbb6170cbe31d0b75f001135abf633d17c9561c586d7d628e7bccb716d9b24a9c2a2c5d45a531b0c673eb78efce0a6a6ad2183fcdd541e0137b6abf1df23d0819e489bbc02696e4cf8b5398fb586af85f8683a32ffede4bde8ad28800ab1228fcabc89e52830ca9e9bc57de1881bbbabdf0ad10d95ab5fc326f66b77b5c48770fc3f14e794d97444dbfc95298fd28eb143f1752dcf4eb2eb480756072229de1df0ab745bfa07c65b5a9054b01ec1b9782e9010d450f9f2ea8ce06a6e5777a4542e2eda799641c33de0ea168bbc727aedf61a7ef839b24e26aa99d2bb6c59681be5e30e781b459cfe3ca77ffe4c1f23937973a8843436f0411ac8433969b13b94fa7b5c32a461fbcc1f797c244e90b6919e3ebefd296a75fdb2d324aaf828034efb68ade8e202fc0a08fc8a98e5366daad3d9baf9e7d4342dc38127001ab5a97a1ba53351458a6fe1716395b01a9845edbf3628b7d5406799039e7eeaa63acf4fe3b6a0ef9a793f12ebeb1b20cc58b6255df9f70fcc49d34cf10e796129149db0748edb564ec7c65178d25277458cd7d3a088371321d741e18de919ffeba5b3a64560f0c00fe4af77b2f5fca7cc3271a20e5ee11363d42f642c1428faade3251391e082df9a090dd76b3801cf52863235bb9559f471302956cf92a8424bb6b0f20f2226481229844782eadccdba68ca011c1e649b56fa5cc2264776144a6fcbd758494c0badfde90e52f9b2b1f924506ffc3043ef062f21577bf06e2a971c0b70beb2fa7fbc0231471e23428974bcbcc7ee00ac11353b0dc4b23d0346e6ab82902eba34df91d4162c45163e17e52cc7aa3960c38580c2a86ef59f34eda767ea55f9e8096a420d56972a6b3f8d3fd174601460e1e8d61fd2cbed02d6e345081cffa62856b334d48fe24b67da098ec91c035b170c03ea2d32a0aeab5fef24afbdcd7e379aa7a6d9435f51929ccf2e8716a452417208194ba0045006c089de0345af306813c550f1c1b41b0690b73811962d271bee7d3c3d2b12d26adc96badd3ded78bcd9e97ca600dfe98c4a215897f35250c8478e9d5a0d986dd54e8e36834090c0616dc980d84302880ee5922abe8ca6303e88cfdcc5a366176290444f7869d88a4a2a1c98f38df926ed813e1c5f7606c754762f363994511ac171aa60e5a4e6c723ace646705335b6e0438ba81832df3ae1eb8ad9a876f4e736a710109d642ca44a7a857a96204648919baced48bfca5de3e31818c6f3e9680c751d95211edbf9ec0928622f5fcb4d442e3d0e4890f98655da7ff5da218218d97c5b0b9318ebaac062a40f715883d7bdbb9f0a1dd4c592d3394325268b1eefb69608ee98883e06ee3eb3cf7cd72938be4cc357e0d2879f9acca3ebdbacf7928c7b8b106eb315f8c08cab306d551b84c23477dbfaae881917f53eb2d8a1e9368d5bb08675c0652c162ad06b3b33d46a8c8136a287e879f3b315646b9e8866db9c1bdc25cf4e95b44b0fc344ac15d604f19a369522a6d4312e5c4bdf74eba6a9aae63b6386f5ba9f519e51ee33c3e6e424de9861f820fc7f2443b20ff094efc4deee2fe49196154abc3081e055d48f2febc50a84b554653dc151f806550132c92acdb282449430a6f2ddb22f68a0982ab6a358ada81b42f0e2d74b786f4c25be6a8e11850f5c1e05d2dbb554842e25ad8805980bbb55b735f240307f0bbd7d30b401f8f2c642709172a86efd82e386cf62a63cf3301209ed9f2304d4af8cbd6af696da4d5e49b45eeecfdbefc54a790d1ede1b6cddb120fd0aa0daa005b092b358de43cebdcfe8806108610388d5a96f556d32dcb6b5b76dda07f2d0e8220b16613090620efe5a6be6d2aff3dbd68dcf069161758b358626365996a261eeb4cd649581f3fb726069d5b98dc3a6cad676257a999f0149c540fd3f3328f30d1f3dfabfd8a190df5ec29fc6a023d3c3ae7283d8c1130c87da14526827e4234dae66165b37493a0e87cad82289bf784dbed51a892a1906008d820c1ee41a3d454197eac2b39e520d79db106423417b4a80a8804c1eb9f47698bb47f2ddec17d43945603ae030e307fd3e9009efc83cbf92cc28a074525ff83f3b96b99a264dd87d62c81a1f5ecd82dd27eb6ccc93d3db9df20448a12d109b2f81439976f8daa54388d53f3ec03dcf4972d27592f2dc8d1edc6f0a4c7ce5b0eba025fa7a75c32c3a83cf75e0eb8af99ee3b00da71eb17a6995be6e5566e17b2108b7ef2ce08e8badeb83199f39a4a700b502bd4620ccabef7c0cd8e303c0f5ab428d858c89f4369cf049616a1701f0c0aa600c47912424eeb19ac8878a15df9a309a5a39c7af0573628cbcc95428ae07c43f7adc59ef041ab2610af730eb93b99d8bddd81432b38430734a22798c62b8b538f608abbb97d40e8b1347581d73089ad824e7169c6ffd6db865fa864794b640a4a55e2325271ddd738edbf76a188cd77f5ccfa3458fcc6da2fbfb36de30feedfa4c6fc8781060a1d026843420a639443daf258014510ca814ae97bce99904189389ea9abd366361f5fd10f9c857155d2f06c31d131320ea9c29d42fbfbe742322fbb750005258319d9b900ac6e4de9901e982ad95ca9ba7730b37e54548f1794ca72dc0f7a912076e280cd4c7d6ce2f405707def0b9a3b7757550c19e627597874b273594b3034c6c4dc88a34d01ffc8a2cb148c4dc4309869582b8fb85bcee7535af886e931e5c98dd1dc50a9123ada416b8c7e19ca63c71105c96bfe679a51ad638f794dcefaa1e90912c0b8a58073cc6f7543549f4d0b713f1659d2c0d8457a41196ee3ed9b60efd9f5dae0fa65357c25dae9af86028c8d79fad5ae674fc46069934a99677ebe65998fa813f71e7be63d4e3a86d0416fd176957f488fbb8fa58accad5fc308bd39a135d420fb83669f2052afd01d7f9566b9c9efafeb7650544d0d9dfcab98dcbcaf6605089f966a08f511e0bf56d3300ba213101674f67a511bdc771320a7578f52d4cb2ce90d90604c26800bbf03b9ee6bb232eb1092951d08df9ff664ea9d5d5799874cdb55cb1376c161410b6bdcef5103c3c5396e479e67b5d1806e2cdff5a9e81bf8bc849d6d04ae2fc6547189e93cf97d7f8d2ba0ccc2333566901db7602ec2cbe8cea08a11d2adabbe811707de30175048a7bd2ea5ee83a7550fcf4fe4c8c3a3ba0f28065a7f52ee864d1f5e66e8d0cd72d22f206b2441878910cc763b8dc1f0184cb74524905b80f1ef4e6d8c142f6fe5250fd995f15e7dcd481b8a6ea65e7add7a23a4af71bfb31bfa4d1e3186fc733eb8a2f9361ea4c9d4b2b16cced92b636ed112d5e03fe8b12244b7c28c99d2de245a689a37195cdc8eb4af477a02840ea3fdef51191f00464e4415c0cf0720897a87e7e3622bc30df0c685d791ed07cc829d6a34f43c92de1cd5fe90d80ebc91b68014de4045ca6ea105c02955e17c83ee6bac8771eb5ca2f39b8d4a542d9c3c9df9bab6c5f5193ca7d080723ba3e11b2fa59a9a6a66c25d33d4b010836e9e101a5f991f1aafa0724611935ae2c0b0a3f67dfdc8c439d279c738bf721e1bf2f469e2f63c578fba0d7df1bab5eec2289b4931853a545a7e99a23b2946d270224c17eb42b145186b29f95856358a6c1247ed9e0f89794b4e6db3a4ad003cda7b13cc90a9100d694902d334922aa49b921c8ac394f26ac847bdd3b917b416658239554847a308e02ceefbdec86598c2ad45cfdb29939f95863887d7cd945dfc6e89007ce71b907861f791fa36f594c0b0e1de6c9a4632036670acc9462564c683dfe1781f2fa86372c4d18821747c1c167b6e32a56f759355784c4bd6355dce2410b2ba8a5b0977c5eaa4516d017991871136d6cf86aa56053eac1350ee66ff8ed18514eb2453b089848ee5b9dafdd715893be2e2ec58eaaaebb2f9555635bbdc13f55397fe57278c43b42116a04905df8fcbe4946aed7c691fdf5c570f8c800537b0b5a5541b5ed796f9dadec25b153c413f611b891f873fff958e2813f90b45d7789b590fae5be0f7b9ae56888f6ffbc1874790111c23d60854718ae39727ba7855be236918033cdd07a3559bb26cafd14287bdb73fcdd4d71a837a2d100f6a0f6d0f4a3ea4b061193859f40cb421947a339a9e263264a134c4c9fdd4b5001361d8a0381fca44d275458d38b43fa82016b35d6f7c7a3f31aa66b7526e5ff040b15a17c8e6de72e4f54e21853bb071a3e45bc3c0d53bad34c55fc940e0a56420987820ce5eeafb236a7918947f9b6fbdd2bb03d318ccdcd21e73538894ce9f72667c3bb028a085437bc562187b46f53ab7dda3ea768bb79bb41442d77fa8e0b8c2a27de2c8c0aa68a7432230de4862aa31f3dac031be1e1ee7e0571db188a577545ebfd355382dc7121b6304d4bc5075b775f9e1e85d718f70b480b0619483fbdf09ebe9fa72a944b606e8270398f7bfe32ea60a94b5c136287a5c070259809b33c741ec379ba260369724928ea68e89562de153287a9bbfcddc79f0d0b56f3a1c6180745cdf09eeb21f4aca25bbd7cf3bfe37db669a3b60ce83cf1b76fec8ec3bf3a2d79c214479691187897333ee585dd57fd3a63f6e0266bc82725d8dd0b18e5f540de98f5c89985153753dd98e3aa9fa4bb00fb5034e17a2e9caa8961254a883c9ed4751d03834692fdbb49127fa0a9e3c7fe7785c4663cac1189ed7657920c46a558ea1e8fdaaeb6bb3e65d366677ebaf9257405b88cdef522421dcca0e4861b719da2d58aad240d7262c96db934bd45afa95ebf8833f7f09246808b682eddd9365c537d17a54650444a241e39862eb0f6c186c3bac336f25637c43ade14b468c7738c1ee1f140d50630ea1d97583ce8cb5b378e6ea76ad3eb25cb347b658bb983c9e390a743faeb69667feee2bc2b71491d371a09ae709b33e242a1ac08e2aaa88c65d9214f9f84f2886a3b83d380f69df01b3391b721696774c5131a9ea28069a50caea8f2e1b0162f7e29ce48c0f5595612ceebecfd6511121e103d8a1be12c1ae850c09885e265cc7bbfd866df10882ee4087fdac4e06aa7364ebd330bf31f27ad80f1ae16da2412da8337b03689342a8c982edb630eecc4e5dd32235f6a821326c7f7161ddede0b40a7acfc0634c521802b28f225bcbb85e5903c0d35ade13f98134d257642c1deba65143a69eae42bfd3090a077795549167dba936d2abfa15f50c78ea88b42c8def3c41344a80742da2da30b14bb4716b5d542fb6d8b39cddbbfc081aafe015f9093813baaafcbdf1c982e31eb8f032c55d85533e8e281abc762b9cf1871a2404ed35792cb2a8fb51cd9b42695e7fc5dec2bdcfa039333e103d5c1ea1596f79c701df6a4c3726f37b446b9f266a337384c49a0ee4313826dffffe37d0892e2d074274fea17ce526892f1c7937ef58844e8a47e8f8e03e2aa27f9094c2e1256d4cd3b0587fa752b6954558259f9621520b118b7aa735fb0bb56d87980af3f08571a4dabfb5af4cdce7e1504fc78ba46884e1581e5ebbd1f1c8c4b021922a3ec70858803f69abc6f8d99e2af4419dc4d94c3bb5ee9b5adfbd3fc41a99e148e2e023c0ecc1898ad438cb2bf9dfb6b5fefef93ad7e084957e309f9cd98b01681abf5c507e28002825f643ce2a6c69fe9e40dcbd64b9f4b56f7509a1d5df0305ca43ce09041ab8eab4fb852ba9a75e5a0234dcdac6cc3029bf7df3669cbb0688d6a70c1c66206dad685a42eeeed2dff6f0677e2f0bb52073bfee7c2ebd5e8794ab98fa796581d7eacb5378c24bf80ba269310fda08e3c58f4d1e82cafe28882761b2a727c3759b4fa79e9278056ba33a66085935fa97426e1493519a28623c420d07bbda66c9d8fe6c9ef1315cd3f63cf297b9c8b21a2c63970ac25caefaf917e44e4ad9dbbeb1be36da83ea867aaa487a75f6498e6d53b7ebd098826abf12e6bcd0ee84aa71781def1da9b3d5f275c646672dacf806b56acfd68fd7a8f04685c2c852d3fa18438bdae1a29956d82c714ab9ff1e613b491468c152c3ca613eb7d1cd016386b058cc8944582b4dec9e6e1b061211b1901909c27fbb80a12399a22cb8224074254bf41a7c5d020b962e25f590c247c759cdfc3df21bfabe0d9f53027b3a2342970af6a00cb45ba712b5181453b7a25df3b51309fb48ed1143ae30f23b99c989ce6c331983e2212acc67111b38916d589d4dfa1e8888f0bf1a71e107018198a8fe8bd9a90a66316042126cb383acd6eeef7562a98101a63b4ef41b0ffb66213c8d49281e2c72be95174a8578ff6b41f7eff98fa00d20fa7b05bda33a0c486b00703bd235a127999cdb7a8d60e88474524fb9e34960cf457860ba88d734c500213ff9bd71cdf3feec7cd7f80b86a61649cd5df4009e98dc5fcf07939278dd29b709db8562e8b818736419b7580ddca31497883061aa67886fde0093d55a5e96b086d996143436a298b8c75339578a6af11373ebeedf779b8b3614ce77cf755dbbf4a384b9be8ceabd8f5393bfdc00bc6bc2a74ce2ffe5c5afef17272f7b4b8dc58337b44384a4a594c8202d4e1eb75cd0e7269a7ad49e7087aeb00bfc61c442a7649af62bbd33fadd7d1996c1b154b02a21738a2692cf5aac9199e5ed3d846e87f271964d36d4436d0f889e14495127d651d29685f2e0800e059b4e7537fb87739ffda03800b350d265940f8de4916957a1f10834ef30cf55255a63d8b916410bac19607a27ce10e754563a9a5a96977e2b3292e54f59edd7f5d5a35ff57ebc895c0690ee6052be1731c8536bd6f75ae33a5c7514c7e9621728b14902ed759dda087c1ecb7e58b6fcba87562b14cff2386d376380c51ea6cc3d313eb1a1b48bd8b70c41a3ddc61df459e009a276ea4f07c5c5b6fbe4eeb2d08dcd934eb8194f0c5169bc967fd826d363b4a161536b9540fb66982795b577ffdd4517219541b6c457b54739b8a9ad0efb41f6f223e9ad008adde9012c3124a3d7c965cab80e4c4578003a0d9faf2b48165d7d8a84e1b1fc0685302608f8f0116493542c262010ada529ef03302d7f019fcfcdb3d51a9bbf0a806f907f63ac25423987be8093c91e79f47e46d0ef25575c9660f724dec0dd4dec6c27821df74579d7fda46df37267d1b0d60843a19a12b6d64fc640d5ebb85cefa3f9c10d4684e89797fb0df32c31ac395e2392e892b94e063d9bc14d95f4354d1ead4cf8bf6dcccdffe6fab9525f057cbe1e295b6bd6bcc9f8e3eb16a1760b60aeca756e3eeaa6da5a2bf8128bf32f541a355831e275e94dd6ab7b5240a3db4481ca6a6a31c3ddb8daac24d31c4827a358c206208d44dd259d510cd4222b6b543986b84a968eb204cda5c5bbdad2a7c0c8ba7bf19109b41aaecf9c0738c6aa1efcf5d698f6113ea3f4618927bc6366e788f4f914fbde65302d33003da9dd082f257df6afe6cf03fafd3efdd6c210e044b34ea29a50c02a321151840682c6cc52a955e30767f007e6dc9021f411ff0fe6bfc54c49c5ccf184965f2861a55f70e6b85d758c0bd8dab6eaf7b0de261971778d16363fc2c6214116cda18721558cee4a543ee5571651689c4f065d8a996db4cd576d4854d08cee52912f2e0cd9c1b63ab2a21fa8e450612515558749c41902898ed1fad4a75e49eabce92301e315a723227cbea0f352f2514e1b754bf4ef4edea785b2b6ad9d517ca80ae389f397280e05c68da7db8294847d14581f95569c55cfb11c971fefc7bd7a52bd8d12e9607074e103e454fe80e11fcfb255e2a893714ae5b9daef05bda31788d132531fe32fd2e74c0328c12f9e5d67920c9e8d9cfc8ae6746a78ddb5d0a5f97a42a2253f0a71a8e99512fbf403e81daabd8a5ed5db42841de26d57e4aa99567cf87129fb700eec3a7d59cbb82eea3d54e8d482ec1763331021e0a3ff5a5f926285607ca107b26a2262112ec8fe6d81544586ae5e66c0ccf2b34203299d758b2c798278ca64c81467fca78bac66bb516cef8b6657cf556ab028051ffbb0e7572837810f8f17350e195ab4c5e43378bce4bc6d525b7ef411732355df5048819b6d2b8d104f98019b68d2accdd119c876e55364308157a383afe70cec20d60b7cad16402e11ac801a161ef36775203da1ed1b7e9c907621f514a5c4e53a19f94a59dc0988aa123198a8f2577d821389a93e36f5fa54546df5f87ddd59d6e8639089c8bf7bfd7d16eeecd0ce46dacfbf73cb0d0ab0bc82419dcca14e3c7374df484110e4a29331ac9c877701691cd0afb3d6ae015041b726aa61239f17dd0767785a788e23b7c0fb1b7737c2b3f3391b7160ad937b69d310259792d47a62653c532197cad08546c21513aa62e06bad45ad10e5f8e0dd6c191f788bd166c5508da827aed4663625dcf4b14adcb4fd2cec011bad1ce6e7fb48326fbd1789ce2ff67827935c5be8fc165f39cb8d22195ed58344c6dd847f612d420c527633ed210e911ebf9958612a9b4990b38c89be9b387794e9bbefde48ef3c2fa8a4a44d688e7417f25950da651b3503d737f672325a5566a6e96fb55e9525c3b4a370fb1c452b0cda2fd4bd55958816013d96ad6f52715b0b1464232177a23fa7b7507ec5b4c68a4efa00b4558d4fe3547359e8a6a4e99b012f1449a1cc93e3acb29fa9085a3210070f197b6eb7e50362a2b726f730cc22e5d1d644bb690be4f1cb00a611ae90a1649317c6f59aa3f19f66fd623de539e91095e6e46a68e33354917f04983db1dfac18641f474d56ed8093790ff1b052702e220613760be6cf51b283c7ec3fb534b3c713a0cd5429ed8a1bff69b794b2b3d9f47230c8b5351c1853856b58a41439a45416b5f5d5dbf8b04c4f09316cacb093f32f782e1a691ca67fe483b97f4f97cd4c2c749990574306d2beb2863d9e1126ebf53add557214f9f7977a340f5cd6b1cee769c2e2a00a0289be2f4eb466475b239774010a0a5e37b236647070c9b8a28a00eacb70ce5e6a9843bcaa461d07134a3057714d520955eaf652aa32498c93aaf0754af4c983117bd21c6f368d3d4bb930db97af43a3a08174be913b6b67033cebdb87880579350f9da98861810368d898e4c6e702858eb6cfe72b052e32d0af61608a52ee46d2a7ef946f8904c3f98de1a908a6bd28b9d33a2a76ca728ee74dc88fb0c549ada54a71466e190b20a70319a28d0d9ab8ee6b7ed58fad0ac601375207103c8b325cbee3e6994a463831f6e4851fac3b95d7d7bd04ca6d87094155cd9f6f4f1197f825ccffe68a6d49385d12671d79bf49d8054e7f073d01b994a4fdd239caef17891a0b51eb550fa9a978901bec76296c5ef0fca1b38e865f7f42a89c97642b42224317ff273727147cb0f51f20df3bc682a769326b9885b7e94da492317d95427ad9ea214c6728d6b5095a1b1f5e13c451e5eb27290800a33e1c41d5567d054bb415e7cdb3996fb2bd859f0e4bc8c85820c62efc7e57b21e1c5fb33a20f70c41fdda4f11c5b0e0d4e0be6714b285de15b8f97c7783acacc719616b12b49b39e3aafbf33185efabe4319eb5e07f17c55fe95f70ca788cab57d985b82c3fb709404c0bd14deb72ff3c62fa13b6697ff2ad28299038e4d2e1d661698fb18b6e2a01368f407ae58888493ace1651b8a917105836573e17d61bb124db9e92dab70d648a2433b711e69a570a3c0d5e39a9f724472c1a75ed5849521746fe2af3cd19d7d0fe85c4eb5d2a239d4df96af468ead90e4120fea0c0d3e91f08e80ac0d138f61585fcc44f772a6478e52fdb93219fe5ea7a6fde9fd825a8b4bcbca0def62ea3c92573667971065b62e2d7e4c775d9619fdb44e64223095406b7fe4e42ba92dad9eb7b66c8e67d037d822d5a170da0b7bfd9f8b7799d1e10f399450ff84b1983099439c95f24b8bb250cfefe3acdf52fa98fac5a75e6d92023baa13ee5500340e2abacde5d17e95fee4a9611b754c103a9e8d9daa5e03989cabb425b94ef9f0f1ce6e029db88fdef004a4c95868443cb1ee71d2273d4a94dd30a655c3f44d173cce29a24b78a3a6c5799784196b00a928d75e4e021e46b441f0448c89a39aa46ab042235aca49ff5cd489988c2efae9a6533fb38467bdf72dab5d76928bce0047b9e72708c111e3ed7d6f82e99284d8ef0780c72bcbff2693857741e15622fe372e2d46eb7da8793f2956e84bf7ce4ac3d3dc5494b5a38b15255d6b908a0d695888d0971d977433b6ce8b837f89759a30f8591c55bdeffb2038f95df5f6a945c31e48130dfa985822f945815690f6166985a49d3d80c24f44e62f43fd7d92a8f23e624068a7f03ef0a63a853f6a293beca95adf1febec12d01225f61ded1240a0ddf074f8e146e7050e9127ab3c84bdb94482ca5a0954e7c996b4a2ccfdf48f554b8d6ebee956be5a2a160c28c6255fd59a9cb0bfad454b2b2132d45d823fc058a9518da96a9d524589a8a05bfaea7a285f08b01cd32a0bf18a852e6f954dcdc0bd97ecd17a1318b5cf24216640744d68466e8cf224e5e59fee255c2debaf74b6f3676bdadf808040d7a8afaf346882d19be0f0f276d71f263eb139572fe1bb00c497f5c0bc1213bcd85812297720a2c59fca610af5a2ba8dbeeb313bdd8376284e5298c1cd4ebd61f82440a0ca27b02423ea609ae7942e1862c8c26fdb400c0a011b44b19f122f9e2bd11b5e75fd668134b89e2a773eb5c8e77a67613670bab802296a3973eec22e9eb6b3a11b6f0c2e890d289775277cdc41e4fcefa33a4714e676c7f5a63a968179998656308b927f877f3bd8d88061714571cce2c4ac58b56edf7649ed1815cfc74dfa07c78208474ae350e24b7c299e93104e785e0e6d941fec738dfc0c40d772840ade6b5944a0a5f4d1f432424e49295c4bd2b1f02b402f0c2a58f13b51ef41557c4368cd029abbc81618512b4cd2a882569230c34e0f9b6d7eab3e32c582f35812ef7613d90105f7e755d891e3a2a2585a94aa8a7ef231ddd91c8d4582149658bf6bebdca0c4bbbf0a69ce4ae925a29d709bb45a0e1ec38cbcb5eadadd5d3abdd2a15e9a094e423ffa36f467128fb8f476dc7348c1d4f8d4b43be6e5c749abae209e430bd05ae26529153e8ee5106e2d84dc68c98ad6fb9b08bba4c1add3aea8059c8b367109304a84fc4697e69177e96305b743387dc54d756f1d969532beb128f983823eb67566ba2f86434683926bc2bec74fe25ce3015ce2fb89e4a4aff93e9a5bf58c2ce2aee4d1c62840dd55b5cb14d2bd6b0c3e72107971af48f641c1ef053ca444b22d9bb9a6cef3f2057dc4ded7ff8ca27ad3926f46197e59955a159b3549299d8a1f756b11efb5554199a05cec80a37df2479f4d4651e6335656bef6cf7f15ece600ae5f07c643844f1df0756273f77a49ca86a26dd7b123e2c21dca45ab9c974c48b78eff1a7cf1b00332bde4366f8148e7e4bb1d05765e6ee5a3240997e3d56da37dfbcd122fd3041df78ea7687c13af7b26cbddfd98b1a05a3789899ebebcee3be5dabaec607d103336af996cbe8ef831edcf502a7cc6a531b5afb689892ff6919e16a55142b57afaa2fb1973dc3675efa793c3ae0bff23cbb8ffe508182824c20204abda5751bc78b482f84c8aa06aeede049a17ef58aa5127248ade40410dbb2b8d7a7a60405d0720cb118e4390bb603807ce20ed65221bc4c16a6d98800251a148eaca71cefdd4f16ce6d66796c6ed2eb8b7f13481ca7bc6a2043a1dc28f7ccf788e339854b1394292bcb44f20f9b73ee21a36d4f80c05c5e5742ea1dec48cae1286720df3657fbb864f9e84f7b456336b990516a05bf11e5a79016b8cb5e1e57065c0173f1853930c50943434a1378a995efdea2d679dc05546a68d2c28f008f978215b1111937e80aa2596bdffc65afbfca041db6b9448c373e661e3e515d12d59b8c66befd1edab20ad7788f8e701860073bd27076fd1020b8b3f4bb8477d99149c0d2c2de748b585d3b6c1a1823625a68f3bbcfaf6adf9e3b2a747f329e93b7f6754ced6689e9bc20a0596ae653f241bba58a1b8954d25c6b4f8a233bf406f8ff7c320e9c96b054a6ca60b72d5bf3ab48eb7192d009c8f65ff973f06f74026620493b5bbefd2ee7c13c92bfcf37c77f87920e17077e299eceb87e6a4b076dc3bcb1331bd242df75ab0138cf2546c7fe1aa1d367f18eb90551645f85fd38991400efb207a71218ed56ef1ba34f37ece791924af58b74909994b78c6e494dc756a9dfd1aeb5029cd6bcca10bbedb91bcc4c5b23d38443200fc764010f1871e2776ea0fe911ac39e65224667cdb89943a6742979386f0a587847c52f87bf09edac5704541e09f890ccf3313405eb77bcfbe797c2ebf3295ee93832e816b0f8c469ebdd5c71c0d9720ed54acaf6a34dc0a55c76ec88bf304675f50f3c3fbc4949dd665f81f4a8a21a2fcf6b4b32d8ff98bcfc2d98477ae4b208c871d37046dac8f40237c7de3b16822a2b45b2ba405331e7db753383d1b4693c9d03cc34107dc257340bca8be06cfa4613381bded2995ed4f2a2595a0b574868650b25db9464aea7647d42c5cc2629c58c3e63b2a87a66f58687ead76170e8fde8a0592849f973accdf256b20ffaa8068db3226b9bfe1c32e231a8a25033efb1fdb3ecd628103f6ce0884d520c4a4fe29168bc8a5e7ff16ffe6c434968c5b5c15bf383add0c01a92486ba900bfcf74bc288a3b19fa3b2fae6df76b64f0bec5a2ff5920eee779531974ac1418ceb1668d83023e15397089e5b7ed572ee2a6d61593468f3a25a72a8ca0a90c7a1a22fd8381721d558a4a02b17fcf691689da12bc4dfad76d3e4924adad43bdcde3790c49080789ce9ef1a5d28495c81f02fca0fc0d6afe67356cfd804d0ebfe8e5820598604db67a2912ca1609469b1a25ca66b9092e1015e78b98485c5420918f32c7173f65ea938c07604ead52fb3cc4096195f961bf7e39905e94861377068d329ea9aa9a67542b9974dee1ef483af911054a167869a030d657f88b7ed9c97646d6c8b6ff5e7601fdb5a5326f0ec465dd1a975441d292ceef0dda717d91271ba3784bbe97ecc8f78018f81f07b918dbe79c3af15d92aca6cb6a18f337f6d384b17f33119000ee9e009227b23a1e1fbbb2e9abe9ae47639110e2556e6492ff7649d86ded90a99bbea8db1f2fcb299277db37e2b4c7f374f2552093457e16032422f4237f18567c7378439c20e6dac454427ea01ea7e94400eb9431fc34ee115c09dc37828e3473ae5ba59250f5eaf3aabba5f624a0f078f9eefe1ccd406ff871253cc932eb45672d2629b3bdb9d523548d752fe7b6e954c31b0a55cb15f3a2a32ebdd9ecbdf72fad322fa21069008ca422d79238e5d383d0259a8d3283276807514513c3837668ff11377c3ec0219fae232b73e1c8f3a447d6cb527ad568b453d871a293a64272ddce868dd1b7db5e650b0f0fe3b2de15804a6f0a612571bacbccb69d93044651cf13f526acc5be6bcb2ae10870eab17c9541c50aaf587c61adcc0b27e5e4003b40bf3d3cf1d5fc677b63a2ec41c8c56fc4d4821f066a1d393a625ed68577cbb5d393ae8a41ae47517cf7f0927dfcc3af200f30292e4c1a1f66bcb9bef76a10bdb6f820e2982994d08636e84009ad4d15edd71be6768108f31f88cd0170d20edcff53c9183f77d816c757a3b25d09479a1a307b193fa40880bf74ba6be639fbd1aa533df84706ea81d682b8896bef98a481285c3f42a12c2285678e4e049cd39a2cbc15536fc9ed2746ad23f79e284dcf3ffa88f3f1f2f0446b9a65fb46b7cd7969cfb2bb5dc4281826335c46d2e4015c37687a92038b72465db4df5d62826fe4336d683e29970e6139f9535e9eab5d3105e53ffb48c2e17c6a1e7f6c3b52eb024b62322b7204d6e6fe6451258bf558d036657c1a76519da0e9d0dc93c94dbb28eed23d7a1053643944b8bc01be1a7621a19c7951b3e69b3b1254c3ce62d9958cb1636620fba7a25e2e35c167f1db89ebf18eb0740c7420b0ec85d422f2258440745196e4845f9aa47441c50e4f076695b89cb3171b520deeff81016810eb75550895feb030125bdb80a5dd8400c3dd198f181dc034e7c6a9d92dedf6cfcccbbb057f61b9366845db773bb0bf7281f16a131ec493e256bd19597ff132b5fa8e9a412c1ff30c0e566907f7727eec0a24669a94f3e69ae278710fb283fe7243e9afca1d72d0b2a5eb419da7003661d6fa1686a2f723b0153fcb3da7dc89fe52b8929fc31060ff17469f51777c9e5b90753cc1ceec2f413df7e4ebd98d3cb15e95aedb6f74da9f48dd613e4ffd94b8ff99070af1030c1469938bf69532b751af4762d1ed6d3c5334ab68a4cc65e7349a7109ec10cc29f8d8350f1db5f05c3c53e1c095e932f57889fa716fec3aee2d7f4e4d140855cae6bcc800475cfa17c007327129b7a0ed452c26bd2d1ec4e52e292fe32ca873eff1fa07b7126c7f52be78bdf27eb3d0b909228f99a6ff9559c5165710e5dda974f0598e12a62019d4601b9cfd16330ea6d00063c756765e591541aa76daeff89de911e1e7a643b826d2c068e03dd936fbe6e1d6ac99efdab65407caf3a9f0d6f06b13b1efda53e00b1b025b9405117df530207c74ee8f01bac7865121e74d2ed08f0f7ee22b35523d608849ef9e859a6890264307a0a8d962a34b9962bd480dab90e7ce6b543fc021f5a01c117cea5e878c0c1fa2d8e33c4d476fe162bb7a780c1fb2846a7cb244e0d1882007be4308f62c974141e016f999abc8a8e9d07bb2dfa7068d98feaa8f98e426123d7a106224a8e714a7aafa008b66592b3735404ebf8000094bf305f25d1cbe22867c134c0a590f5e18bbd0536aaa49d3c625d7d1d29e131cfee8178a749cbd1fa8eae21c9ad05e00e6bd0263cd8ccb110b8da3ef60405ff1a3b9e2569ed4e5d788bb3ab1043ca6810ba627d6e8f884ec29816da0c462615c2afe178952f3786d83e243577db6afd98cc1075df427542b65f9e5b264c931c63553aeeb052c11a7649be827432dd15b91a453ce25e4d9933efa3a83f3da2693a55559ab90d0d7d607a617d5edb47b84563105fa89e92e81c0276cb4145c8aef6efcd51c8f0a55b0f310f3573501057bd6093192cf8a335024a14c34d9412ae5419576957d567e312a16fa3aa7d50fdd8d37990dfb9e167c627bcdd0eff55811c5d9cd0a587970a19085b4c822cc03c5ee74feba75f7bcdf116da676d896825a339ab55ac05490dc741e03e897e216bf063aba835b9962916953d9e64e62d77921eba44ca17e9b267127b1b39cab641d8a88b8ceae505de439748526cce1c8969a36512b851da51a92c6ff497e18a43223f3369657aead9366a2bf561402f6177e4e9f6b50a54c302f43abe9db6050865005400a5860a673ae8907be5e5edf86deee09e7e158b5a25c45965ff77975bfe71eac68718c17cc0c30211a43103c7a1f4913f3d6f7f21efd19d3769ec5002e433bf3dbed043bc681a2eefee1300dc26dd9e57fadbcdae5c683b2e4c43115efd68bc2f789f68706d8fbc5d69b3a9728e1f5a639050d7229d2fee090bc4689292bac332c9dd54ce27174cbefff63895a8936dee9f3765fdacb59a242d11afec1eff385f78811693ac5c07c35ce8eaeddf491432cff2cf38dd8e9e97d25bf551d958d7248a3d65b227ac1b7d9be459187ce400da352e674863d2c30bd2b0e743656d12f93014dc612d524b4e6a1aafccf0aa24b35a4573cda1c03fa30a37ec99b466aca7e3cdd36e352d66120b3da4f11c5867a4feaf08b9ae7bbb1b174652d3199a19810533bed4a3831f79e707ddca428e40b3cde9e6d3549e1a917007bf864eb537bbe2bbb0b29f2b7ec3c6ec649710d538d9b90ee0de0dd15932fca4fe3a431925bbd1fc1c2b66d4916783c1135aeaae7381af6baa835f599d4fc8e74e06e6e64d4bce1260b2fcb60aed1957a96dac8b1e888ec1b0b6cd6a96dc590c4b4ba4ffd8e11c0f2f0c26bae71d8f62891a59477ce05e013ff5b5a4df39044de131cd02a1ee5240ff468a5cb29ee64d19160a99b4a112428ac9fc6d6b08b35d21613289dad40aa2ae9e41251bb1988faeeb35459e92ba2c75c6d88c31985211c82b8349cac7eb0a6cb17f7b30527271da9ab1e73864ca1f0f9747821687192de9679e655e187b81c0eee6dc3dbde0eb80e264322597a7c8039ac18ce2dce8ac10ad49d74788023fcf2d92839f193d0bfee127d11239e77f4be2849eb540b81f0b6c250aa2021ecac67d6f96d1660c160b945b695bee9ece6db5f5a3e7b53fb5b262ae3e7cdd4528a45c92917bef5e625caf1eb068c5638f405cbb22f6ea1bc525b9552eaf479af666f020e15df81a6157ed4d891d3421cdfc14462985b71d701a5cac88136733e60ae1963b8ff25833e6f8a3142a5e2443eb0c639fde1d52331f685112378b3bbc929dd1d15c7c2262d59e7a2664d7a075bd21ece862a3a09e560a38d96f5e2ce5801d822309f799c80e989f738a58c340f6a47d58a95346073632402816bf4f9f5888f13a54a4ebd86f7cc6a16e2ddce5d50ab431452ec237b8dc36f80e62d3e9363acadf6e66d0e9acaba79063598a1f5fd1b05c2030feee5d569745eba3046a9a916b58725b490b143a1b73e20856ce498d366ea2f905a3a01a2895988d67a5649189ce7ab472dd09e9331073e5c738a91569d116b46a1490a5079a6e58e5499541abb1e02f863807f86891e7313dee89853b24d0d69ac09e87864e83bf42d66e946b936af8f457b9fbf9b0bd73e508b01ad367020b792f369a0ffc33be18b32e04e390d91a64072eef75023645c25eab469214a3cb870e9103afadc38d50db094a403ede2318112357b79cfc43d48756a4df4fd3a422b26026c6041c9e40c8918020a4765b264c96cabbfa1f63a37107786027fc4386663a710cd385a2b57ca98aed872250f67492eef3cda26c38919edfd95e54ee9d35714c2a6ad89f3a077cfe2991c0a8194974b4984daa52a5325fc82c20ccca58fea5531ea85760aa98ca84481ca7ae5544697987814610d4dc3a3a4520ea73282de627cb7698827800eb5c423b5b05bc6b8c37510c1b364a7eede47b23c0f4b84b5e5241af3155be3636abaaf5a3d4947606548e81de9c258be6966fd88d46dabc76ed06b4896b09140a20eae63ea9a93761d256205da1e734d2df6abeab117364a911ea1f5b2d0aea3133e06f23b57c686ebbb9c313861b9860ea9dfef86fa70fd9a192850b1a0ce51ece9d94a3551dbe752298a37e5c66e2d34f45f76ed4ec2bbd447dfbb5eddf8ee1915561346a4c121877060e7d361af8ae307022964c81d8e880b8c02d6727428a674e67f9ebbcde4764e3c3ac8969c4ed2c01b1641e21aeffc090fc71dbfea23e745c13f414f940d6268934889bdbbe5449f327d36cea3f64a6442421157adb63fa41995409aa7b7bf1364a96cc8ab1deeb99ade40e8cb7465510edff42b5ff216a6295d8258063b0f605ee7a63827efd84892ac4caa6af9860166e152eb32871a1ecf46d34d16750e2f253f853f3edd767ac14015f5e34b61a9948aac5583a1d99d376b385b5cc98b1329e85a6f4685e304b8a3e724e92d5bbabad0c11a8ab5472134f02b1ef500bcba8e48bf7118b9c98d76b0d2187f4cbc3c6abbaa1789c592879d32afb9a839053c787669d2b3b3fbf1df91ec9975436baef6b1a6fd355de3241c0886be2d61ed769a5221927d00ef97e64c50daf521c629d7120b2968f11f5958da06b89f5a2a1ceece5c1b6e88250e66d6003e07ca8ca0ba01119ea2474dfad012626003640c45d4b9e2b2a8768d89db0857c228b79ba537409e8f60f1b18c9199243b251d2fd2a696d107aee693ccd583f1938a8d9107223e41727efb7f30f3271f7ed356f0dfc5bc991dd9a290b6420d9c9251722d4478d2d6fffe3bb8448a7f0996b2a9ed4e9c1cfeb7c7a44ceb302b5855fe7305917d0c083199a612e677b8266c65a8f158c9b7514b812bdb61bf368e261560f50597b00b026ff3c085cc0596bb218bc8b4a3966981b9e9952c59ded0e6707b084882aa68d7b8db3f3bfe0d0e6343f92c198a63dafb956519295153fb523f5e033cad95fce820fb4fb423806eaef7e3ee769a673a6794532f8dfd560fbcb2a2148800fd5030250b4664e69cec8e78fc80b9dd33ea8e435b3487be6df0746927f5bd621e35a6a015750abfaf35fcd5f1d02d291b34b90072735b690c82eea77ad863a3066bb96c6632abb800f920815850141ce5bab58e6c409e0bfa5fb45e25dc80c4539dac3944a10d72991b650a7d9129e5c27176b3a9c4c196d2ceacf11ccaa96d724c90d1072b243885ea0d7ae519e2697cff92d21bc51ae29fa1851c87fcddd63a60880693a7473d1319132789625adf7d7dd46c8e00825921acea07fb664745b4ab51e454939aae5f98390a1e836ac2a81cc3f46bc1f56af9025652664cea2eb8fb997fc091d246a905b2da803ab801954bd0980ef77070dcf26b81507927f538a5896ad69fe5594d7f249f6e08c33db00bdf3d5891822da3803efba6393eddd622114d19b5c6ce2ae2a834d572421d2c2ef8a80d6200d0f6f31e2e8517ba972ae917c1e5ad9a05c31c8ce66c51afdeae31ef961158a7ed8b9e4aebfd381518cb699abdb16a6b6a75f0a918e8db9a0b6699562a9bccef122ff2aa7cd7bcc1fb7447465ba4029df218b48a7b06f7446d6703d1de4245f3031011780a5b1703fd561c0a5e5679a80ba88121113d916d2e1905faca83c07407e872bca5b8ebbeee9200ffe9f60b63db5f6857f666b6229d264b5aebc804acd902f5abede7abb979dea71322e864b706b8d2091b776ca2dd02d0c427bc1aa757d225d434c33fff48c748b87164f0b94557de81d79e0a62f842fdbcc09816cb1af95cc9204e2ec7c0a9cacee4899311c2b4ff15109a6a0c39507fd54c5830c6eae2cdfd02cd55bb25a48a273ae219490d88c2e1802ec090bf3b3faaa093cb1853523c6f3a4af0468cfd170f9561f4e9f846cc5ab5d0f9184fc0149a3c4a76114bc17c22c71f3caa3f8f37762a770600eac684ff87c895b718353e47e1bd6ff7bb9f50162ed7076d8e8281309ab5f0faeaedfdd6f05b04172c8629c78fa2457584983e430bb54511be63f75047a439b570641476bccf28f42a4826f802db8a20e0afa2cc4faeedf6fceb5feb18bf8e43d5d388fa255786204c7b38d98e2f16b8473a5291ad8e1fc3fde72bce9935a2b4107c9ecf3c27e0f95de98fa8975f16c7e8aef4e66cbb619672863b94a3b3f13e77b7913bd604a4c49e61601ee183ff345f6acc622e5e8c37ccf723934933767d068b95c2a9f1bb7ccb6167db30540973e8d7070885f1dc0610fcf4f060ed1676cda77a15fffef972f7a00ef85d1c9e2114539c9d1c82c7b161571037087fc74457a45f9e7aad4e367758ad95e1bb44c8f6243f150adaac85b6b892ec13ee59845702ad8664683f7519a349ca25271b3b188334c456c2c263cd9c70ab394d256b7c6aad7f496fae0060a87f345b0beff770f3020103e6cd122de62b66d8bafc6956766600b2fbeea253007e22888a3bbc6cdda382a1a87e193beff9a8bdc515c78ec9735e3310973b731de24a137bcb8c3fdaba17a3df9b654fa5f2a7ae81cc9ee542e685095e5ab561efc9b32b863d511bacfb36adb5228d05180b5d09e0b17efc5dc8664b9453b33fb7d6a02a723d90dd44574913f8e97140cc6b0510c3df0672dcf143e1d798e91add438c6684909381f2da6262ab91c1905b208e3000bd54493762f207c868393cd6725225893d347b0836e20479c24f5bc2727fe62f80fa8e6969de23feef259270ead1e09cda7291890186a6393db52ee85808f6846c7ef2747c691e8bf5bd4dae2a50deebd6efa10931ddb479ff37ce5a1f1f32333e53909ab2b2d05d12d9c73d1724fbb5d0eef61b5cf5ed20f15d08090504cdeb3a6f16202ed35fba7317089c9be96dceeb88156aacb3d40f82898fd71c4bc28bdeb854db3c8ff56acbf672e0b544b3dbafbfb004d1eb88c40861b4f2aaab8d227579c0294a1a28ded45ead11b5adfc328f389b0dd08c82201b422d0d0d4e700c28e0babc87de349bdeb01a9d61067189a291491cb560fff5c9396a6cf985203967368179e0758a2a3dddd6d511d920b630729808ec5bdefd5c579fe1c1642499857b0d653cab9c8a55820400d77e46b49464871b379ec1a585498f774e96f36a445f336fbe4c677fb9b1fdb6fe5b084da9260c26a7efb7def98ab7c452cd2442fae8060cd6801ecf3ea81b66433129a28d48fa14b4141a99fe14df81475ebf424ba3b68b8ef882e9f119f31178c16fc11513130ee80f678772e42cc99d35cdf3c933b6d93eee171280a12581386be13245eb0560792823074b78ffe637e9a91390f995a2087c172d103b3334b5b635198f52286a11b2f35f91905b1d21ed1aeea20f2d456a3f932f60efa111a2d39561562c685840afa636ca8bbc3319680db023099cd5c71924a715179cda247cfef59c80fb4fd7744924043fa6e551a9a98ddf720af1576694cb42f0daaf3d4252ded8e8caf2ad4e20736a2b80a88821e34dd31c9356b8289f5ac139699deed0344729bd06b38da74bbb15ca89e2538cd506744bd8e42fe60c7bc2031808840a4b9cc79cb4aae4e390ac94c55f3bc445f8414bbe24b91b868336a686b7d4785ee4ee49933d4824ca6d79019478b04ae50bb01c65c6eb810c50f7c3270cb99c0b9f26ddd93efc4799a2f0e7b081771dffebc2519af11e309a47b23439064f05dbe2934f1a20a04b394cc43e6b553f17286192fe1c8e6363e1d6a762dda87407492f2470c7ce1a5710556c3a65a149adec88cbe4e7f6b3976c233c4a13979d714454f3bfda8ef9d73d1a25e738952e08aeb8bb2d846000caf281526bd974ccca6412c604f77f405ef56a23e9546ebac28caf26bbb7e78c90c3cb34d5a6ab2f1f783d50eda58dc787594142a9116dd7740fe216caba3a164cdcbe0b37c8f210f984b199aafcae62a5a0803538d0e06d9fa289d3f1acc85973613123e3f672cdbb711059050573822feefeb3a0ede8ac63642c2e9b4e9227ae841ddb3c2db1dc44996b4c19ff640598e7422dfc3f37169de0efdcb25314176e6ca2b7dffc28b8e37e1fecd2ac8d4bc062a4d4a91a0a1212a17cabae7f2d4d3f53dd439286bc64d39a0b460a5f34b4d182086c2ca16815aec6b390e092aebf7aad192bca9659cd515f5b7901c05667b9a02744d963ff005986a39b44503f06fd77b94dee6f600983e81b0a046f8dc0e072c9f79527fe4dfe8aad03b58630d988d5a4102c3ffa32370f610e11dcd33c6fa5d66cdb627fe29c6880ad1f63b856282e4644fb8d9251e1402402f688c9e708292635eb449975b1c2e9f1de177ac3ce3fb97f7835253059896c4d0413b79433ece1d7a137d4eae81af7a1712104c4e95cdc774a6cb86e4704e1908b1991872ace37da115499708b69b09e5e979741bd05cd31e988eca00619dbc2dbe565c3ff2f0c1cc8cf13e26db369b799890b221b6d31eb59cabb097bbcb6fd80ee5587d1f7158e3253122d72eca203a69f83a9df126e612de29e9d8ebeb270a7cffd460bd491f37e39cfa93fb301cacd434ea7053aca1bf2304eaf4cbaac0d1c1e8620dada1d7c9cf4eabdfeae7b978bfbcc9ff975cffcb580cc27fa6512629d6e2591afa13e7180340a37925762d6ce9b7da4b61c582bc9d163dfc428ddfd7b6f3cbc2e14f26fb1c9e82358323f9b369f8f2cb17157e25f331208b2073f2f7e299c77348425d4930dc149f5543f9b7d4c112f0f8fac4a16ac6535345303062634ef32ac1dcfb01c6f6fad5e4c325caadef0e9eec2114d62e69e16e64c7a60141c6263e9c1bc8007cef0033c20e297d56def08a44ff00351a8092517d07ceb4156dacf6fd8fe8efada72e8e0c918c26283637728582bff3d1c5c29c6a6044987be32cb939a7c8ca28e3309fdf1bf8943223c59178749fb5ed3726a753afba2ba04d0e915bc84e6523fa517817064f2beac49bbb5c408c0df351ff58e84d46c31a8b08368a5874ac7f9d18f1509fab3ef78b6ee18b61dd1b83e30c0075b5fb20902a950bc32f00ae793b366cd18b7c7639da71a55f1892e857c7a7b04c1a7b3c29b04ba3758ce90e3b50977986f2f9df8f7ec57026da0179b1ba2e5caaf92e043e02eb8056ac3f9d3453454f692f143d522c9e7542529ba1361a2df2db0de812d20a0b6c4f763141cce34905f559eebd577cf8713461fe528559146ee5220160eb21b7503c23d9cd8f0fadda411b477f0b8dbe6b712da79b7f67f5089ca638172f97ee1474d778805bacba14bcc91dfd5c0a60c1118cb37e29ee5e4865f64d933a688c80961dccf6fd7143317cbec211aa2de4b26333968a0b90629392e2f08f9de1dae2d5f67cc2e79a2f104a3691d0d39a1a10489ce7a954f1152755f988007f5346087d893a9b303cd8ad50d7585ed88f0dde43a5e029df3c1afac06b9c21ffbfc3cbc32f6619f360c80cb96f552e610b84c778b60b6c35af41dc367ad659fbac2b7480ab6183cfe56e898b81631a45db81f9eac808376f5c045126f7e0ca05353fca150c506853997d8e74a474b327d354b5164d195de0477ea5b5814763212706316b4613ccb9d89ff0060272c0dacea696ab09b8e06d6252484188f9d7189a63dc1af64ec15a91b122faf01cb96d6aa77c9caead80ef22937082221b06441c840acb90e3034edff1ff6fb517efc3c7a0aa73b0d6922f6820f9387616f40455c9b955e1852734f68b6d234e096b8159056a801b009b1d8a87ded49c3508028774c86db5353f8b935c40a6fe012ef9d5a99bfc45e9857cf9e3902d23e30a217161eaefb1ea930fc9d16f88d86ba743bb6ed2386cedccbac7c3385962dd3979dba01a2b49572cc2353840f7a28d4b337b9df0afc8356d5a89ace81e717c26d392a13db089246473877f05f6ea651d22a6f09c2d3b72ef25bf9ffbb348cabc66409d443c70dde8906baf479e097c27f4fd4d1a2209307de83dd5c84d8fe6f91e779ce0fbbf41b81cee64225b0f6b6e3afb5f2f2fd50c564f5ed3468fd7599cc489180bf3dc8b1a290b0d7ace76bb1fb8059c9ba2a03837495234a6d2ae1024a88ee4db4d533c8c951ae46b9228d690234721105b7128a17ffc93ff9ba2955a0f0715e4bb03e411f9616897ae5dceb3a7394472c3044f7ce38db17ab7d7af56b51a58d95c5acb5166e30a42ef95c2eb691e5969d79c99eb99ff972ce32f3d4c85cfb59fcdd7556e7998691e45a3d06b07211f47e86ed38977b3a1685faf3f3be54561c38ae363b4ad0f9d33078b91bbe452891e6bb811213c7b712281ab4915640bcc3e8bbebc2c14cebf767a55c93d0af2921b8926dc2e0e6a80fdf827859186c2319fce7eb6029cf0928bdaec09da5e97735a652cbc9e3ee719ba2c3ebe3193179ff5e476b5c646f57ef6dc372d67e1c191032c8c7d891145b764cbafa448f3f443ae82b28d6e4eb5404f1d090e7dc2b64da8ed240bb97095003167306b5a2a4c2d44345fa38a70299300dc28913ff7e2394735c3d57d1bdf75458e87c0886995ad1f31c5c9174ce735db09eba6c693d9733abb5f38d9b787775c6f70a0c9aceb14c9d2bf0db0eec5374306780525b98d4eab17ee29c96229272b5a1b630faf2cd984ac94a53330f83a710c59445a18fad148923a28fd7fe2070e15c8ed1d89bf715900a02c632016eb2d0f525b6d9ae3b190c82fac80b902eb757c54e229fd83a50b941d0fded801123907a3cf18df86ef654d386d7e50e5324a8f81d5b16635483a7abc067bf97afb1682210a698226e9cc125e19ac3bf5ed86737c8a4166587e926899e7adc4aa6e0cfb53b524e86c3e935e808630e2892c6aa60cb4988654d7202bdabde3151778d591224157fe8f9ac951d27637e16aa0c62eb3b3ace40af226c20866ef8fc7085960fa3dda343e80ebbcf5616809fc5d2335a2c7896419ee15ebd74806fc5b5b1b8b8807e5b92f91997e1de75482f7b797bf8ac1525bd66d878472dd2a810587176aa500bda2f3e9be4f4912bd202dd674d6d555713b85240a0f8c55432ca2c35ae115dfd4ec36f616e2f20587656edbda7eddf2c1be4715573fd562f3fafa6926494ec56c6140fd9f81ad1e394eee4c130181b48566afc5df5021f3820280e46c8384b584450abcce3ee13553f52d9050fa30dd745f4f0cfbc8f2a8717b3aa9c21f5031e82d34aa5e7e75c33492438457d1be2be7a811b962c5b5c575abd85346d6b71118d3702ab3fe0047705e45bef1f1af8d46dbc6a316da4d2bd12efc458a1598cc02e6833169056dfe9b656ac241368a40f1549ff8a074bfd1c8a569c9b8d60082554a9cfe2e70100506e31acff525e7c179bcd860cf32e84e56717a7c2dd822daea300e29389b9bd1d2124f5878d5161cbaf0ce0c4242911ef4fe7bda382a5a3d9425558ae183d9a15ff391534a0dee4c1f2dfc961dcaab533131d8db6a20e7a19bc35206bc0d20c5c6a94344dcb6721611e14cb03d553e3f20371e4465b5e903324ab0f4715349ed9e1a3626ca9f742db674f88c91679079369ff8e4f73173f35d79770cde8de7e8bd76522fdb7b8a15d364e151697a30f26dc5ede1c5255be48b50db1c890969ed5a2ed900df32ee56436157c2a6ac0b551e6424aa5b4d87f1cfe9e38ad7b5c3d5b6b8ae775af5462000b9164f8af1019f7c9c08514ce3f27368a8a2104866e8e2a05bbbe7c148a52cc34fdb068f5ea554af3dcb895460de9e884194af35f6c0be3ba0e5fb1939747ec02570c6f96caa21bad3edc1fc86dfe22bc20e1355842cd8ec920c0e1b9d2c7580618be825708c88506f21ef656aae8d5f1929f5fe15b493bc928a23570852656c6a2b220a2cfc99adac45a60450df8fa7333e8917a39a291b7fd9001cf93ea90d01f3ba6b1c1d6215094075726533c5256918b4be7e31792eea66be5b2f774293ef4f26272c0ee95a4d291ea9005a193a3d8b70fadfb2a30c1bec8fab04382ec136e5af3b386591306947abac7b2581f67d64a35ca9451eeba4f1d8b5e9584d3f52c23bc9b41bf038880ee5f3f10b246eda57557487e75d1526d184a48af6f7b318c45c93df325156ea5a569e9654c0c67b951e466ddb074c5669100151151325f5d773c6842aad4041e3cc6ec09c3cb678d6dfd728ffb293d6b9f2a3dcaeeeceebdef9e296dc92e71395909cf31f48c7b120e29b25f0893ee71ef9ed514dda487511ef3e472acee0f3e7dc865304684d6a6510aa922e7f9ead6f4bb8d48d2f0476328fde18668fa4122ae8c1784b39c06e17fbce6562a73652e4fbecd199585170b87bf54b0a8965cac30eb72a2819eba4051a99935e1b2122aca5f803c9e94bd1918262325d8e6617b14b3ea21740e2c6a3b6b1660802c9638ae70eea3937fdfff271e469d0f478fb248b0a3606c12784cb9f20862353e6aaf1696cc26c26a52c34edb117f7f607c0ef24f225d3894aab7baf32fd11f5ce72eb6e0ce910c88b7973e55d6b5dd79bd4ea9bc9f6876786604459518eaeda5e55ad30f222be8eaa66428528d87f1cf26ffd7301562a0753d5b634da577d64b4289a4d6c36a527aae59ac7c0b0627e46695e3afdd887b5d02f445ac6574b47f13a9cea621505bc3c7c40a3834d12114de4a35ce7a301822c332d7ccd5c0f1c458c258bb0e6e0932f38a550b32b3de3d747b819bf397a12e91e8c6ea043fc20a0e55363941b7af33368db4cf13ca734a8fb0decd7cd90fcc8e0c6ed77d5aa05441822971fca757996e475fabd00852b1f63b6a9d80d3c7fd13fd06e662b817a76908b48d861813c2db86c31a8c6bdf14a64ec3b431be3241269295b3d0636b0011af452fd844466481b2b957fb1bd15f112cea07028b963207fc54fb5bf9151f0cd8b5bb9def8083e1c8668ba04583ddffa5bb453c17b2f3f98e31e13177e1f59904a1e38e6d0d2637eea80387c4b9dc4c381f98f6096e18c76a9e0abc82389ea9abc4ce3def96179b82796e602f018e621cb4cafa98ec7fc3b495e62c544000761ce0b25f360cca250fc3c4047660a5ae0966a24479ebe22a7385cb9f7494ee808782ab17e2bda741481facf9207b400589528bf382b0fb628a92a152a6373e3966de632575930485d38550fd59356d40f19ba17ae480ce5aea039c8edcfb2433c5bec777b2f280492de8c4f4b136c81ccc0f6fd3420143a55fdb4de54bd1fe679d43730f13f66775422a76ffafd5c8f9428e876d86f1aef7407d2a9d8547234e05a504558cf41b393bf9cf65d50045969c67b5ebe431f561ee5b64867d3eae6178c2b42fd7ac39834d4ec492a8ac411e6e1d8ea38e47d70cc83db5e3b74990767852eca0aeb4195dfa8bb7c830fa99648719ab56af68682c419857c0bcf3d1e86560ca742bcf35ec402e30ea1890900b90a1dbbcbb815521d92de52f382aab1066b93fdd9c569d0e8d21c0def54656fe4f5aeb2dd4b5e39eb5cde50a51ba704f9f56f4fea13675fe5eb3452ea37661a5783b47c585ed85a145a29c51a247bcf6be341057fc7506e4f5f3cd737011bdbd63135495de6fc46fb69308ecbb47dc5ba3b3a0bbd18670c65327533146e41ae85f61fdc10450e4c23651857df9181d581cd0a6e1be2dad9fe47f4d13f76955ab6fa60886a5d0c5f5431754cac67f4d31f8f9123f0a9e00891a625b972fc2e858e2712b248b61af2354b630421eb923f60e72a9635b81a255037230c4ce4eadc230e7069315e41c9bc3e358789afe5e60ca6e2e2a6207fee9a1be596a823c005acb59b0f6684ec649dbd68f75fd3d876158685a1aa84d8fcfe9620ddfc572ad5dadeff146e2839da3f0cf036fd10bb47384d0333908cb8110ff341563e3e82fa889a5e1aa5a8e39f7f20fdf4ce0ddca03ab435d4c0caa2706110e99fa781413def350eb5adc49e8e25915f59bef2cf5f6acd819b2d95c9f662ae4583a8e0d47292de3caa338598c39c9a71cd5d2980ed93e3a6eb4c341b7d086cfe6fc56706108a3645ebde4daa3a5e243728d60c67cb2858a735d6d341e1969197958b84fa60ae37b06687b354a72a9fa13974d17ca51feb2ce0f4a05cae63eb9124ecaf056c5cf4efc81488f668a1feadf869ab29ade4055c5159f9cd0e85d81ac70586e5f58cd74c0718132f81c3028e4c20179fe6a80598fec3644bd15dd4d739ccce5417fe874105758156f0e9131098a90d7f5d1dfcbc29bd4c1eb82c75f118ebe9259ca44e0c4cc0cae8023defba3db038a16750b482b06347e6f4385645a55de11f49b9168bb7f77747cd6a1c17dbf844b480a5d81818e90d1e7ed8497cb832466ce4c1d191dba716c7bbad8599f14f6f93bc31998a6f463a6279b221f0b4982f3d2a9233c3b96cf1e68e9328ae4471bb47fa35c6ad1ee5e921b89c7dfad20f623ad114560e09a991cd7613a6cc0b9509b596b677356143f363ca5ebb83e922897302ab8e2b3c296c6055911f739833defc2515ca4197b22d4f46834abba8253036751eb73fa7b138e7f02538e13f5cf2b52dcde2c7a3be8966710620c7b4313beba02c4a1ab832a54b9a75e2b6ae13bf988b5eafb0c31ff08b590a764e1b139d6a3046ba54b795f6a5ea33a116239334f404a2e3a7bfd289f911eb11bb58241b2b73accfde78355d9e7177c2243539afeaaf1822cf3cafeb0c78f6eafe79d0a1fe7393f9ddeb2065a3fc8c41603ec8daba9696a7717d633d2c61d9fa1eae1ff0c55e3f8873546adc31ef7cbb4b0fbf890eac27c19bd8202c00e5ac1e5569a63ac9a1985e64ae83d614c59974d4a84c5b02e1f3c48342ba3807e98ea64ee6672ec90fa7af7e2b1cb24449af3b9c34a4132be6ea8eb1744a41e9cee9a1f2165406598059e81f0cffeb33a6979b62f1bd0a5efd9b7781a8d81a61233b55627a9e566f3c3aa711d2917aea01bfe7b9aebb698eb63f179231d024e7d365af955fcd8878a518b53b7f58ca730277ca94fd3eb0cbdca603bd8b9ba7b3af2f05968a9d33fd9e769ff5ee3e73c1ce5d1aea48c3bd4663d1bebe44a506bd82ee94f58021ded4c200b5e6bd647654fe8d47d9ba97e18e896b5bf4c36c9ff687ba7897be7820f26513b5e105597de8f1456793f7cd0657613f3e28fb324c28d00b3bea1ce9c0ab7a2c1e806c3ac251d6d855e6c5e859d28aa889d45a5a211b158658166b6fd12c902daf3e22bc155b1f6cc7dd65d2e30c9d99deea33aa01f1c6682e745fef17ef66ac2e52974507f68e85ec85daba5db67d3f055eab4c50ad0395bc8d476e114bc477eb7b0a071d0ade62d732be4424cd8ee2a04a1febc876be4683c4f3e3b485bc6653f48512dcca5a37ba9214adb1bd8f7a63cf9dab75d236f33caf8dfc37d3b2c61b7d12430007112ebf4a754af4eb6b52df69cd45b12855c733ba5d0054a28d56b5b0c15f06fcf96033cb22cfd37fa2bd14a8ddfe2372e4624537d3cafda648db36b1ea6d9f8022cc06e944fd8827481ab5a04e0ce58eb5e38cff3e900ccddf742ada4d206e4bcce6fe36b1a6a7e9fbd11194c19251a9250b75ef6e95ab4e06dd6768e35dd6e2f18987c374eeb62337fb55a30c1ba6e2e327785856dcd0ecfedd707461764b9eca21e17d633c5d4a9d5ad10c96036a77bdfa8ac6a594557cec6f0e49c7b3a757099219f9e2f653965adbd1c495642ec9e5f6a63473fa171f27bf60ee84780bf0a721da89437cac0d1e63c3d7ecda4ea8482bd5df5ed46926bdf35062b025c27887cb392b3993fbc5f747bf117d7dd1b4513c12d2763a0f03bcd6e4b9c93d94b73693bfaa3dfd2e5b9d8122ceade2f02f2e706d4753ff7d72e8fcc7a9750b3bc1a4e8af386ef1ab3e07c8a28196691910d8606c8beb488aea180dafe67ff5bb51e6817c132a0fa72d25fba58b4a296deac1fdcd65f4095f221949cb6bc78a6dc24e14ad9a942dba0e35b63f8c96f51b47d28d70fa16f957be3e53d68574a74921906cc5c035ffc0cf882803f6fce57e41b93978388a2bbdcfc0f5507e168214dea731faf0a1a667cb0839bfc5ce70c5c86afcad834b510cb8d73866c4f52938a9c018b8570c50e163ca59806ba6434edcab80b06c54bf891d77e76b0e18cfc1f309dc50756fa76cccc7614da82a8c94a1a8bd0a88c1dfa4038cc9d59770cda69b817e2e1ca14c39f159ab4000a628695a81820abcfc2b863176ed84b01085f9077eff083ff5c529189b6db4ee118dedefcbbdf62fd2b0cdbd4754b55dc51fcb440aea115c226438ce488a8c48da2780d148e2cb5078001bbc6e563969de9e0e4b753044f250832631f8073c17f9659b3322ddb8d98ad5fb02d9f074bea034dfc2f149a1bb6f99fbe677e09dd0f4d13a8548962ae98e23bf5acf8c84f201c695beda7bd59", - "header": "0xe733005d39642e3a2cd98b9a2e7272d12a3edbb6a931b946c54d20d1c4f5beb3" - }, - { - "cell_dep": { - "out_point": { - "tx_hash": "0xcd8a652a20ac315d09137d11f6e24f1b552c255533658cb3d7be85594f00b9bb", - "index": "0x1" - }, - "dep_type": "code" - }, - "output": { - "capacity": "0x9184e72a000", - "lock": { - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data", - "args": "0x" - }, - "type": { - "code_hash": "0x00000000000000000000000000000000000000000000000000545950455f4944", - "hash_type": "type", - "args": "0x8536c9d5d908bd89fc70099e4284870708b6632356aad98734fcf43f6f71c304" - } - }, - "data": "0x7f454c460201010000000000000000000200f30001000000c206010000000000400000000000000050c80000000000000100000040003800020040000c000b00010000000500000000000000000000000000010000000000000001000000000068be00000000000068be0000000000000010000000000000010000000600000000c000000000000000c001000000000000c0010000000000a807000000000000e0070000000000000010000000000000130101c43703efff2338813a2334913a2338413937071100233c113a2330213b233c31392334513923306139233c713723388137233491372330a1371a91140893070735b6973788efff3704efff3385070193070735a164b697930584cc056abe9526e826f4014681460147814793084a80730000000f00f00fa27701253ee86313053e63e3f456b70611001008138706353297130904d03a991387063532973a9881454a85c2f0bed4efa03068631c0552b7071100180893870735ba97b709f0ffbe990946ca854e85efa0b05f03bc8900d14703270c006315f750b70711001408054793870735b697930504cd6217be9526ec26f8881601468146050781479308aa81730000000f00f00fc27501252eec631a053463eab434b7041100938704351808130604d1ba973e968816efa0d07c631a054a6657930710046313f74ac675130610040802efb0e07c180893870435ba97130504d23e959387043513080002ba97930584cdbe9542e842fc268301468146014781479308da80730000000f00f00fe27701253ee8631b0528639c072d930703353704efff1808ba97930484f0be949305000226851a89efa0406d180893070935ba97930504d2be95130600022685ef40a0300366810746758145efb0c075180893070935ba97930584cb2146be952685ef40802e62666318062637071100140893070735b709efffb6973384370193070735b697138a09ce054321683e9a131783038568233804cb233004cf8816d28501468546050781479388a881730000000f00f00f833704ce01252338f4ca63036508631f0520636ff820b7061100100893870635938a09cbb297be9a93870635938989f0b2978544be992169854cba8b468b29a06316051e6366f91ed6854e852146ef406024833704cb8504a2854e853e8699c3ef404023233824cb233024cf8816d2850146a6865e878147da88730000000f00f00f833704ce01252338f4cae31a95fbefa0105837071100140893070735b709efffb6973384370193070735b697138a89ceaa8421683e9a8568233804cb233404cf8816d2850146a686054781479388a881730000000f00f00f833784ce01252338f4ca6300e508631205146362f81437071100140893070735938a09cbb697be9a93070735938989f0b697be992169468b29a0631c0510636cf910d6854e852146ef402017833704cb8504a2854e853e8699c3ef400016233824cb233424cf8816d2850146a68605478147da88730000000f00f00f833784ce01252338f4cae31ae5fa370a11001408b707efff13070a353697938507d4ba9513070a353697938787f03305f70013060002efa0005d3704efff13070a35140893070a35856c930984cf130904e33697b6978144130b0002ba993e99938a1c82716d094afd5bdaec4a85ce850146a6860d478547d688730000000f00f00fe667012521cd630345071305b0f9370311001a918330813b0334013b8334813a0339013a83398139033a0139833a8138033b0138833b8137033c0137833c8136033d01361301013c82808c162685ef40e00671b3755565bf295555bf13060002ca8513050d02efb0804719c58504e39d74f71305b0f961bf3707110014089307073537081000b6973385074193070735b697930504cf3a83be95c2e80146a6860d4781479388cc82730000000f00f00fc667012539f9e39a07f50c08130603352e96b307f6403ee493070335ae97a265930484debe94b7070800ae97130703350c082e97130604da3a96374701001307e7f52334e124374701001307a7f7233ce124834601142267a6854a85233801242330012602f33aeb3eefefa0506979c1370a1100180893070a35ba97930904d6be9993070a35ba97930604d4be962686ce854a85efa0906f8547aa84631af5080c0893070a35ae97130604cc3e961307201093071002ce868c164a853ef0efa0d04b63159506180893070a35ba97130484f03e94930500022285efa0402e027609c68c162285ef307072370711001408b707efff13070735938787f03697130600028c163305f700efa0c03c51468c1613054c00efb0a031e30305e4055581b57d5535bd795525bd2d5515bd455505bd555535b5495525b5b70700009387070099c737c50100130565aa6fb0e03d828097c100009381e115138581f8138601fc098e8145efb0603017b500001305053c19c517b500001305253cefb0e03aefb0a02402452c000146eff07f9b6fb0e021138781f6938781f6638be700370300001303030063050300138581f602838280938581f6938781f69d8d8d858947b3c5f50291c9370300001303030063050300138581f60283828003c781f815eb411122e006e43e84eff0bffab70700009387070081cb71651305050097000000e700000085472384f1f8a2600264410182808280b70700009387070091cf71654111938501f91305050006e497000000e7000000a26041016ff0bff74971a2f2130600082a840a8586f6a6eecaeacee6d2e256fe5afa5ef662f266ee6aea6ee6efb0601fa285130600040801efb0a01e8a720a6982652a7daa6416992e99c2656a7cea69ea94ae94c275e2993060ae99b7c5010083b505b83346c90034642d8eb7c5010083b505b9ca7cca63027ea58e3868ad8eb7c5010083b505bae693f29333c7e3003c6c2d8fb7c5010083b505bbb3c7f90093180602ad8f939507028193cd8fb7c5010083ba85b8b7c5010003ba85b9b7c5010083bb85bab7c5010003bb85bb0192336616013e9b334c6c0193558c01221c336cbc00a265b29ab3c252012e99e2651398060293d88201ae94a2758192a212ae93e27513150702b3e60601b3e21201ae990193498f369a1699e299ba9b334d4d013346c900b3c7f900b3cc7c0113588d019358060193d50701221d4216c21713d58c01336d0d0133661601cd8fa21cc67eb3ecac00ea94b29a3e9be693a58eb3c25a00334c8b0133c7e30013d80601939f120093151c00c21693d2f203135cfc032663c66813550701b3e60601b3e2f2010668336cbc00f69986754217498f9699ba9b33c7e900ae93931507020193369ab3cc9b01e2934d8f334daa0113951c00b3c6d3003a9a93dcfc03b3ecac00b3425a0013950602c6948192131f1d00e694c98e93d58201135dfd03a2122675336ded01258eb69ab3e2b2004299e6656a99131f060233cc8a010192b347f9003366e601135f8c01221c939f0702336cec01ae94aa93e6758193b3e7f701e293be9bb3c6d30033cdab0113df0601ae99c216329b935d8d019699b3e6e601221db34c9b01336dbd0133c7e900b69a1a9993df8c016a999355070133cc8a01a21c4217b3ecfc01b347f9004d8f131f1c00135cfc03e69493dd07013a9a336cec01aa99c217258eb3e7b701b3425a00e299935f0601be9b93951200b3c7f900421693d2f2033366f601b3e2b200939507028193329bcd8fb34c9b013e9b334c8b0193558c01221c939f1c00336cbc0093dcfc03e675b3ecfc019a93e69333c7e300ae93c275769933cdab01ae99e2991699b3c7f900931d1d003346c90093d50701135dfd03c217336dbd01cd8f931d0602f2940192ea943366b6013e9ba58eb29a334c8b01939f0602b3c25a0093151c008192135cfc03b3e6f60193dd8201336cbc00a212a265369ab3e2b2014699131f0702334daa01169901933367e701935f8d013346c900221d2e998265ba9b336dfd01c294b3cc9b01ea9413df8c01a58ea21cae94e665b3ecec01935d06014216e6933366b60133c7e300b29aae93a275b3c25a00939d120093d2f203135f0701b3e2b201ae9942173367e701969993df0601ba9bc21633c7e900b3e6f601931507020193369a4d8f334daa013a9ab3425a0093d58201a212931f1d00b3e2b200135dfd038675336dfd01b3cc9b016a99139f1c00b347f90093dcfc032e99c265b3ecec01e694258eae94e275e293b3c6d300ae93e265939d07028193ae99969933c7e9009355070142174d8fb3e7b7013a9abe9bb3425a00931f0602139f060233cdab01939512000192819293d2f2033366f601b3e6e601935d8d01b3e2b200221de665329bb69a336dbd01b34c9b0133cc8a016a9993df8c01135f8c01b347f900a21c2e99221c8675b3ecfc01336cec01e694e293258eb3c6d300ae94a27513df0601c216b3e6e601b69aae93e67533cc8a01131f1c00135cfc0393dd0701336cec01ae99c217b3e7b701e299935f0601be9b4216b3c7f9003366f601939507028193329bcd8fb34c9b013e9b334c8b0133cdab01169993558c01221c931d1d003346c900336cbc00135dfd038265336dbd01931d06020192939f1c00ea943366b60193dcfc03b3ecfc01a58eb29aae94aa99c265e693b3c25a00e29933c7e30093dd8201b3c7f900a212131f0702b3e2b2014299ae93019393d50701c217939f06023367e7011699cd8f8192b3e6f601ba9b3346c9003e9b369ab3cc9b01935d0601334c8b014216334daa0113df8c013366b60193151c00a21c135cfc03935f8d01b3ecec01b29a336cbc00221de265336dfd01e693b3c25a00ea9433c7e300939d120093d2f203a58e135f0701b3e2b201ae949a99e27542173367e701969993df0601ba9bc21633c7e900b3e6f601ae93931507020193369a4d8f334daa013a9ab3425a00b3cc9b0193d58201a212139f1c00b3e2b20093dcfc03c275b3ecec01e694931f1d00258ef299ae94135dfd03a265336dfd01969946996a99e29333c7e900b347f900b3c6d300ae93935507014217939d0702139f06024d8f81938192b3e7b701b3e6e6013a9abe9bb69ab3425a00931f060233cdab0133cc8a0193951200019293d2f2033366f601935d8d01135f8c01b3e2b200221de275221c329b336dbd01336cec017699b34c9b016a99e29393df8c01b347f900b3c6d3002e99a21ce265b3ecfc0113df0601c216e694b3e6e601258eb69aae94e66533cc8a01131f1c00135cfc0393dd0701336cec01ae99c217b3e7b701e299935f0601be9b4216b3c7f9003366f601939507028193329bcd8fb34c9b013e9b334c8b0133cdab0193558c01221c931d1d00336cbc00135dfd03a265336dbd01ea94939f1c00a58ef699ae9493dcfc038675b3ecfc01e299aa931699e693b3c7f9003346c90033c7e300ae9393d50701c217931d0602cd8f01923366b6013e9bb29a334c8b01939f0602b3c25a0093151c008192135cfc03b3e6f60193dd8201336cbc00a212c265131f0702369ab3e2b2011a9901933367e701334daa011699ba9b935f8d013346c900221d2e99a275b3cc9b01336dfd01935d0601421613df8c01ea943366b601a21cb3ecec01a58eb29aae94e675e693b3c25a0033c7e300939d120093d2f203135f0701b3e2b201ae9942173367e701969993df0601ba9bc21633c7e900b3e6f601931507020193369a4d8f334daa013a9ab3425a00f293b3cc9b01e29393d58201a212931f1d00139f1c00b3c6d300b3e2b200135dfd03c27593dcfc03336dfd01b3ecec01139f060281926a99b3e6e601b347f900b69a2e99c299826533cc8a019699e694135f8c0133c7e900221c258e939d0702336cec01ae938193935507014217931f0602b3e7b701e2934d8f01923366f601be9bb3c6d3003a9a329b33cdab0113df0601b3425a00c216b34c9b01935d8d01b3e6e60193951200221d93d2f20393df8c01336dbd01b69ab3e2b200a21ca275b3ecfc016a9933cc8a01c694e694b347f900131f1c00135cfc03258e93dd0701336cec01ae94c699c265c217b3e7b701e299935f0601be9b4216b3c7f9003366f601ae93939507028193329bcd8fb34c9b013e9b334c8b0193558c01221c336cbc0082651a9933cdab011699931d1d003346c900135dfd032e99e275336dbd01ea94a58eae94e675939f1c0093dcfc03ae99e299b3c7f90093d50701c217b3ecfc01931d0602939f0602cd8f01928192e6933366b601b3e6f6013e9b33c7e300b29a369a334c8b01131f0702b3c25a00334daa0193151c000193135cfc033367e70193dd8201935f8d01336cbc00a212e665221dba9bb3e2b201336dfd01b3cc9b011699ea9413df8c013346c900a58ea21cae94c275b3ecec01935d0601f2934216e6933366b60133c7e300b29aae93e265b3c25a00939d120093d2f203135f0701b3e2b201ae9942173367e701969993df0601ba9bc21633c7e900b3e6f601931507020193369a4d8f334daa013a9ab3425a0093d58201a212931f1d00b3e2b200135dfd03a265336dfd017699b3cc9b016a99e293139f1c00b347f900b3c6d3002e99aa99867593dcfc03b3ecec019699139f06028192e694b3e6e60133c7e900258eb69aae94935507014217939d070233cc8a014d8f8193b3e7b701135f8c013a9a221cbe9b336cec01b3425a00c293931f060233cdab01e29393951200019293d2f2033366f601935d8d01b3c6d300b3e2b200221dc265329b336dbd0113df0601c216b34c9b016a99b3e6e60193df8c01b347f900b69a2e99a21cc275b3ecfc0133cc8a01e694131f1c00135cfc03258e93dd0701336cec01ae94c2998265c217b3e7b701e299935f0601be9b4216b3c7f9003366f601ae93939507028193329bcd8fb34c9b013e9b334c8b0193558c01221c336cbc0086751699939f1c003346c90093dcfc032e99e665b3ecfc01e69333c7e300ae93e26533cdab01931d1d00ae99135dfd03336dbd01e299ea94b3c7f900a58e93d50701c217931d0602939f0602cd8f019281923366b601b3e6f6013e9bb29a369a334c8b01131f0702b3c25a00334daa0193151c000193135cfc033367e70193dd8201935f8d01336cbc00a212e275221dba9bb3e2b201336dfd01c694b3cc9b011699ea9413df8c013346c900a58ea21cae94e675b3ecec01935d06014216e6933366b60133c7e300b29aae93a265b3c25a00939d120093d2f203135f0701b3e2b201ae9942173367e701969993df0601ba9bc21633c7e900b3e6f601931507020193369ab3cc9b01e2934d8f334daa01139f1c00b3c6d3003a9a93dcfc03b3ecec01b3425a00139f06028192931f1d00b3e6e60193d58201135dfd03a212336dfd01b69ab3e2b2007299a2759a996a9933cc8a019699e694b347f900135f8c0133c7e900221c258e939d0702336cec01ae94f6939355070181934217b3e7b701e2934d8f931f0602be9bb3c6d3003a9a01923366f60133cdab0113df0601b3425a00c216329b935d8d01b3e6e60193951200221d93d2f203b34c9b01336dbd01b69ab3e2b2002a99867593df8c016a9933cc8a01a21cb3ecfc01b347f900131f1c00135cfc03e69493dd0701336cec012e99f299a265c217258eb3e7b701e299935f0601be9b4216b3c7f9003366f601ae94939507028193329bcd8fb34c9b013e9b334c8b0133cdab01169993558c01221c931d1d003346c900336cbc00135dfd03a275336dbd01931d06020192939f1c003366b60193dcfc03b3ecfc01b29af6932e99c699e675e693b3c25a00e299ea9433c7e30093dd8201b3c7f900a212a58e131f0702b3e2b201ae94019393d50701c2173367e7011699cd8f939f0602ba9b3346c9003e9b8192b3e6f601b3cc9b01935d0601334c8b014216369a13df8c013366b60193151c00a21c135cfc03334daa01b3ecec01b29a336cbc00aa938265935f8d01e693b3c25a00221d336dfd0133c7e300939d120093d2f203ea94135f0701b3e2b2012e99c299c2754217a58e3367e701969993df0601ba9bc21633c7e900b3e6f601ae94931507020193369a4d8f334daa013a9ab3425a0093d58201a212931f1d00b3e2b200135dfd03e275336dfd01b3cc9b016a99139f1c00b347f90093dcfc032e99e265b3ecec01e694258eae94c2659a93e293b3c6d300ae93e665931f0602139f0602ae99969933c7e9009355070142174d8f019281923366f601b3e6e6013a9a329bb69ab3425a00b34c9b0133cc8a019395120093d2f20393df8c01135f8c01b3e2b200a21ce275221c939d0702b3ecfc01336cec018193b3e7b701e694e293be9b258eb3c6d300ae94867533cdab0113df0601c216935d8d01b3e6e601221d336dbd01b69aae93e2656a9933cc8a01b347f900131f1c00135cfc0393dd0701336cec01ae99c217b3e7b701e299935f0601be9b4216b3c7f9003366f601939507028193329bcd8fb34c9b013e9b334c8b0193558c01221c336cbc00e6652a991699939f1c003346c9009a992e9993dcfc03a265b3ecfc01e29933cdab01e693b3c7f900931d1d0033c7e300135dfd03ae9393d50701c217336dbd01cd8f931d06020192ea943366b6013e9ba58eb29a334c8b01939f0602b3c25a0093151c008192135cfc03b3e6f60193dd8201336cbc00a212a275131f0702369ab3e2b20101933367e701334daa011699ba9b935f8d013346c900221d2e99e675b3cc9b01336dfd01935d0601f694421613df8c01ea943366b601a21cb3ecec01a58eb29aae94c265e693b3c25a0033c7e300939d120093d2f203135f0701b3e2b201ae9942173367e701969993df0601ba9bc21633c7e900b3e6f601931507020193369a4d8f334daa013a9ab3425a0093d58201a212931f1d00b3e2b200135dfd038265336dfd016a99b347f900c6992e99c2759699c293b3cc9b01e29333c7e900139f1c00b3c6d30093dcfc03ae93935507014217b3ecec01939d0702139f06024d8f81938192b3e7b701b3e6e6013a9abe9bb69ab3425a0033cdab0133cc8a019395120093d2f203935d8d01135f8c01b3e2b200221dc275221ce694336dbd01336cec01258e6a99e293931f0602b347f900b3c6d3002e990192e6653366f60113df0601c216329bb3e6e601b34c9b01b69aae93826593df8c0133cc8a01a21cb3ecfc01131f1c00f294135cfc03e69493dd0701336cec01ae99c217258eb3e7b701e299935f0601be9b4216b3c7f9003366f601939507028193329bcd8fb34c9b013e9b334c8b0133cdab01169993558c01221c931d1d003346c900336cbc00135dfd03e675336dbd01931d06020192939f1c003366b60193dcfc03b3ecfc01b29a2e99c299e265e693b3c25a00e29933c7e30093dd8201b3c7f900f694a212ea94131f0702b3e2b201ae93019393d50701c217a58e3367e7011699cd8f939f0602ba9b3346c9003e9b8192b3e6f601b3cc9b01935d0601334c8b014216369a13df8c013366b60193151c00a21c135cfc03334daa01b3ecec01b29a336cbc008675935f8d01e693b3c25a00221d336dfd0133c7e300939d12009a9493d2f203ea94135f0701b3e2b2012e99c699a2654217a58e3367e701969993df0601ba9bc21633c7e900b3e6f601ae93931507020193369a4d8f334daa013a9ab3425a0093d58201a212931f1d00b3e2b200135dfd03c265336dfd01b3cc9b016a99139f1c00b347f90093dcfc032e99e275b3ecec01aa94e694258eae94a275e293b3c6d300ae99139f060296998192b3e6e60133c7e900b69a93550701421733cc8a014d8f135f8c013a9a221c939d0702336cec01b3425a00f2938193b3e7b701e2939395120093d2f203931f0602be9bb3c6d300b3e2b2000192e2753366f60133cdab0113df0601c216329b935d8d01b3e6e601221db34c9b01336dbd01b69aae93a26593df8c016a9933cc8a01a21cb3ecfc01b347f900131f1c00135cfc03e69493dd0701336cec01ae99c217258eb3e7b701e299935f0601be9b4216b3c7f9003366f601939507028193329bcd8fb34c9b013e9b334c8b0193558c01221c336cbc00c26546991699939f1c003346c90093dcfc032e99c275b3ecfc0133cdab01e693931d1d0033c7e300135dfd03ae93a275336dbd01931d060201923366b601b29aae99b3c25a00e29993dd8201b3c7f900c294a212ea94131f0702b3e2b20193d507010193c217a58e3367e7011699cd8f939f0602ba9b3346c9003e9b8192b3e6f601b3cc9b01935d0601334c8b014216369a13df8c013366b60193151c00a21c135cfc03334daa01b3ecec01b29a336cbc00e675935f8d01e693b3c25a00221d336dfd0133c7e300939d1200f29493d2f203ea94135f0701b3e2b2012e99aa99e2654217a58e3367e701969993df0601ba9bc21633c7e900b3e6f601ae93931507020193369a4d8f334daa013a9ab3425a0093d58201a212931f1d00b3e2b200135dfd03e665336dfd016a99b347f9002e998675b3cc9b01e293139f1c00b3c6d30093dcfc03ae938265b3ecec01939d0702139f060281938192b3e7b701b3e6e601be9bb69aae9933cdab0133cc8a019699935d8d01135f8c0133c7e9009a94221d221ce694336dbd01336cec01135f070142173367e701258e6a99931f0602b347f9003a9a01923366f60193d50701b3425a00c217329bcd8f9395120093d2f203b34c9b01b3e2b200826593df8c01a21cb3ecfc01e293f694e694b3c6d3002e99c265258e93df0601c216b3e6f601935d060142163366b601b69aae94c275329b33cc8a01b34c9b01131f1c00135cfc03be9b939f1c00336cec01ae9993dcfc03b3ecfc0133cdab01e299f293931d1d00e693b3c7f900135dfd03336dbd01b3c5e300139707028193ea94d98f33cfd40016993e9bb34fc900334c8b0113160f02135f0f02336fcf0013568c01221c336ccc002266939d0f0293df0f023299626693960502b3efbf01b29422768191d58db2936276fe9a7a9aae9bb3c25a00b299b346aa0133c79b01e29993dc8201a21293dd8601b3e29201b3c7f900a216b3e6b601169993dc0701c217b3e79701135d8701b694b34ff90122173367a70133cfe40113d60f013e9bc21fba93935d0f01b3efcf00334c8b01421fb3c5b300336fbf01fe9a13161c00135cfc03336ccc0013dd050106767a9ab3c25a00c215b3e5a501b346da00939d120093d2f203ae9b139d1600b3e2b201f699fd9233c7eb00b3e6a60196994299b293931c17003699e293b3c5b9007d933346f9003367970133cfe30193970502c6948191ba94931c0f02dd8d135f0f02b3cff401336f9f012e9a139d0f02fa9ab3425a0093df0f02b3c78a01b3efaf0113dc8201a2127e9bb3e28201666c3347eb00135d870122173367a701e294667cba94931d0602b3cff40101923366b60113dd0f01e299c21f9699b29bb3efaf01b3c6db0093dc8701b3c5b9007e9ba21793dd8601b3e7970113dc05013347eb00aa93a216c215be93b3e6b601b3e58501131d17001a997d9336992e9a3367a7011e933346c900b3425a003a93935d0601139c1200b345b300421693d2f2033366b601b3e28201ca9e269e939405028191969e33cfe301b29bc58d935c0f01b3c6db00b3cffe01ae9b421f336f9f0133c7eb004e9593990f0293df0f02fa9ab3ef3f01935487012217b3c7fa00458ffe9ae674b3c25a0093d98201a212939c1700b3e23201f6982693fd93c274b3e7970196983e95b3cff801939d1600298efd92269593d40f01c21fb3e6b601b3ef9f00369efe9a334fee01b3c25a0013190f0293941200135f0f0293d2f20393130602336f2f01b3e292000192a264336676007a9a329bb346da00b347fb0013d98601a698a216826493d38701b3e626017298a217b3e7770036983a933e95334fe801b345b3002698e664298e93530f0193de0501421fc215135e0601336f7f00b3e5d50142163366c6017a9aae9b2693a274329bb346da0033c7eb00b347fb0093931600931e1700fd927d93139e1700b3e676003367d7012695fd93b3e7c701338ed800b308e80033085500b345b800139505028191c98d2e9ab3425a0013d58201a212b3e2a20006753e933346ce00334fe3012a9e426593140f02135f0f02336f9f00b3cff801931e0602fa9aaa98019262753366d601b3c7fa00b29b93d48701a217b3c6db00c58f1a9593930f0293de86013e9593df0f02a216e264b3ef7f00b3e6d601334fe5017e9b369e935e0f01421f3347eb00336fdf013346ce0093538701fa9a26982217935406014216336777001698458eb3c7fa00047cba98b345b800939c1700fd9313d30501b3e7fc00b3cff801c21593d30f01b3e56500bd8cc21f1c60b3ef7f00b29b2e9a033c04028339840283330401833e84017e9bb3425a00b3c6db00b34a5e013347eb0003390403939d1600b3ca5701139312001c6493d2f203fd92131d1700b3e6dd007d93b36253003367ed00b3cb7b00b3c28201b3c6360133ca48013348d8013349270133ca470133c5ab00334b6801b3cff20133cfe6012330540123344401233c6401b345b900258e08e82330f4032334e4030cf810fcb6701674f6645669b669166af27a527bb27b127cf26c526db26d756182801d7183b30502a2ec0072946183b88500cae403338601033906016ae46ee0338d830252fcfd5e93dfce00b7c7010083b2050156f803bf87d983ba8501a6e8b3bd8302b375fd01135d4d035af462ec04660338060013db0e0166e85ef033b728039397cd0033eda70193dd4d03cee0854982199389193d33ba6602338666023a9ab38e8602b3872803330c1303b29733b6c700529633371303769cb33edc0133be8602b3bc0a033a9ef29eb38b0a036696338e9202be9bb3b7fb00b297338a9a025e9eb33b7e01b3bc920233064c01333c860133b79a02e697de97330a5902ba9e3307dc01b33b5902329a3336ca00b38ce5035e973a9633bce503669eb33c9e01935e4e03337efe01b3057802e297be9c9397cc00b3eed70193dc4c03b33b7802d29533ba4501b38ded035e96329a3307ed03333ded032e97b335b700ba9e33b7ee0013d60e03137cf60093db4e03b3fe6e016e9d6a9ad295ae9c6697b38788021316c700b36b76015193330a5302333b53023e9ab337fa0033b68802b38574025a96b29733b67402d29533ba4501330b5903b2973e9ab33c59032e9bb335bb00b3077b01fd7b33bb67011396470093db8b003376760133668601669ad2952e975a97338c82029315c700d193cd8f5193330b5303333a5303629b333c8b01b3b58202b30b7902d2952e9cb33c7902da9b33bb6b01de97b3bb770133faf701d193669c629b5a975e97131bc700b3858a02b367fb00135b470333077302b3ba8a022e97b335b700ba9733b7e70033f4f701d19333337302b30b360356932e935a931a979315c700cd8f5193b3830603de93b3b5730113d34303b3f3f3012330750033363603b3b306031e96b38a96022e969315c6009359460333e36500338b080333b60803569bb33a5b01b3bb9602b303ea03b29bd69b333aea03da9333bb63011e93b3357300935343033373f301233465005e9a5a9a33063a012e96b38a26039315c600b3e3750093554603866933839802330658025693b3b89802c664b3b6260333395301c696b308c3003306e40333b36800ca962669333858024696b293b338160193d2430333b6c300b3f3f301233875003334e40336981a98b383e7032298c298c6952e969316c600b3e25600519266643307e703b386c301b3b37600b3855600b3b6d50013d84503b3fff501233cf501b3b7e703ba97be931e963696320633680601c29e2330d503627ac27a227b827b626cc26c226d826d256182809c715d7137c70100033887d956f013971700b38af70283bf850083b2050083b3850183be0501fd5513d3c500a6e05ee8139e1200b3b7f702939b1f00b3f46a0093da4a034ef893d9050152f45aec62e466e01396c700b3067e02b36a5601d1934afc13991e00a2e4054402141304143d3386db03b3b5db033696b336d600b3387e02338fe202ae98c696338a7303338b04037a9a333cea01b3b804035a96333b66019355460333766600b3bce202b698da989396c80013db4803d58d33bf7303b3b8de03669f629f826cb384de03fa98b3860703d29433ba4401469a33bc0a03338f0a03b3888601d298226c269fb3349f00b30b7902a698fa9533bfe501da98fa989396c80093d74503d58f93da0543b304f703b3f5350193d94803fd7893d8880093fafa00626b333af703de94b3b67401a697b3b49700139f4700337f1f01336f5f01d193c26b333979025299ca96ce96a696b388ee029394c60013da4603c58fb3867302b3b9ee02c696b3b81601b697b3b6d700b3f46700d193b3ba73023389e302d699ce98d298c6969398c600b3e7f800d192227a827a33b7e302ca9733b92701b3f36700d19336974a979316c700b3088f02d58f5193b3865202331f8f02c696b3b8160113d94603b3f6660014e1b3b25202fa92b3865800338404039398c60013df460333e92801b306fe03a296b3882601b3b9040393d24803b3b48600b3b6d800b3f86800233415016279b338fe03ce98a698469ffa969398c6003304de03b3e2580013df46038664c279b388ff03b3860303a29833b48800b33ede03c696b3b8160133beff03b38f5600b3b6df00b3b30303769e93de4f03b3ff6f002338f501229e2664b38f07031e9ef298fa98c6969398c600b3eed801d192330707037e96b33ff601b308d60133b6c80013de480333f36800233c6500b3b70703ba97be9ffe96b296b20633eec601f2950cf1616182800338050205470217935708031307173db387e7020c6110651469833885017d5713530701337868003183ae9793d54703b29513d64503369693564603c69693d84603f98ff98d798e4698758f1ce10ce510e918ed2330050382801071054e021e13570603130e1e3d3307c703033805000c6514691c6d7d539358c30013530301337666004297135847032e9893554803b69593d64503be9633781801b3f5150193de4603b377b800b3f616017696f58fb3871741b30e664093be1e0093b71700b3f7d701b7ce010083be0eda33771701b3beee00b3f7d701935e0603b3e7d70185cb7297935747033e9893574803be9593d74503be9693d746033e963377170133781801b3f51501b3f616013376660018e1233405010ce914ed10f182801871054602169307163d93560703b386f60283380500033885000c691c6d7d531355c30013530301337367001306063dc69693d84603c29813d848032e9833f7a60093554803be95b347c700b3e6160113d74503b3f717013d461a97b3e60601b3f707014216cd8eed8f398ee98ef18f898fd98e93b7170013b516005d8d82801471854782179387173d13d706033307f7021c612a863e979317c700b18389cbb7c5010083b585da01456383b7008280033886000c6a135547034295106e93584503ae980543fd5513d84803021332981303033d13d60501b3c76700758e93564803b296498f3d467d8d3367170133751501421693d7c5003367070133750501358e7d8f718d1d8d558f1337170013351500598d828083c7e50103c7d50103c8f50183c6c50103ceb501a207420703c3a50103c695015d8f33670701939786015d8f021ebd4693980603931783023367c7014216337616015d8f518f18e183c6950103c6850183c7750103ce650103c355011206918203c84501d18eb20703c63501d58f93164e01d58f9316c301d58f93164802d58f9316c602d58f1ce583c6150103c8050183cef50003cf250103cee500a206420803c6c50003c3d50033e806013368e80193968e013368d80093160e023368d800221393160603b3f61601336868003368d8002338050103c6c50083c8b50083c6a50083ce950003ce85009208118203c3750033661601b20683c86500d18e13964e01d18e1316ce01d18e13164302d18e1396c802d18e14ed83c8450003c6350083ce550003ce250003c315004206a20883c50500b3e8c80033e6d801620e3366c6010213a215336666004d8efd5510f113d505016304a60005458280b3f70701fd8eb1810545e39ab6feb7c7010003b507da3335e50013451500012582809c71a1932300f50083e74502a300f5009c71e1832301f5009c71c183a301f5009c71a1832302f5009c71a302f5009c6db1932303f5009c6d9193a303f5009c6df1832304f5009c6dd183a304f5009c6db1832305f5009c6d9183a305f50083d76501986dbd8b1207d98f2306f5009c69a193a306f50083e745012307f5009c69e183a307f5009c69c1832308f5009c69a183a308f5009c692309f5009c65b193a309f5009c659193230af5009c65f183a30af5009c65d183230bf5009c65b183a30bf5009c659183230cf50083d765009865bd8b1207d98fa30cf5009c61a193230df50083e74500a30df5009c61e183230ef5009c61c183a30ef5009c61a183230ff5009c61a30ff50082809c618338060098651466be9803b3050103380601ba96b3b7f800b69733b7e600b3b6d70003be8501ba960c6e330603013307d600333366003336c700f2951a963388c50013061800b7c601001333e7ff83b686e03336c00033666600b7ce010037c3010003bf0ee0033383dfb3b6f60093c61600333f1f013333f300d18e930e17003363e30193be1e0093c6f6ff1346f6ff33bec5013376d601b335b800b3f66600f295d18ead9e37c601002a8e93950602033606e13685b7c6010083b686e181913386c5023303b7003337e300b385d502b298b3b6c80023301e01ae97be96b3b5b700b3b7f600ae979a9733b367003306e30042962334de002338fe00233cce00828083c7e50103c7d50103cef50103c8c50103c3b5014207a20783c8a501d98f83c69501b3e7c701620803c7850133e80701931703023368f800939788023368f800939706033368f800931787033368f8002330050103c7650183c6550183ce750183c7450103ce3501c206220703c32501558f83c815013367d701e20783c60501d98f13170e02d98f13178302d98f13970803d98f13978603d98f1ce583c6e50083c8d50003cff50003c7c50083ceb500c208a20603cea500b3e6160103c39500b3e6e601620783c88500558f93960e02558f93168e02558f93160303558f93968803558f18e983c8650003c3550003cf750083c6450083ce35004203a20803ce2500b3e86800e20603c31500b3e8e80183c50500b3e8d80093960e02b3e6d800221eb3e6c6014213b3e66600e215cd8e93881600b7c501001333e7ffb338100183b585e0b3e8680037ce010037c30100833e0ee0033383dfb3b5f50093c515003333f300b3be0e01b3e5b800130e17003363d301133e1e0093c5f5ff93c8f8ffb3f8c801b3f56500b3e51501b7c8010003be08e137c30100033383e18125338ec503b308b70033b7e80033836502429e33380e012330c5019a973e9833b36700b337f8009a97c697b3b8170146973697233405011ce918ed11c20cc2828083c7f5012300f50083d7e501a300f5009c6da1932301f50083e7c501a301f5009c6de1832302f5009c6dc183a302f5009c6da1832303f5009c6da303f50083c775012304f50083d76501a304f5009c69a1932305f50083e74501a305f5009c69e1832306f5009c69c183a306f5009c69a1832307f5009c69a307f50083c7f5002308f50083d7e500a308f5009c65a1932309f50083e7c500a309f5009c65e183230af5009c65c183a30af5009c65a183230bf5009c65a30bf50083c77500230cf50083d76500a30cf5009c61a193230df50083e74500a30df5009c61e183230ef5009c61c183a30ef5009c61a183230ff5009c61a30ff50082809c6137c7010083be8500033307e2b7c80100033f87e203b708e313c8f7ff429313c6feff83b888e303be0501b336030132973336c700fa96ba96b29837c601001348feff33b7e600033f86e48c6d1306e8ff4697329733380601b3e7d7013336c700b3e7c7017a98cd8f4296b337f0000d8eb307f04079163373f300fd8e7d8ff18f2330650014e518e91ced8280b7c7010003b607e19c71987583b805033383c70283be850303bf850083bf050183b2850103be0500b7c6010003b886e1411122e4b3b5c7021a9eb3336e0026e0b306c7023303bf001e93b335e301b333c7023693b336d300338407039e96b695b3b6d50033bf0703229333348300b383c8027a94a295338fbf00b3b58500ae96b33fff01fe96b3bff601b3b4c8021e9fb3337f00b3050703a6939e96b3b376009e9f333407032e9fb335bf003e9fb337ff00b383ce02a295ae96b384d700b3b6b600b3b7f400fe96be9633849200b3325400b3870803b30f7400b3b37f009696b3b256008264b3b5ce02be9fb3b7ff00ba9f33b7ef0033b408039e95ae96b3b5b600ae92a297be96b303d700b3850e03b3b7f600b3865700b3b7e300b6972264b3b60e033387b300b335b7004697b3381701b695ae97b383f800b302c702b3b81301b3b7b700c697b3867e00b3bed601be9eb338c702169eb3325e00b387c6029a98969833b36800b3b3c602be98b3b7f800b30507039e973e93b337f300b3320703ae98b3b5b800b383ce0296952e93b3026f003333b30033bfe2019a97fa9733bfe701b38506039e92b3b372009e97b3b30603ae9233b3b200ba9233b7e200b3850e031e939a97b303f700b3b76700fa9733837f0033b7e300b33ff3013e97b307b3003383f600b3b5b7007e972e97b335d300ba95bb85d50182158191b387c50237c70100833307e0338fb200b3325f0033b7c5023e9eb337fe00b3bec301b38f0503ba9737c70100833687e037c70100833387dfb3b50503fe98c697b3bff801b3b81701b3b3f300b3e3d301b3b6f60093c61600fe95c695fa95b3bee501969e9a9e93881e0013b7e5ffb3381001b3e8e800b3e6d80013871500133f170093c6f6ff13c7f8ffb3f676003377e701558f33b36e001a973306c702b386e500b3b5b600330707037296333ec60110e1ba973e9e33b7e700b337fe003e973697b336d700b695f6952334c50118e90ced41018280833806009861397122fcb30717035ae452ec56e84af44ef026f81ce1033f86009461033e060003b88500b387e603333717033303c8033e97b338f700b3b6e6031a9718e583be050083320601033b86008065833f060003bf0501333767003338c803b698338e5e023a98c29833b80801b3076403f29833bec801b306ff03be98b3b7f80033b75e02b6982338150183be050083338601833a060103ba85008339860003b9050183b28501333464033a9e72980462333ec801b3b8d800333fff033e942298b33688003b0ede0033837e02b386e8013698b336d800f296330b5a031a9833336800b30839035a98333b6801338792024698b3381801b3b77e023a98233c05013338e80003be8500033f8601006a83b3050183be8501833f8600333a5a033e939a9633b36600c26a33393903529bda9633bb66013b0363018279626a226b33b79202ca98c696b3b716013b8367002279b308ee034297ba96b3b7e6009a973383830233871601b3381701b386fe031a97b33467003338ee03369718f13337d70003be05018332860103b38501033f0601b3b683024698c29733b807016274b3befe03a696b697b3b6d7003b08d800c2747697ba97b3065e0233b7e70042973308e303b697b3b6d700333e5e02c2971cf58c6d106e33b807013333e303f296b307d700b3b6d7003387c50242939a9733b367009a96b3b5c502ba9733b7e7001cf92e97ba9614fd216182809c613387f70218e1986583be050033bef7023388ee02b3beee02931718003e9e2334c50183bf050103b30500b3b60701b337fe0003bf850013971e00ba96be96b308f30313b61600f18f3337d7013e97b307ef0313961800b296b338160133b6c6003333f303be9614e9b3b7f60003b8050003be850183bf050183be850093161300b698b29893b21800333fef0333b36600337656003b06c3004697b3381701bb88c8003303c803b386e70136973336d7004696b387fe03931613003697b3b866003333d700b336c803939317001e9718ed83b2850103be850003bf050133377700b3b7f300b3befe0313981600c2989a984696b336d80013b81800b37303013333160113981e00b3085e02c2973338d8013b880601ba973b0878003e9693bf17003b0868003377f701b306ef0313931800b30e66003b08e800b3381301b337f60033b36e00c297333e5e023387de0018f183be050183bf8501b336d70093121e0033865800333fef031a96b297133816003373030133b8c70033bec2013b0e6e003b08c8013386fe033387e601ba9733b7e700429713181600c297b3b8fe031cf503b385013336c800b3b70701b3056302139e18007296b386c700369713b81600b3f70701b336d700bd9eb3381e01333363022e97b335b700c69618f99a95ae9614fd8280130101de23349120aa848803233c112023388120233021212e89eff01fe08c030812eff07f914a860c128803eff01fbe8c030a85eff05f900a860c128803eff0ffbc8c038802eff03f8f10128c028803eff0dfbb8c030810eff01f8e10120c108803eff0bfba8c038812eff0ff8c10128c128803eff09fb98c030803eff0df8b10120c038803eff07fb88c030813eff0bf8a0c138803eff05fd88c038800eff0bf898c008803eff05fd78c038800eff0bf8810038c008803eff05fb58c038800eff09f878c008803eff03fd58c038810eff09f868c108803eff03fd48c038810eff09f850a868c108803eff03fb28c038810eff07f848c108803eff01fd28c030801eff07f8315440c018803eff0ffd07d348c030801eff03f827df490000c018803eff0bfae8c030801eff0ff800c018803eff09fce8c030811eff0efff35440c118803eff07fcd7d348c030811eff0affe7df410010c118803eff03fab8c030811eff06ffd0c118803eff01fcb8c038801eff06ffc6d448c018803eff0ffc97d348c038801eff02ffb7df410118c018803eff0bfa78c038801eff0eff98c018803eff09fc78c038811eff0eff8130470038c118803eff05fc67d348c038811eff08ff77df490018c118803eff01fa48c038811eff04ff68c118803eff0ffc38c030802eff04ff535440c028803eff0dfc27d348c030802eff00ff47df410010c028803eff09fa08c030802eff0cff20d440c028803eff05fc07d348c030802eff08ff17df490020c028803eff01f9e8c030802eff04ff011440c028803eff0dfbd7d348c030802eff00fef7df410100c028803eff09f9b8c030802eff0cfed11440c028803eff05fbb7d348c030802eff08fec7df490020c028803eff01f998c030802eff04feb15440c028803eff0dfb87d348c030802eff00fea7df410030c028803eff09f968c030802eff0cfe811440c028803eff05fb67d348c030802eff08fe77df410030c028803eff01f948c030802eff04fe611440c028803eff0dfb37d348c030802eff00fe57df410100c028803eff09f918c030802eff0cfe315440c028803eff05fb17d348c030802eff08fe27df410100c028803eff01f8f8c030802eff04fe119440c028803eff0dfae7d348c030802eff00fe07df410130c028803eff09f8c8c030802eff0cfde11440c028803eff05fac7d348c030802eff08fdd7df490020c028803eff01f8a8c030802eff04fdc0d440c028803eff0dfa97d348c030802eff00fdb7df410100c028803eff09f878c030802eff0cfd915440c028803eff05fa77d348c030802eff08fd87df490120c028803eff01f858c030802eff04fd719440c028803eff0dfa47d348c030802eff00fd67df490020c028803eff09f828c030802eff0cfd429440c028803eff05fa27d348c030802eff08fd37df410100c028803eff01f808c030802eff04fd211440c028803eff0df9f7d348c030802eff00fd17df410100c028803eff08ffd8c030802eff0cfcf25440c028803eff05f9d7d348c030802eff08fce7df490100c028803eff00ffb8c030802eff04fcd15440c028803eff0df9a7d348c030802eff00fcc7df490120c028803eff08ff88c030802eff0cfca19440c028803eff05f987d348c030802eff08fc97df410030c028803eff00ff68c030802eff04fc811440c028803eff0df957d348c030802eff00fc77df410130c028803eff08ff38c030802eff0cfc515440c028803eff05f937d348c030802eff08fc47df40a860c028803eff00ff18c030802eff04fc319440c028803eff0df907d348c030802eff00fc27df410130c028803eff08fee8c030802eff0cfc029440c028803eff05f8e7d348c030802eff08fbf7df410130c028803eff00fec8c030802eff04fbe11440c028803eff0df8b7d348c030802eff00fbd7df490120c028803eff08fe98c030802eff0cfbb19440c028803eff05f897d348c030802eff08fba7df44a860c028803eff00fe78c030802eff04fb921440c028803eff0df867d348c030802eff00fb87df490000c028803eff08fe48c032685eff0cfb6833081210334012183348120033901201301012282801305a0f9814501468146014781479308d005730000000f00f00f8280130590f9814501468146014781479308d005730000000f00f00f82801171a2f9caf186fda6f5ceedd2e9d6e5dae15efd62f966f56af12a842e8931c2b2848c750336090383368903033709048337890426858ce090e494e898ec9cf0efe03f9b8c6090649468986c9c70860506068606060786078ce090e494e898ec9cf09304890226869305090513050405efe0afb403380405306c347038743c7806080606860606078607ca850a852338040530ec34f038f43cf8efe00fea026e2263c2686265827513181e001316130093961800131715009397150072981a96c6962a97ae9728108a8542e032e436e83aec3ef0efe06fe6a6858808efe0efe54668666686762677c677060806068606060786078c08a818c2e8b2ecb6f0baf4bef8efe08fe3e6780a68aa664a67ea678c08860806088606060786074a862e85c6fc42e136e53ae93eedefe00fa9c668666886762677c6770663427fe27e1546139b180037c50100a664a27f939a280093155603033505dcda987d7e37cb0100d915135eae00033b8bdc4616330abf00b382be00330fee41b30ede41131d1800330e6e40939c1600131c1700939b17009a9559164173931027009399260013992700931328007e9526966a98e6966297de971353e30033039340b30ffb41b385154033055541b3037a40b38232413306264106088606060786078608f69672979a97fe987a9808e00cec10f08a85900813058402233474002338540076fcf2e09ae4c6e8c2ecb6f0baf4bef87ef47af8efe0af9a4a6e0a63aa688d4713975703691733036740b30817413307c7416a6ec617e917b387c74137ce0100e67e033e0edd0338840208780c7c30603464330ede4172981a95c6953297b6972334040308f80cfc38e03ce4ee704e74ae740e79ee694e6aae6a0e6bea7b4a7caa7c0a7d116182803c4a6390071cbc5d130101dc233881222334912223302123233c312123384121233c11222334512123306121deffe2fbe6f7eaf3b689ae842a843289130a8602639a07103686938505050a85232c0406efe06f8e8a852810efe0efc59468986c9c708c6090648808b6f0baf4bef8aee8b2ecefe0cfefca853010a818efe0af8b947cb860bc648c749078081136f93afdbee12ef132f5efe08fedd2853010a801efe06f89ac012e850a86efe0cf88b7c7010083ba87dc667746658a675697098ffd79666513d9a900ca97aa6e898f0675ca9e4a6eb38eae4026754a9e6a63330eae40417a4675135bea005a93ae683303a3400a75d6984e68b388a8402a754a98ee653308a8404a75ca950e76898d6a754a96ae76098e0e65da96baf9898e8819befd76e272e61aea46ee42f22ef632fa36feefe0affd5dc5280aefe02ffd63000522bc5c3cdcb9e70146a6852285eff0ffc289a0b685080b232c0406efe0afb54e860c0b281befd01ffd100bca852285efd07ffc301bd28513058402efd0bffb85473ce8233804062334040623300406233c04048330812303340123833481220339012283398121033a0121833a8120033b0120fe7b5e7cbe7c1e7d130101248280138805089061946598699c6d10e114e518e91ced9385050213050502e39405ff82802c0a8802efe0efac8c19a812efe06facb0128c19080befd0dff303b80405b470b874bc78b06c930504052e852338040534f038f43cf830ec9019efd09ff1b0128c08281befd0fff0b7c0010083b000db166c766db66b069cd66093d99900ce9bce90ea99167d135ada00fa749e63be62de6f7e6fda6e7a6e1a73ba785a786a9a37cd01000d47033d8ddb931667034a17d11633859e00b3057e0033065300b38cf801b307e80151173696b695ba976a95e6968602860f060f33071640338360408604860333058541b3857541b30edc41338ecb41b388194133080a41b3863641b3874741b38e9e40330e7e4033035340b388f8413308e841ae931697fe96fa9793058402aa9423386400233c14012330040318fc34e03ce42e852330d4012334c40123387402300a04f4efd09fe20c0b2e851011efd0ffe1ba777a639a785a6733036940b30819413309f940da770338840208780c7c30603464b307fb403387ea4042971a95c6953299b69718f408f80cfc233024053ce425bd85473cdc0dbd397152e8033a050e5ae0130b000822f826f44af04eec56e406fc930a0506b3044b412a843289ae8933854a0163e4c4024a86ce85ef7040417c70e270a2743e992330240f42740279e269426aa26a026b2161828026862330040eef70e03e3c603864130909f89387070893b607083697d6853ce038e422855299efc04f9bce9463732b05130af9f7135a7a0093091a009e09a6993c603864a6859387070893b607083697938404083ce038e42285efc00f98e39134ff6870130909f81e0a330949415695b5b76870a689569595b7b85d3c4a631a071695c3138805089061946598699c6d10e114e518e91ced9385050213050502e39405ff8280130101de233c1120233881202334912023302121ceffd2fbd6f7daf3deefe2ebe6e7eae32a84138a0505ae842800d285232c04063289efe02f829468986c9c708c6090640818b6e0bae4bee82ef832fcefe00facca853000a808efd0ffc7947cb860bc648c749078080136e93aed3ef12ee132e5efe0cfa99305890230002811efd09fc52c112e855286efd0ffc4b7c7010003bb87dc6667427586775a97098ffd79627513d9a900ca97a67e898f0665ca9e467eb38eae4026654a9e6673330eae40c17a466593dbea005e93aa783303a3400a65da984a78b388a8402a654a98ea753308a8404a65ca950e66898d6a654a96ae66098e0a75de96bae9898e8809beedf6f1f2f59af9c6fd42e22ee632ea36eeefe0cfb949c9a819efe04fb96316051e85473cdc83308121033401218334812003390120fe795e7abe7a1e7bfe6b5e6cbe6c1e6d130101228280833f0600033f8600833e0601033e86010333060283388602033806030c7e346238663cdd85472330f5012334e5012338d501233cc5012330650223341503233805030cfd34e138e53ce9233805062334050623300506233c05048280ac190812efd0dfea8c09a802efd05fea881ab0028c09efd0bfb1d285900913050405efd0ffb0b0020c18280befd05fb0b7c0010083b000db127c727d527a069cb27093d999004e9ace90ea99166d93dada00fa649a73ba72da7f7a7fd67e767e1a63ba685a68ea9a37cd01000d47033d8ddb931667034a17d11633859e00b3057e0033065300b38cf801b307e80151173696b695ba976a95e6968602860f060fb3851540338ec041860486033305854133074641b30edc4133036a40b388194133880a41b3863641b3875741b38e9e40330e7e4033035340b388f8413308e841ae931697fe96fa9793058402aa9423386400233c14012330040318fc34e03ce42e852330d4012334c40123387402b01904f4efd0ffa18c1a2e851001efd05fa1ba6776739a68567733036940b30819413309f940da670338840208780c7c30603464b387fb403307eb4042971a95c6953299b69718f408f80cfc233024053ce439bdbc5c3cdce39c07e00146a6852285eff06fe029b503b3050283b8850405470111021722ec9307173d1354030393d308033304f402946126e8847583bf850083be05039069987d03bf850103be0504b383f302369493524403fe9293df4203b29f7d581356c8004ae413d94f03a69393d54303f69593de4503ba9e93d44e03135808017a99b3ffcf00f294b3f2c2004ee0337ec90033ffc400b3790301b3f6f2011353490333f9080193d84403b7c401004e9383b404dab3f6c601ca98918e33090341718c1339190093b61600b3f6260133b98400b3fece00f18db3f626011359030333f7d501b3e626013377e701b386f602118f33880841b3f3c3001338180013371700b3b4740033770701658f13d80803336707013307f702a29693d74603be9213d842037e98935748033e9e13544e03b3f2c200b387e30013d74703ba9513d745037697935f47037e9f935f4f033378c800337ece00f18d718f337fcf002293fe9813944203f18e931488029313ce01939e4503f18f931f87021316cf01c18e93d2c2006264135888014203135e4e02b1816183c208135f4f02b3e2920033687800336ec301b3e7fe00b3e5f501518fb3e8e80114e12334550023380501233cc5011cf10cf518f9233c1503c26422698269056182800333060083388600186a1c6e5d7113962500a2e02e84814526fc86e44af84ef452f0b6841ae046e43ae83eecef60706562662a88634e060c8265054e814301467d557d539b88f4ff93060004a68e91a083370ffeb3972701dd8de98d81252d9fbb53174193f31300bb9793001d9f3b07c70393172600c29732853b86c20098c39b5766008e071810ba97635a860683b507fe9b07060013f7f7039b8ff7ff9bd76700b3d5e5003b89e6401b8717000e078125130f01023b0ac4403a9f93f215001b870300d2896304570263d34401f6899b82090033155300bb8f3f011345f5ff9bdf6f000125e395fff6e98d8dbf05269b5766008e071810ba97e34a86f8a6600664e2744279a279027a05256161828037c701008266833507e2b7c70100226783b707e393c6f6ff1347f7ffb6954265ba97b3b6d500be96b3b8e7001345f5ffb3b7f6001307e5ffc697ba973335a70033b7e7002a97118f79172ee036e43ee83aec7d5ee1bd130101db233821232a890a852334112423308124233c912223343123ae8423304123233c5121233861212334712123308121e6ffeafbeef7efd09f9d26868a850a85efd0efe48a852810efd07f9c2c1026862e85efd0cfe3a2778c082e85bee8c27737c40100beece277bef08667bef4a667bef8efd0df998c082e85efd05f998c082e85efd0df988c0830102e85efd02fe0c667ac182e85befce6673ee186773ee5a6773ee9c6773eedefd07f96ac182e85efd0ff95ac182e85efd07f95ac1830102e85efd0cfdce6770c112e853ef18a673ef5aa673ef9ca673efdea67bee1efd01f930c112e85efd09f920c110a862e85efd0efd9854f0a7e2a734a78ea708e67833884d9fd52fd73821f93dec2002d4f93d38300938f1f3d93d20201139b17003385f70293191e00931c1300931b18007d3fb3b7f702b37ad50151911397c700598d33b61902d19333b70c03b3860c033a96338a900333376e03b3bc9003330d6e03ba9c333708036a9a333daa01669d338c19023a9db30d0803e29633bc8601329cb38c1703d29d33ba4d016a9a33071503333515036e97b33db70133861a0366952a9ad29db3ba1a03b29633b6c60093d54603b3f6d601338d1b02569c329c1316cc00d18db307b700135c4c0333b7e7006e9c3a9c330a6b0213d6470393da0743b3f557009317cc005d8e135c4c0393fafa006a9ab307ca00b3bb1b023337aa011395470033ba470133757500b3eaaa00d19333366b02b29b5e9762975297330568031316c700935b4703d18f33871002333c68032a973335a700ba9733b7e70033fad701d193b3bc1002669c62955e953a95338660031317c500d98f519133b76003b29733b6c700b3f0d701d1932a9732971316c7003385fa03d18f5193330bce033336ce03330e65013335ae00135b4e03337ede01b39afa03b29a56951316c500330c1a03336b6601519133866902b3bc69026296333c8601329b3336cb00935a4b03333a1a03669a629ab38b0903529532951316c500b36a5601135a450333b80903b3396302330663023373db014e98338510035e96b33b7601c29b33bb100332953336c500330855013335a800935048033378d801b3891703da9b5e96529632951316c500b3601600519133071703ce9633b63601b690b3b6d00093d94003b3f0d001b3b71703ba973307f6003a95aa96b206b3e93601b3873501e31e0fdaac0110112e85f2e59ae9c2ed86f1bef5efd0afb1054f2e63ce68ee608e79ae77033884d9fd5ffd72021f13decf00d94e93d28200130f1f3d93df0f0113971700338af70213151300939c1800139b1000fd3eb3b7f702b37bca01135a4a0333b61c029396c70033ea4601d193b3353503330c3503b295b3861c023336e302e29633bc86012e9cb38a9903b3bc9903330de302b29cb38d1002ea9a33bdaa01669d33b61002d69db3ba5d01b3850b03329dea9ab3bb0b03ae96b3b5b60093d34603b3f6c6015e9c330d0a032e9c9315cc00b3e37500135c4c03b38b07036e9db33dbd01b3077d0033bda70193d5470313d60743b3f3f7013d8a333a0a035e9ad29ab30c3b03d69d6e9c6a9c9317cc00dd8d135c4c03b30a1703b33b1703e69a33ba9a01b387ba00b3ba570193954700b3f555004d8ed193333b3b035e9b5a9a629a569ab385e002931aca00935b4a03b3e7fa00338a390333bce0022e9ad29733bb4701b335ba00b3fac701d193b3bc3903338ae902669ce295de95da95139bc500b367fb00d19133b7e902d29733ba4701b3f9c701d1932e9752979315c700330b6302135a4703cd8f3307e603333c6302330367013337e300935b43033373c3013316e603629632971316c700b3850a03b36b7601519333061503b33c15032e96b335b600b29b33b6cb0013db4b03b3ba0a03e69aae9a56973a96330c15021317c600935a4603336b67013386180333b718036296333c8601b3f8cb0133351502b38509033a952a9cb3b90903b2953385650133b6c500b335b50013574503b370c501338b0703e2994e965696b2951396c500518fd191330a0a03da96369733b6660113554703b336d700b379c701b3b70703d2973307f600ba95ae96b206558db387a300e39c0eda8c19b0012e859af9c6fd06e24ee63eeaefd02f89054f4e73ee789260b269d267033884d9fd5ffd72021f13decf00930ec00293d28200130f1f3d93df0f011397170013151300939c1800338af702139b1000fd3eb3b7f702b37bca01135a4a0333b61c029396c70033ea4601d193b3353503330de302b295b38a9903330c3503ea9a33bdaa013336e302b3861c02b3bc9903e29633bc86012e9cb29cb38d1002669db3bc1002d69db3ba5d01b3850b03669dea9ab3bb0b03ae96b3b5b60093d34603b3f6c6015e9c330d0a032e9c1316cc00b3637600135c4c03b38b07036e9db33dbd01b3077d0033bda70193d5470313d60743b3f3f7013d8a333a0a035e9ab30c3b03d29ad69d6e9c6a9c9317cc00dd8d135c4c03330a1703b33a3b03669ab33c9a01b307ba0033ba470193954700b3f55500d1934d8e333b1703569b669b629b529b131acb00b385e002b367fa00935b4b03338a390333bce0022e9ad29733bb4701b335ba00b3fac701d193b3bc3903338ae902669ce295de95da95139bc500b367fb00d19133b7e902d29733ba4701b3f9c701d1932e9752979315c700330b6302135a4703cd8f3307e603b3356302330367013337e300135c43033373c3013316e6032e9632971316c700b38b0a03336c8601519333061503b33d15035e96333d7601329c3336cc00135b4c03b3ba0a03b38bba01ea9b5e973a96b30c15021317c600935a4603336b67013386180333b718036696b33c9601b378cc0133351502b38509033a95aa9cb3b90903b2953385650133b6c500b335b50013574503b370c501338b0703e6994e965696b2951396c500518fd191330a0a03da96369733b6660113554703b336d700b379c701b3b70703d2973307f600ba95ae96b206558db387a300e39b0eda2c0a90192e851aee46f23efe06f64efaefc07fe0854f726e127332785277f277833884d9fd52fd73821f93dec200130f800593d38300938f1f3d93d20201139a1700b380f70293191e00931c1300131b18007d3fb3b7f702b3fbd00193d04003338ce9029396c700b3e01600d19333860c03b3b60c036296333c860133b5e90236952a9c33851b03330d4e032a963335a600935546033376d601b30a9703b3bb1b03ea9a33bdaa01b3364e035e9c2a9cb33c9703b30d0803b69c669d9316cc00d58d135c4c03b38b1703d69db3ba5d01b3871003b33c0803b3b61003b380fd00b387b000669dea9ab3bdb00113d54703b3b0170013dd0743b3f55700b30ceb02b387db00be9ad69d6e9c069c9317cc005d8d135c4c03137dfd00b3066a02b33beb02e696b3bc9601b387a600b3b6d70093904700d193b3f07000b3601d00333b6a025e9b669b629b369b9316cb00b30a4803d58f935b4b03b306e702333c4803d696b69733bbd700b3ba560133f5d701d193b33ce702b3064703669ce29ade9ada9a139bca00b367fb0093da4a0333374703b697b3b6d70033fad701d193569736979316c700d58fb33ace03935647033387f003b390f003330bce03d690b30c1503330e67013337ee0006979310c700935b4e03b3eb70015193337ede01b38a690233bd6902e69ab3bc9a01d69bb3ba5b0113db4b03333515036a9566952a97ba9a1397ca00338c0903336b670193da4a033307630233b809036297b3308701b339630233f3db0133051a034e98c290333a1a033a95330865013337e5003335a800935948033378d801338b1703d290ba90d69006951317c500b36937015191b38616035a96b3306601330736013336c700935947033377d701b3b71703b697b386f00036952a963206b3693601b3873501e3160fda8c02300a2e85f2e29ae6c2eabef2baeeefc01fb7854f166e36635668f6699677833884d9fd52fd73821f93dec200130fc00293d38300938f1f3d93d20201139b17003385f70293101e00931c1300931b18007d3fb3b7f702b37ad50151911397c700598d33b63003d19333b70c03338c30033a96b3860c03330d6e03e29633bc8601329c338a990333376e036a9a333daa01b3bc990333861a03ba9c669db3ba1a03b29633b6c60093d54603b3f6d601b30d0803569c329c1317cc00d98d135c4c03b33c0803d29d33ba4d01669d338717036a9a330d1503333515036e9db33dbd01b307bd0033bda70113d6470393da0743b3f5570093fafa003a95b38c3b032a9ad29d6e9c6a9c9317cc005d8e135c4c0333076b0233ba3b036697b33c9701b307c70033b7e7001395470033757500d193b3eaaa00b33b6b02d29be69be29bba9b1397cb0033056803d98f93db4b0333873903333c68032a973335a700ba9733b7e70033fad701d193b3bc3903669c62955e953a95338669031317c500d98f519133b76903b29733b6c700b3f9d701d1932a9732971316c7003385fa03d18f5193330bce033336ce03330e65013335ae00935b4e03337ede01b39afa03b29a56951316c500330b1a03b36b760151913386600233bd60025a96b33c6601b29b33b6cb0093da4b03333a1a03330baa01669b5a9532951316c500338c0003b36a5601135a45033306630233b800036296333c8601b330630233f3db0133851903c290e29033bc19033295330855013336c5003335a800935948033378d801b38a1703e2900696529632951316c500b3693601519133071703d69633b65601b699b3b6d90093d04903b3f9d901b3b71703ba973307f6003a95aa96b206b3e01600b3871500e31d0fdaac1290192e85f2f69afac2fe4ee33ee7efc09f8eb6770c0b2e853eebd6773eeff6773ef39a673ef7ba673efbefc0dfc40c0b2e85efc05fc40c0b2e85efc0dfc30c0b30102e85efc03f8b854f5a6e7a639a70ba79da77033884d9fd52fd73821f93dec2005d4f93d38300938f1f3d93d20201139b17003385f70293181e00931c1300939a10007d3fb3b7f702b37bd50151911397c700598d33b63803d19333b71c02330d6e033a96338a990333376e036a9a333daa01b3861c02b3bc9903338c3803ba9c669db38d1002e29633bc8601329cb3bc1002d29d33ba4d0133860b03669d6a9ab3bb0b03b29633b6c60093d54603b3f6d601330d05035e9c329c1317cc00d98d135c4c03b38b07036e9db307bd00b33dbd0113d6074333bda701b3f557003d8ab33c050313d54703b3879b013e9a33873a03d29d6e9c6a9c9317cc005d8d135c4c03330a6b02b3bb3a033a9a3337ea00b307aa0033ba47011395470033757500d193498eb33a6b02de9aba9ae29ad29a1397ca0033856003d98f93db4a033387390333bc60032a973335a700ba9733b7e700b3fad701d193b3bc3903669c62955e953a95338a69031317c500d98f519133b76903d29733ba4701b3f9d701d1932a9752971315c700c98f135a47033335ce033307f6033316f603330bce032a96b38b0a03330e67013337ee0032971316c700135c4e03336c86015193337ede0133856802b3bd68025e95333d75012a9c3335ac00135b4c03b3ba0a03b38bba01ea9b5e972a971316c700b38c1802336b6601935a470333066302333763026696b33c96013373dc01b3b8180233850903ba98c69cb3b909033295b30865013336c50033b5a80013d74803b3f0d801338b0703e6994e96569632951316c500518f5191330a0a03da9633b666013697b336d70093584703b379d701b3b70703d297330af6005295aa96b206b3e81601b3871501e31e0fda2c1b2e85b00172ff9ae386e7beefceebefc0efe2054f7a739e683e68de60fe67833584d9fd5ffd72021f13decf00954e93d28200130f1f3d93df0f01338bf702139717009313130013941800931a1800fd3e33b6f7023375cb01135b4b039317c600b339040333eb67019357460333b61302338c13024e96b30ce302b3060403b38b8002e29633bc8601329cb339e302e69bb3bc9b0133b48002330ab5024e94a29c3335b502d29633ba460113d64603b3f6c601330d080362952a9a1315ca00498e135a4a03333408035e9db33b7d01338cb702a29ce69bb309bb02333bbb02ea9933bda9014e96b339360193574603135506433d893376f601629bda9b5e9d6a9ab38d1a024e9a1314ca00c18f135a4a03b3091703b33b1703ee9933b4b901ce9733bb370193994700b3f9590033653501d193b3ba1a02de9a569452945a94b309e802131ac400935a4403b367fa0033841002b33be8024e94a29733ba8700b339340133fbc701d19333bc10023384e002e29bde99d699d299139ac900b367fa0093d9490333b7e002a29733b4870033fac701d1934e9722971314c700c18fb3006302135447033307e503b33a6302330317003337e300935b43033373c3013315e50356952a971315c700b309bb02b36b750151933385130333bc13034e95b3393501aa9b33b5ab0093da4b03333bbb02629b4e9b5a973a95b38003031317c50093594503b36a5701338518033307ba020695b3301500b3b303032a973335a70033b81803b3f8cb01333aba02c2933308570186933337e800935048033378c801b38ab702d2931e954e952a971315c700b360150051933304b402d69633b55601b690b3b6d00093d34003b3f0c001b3b7b702a297aa973e97b387e600b207b3e37700b3077600e39a0eda2c1b26862e8586eb1affc6e3c2e7beefefc02fba2c1b2e85efc0aff12c1b2e85efc02ff12c1b2e85efc0aff02c1b0a862e85efc00fb82c1b2e85efc08fef2c1b2e85efc00fef301ba6854a85efc06fb68330812403340124833481230339012383398122033a0122833a8121033b0121833b8120033c0120fe7c5e7dbe7d1301012582803c5e130101c62338813823349138233c113823302139233c3137233841372334513723306137233c713523388135233491352330a135233cb1332af42324f1323284ae8491e70146a285081defd09ff28337012b0c06081b233cf1248337812b2324012a138984022330f1268337012c2334f1268337812c2338f1268337012d233cf1268337812d2330f1288337012e2334f1288337812e2338f1288337012f233cf1288337812f2330f12aefc02fe0a80b10060c1befc08fa7101ba2850804efc0efa6b00b930584022814efc02fa6227883370124285c930908082330f804833781242328a124033501202334f8048337812334703874233cf80283370123306c2338f8022c683c782330a800033581202338b804233cc8042334a800033501212330d8062334e8062338a80003358121233ca800033501222330a802033581222334a8022338f806b7c7010083b787dc232c08063ef0b7c7010003bd87d9b7c7010083b707db3ef8b7c7010083b787db3efc833701309ce0833781309ce4833701319ce8833781319cec833701329cf0938704143ee0fd5793ddc70083a789ff138409f80327812ad1eb63060710630d090085472330f90023300902233c09002338090023340900ce870c6010641468186c8ce390e794eb98ef1304040293870702e31434ff82671309890293890908e39627fba27710069385073d2e85efc0ef928330813903340139833481380339013883398137033a0137833a8136033b0136833b8135033c0135833c8134033d0134833d81331301013a82808337812523ace90623b8090623b0f9008337012623b4090623b0090623b4f9008337812623bc09041309890223b8f900833701279389090823bcf9f88337812723b0f9fa8337012823b4f9fa8337812823b8f9fa8337012923bcf9fa8337812923b0f9fc8337012a23b4f9fc854723b8f9fc8267e39627ef81b783b609ff7d76935c8600139f1600b38ed60203b609fa854503b889fd03be09fd939405029355060383b789fe03b709fe2eecb3b6d602b3f8be0193de4e0393101e00131b1800930f8104131a17009384143d23ac09069395c600b3eed501fd5513d50501b333eb02718d7e86d1922ae4ac0c2809b3bff002b38af0029e9fb302eb02b38ba803d692b3ba5201fe9a330cee03de92b3bb720193df4203b3f2b20116e833836703b333ee036293333c830133bb6703b302e7021e9b5a9cb3b8a8039a9233b36200333be702d698c69b9398cb00b3eff80193db4b03b383ae035a9c1a9c7d53135b0301b3beae039693b3b853009e9fb3b37f0093d24f0333f36f0193da0f4393fafa00b386a603f696e296c696de96b6939396c300b30ffa02b3e2560093d34303b3060f03b33e0f03fe96b3bff601b692b3b6d20093984200b3fc980193d24203b3ea9a01333afa02769a7e9ad2939e96b308e703939ec60093d34603b3e25e00b386f702b33fe703c69633ba1601b692b3b6d200b3f8b20193d2420333bbf702b38ee703da9fd29f9e9ffe96939fc600b3e25f00d192b3b7e703f692b3bed20193db4203b3ffb201b697be9e9397ce00b3829a02b3eb770193de4e03b307ce03b39a9a029697b3b2570093d64703b3f7b701bee4333ece03f29ab387a803d692139ec20093da4203b366de00338f0003b3b200033e9fb337ff00330edf00333fee0193564e03337ebe01f2e8b3b8a8039698be98d698469f9317cf00338ee002dd8ec262135f4f03b307080333b7e002f29733bec70133380803b383af0342973a9e626703b809f8be939e96b3bfaf03b3b7f30013da4603b3b37600b3f6b601b6ecb30697027e9ef2973e9ffa939397c30033ea470103bf89f993d34303a2673387ab03c29603b889f893d84603b3f6b601c29803b809f913de4803b3f8b801429eb38eae03ba9233b7e200169ab3325a0013584e037a98935f4a0393504803337ebe01b3bbab03be903378b801337aba0172e106e9b6f8c6fc42e5d2f0de9e7697ba939e92b202b3eff2019a9ffef4efb01fd803b889fc83b689fa03b709fb93570803b384970283b789fb03b309fcfd55c181b378b800ac002e86a8110c05b69493d64403ba9613d746033e97935747039a9713d847034698b3f6b6013377b701b3f7b701b3f4b401b6e5bae9beedc2f1a6e1efb0dfd1ac112e85138609fdefb01fd18276ea6eae757d769357a600b69eb69512650a7e2a73ca784e76ee763e9e3e93be983e96be966a78aa973265417739833a982a974675b38eae40667576ea330eae400a6572ee3303a3402a651af2b388a8404a6546f63308a8400e6542fa898d2e652efe098e4e65b2e2898e6e65b6e6898f0e75beea098f080abaeeefc06fc60dcd281aefc0efc56312051e630c09002330090023300902233c09002338090023340900854723acf90682671309890293890908e39427ad31be2c1a8812efb0fffc0c0a2803efb07ffc30030c0a081befb0dfc363010902d2672330f900f2672334f90092772338f900b277233cf900d2772330f902938509fd13850905100aefb0dfc030038c18a80befb03fc07e7ede60167bb67ab38bc001c270567a7d74069bf670935394009e9a9e901e9a9a638d47c174fe629e7f3e7fde7e5a73fa781e683e6593dcd40013976703ca17e693d117e27cde97de6b5117b30553003386f801b306e801330cd5013a96ba96e6956297060e3385a040b3864641330717408602860f060f860eb38b7341b385654133065641b383774033036b40b3881a4133080a41b307d54133035340b388f8413308e841ae92b29f369fba9e93858902b38bcb41f29323b0690023b4190123b8090123bcf9002e8523b4590223b8f90323bce90323b0d90523b47904301a23b07903efb0bfb10c1b2e859001efb01fb1be687a781e652980330804413305a44033041441de68b98037c3010083b78904b3841441033383dcda7883b5890203b6090383b6890303b70904be94b30813418267c6954296aa963a9423b4b90223b8c90223bcd90223b0890423b499041309890293890908e39b2791adb283a789ff23acf90691ef4a864e85a285efd06fed82671309890293890908e399278f99b2e30b099285472330f900826723300902233c090023380900233409001309890293890908e394278d31ba130101a723343157be8903be89009c6303b3090183b88901b3e7c701b3e7670023308158233c9156233411582338215723304157233c5155233861552334715523308155233c91532338a1532334b153b3e717012afcaee0c2e43284b68489c73c5f3a8a6388074285473ee93c0e3ef01c0a02f902f502f102ed02f8014b3eeca6676265bd4683b8070003b88700986b9c6f900893051008befcc6e8c2ecbaf882f082f402e102e5efe04f9baa890275bd46901893051008efe04f9ac277aa8bce8663d3f900be861b8706009b870b0063d4eb009b8706000547b8dc23b0040023b4040023b8040023bc040023b0040223b4040223b8040223bc040223b0040423b4040423b8040423bc040423b0040623b4040623b804061b89f7ff7d576307e96237c70100033c87dc8a07fd5c938ac7ffe28d13dacc00630e0b0c1c7003a707456354e906130709010a073e97184329cf1c686358e0267d37930680051b5717403307d702ba9783be070003be870003b3070183b8870103b8070288778c7b907fb463b867bc6b76fdf2e19ae5c6e9c2edaaf1aef5b2f9b6fd3ae23ee63019a6852685efd0bfba1c7003a747456353e906130709090a07ba97984721cf1c6c6356e0267d37930680051b5717403307d702ba9783be070003be870003b3070183b8870103b8070288778c7b907fb463b867bc6b76fdf2e19ae5c6e9c2edaaf1aef5b2f9b6fd3ae23ee63019a6852685efd0ffb36356390de267d6979c43e9c3627714636351f056fd379bd717409a073387f600033f87001c6b83388701833e8702033e0703087f03330700033807029315cf0013968701939348029392ce0093168e011317450293504303935f4803b3f5450133764601135f8f02b3f34301f183b3f24201b3f6460193de8e0233774701135ece0133734301b3e515003366e601b3e7f30093d8080133784801b3eff201b3e6d6013367c70141811afdaee1b2e5bee9c6edc2f1fef5b6f9bafd2ae22324011014093019a6852685efd00fe46356790d8277d6979c43e9c3066714636353f056fd379bd717409a073387f600033f87001c6b83388701833e8702033e0703087f03330700033807029315cf0013968701939348029392ce0093168e011317450293504303935f4803b3f5450133764601135f8f02b3f34301f183b3f24201b3f6460193de8e0233774701135ece0133734301b3e515003366e601b3e7f30093d8080133784801b3eff201b3e6d6013367c70141811afdaee1b2e5bee9c6edc2f1fef5b6f9bafd2ae22324011014093019a6852685efd04fd77d39bc5c6307993991e70146a6852685efd0cfadf11a9dbb1347f7ff9306800505873307d702fd76a982ba978c77907b987f83bf070403bf870483be070003be870003b3070183b8870103b80702a86bc177b9833386c6403387e640b385bd40b386f641b387e74176fdf2e19ae5c6e9c2ed2ae6aef1b2f5baf9b6fd3ee295bb1347f7ff9306800505873307d702fd76a982ba978c77907b987f83bf070403bf870483be070003be870003b3070183b8870103b80702a86bc177b9833386c6403387e640b305bc40b386f641b387e74176fdf2e19ae5c6e9c2ed2ae6aef1b2f5baf9b6fd3ee2a5bb03390602930a81317166ce855685130606bc233c094456f0efc0affd0337813383370134033681349356f700858afd369bd666009bd6264093950703418393c616004d8f858a83350135ba9613150603c183c98f33b7e6003e97139505034182498eb337f700b29733b6c700c1813388c5007166ce855685130606be36fdbae1bee5c2e9efc0eff60337813383370134033681349356f700858afd369bd666009bd6264093950703418393c616004d8f03350135858aba9693150603c18333b7e600cd8f3e97931505034182b337f7004d8eb297b3b5c700418171663308b500130606c056852c193aee3ef242f636eaefc02ff0d6852819efc06fc2930b01117166130606c25685de855eecefc06feed6855e85efc0afc0568b930a09025e862c195685efb01ff97166130606c4d6855a85efc00fec4a85da85efc04fbe4e86ca854a85efb01ff7833904029546930520084e8613850904efd01fc703390402954623a8a944130609029305200813058924efd07fc51870232aa944832707458326474563d3d700b687033687450c64086013c7f7ff7d971e06f98f52963ef8eff00f8f0339040083390401033a8400033e09380333893883380939033889390335093a8335893a0336093b8336893b0337093c8337893c23b4c92723b8692623bc192723b0092923b4a92823b8b92823bcc92823b0d92a23b4e92a23b8f92a13850929efb03f9f033e093d0333893d8338093e0338893e0335093f83358a1103360a1283368a1203370a1383378a13626b23ac092a72e91aed46f142f52af92efdb2e1b6e5bae9beed9389092113090930130a0a0f9d4a2c195a85efb02fee827b3019da855e85efb06fb55a86ca854e85efb0cfb45e869305890213858902efb0efb3832789072c19fd1a23a8f90452862e85638f0a1eefb06fb2938989fa130909f8130a8afd45bf99e79385040510092e85efb0afb08330815803340158833481570339015783398156033a0156833a8155033b0155833b8154033c0154833c8153033d0153833d815213010159828013c7f7ff05871a07369703380703833e8702033e8703107308670c6b8338870103330700131788019396ce0093104e0293de8e0233774701135d46033367d701b3f64601b3f040011358c801fd77b7ce0100a98333e80001b3e6a60183be8edc9313c50093928501939f4802b386d7403387e740b38707414178135f4303b3f34301b3f242012191b3ff4f01f18133764601135e0e011358e8003373430133efe30133e5a200b3e5bf0093d808013386ce40330ec8411afdfae1aae5aee9c6ed23240110b2f1b6f5baf9befd72e241b413c7f7ff05871a07369703380703833e8702033e8703107308670c6b8338870103330700131788019396ce0093104e0293de8e0233774701135d46033367d701b3f64601b3f040011358c801fd77b7ce0100a98333e80001b3e6a60183be8edc9313c50093928501939f4802b386d7403387e740b38707414178135f4303b3f34301b3f242012191b3ff4f01f18133764601135e0e011358e8003373430133efe30133e5a200b3e5bf0093d808013386ce40330ec8411afdfae1aae5aee9c6ed23240110b2f1b6f5baf9befd72e2b5bc37c70100833907d737c70100033987d737c70100833007d837c70100833387d837c7010003338401833207d937c70100fd57854a833f87d9033e04017d7713dac7002183821ac183930e032c3ae4938a1a3d3ee822f403340e0203350e0083388e00b336540283358e0303378e04033b8e02033f0e0383370e0513038305833b8e0103380e0103360e04330d54022330b3fe2338e3fe233863fd233ce3fd13db4603233cf3fe9397c6002334c3fe130e8e05b3053503b37d4d01135d4d0333eda7013387280333bf28032e97b335b700b3363503b3bc3803fa96b695333c550233065502669cb3873803b3861b02b29733b6c700629633bf1b02ba9633b7e600b33c7802fa952e97338c7b02669733bf7b023e9cb337fc00b30578027a96b297b38cfd03b695b3b6d500ba96b3bdfd03e695b3bc950113df4503b3f5450133062803b69dee9c9396cc0033efe60193dc4c03333728036296333c8601b33d1402ba97e29733071402338cb701c26db306fb0332973336c700329cb307fd03333dfd03ba9733b7e7003e9fb337ff0013564f03135b0f03337fbf01137bfb00369d6a9c6297ba9cb38d5802e6971397c700598ed193330c3803b33638036e9cb33dbc01b3bc580233077402b69ce69d6297b33c7402b3368701338c2b03e69dee96a26d33bd2b033a9c62963337ec00931c4600333c8601b3fcbc01336b9b015192ea963697ba97e297b30c58021397c700598e13d74703b3863b0333bd3b03e696b3bc9601333c5802b30724036a9ce29cb33d2403b697b3b6d7003e96b337f600337c46015192ee9ce6963697ba971397c700338d5b02598ed19333073403b3bb5b026a97333da7013a963337e600b37c4601519233343403a29b5e9dea973e979317c700b30d5b035d8e93564703b3071502ee97b3bdb70113d74703b3f747012334f3fa333b5b03b33715023e9b6e9bb30b75029317cb005d8f135b4b0333841802b307fc035e94b33b740133bd1802a2973e9733b48700b337f700b33d7502333cfc03ea9dde9d935b4703337747012338e3fa330d25036e9c6294229bda971394c700b36b7401d19333877802333525036a97333da701b3b8780233041802aa98ea983385fc033a943337e400333818022295aa9b333b850013dc4b0333b5ab00b3fb4b01233c73fbb3bcfc0346983a98b30bf6036698429b3e9b2a9b9317cb0033ec8701135b4b03b386f603de95b3b7750133858501b335b50013574503337545012330a3fc3336f6033696b297da97be95b2054d8f3a9f2334e3fde39c6eca2274054b6ff04fbb83b8050003b885009469986d9c71130101ce233c1130233881302334913023302131aa84233c312f2338412f2334512f2330612f233c712d2338812d2334912d2330a12d233cb12b23b0140123b4040194e898ec9cf02ae808182e8432f4efb04f8a1018a285a808efa0bfd1e66723a804040c019d073ee1867728113ee5a6773ee9c6773eede6773ef1efb08f872c1110012e85efa0ffce2c118809efb06f868c092e851001efa0dfcdce786e6fce6a93921800338c1803ae738e7ffd567d7793d4c60093598700b7c70100054703b487d9b3b8180393901a0013131f00b3779c0093150702135c4c0313da0601139b1f001389153d2ee41397c800b3be1302336c870193d84803ac1988092a862e8533b76f02338e6f027697b386130233087302f29633bec6013a9eb38b5203b3be5203c29b33b80b01b38c870233337302e696b3bc960113d74603e58eb3b7870276931a983383c70166939317c300b38eff035d8f13534303b3b7ff03de9eb3bb7e01b38888023e98c29b330e8c02333c8c02769eb33ede017297333ec70193574703935c074393fcfc0033774701469c5e9c769c629372939318c30033087b02b3e7f80013534303b3085f02b33e5f02c29833b80801c697b3b81701139c4700d193337c3c01336c9c01333b7b02769b429b5a939a981398c800338e7302b367f80093d848033388f20333bbf2037298333ec801c29733b80701b3fb9700d19333b373025a9372939a98c298b38e72021398c800b367f80093d8480333082c03f697b3bed701b3fc9700d193b3b27202338b5a03c692969e9398ce00b3e7f80013d34e03331c2c03429bb3330b0193584b03337b9b0093121b00b3ba5a03e29a33885301131ec800b38e8b02b3681e0113584803330e1f02333d1f02769eb33ede01f29833bec80193da4803b3f89800139c1800b3bb8b02ea9bf69bc29b5e9e1318ce00b303ef03b36a5801135e4e0333881f02333fef031e98b3337800b3bf1f02b38e8c027e9ffa93b3bc8c02c29e33b80e01f69ab3beda0193dd4a03b3fa9a00939b1a00338d87029e9cc29cf29ce69e1398ce00b36db80193de4e03b3b78702ea9633bda6013388b601b336d800135f480333789800330383023e931a9dea9ef6969397c60033efe7013a9fb337ef00d192b697b387e703931f1f003337ef038607b30eef03ba971397c700d193b3f69e0093de4e0333335802b36ed70133b78a03338f8a031a97b3005802b3838602fa9033bfe0013a9fb38c5a039e90b3b3700013d74003b3f09000330e0c03b3b68602669eb33c9e0133b35a03fa96b6939396c300558f93d34303333c0c031a9c33836f03e29c33bc6f037293333ec301338d8702e29cf29cb3868e02b3be8e029a9633b366003697b336d70093574703935d074393fdfd0033774701ea9ee69e9a9e9e9ef6961393c600338f0b03b367f300d1923383f803b3bef8037a93333fe3019a9733b36700139e4700337e3e01d193b36dbe01b3bb0b03f69bfa9bde9636939316c300330e0803d58f13534303b3865f03b3b35f03f29633bec601b697b3b6d70033fc9700d193b33e0803338f0f039e9ef29e769336939316c30013534303d58f33b80f03fa9733bfe701b3fc9700d193b3862d031a98429f1318cf00935e4f03b367f80033036b03b39d2d033693b336d3001358430333739300931b1300333b6b03330f8c02da9d338eb6019316ce0033e80601135e4e03338b580233bd58027a9b333feb015a98333b68019356480333789800931f1800333c8c026a9c7a9c729c629b131ecb00b3831803b366de00135b4b03338e5a02b3b818031e9eb3337e00b3b25a02338f8c029698c693b3bc8c02729f333ecf01fa9633bfe60193d84603e58e139c1600338d87029e9cf29cda9c669f131ecf00b3681e01135f4f03b3b78702ea9033bda0018698b3b0180093d24803b3f89800b38e8e02be9e769d6a9ffa909397c000b3e25700ba92b3b7e20093d040038697b387570293931200b38a52028607b3b2520233fe9a0093da4a0396971397c700338b1b03b36a5701d1933387df0233bfdf025a97333b6701b3b21b03b38ef803fa92169bb30c8e02b380d6026697b33c9701135f4703658f33bdd602f690b3bed001b3bff803333e8e02ea9ff69f5a9eb30e7302b382cc01139ec200336fee0193d24203333d7302b38cd001b3b01c00338b8702ea9ffe90338e8a02b3ba8a02669eb33e9e01729f333ecf0193574f03935c0f4393fcfc00337f4f01da9a869af69a969a569e931ece00b30f1c03b3e7fe00135e4e03b38e0303b3b00303fe9eb3bffe01f697b3bed70193924700b3f23201d193b3ec5c00333c1c03069ce29f7e9e769e931ece00b3827602b3e7fe00935f4e03b38e1803b3ba7602969eb3b25e00f697b3bed701b3f09700d19333bb1803338e7802da9a969afe9ad69e939fce0093de4e03b3e7ff00b3b87802f29733bec701b3f29700d193b38a2c03f698469e9318ce00b3e7f80093584e03b30e6302b39c2c03d69e33be5e0193df4e03b3fe9e00f6fd33336302b38e800266931a9e1313ce00b36ff301135e4e03b3830b03b3ba0b03f69333b3d3019e9fb3b37f0093de4f03b3ff9f007ee2b3b08002d69006931a9ef293b38fdb021393c30013de4303b36ed301b3030803b3b6db02fe93b3bff30133380803338382023698c29fb3b282021e93b33373009a9e33b36e0093d64e03b3fe9e0076e633888702fe929693f2931e93131ec300b366de0013534303b3888802429733380701ba9633b7e60093df4603e58e36eab3b78702c697c2979a973e973207b36ff7017e9f7aeeefa02fd9f268126fee7a93921800338c1803d263b26f93901a0013131f00139b1f000c1288092a862e85b3b81803b3779c00135c4c031397c800b3be1302336c870193d8480333b76f02338e6f027697b386130233087302f29633bec6013a9eb38b5203b3be5203c29b33b80b01b38c870233337302e696b3bc960113d74603e58eb3b7870276931a983383c70166939317c300b38eff035d8f13534303b3b7ff03de9eb3bb7e01b38888023e98c29b330e8c02333c8c02769eb33ede017297333ec70193574703935c074393fcfc0033774701469c5e9c769c629372939318c30033087b02b3e7f80013534303b3085f02b33e5f02c29833b80801c697b3b81701139c4700d193337c3c01336c9c01333b7b02769b429b5a939a981398c800338e7302b367f80093d848033388f20333bbf2037298333ec801c29733b80701b3fb9700d19333b373025a9372939a98c298b38e72021398c800b367f80093d8480333082c03f697b3bed701b3fc9700d193b3b27202338b5a03c692969e9398ce00b3e7f80013d34e03331c2c03429bb3330b0193584b03337b9b0093121b00b3ba5a03e29a33885301131ec800b38e8b02b3681e0113584803330e1f02333d1f02769eb33ede01f29833bec80193da4803b3f89800139c1800b3bb8b02ea9bf69bc29b5e9e1318ce00b303ef03b36a5801135e4e0333881f02333fef031e98b3337800b3bf1f02b38e8c027e9ffa93b3bc8c02c29e33b80e01f69ab3beda0193dd4a03b3fa9a00939b1a00338d87029e9cc29cf29ce69e1398ce00b36db80193de4e03b3b78702ea9633bda6013388b601b336d800135f480333789800330383023e931a9dea9ef6969397c60033efe7013a9fb337ef00d192b697b387e703931f1f003337ef038607b30eef03ba971397c700d193b3f69e0093de4e0333335802b36ed70133b78a03338f8a031a97b3005802b3838602fa9033bfe0013a9fb38c5a039e90b3b3700013d74003b3f09000330e0c03b3b68602669eb33c9e0133b35a03fa96b6939396c300558f93d34303333c0c031a9c33836f03e29c33bc6f037293333ec301338d8702e29cf29cb3868e02b3be8e029a9633b366003697b336d70093574703935d074393fdfd0033774701ea9ee69e9a9e9e9ef6961393c600338f0b03b367f300d1923383f803b3bef8037a93333fe3019a9733b36700139e4700337e3e01d193b36dbe01b3bb0b03f69bfa9bde9636939316c300330e0803d58f13534303b3865f03b3b35f03f29633bec601b697b3b6d70033fc9700d193b33e0803338f0f039e9ef29e769336939316c30013534303d58f33b80f03fa9733bfe701b3fc9700d193b3862d031a98429f1318cf00935e4f03b367f80033036b03b39d2d033693b336d3001358430333739300931b1300333b6b03330f8c02da9d338eb6019316ce0033e80601135e4e03338b580233bd58027a9b333feb015a98333b68019356480333789800931f1800333c8c026a9c7a9c729c629b131ecb00b3831803b366de00135b4b03338e5a02b3b818031e9eb3337e00b3b25a02338f8c029698c693b3bc8c02729f333ecf01fa9633bfe60193d84603e58e139c1600338d87029e9cf29cda9c669f131ecf00b3681e01135f4f03b3b78702ea9033bda0018698b3b0180093d24803b3f89800b38e8e02be9e769d6a9ffa909397c000b3e25700ba92b3b7e20093d040038697b387570293931200b38a52028607b3b2520233fe9a0093da4a0396971397c700338b1b03b36a5701d1933387df0233bfdf025a97333b6701b3b21b03b38ef803fa92169bb30c8e02b380d6026697b33c9701135f4703658f33bdd602f690b3bed001b3bff803333e8e02ea9ff69f5a9eb30e7302b382cc01139ec200336fee0193d24203333d7302b38cd001b3b01c00338b8702ea9ffe90338e8a02b3ba8a02669eb33e9e01729f333ecf0193574f03935c0f4393fcfc00337f4f01da9a869af69a969a569e931ece00b30f1c03b3e7fe00135e4e03b38e0303b3b00303fe9eb3bffe01f697b3bed70193924700b3f23201d193b3ec5c00333c1c03069ce29f7e9e769e931ece00b3827602b3e7fe00935f4e03b38e1803b3ba7602969eb3b25e00f697b3bed701b3f09700d19333bb1803da9a969a338e7802fe9ad69e939fce00b3e7ff0093de4e03b3b87802f29733bec701b3f29700d193b38f2c03f698469e9318ce00b3e7f80093584e03b30a6302b39c2c03fe9ab3bffa0193de4a03b3fa9a0056f233336302b383800266939a9f1393cf00b36ed30193df4f03338e0b03b3ba0b031e9eb3337e00f29e33bece0113d34e03b3fe9e0076f6b3b08002d69086939e9f7e9e931fce00b38edb0233e36f00935f4e03330e0803b3b6db02769eb33ede0133380803b38382023698c29eb3b28202f29333bec3011e93b333730093564303337393001afa33888702f692169e7e9e3383c301131ec300b366de0013534303b3888802429733380701ba9633b7e60093df4603e58e36feb3b78702c697c2979a973e973207b36ff7017e9ffae2ef90bfe61668b27f927a93131800330c0803f270d272939b1a0093981f00939e120028112a86a802aa8533380803b3779c00135c4c03b38c12031317c800336c870113584803b386700333b77003e696b3bc960133bf1203338d87023a9ffa9cb3b78702ea9633bda60113d74603e58e338e1802338f97016a9f9317cf005d8f135f4f0333b35303338b5303b3b81802729b333ecb019a9833835202469eb3b752025a93333b6301330888023e9e729bb3088c02333c8c029a9833b368004697b338170193574703935c074393fcfc0033774701429c5a9c1a9c7a9ce2981398c800338e1e02b367f80013df480333887f02b3b87f027298333ec801c29733b80701139b4700d193337b3b01336b9b01b3be1e02c69ef29e769f429f1318cf0033831002b367f80093584f033388530233bf53021a9833336800c29733b8070133fc9700d193b3be1002fa9e9a9ec69e76989318c800b3e7f80033835a0313584803b3082b03b3ba5a034693b3381301331b2b03338e1302da9ab3b31302f29733bec701b3fc9700d193330f8c02c2931e9e1318ce00935e4e03338e5801b367f8009318ce001358430333e80801338b7f03135e4e03337393009310130033bd7f037a9b333feb015a98333b6801935848033378980093131800333c8c026a9c7a9c729c629b131ecb00b38aff03b3681e01135b4b03338e7203b3bfff03569eb33a5e01b3b27203338f8c02969ffe9ab3bc8c02729f333ecf01fa9833bfe80193dd4803b3f89800139c1800338d8702d69cf29cda9c669f131ecf00b36dbe01135f4f03b3b78702ea9633bda601338eb601b336de00935f4e03337e9e00b38e8e02be9e769d6a9ffa969397c600b3eff701ba9f33b7ef00d19236973307f703939e1f00b382ff030607b3bfff0333ff920093d242037e979317c700b30b7e02b3e25700519333bb1303b3871303b3bc1803b3337e02b3b6c003e693b38f1803da96b33cd303de9fb3bb7f019e9bb38ac003e69b330b8f02d697b3ba5701b69a330dd303da9733bb670193d64703e58f333f8f027e9db33ffd01fe9bb38c8202569f7a9b131fcb00b366df00135b4b03b3b28202ea9c33bdac01e696b3bc960193d3460393dd0643b3f6460193fdfd003307870216975e973a9d6a9bda9c1397cc00330acc03b363770093dc4c0333870e035297ba93139f4300b3793f01333ccc03333a470133b7e30093d34303b3ed3d0133bf0e037a9cb38fd803629ad29cba9c1397cc00b363770093dc4c03330fce03b3b2d8037e9fb339ff01fa9333bfe301b3ff930093d34303333ace033307de03d2929699ce9c669f9312cf00b3e37200135f4f03333ede03ba9333b7e300b3f2930093d343037a9e7297131ec700338a2d03b3637e005193330e6302b39d2d03529e333a4e01935e4e03337e9e00f2e6333363026e935293131ec300338f8f02b36ede01135a4303338e00037a9ef29e3333ee0133bece0113df4e03b3fe9e00f6eab3bf8f02b3be0003b3891003f69f7e9352931a9e1313ce00336fe301135e4e03b3b81003b30e080333380803ce9eb3b93e013383820246984e98b3b282027693b33ed3011a9f33336f00935f4f03337f9f00faeeb3888302c292f692169e72931318c300b36ff8011353430333078702c697b3b817013388f701b337f800135a4803b3749800a6f2b3b38302ba93c6931e933e933203336a4301d296b6f6ef909f99a26537c60100b668566e76681677b677fd56033586d97d762d4f93dec600935f86009382153d93d3060193991700b38af702931b1e0093901800131918007d3fb3b7f702b3f6da0193da4a031396c700b36a5601b3047703d19333863803b3b50b03b294b3bcc40033bbe00233bc38032e9b33367703b305080362966696333c0803a695b3b495003384e0026296b29433830b03338aa602229333348300229bb3b6a6025293333a4301135443033373d301b38ba702da96d296139ac60033648a0013da46033386aa02b3baaa022e96b335b600b307860033b6c70093d6470313d407433d88b3f77700de9ad694a695d295b295330be9021396c50013da4503d18eb385c903da95ae96939a4600b3fafa01336454013339e90233b66501b3b5b600d192b3bac90356994a9652962e969315c600b3043803cd8e5192b305e702b33a3803a695b3b49500ae96b3b5b60033f9d601d192333be702330a3703da9ad694b294a6951396c500d18ed19133373703d29633b64601b3f4d601d1922e9732971316c700d18eb38918031356470333075402b3ba1803b308370133b7e80013da4803b3f8d80133145402569422971314c700b305a902336a4401135447033387c00333bbc0032e97b335b7003a9a3337ea0093594a033339a9025a99ca95a2952e979315c700b38a0003b3e9350113544703b305ce0333b80003d69533b95501b330ce03337eda013387a402c290ca90b3b4a4022e97b335b700330837013337e800935948033378d8013389a6028694a695a2952e979315c700b3e93501935547033306a6024a93333923013307330133336700935047033377d701b3b6a602b2963699ca959a95b205b3e015008697e31c0fda8c1a2e85b002c6faf2fe42e33ae73eebef90eff0b7c60100054fd678767e1a68ba675a6703b586d9fd5ffd72021f93decf00d94393d28200130f1f3d93df0f0193191700b30ae702931b1e009390180013191800fd333337e702b3f6da0193da4a031316c700b36a5601b3847703519333863803b3b50b03b294b3bcc40033bbf00233bc38032e9b33b67703b305080362966696333c0803a695b3b495003384f0026296b29433830b03338aa602229333348300229bb3b6a6025293333a4301135443033373d301b30ba702da96d296139ac60033648a0013da46033386aa02b3baaa022e96b335b600330786003336c70093564703135407433d883377f701de9ad694a695d295b295330bf9021396c50013da4503d18eb385c903da95ae96939a4600b3fa5a00336454013339f90233b66501b3b5b600d192b3bac90356994a9652962e969315c600b3043803cd8e5192b385f702b33a3803a695b3b49500ae96b3b5b60033f9d601d19233bbf702338a3703da9ad694b294a6951396c500d18ed191b3b73703d29633b64601b3f4d601d192ae97b2971396c700d18eb389180313d64703b307e403b3ba1803b3883701b3b7f80013da4803b3f8d8013314e4035694a2971394c700b305a902336a440113d44703b387c00333bbc003ae97b3b5b7003e9ab337fa0093594a033339a9025a99ca95a295ae979395c700b38a0003b3e9350113d44703b305ce0333b80003d69533b95501b330ce03337eda01b387a402c290ca90b3b4a402ae97b3b5b70033883701b337f800935948033378d8013389a6028694a695a295ae979395c700b3e9350193d547033306a6024a9333392301b307330133b3670093d04703b3f7d701b3b6a602b2963699ca959a95b205b3e015000697e39c03da2c0b2e85901a46ef72f342f73efb3affef902fc8b7c60100054ffa681a7e3a78da777a7703b586d9fd5ffd72021f93decf009303c00293d28200130f1f3d93df0f0193191700b30ae702931b1e009390180013191800fd333337e702b3f6da0193da4a031316c700b36a5601b3847703519333863803b3b50b03b294b3bcc40033bbf00233bc38032e9b33b67703b305080362966696333c0803a695b3b495003384f0026296b29433830b03338aa602229333348300229bb3b6a6025293333a4301135443033373d301b30ba702da96d296139ac60033648a0013da46033386aa02b3baaa022e96b335b600330786003336c70093564703135407433d883377f701de9ad694a695d295b295330bf9021396c50013da4503d18eb385c903da95ae96939a4600b3fa5a00336454013339f90233b66501b3b5b600d192b3bac90356994a9652962e969315c600b3043803cd8e5192b385f702b33a3803a695b3b49500ae96b3b5b60033f9d601d19233bbf702338a3703da9ad694b294a6951396c500d18ed191b3b73703d29633b64601b3f4d601d192ae97b2971396c700d18eb389180313d64703b307e403b3ba1803b3883701b3b7f80013da4803b3f8d8013314e4035694a2971394c700b305a902336a440113d44703b387c00333bbc003ae97b3b5b7003e9ab337fa0093594a033339a9025a99ca95a295ae979395c700b38a0003b3e9350113d44703b305ce0333b80003d69533b95501b330ce03337eda01b387a402c290ca90b3b4a402ae97b3b5b70033883701b337f800935948033378d8013389a6028694a695a295ae979395c700b3e9350193d547033306a6024a9333392301b307330133b3670093d04703b3f7d701b3b6a602b2963699ca959a95b205b3e015000697e39c03da8c032e85300bc6e3f2e7c2ebbeefbaf3ef904f9fb7c60100054f9e683e6e5e68fe671e7703b586d9fd5ffd72021f93decf009303800593d28200130f1f3d93df0f0193191700b30ae702931b1e009390180013191800fd333337e702b3f6da0193da4a031316c700b36a5601b3847703519333863803b3b50b03b294b3bcc40033bbf00233bc38032e9b33b67703b305080362966696333c0803a695b3b495003384f0026296b29433830b03338aa602229333348300229bb3b6a6025293333a4301135443033373d301b30ba702da96d296139ac60033648a0013da46033386aa02b3baaa022e96b335b600330786003336c70093564703135407433d883377f701de9ad694a695d295b295330bf9021396c50013da4503d18eb385c903da95ae96939a4600b3fa5a00336454013339f90233b66501b3b5b600d192b3bac90356994a9652962e969315c600b3043803cd8e5192b385f702b33a3803a695b3b49500ae96b3b5b60033f9d601d19233bbf702338a3703da9ad694b294a6951396c500d18ed191b3b73703d29633b64601b3f4d601d192ae97b2971396c700d18eb389180313d64703b307e403b3ba1803b3883701b3b7f80013da4803b3f8d8013314e4035694a2971394c700b305a902336a440113d44703b387c00333bbc003ae97b3b5b7003e9ab337fa0093594a033339a9025a99ca95a295ae979395c700b38a0003b3e9350113d44703b305ce0333b80003d69533b95501b330ce03337eda01b387a402c290ca90b3b4a402ae97b3b5b70033883701b337f800935948033378d8013389a6028694a695a295ae979395c700b3e9350193d547033306a6024a9333392301b307330133b3670093d04703b3f7d701b3b6a602b2963699ca959a95b205b3e015000697e39c03daac1390032e85c6f7c2ff2330f1202334e120f2fbef803ff6b7c60100854abe785e737e78833701200337812083b486d9fd5b7d7b821a93d9cb00930ec002135b8b00938a1a3d93db0b01931317003304e702131a1300139e180093121800fd3e3337e702b376340151901316c700518cb38f4703519333867802b3350a03b29fb3bccf003339fe0233bc78022e9933b64703b305080362966696333c0803fe95b3bff501330ffe026296b29f33050a03b38096027a95333fe5017a99b3b696020695b3301500135f450333753501330a9702ca9686969390c60033efe00193d0460333069402333494022e96b335b6003307e6013336c70093564703135f0743137fff00337777015294a29ffe958695b2953389f2021396c50093d04503d18eb3856302ca95ae961394460033746401336f8f00b3b2f20233b62501b3b5b600d19233b46302a292169606962e969315c600b30f7802cd8e5192b385f70233347802fe95b3bff501ae96b3b5b600b3f23601d19233b9f702b38077024a94a29fb29ffe951396c500d18ed191b3b77702869633b61600b3ff3601d192ae97b2971396c700d18eb383180313d64703b3075f0333b41803b3887700b3b7f80093d04803b3f83801331f5f03229ffa97139fc700b3859202b3601f0013df4703b3076e0233396e02ae97b3b5b700be90b3b7f00093d34003b3b29202ca929695fa95ae979395c70033040e03b3e3750013df4703b305630233380e03a295b3b28500333e630233f33001b3879f02429e169eb3bf9f02ae97b3b5b70033887700b337f8009353480333783801b3829602f29ffe95fa95ae979395c700b3e3750093d54703330696021695b3325500b307750033b5a70013de4703b3f73701b3b69602b296b6929695aa95b20533eec5017297e39d0eda0c0c2e85300b23381121233c6120233001232334f1222338e122ef809fcc833e8121833f01218337012303378122033f012293901f0093961e003388f70237c60100033486d97d561359c600418232e47d76135c860062f0b33c1702b3783801139e17001358480393131f00054a021a130a1a3d2c1c2e85b3b2e603338ce603e692b30d1702b38c9802e29d33bc8d01169ce69d338de602b3bc9d0193d24d03b3fd3d016eec3303fe03b3b7f7026a93333da301b3b898021396c70033680601d1939009b33dfe03e298c69cb3b6e602ee96b30def03369d9396cc00b3e2560093dc4c03330c98029a9d33b36d00b336ef036e9ce292b3fb7201b33dbc0193d8024333bc820193f8f80033389802369d1a9d93d64203b3879702b382e302c297ea97be9de69d6e9c9317cc00dd8e135c4c033383ce031693b307d300b3b3e302b33253001398470033b3670033786801b3681801d193b3b6ce03b6939693e2931e933308e7029316c300d58f13534303b303cf03b336cf03c29333b803019e97b3b37700b3fc3701d193333ce702b302c703369c429c62931e939316c30013534303d58f3337c703969733fd3701b3b25700d193b38358031a97ba921397c200d98f13d74203338eff0333839c021e9eb3337e0093564e03337e3e0193121e00338cd003b3bfff031a9c33336c00b3985803b3bdd003fe98338813019318c80013584803b3e6d800e29633bc860193d84603b3f63601b3bc9c0293931600ee9c9a9cb38fde03669862981313c800b368130113584803b30c1f02b3bede03fe9cb3bffc01333f1f02b30d9d02fa9ef69f333d9d02e69db3bc9d01ee98b3bdb80113d34803b3f83801139c1800b38e97027e9d669d6a986e98e26d131fc80033636f0013584803b3b79702f69db3bedd016e93b33db301135f430333733301330797023e97ba9e7698c29d9397cd0033efe701b387eb01b3bb770193dd4d033387bb01b30bf702939e1700b380f70213971b00b3b7f70233ff300193d040033e979317c700b3e01700b33b53025193b3b77802b38c7802de9733085302b38d18036698b33c9801be9cb38f6302b3bb1803ee9fb3bdbf01b3b36302330d9f02de939e9d333f9f026a98333da8019357480333782801b38bce03669f7a9d131fcd00b367ff00226f135d4d03b38c9002fe9bb3bffb01b3b3ce03de9ce697b3bb7c01b3bc9701330797029e9dfe9d93d3470393df0743b3f7e70193ffff00b3b49002330f6c0226976e97ba9bea9bde9c1397cc00b363770093dc4c03b380d603b3b4d603fa9033bfe00133877000b330170093134700519333fb6301b36ffb01333c6c02269c629ffa9c869c139fcc00b30363023367ef0093dc4c03338f1e0333bb1e031e9fb3337f007a97333fe701337c27015193b3346302b3806e02da94a6939e9c669f9313cf0033e7e300135f4f0333b36e020697b3301700b37b270151937a93b3835f030693931ec30033e7ee0013534303b300ce03b39f5f039e90b3f93001b3be700013df4003939c1900333ece03b3048c027e9e769e931ece0033efee01135e4e03b3805602b3ba5602a690b3b49000069fb3301f00935f4f03337f2f0193131f00333c8c02569c269c629ef290139ec000b38ed602b36ffe0193d04003027c338e5802b3b6d602769eb33ede01b3b85802b3848b02b698c69eb3bb8b02f29433bec401a69fb3b49f0093d84f03b3ff2f01939a1f00330b8702de9e769ef29086949396c400b3e81601d190333787025a98333b6801c29833b8080193d64803b3f82801330383023a935a939a9426981317c800d98e3387d700b337f70013584803c297b387e702931017003308e70286073337e702b376280113584803ba971397c70033680701b3b4f303d19333b71c03338e1c0326973383f303b38486027293333ec3013a9eb3b686022693b33493001357430333732301b38e7802f296b6949396c400558fd190338bff03b3b2ff03769bb33edb01b3b37802b3b619029693f693b38e1902b382d300338e8702b30bdb0133bb6b01da92b3338802b30688021e9ef29233881a03de96b3be76013697969eb336d700f694b6949396c40093574703338ee003d58f135b0743137bfb00d190a26b33777701429eb306fe0093974600b3f78701336bfb00b3ba1a0333380e0133bec601d192b3b7e003be9ab3075801be94f294b3821f029397c400dd8e93d7440333881803b3b31f021698b3325800c29633b80601b3fe2601d192b3b41803338e1802a6939e9296973e989317c800dd8e13584803b3b81802f296b3b0c601b3f22601d192c29886981398c800b3074b03b366d80093d8480333883903331b4b033e98b337f800135e480333782801233c0123b3b93903da99ce971398c700b3838e02336ec80193d947033388ec031e98429eb3377800b3b08e0233380e01935e4e03337e2e012330c12533beec03f2908697ce973e98b383fc039317c800b3eed70113584803330eef03b38782021e9eb3337e00b3bffc03f297be9e33bec70193d04e03b3b7fe00b3fe2e012334d125333fef03b3b282027e9f1e9fb38e8602169f729f429ffa971398c700b3601800d193b38888027693333ed3013308130033336800935e48033378280123380125b3b68602c696b308de00c6979a97b207b3eed7017697233ce124ef80efd583388123033301240338812403370125833781255d4ee28e5e8f93941700b38af702931b1300939f1800931018007d3eb3b7f702b3f62a0193da4a031396c700b36a5601b3037703d19333869802b3b50b03b293b3bcc30033bbef0233bc98022e9b33367703b305080362966696333c08039e95b3b37500b382ef026296b29333850b03b38986021695b3325500169bb3b686024e95b33935019352450333752501b38b8702da96ce969399c600b3e2590093d9460333868a02b3ba8a022e96b335b600b307560033b6c70093d6470393d2074393f2f200b3f7e701de9ad6939e95ce95b295338be0021396c50093d94503d18eb3856402da95ae96939a4600b3fada01b3e25201b3b0e00233b66501b3b5b600d192b3ba6402d69006964e962e969315c600b3039802cd8e5192b305e702b33a98029e95b3b37500ae96b3b5b600b3f02601d192333be702b3099702da9ad693b2939e951396c500d18ed19133379702ce9633b63601b3f32601d1922e9732971316c700d18eb38418031356470333874203b3ba1803b308970033b7e80093d94803b3f82801b3924203d69216979312c700b3858002b3e932019352470333876f0233bb6f022e97b335b700ba9933b7e90093d44903b3b08002da90869596952e979315c700b38a0f03cd8c93524703b305630233b80f03d695b3b05501b33f630233f3290133878302c29f869fb3b383022e97b335b700330897003337e8009354480333782801b3808602fe939e9596952e979315c700cd8c93554703330686020695b3301500330795003335a700935f470333772701b3b68602b296b6908695aa95b205b3eff501fe97e31d0eda8c14901a2e85233011272334612623380127233ce1262330f128ef80cfadb7c60100054a833801260333812603380127833781270337012803b486d9fd5b7d79021a93d4cb00194e135c8900130a1a3d93db0b0193131700b30fe702931c1300939e1800931218007d3e3337e702b3f69f0093df4f031316c700b36ff601338f9703519333867802329f338bfe02b330cf0033850c03b3bd78025a95333b650133b69703b3b50c036e960696b3b9fe02330d0803ae994e9bb33008037a9d333fed01b3898602b290fa90b3b686024e95b3393501935a4503658dda96338f8f02b6999396c900b3ea560193d94903330b87026a9fb335af0133075f0193564703b3bc8f02b33fe701135f0743137fff0033777701669bda908695ce95fe95b38af2021396c50093d04503d18eb3856302b3b96302d69533b65501ae96b3b5b600939f4600b3ff8f01d192336fff01b3b2f202ce92169606962e969315c600b30f7802cd8e5192b385f702b3397802fe95b3bff501ae96b3b5b600b3f29600d192b3baf702b3807702d699ce9fb29ffe951396c500d18ed191b3b77702869633b61600b3ff9600d192ae97b2971396c700d18eb383180313d64703b3074f03b3b91803b3887700b3b7f80093d04803b3f89800331f4f034e9ffa97139fc700b3858202b3601f0013df4703b3876e02b3ba6e02ae97b3b5b700be90b3b7f00093d34003b3b28202d6929695fa95ae979395c700b3890e03b3e3750013df4703b305630233b80e03ce95b3b23501b33e630233f39000b3878f02c29e969eb3bf8f02ae97b3b5b70033887700b337f8009353480333789800b3828602f69ffe95fa95ae979395c700b3e3750093d54703330686021695b3325500b307750033b5a70093de4703e58fb3b68602b296b6929695aa95b205b3eed5017697e31d0eda8c142e853011233011272334612623380127233cf1262330e128ef80ef838336012803388126833e012693921600b38fd6020337812783380127139e1e00931c1800c267939018008c14938987024e85b3b6d602b3fa9f0093df4f031359a90033bf1c039397c600b3eff701d1923336ee02330bee027a96338d5e02b3871c0333039703da9733bb6701329bb3b35e026a93333da301b33c9703338f8a029e9c669db3ba8a02fa9733bfe70113d64703e58fb38d1803da9a569f9313cf0033e6c300135f4f03b3bc18039a9d33b36d00338b8f02669d1a9db3bf8f026e9bb33dbb015a96333b66011353460393530643b37b760193f3f300b3868602fe96369dea9d6e9f3386e0027a9b9316cb0033e36600135b4b03338f0203329f7a9393164300b3b0e00233fc86013336cf00333fe3011353430333ec8301b3b60203b6900696b38f5802329b5a9f9316cf0033e36600135f4f033306e702b3b058027e96b336f60132933336c300b373930013534303b33ae702b30f5702d6908696fa96b2961396c60033636600d192333757027e93b332f301337f93001353430333064c03369716979316c70033e366005193b38fde03331c4c03b29fb3b6cf0093d04f03b3ff9f002330f127b3bede03e29eb69e9396ce00b38f8302b3e0160093de4e03b3060e03fe9633861600b3b2f601b336d600935f4603658eb3b383022334c12633360e031e9616967696b2961396c600b3001e03b36ff60193de460333060803b3068f020696b3381e03b296b69f333e160033b6c600b3b6df0033380803333f8f02469893d84f03b3ff9f002338f1277298b30f8302429f7a967696b2961396c600b3681601d19233078702fe97b3bff70133881701b337f80013564803b3749800233c9126333483023a94a29ffe96be96b206558eb29b23307129ef80af93ce858814ef802f93b7c7010083b487dc8a65033501262a66a695898d033581264a96ca66098e03350127ca966a67898e033581274a978a77098f4174033501283980a297898f28052334b1282338c128233cd1282330e12a2334f12aef800fcb15ed833081310334013183348130033901308339812f033a012f833a812e033b012e833b812d033c012d833c812c033d012c833d812b1301013282804e85ef80afba4268a27605458337880213f71700e389e6fa833608030337880383350804033688049d8cb306d940b307e940118c3309b940233498022338d802233cf8022330280523348804adbf011122e826e42e84aa841306800b81451305050406ecef102034b7c7010083b287b8b7c7010003bf87b9b7c7010003b587bab7c7010083be87bbb7c7010003be07b8b7c7010003b807b9b7c7010003b307bab7c7010083b807bb23b0540023b4e40188e823b4040323bcd40123b0c40323b8640223bc14038347140003470400834f24008345340003464400a20783465400d98fc20f03476400b3efff00e20583477400b3e5f50102164d8ea216d18e4217558fe217d98fb3c757009ce08347940003478400834fa4008345b4000346c400a2078346d400d98fc20f0347e400b3efff00e2058347f400b3e5f50102164d8ea216d18e4217558fe217d98fb347ff009ce48347140103470401034f24018345340103464401a20783465401d98f420f03476401336fff00e20583477401b3e5e50102164d8ea216d18e4217558fe217d98fa98f9ce883479401034784010345a4018345b4010346c401a2078346d401d98f42050347e4015d8de2058347f401c98d02164d8ea216d18e4217558fe217d98fb3c7fe009cec8347140203470402034524028345340203464402a20783465402d98f4205034764025d8de20583477402c98d02164d8ea216d18e4217558fe217d98fb347fe009cf083479402034784020345a4028345b402a2070346c4028346d402d98f42050347e4025d8de2058347f402c98d02164d8ea216d18e4217558fe217d98fb347f8009cf403481403834704030345240383453403034644032208834654033368f80042050347640333650501e20583477403c98d02164d8ea216d18e4217558fe217d98fb347f3009cf803489403834784030345a4038345b4030346c40322088346d4033368f80042050347e40333650501e2058347f403c98d02164d8ea216d18e4217558fe217d98fb3c7f8009cfc83470400e2604264fcf40145a264056182801387f5ff9307f00363e5e71083b701f75d7110181387870034183337e600b3b6d7001347170093c616002300b1009305101086e4a30001002311b10002c202e42318010023190100231a0100231b0100231c0100231d0100231e0100231f010002f002f402f802fc558f11cf13f7770019eb98638a853af89c673efceff09fcda6606161828003c707008a852308e10203c71700a308e10203c727002309e10203c73700a309e10203c74700230ae10203c75700a30ae10203c76700230be10203c77700a30be10203c78700230ce10203c79700a30ce10203c7a700230de10203c7b700a30de10203c7c700230ee10203c7d700a30ee10203c7e700230fe10283c7f700a30ff102eff0dfc4a660616182807d558280317106fd22f926f54af14eed52e956e55ae1defce2f8e6f4eaf0eeec02e802ec02f002f402f802fc82e082e4638f054e7c75636cf64e3c696399074e7c71386134650346050f3e973338f700c29638e134e56319064c7d5793040506130600082a841d8e38e92ee43385f4008145ef009072a6852285ef501fcf14681c68033a840213d98600146c1379f90f9318890013f9f70f1c6c93d48600147093f4f40f1398840093f4f70f1c7093d08600147493f0f00f9395800093f0f70f1c7493d3860093f3f30f1396830093f3f70fb3e3c300106833691901b708ff00b3781601106c1478b3e404013708ff003378060110701c7893d28600b3e0b000147cb70f01ffb705ff00033e0400fd1ff18d3706ff003376ca0093f2f20f033a0403b3f3f301033b840313df8600b3e3c30093968200107493f2f70f086413578e00b3e2d200b706ff00b376da00137fff0f1377f70f370aff00937efe0f93178f00337a4b01033f84031b5b8601220710789359850033e7ee00b70aff00b37a5e0193f9f90f3377f701b3f4f40113938900336757019379f50fb3e404019b5a860103388401107c137fff0f336fff00b3e96900930710f03703ff0033736500939e8701b3f9f9013379f901b3f0f001b3f2f201b37fff01fd1e33ef4f01b3e96900336919011b5c8801b3e0b00003380402b3e2d2001b5a8601106c337fdf013377d701930610f0b3f9d9013379d901b3f4d401b3f0d001b3f3d301b3f2d201833e840383380401939f060214789b578e019b5b8801135806021070e207935d0e02620a93de0e02fd1f9bdc8801e20a5d8f8192b3674f0193fdfd0f93fefe0f130f10f0b3e25201e20c620ce20b9355060293f6f60f821d3377f701135a8e02821eb3f7f70193d80802221f7d1f33699901b3e48401b3e07001939a060293f8f80fb3f6f2011378f80f93f5f50f3367b701b3e7d701137afa0f930e10f0939c0802131c0802b378f90133f8f401939b05021074b3f5f00103390401b3e65601046c3377e70183300402935a0e03221ac21efd1e3367470193fafa0f3377d701c21ab36a570193d08002186cb3e5750193f0f00fb3f5e5011b5d8501a210620d13530502620bb3e01500019293558703a1901870b3e9a901b3e363011373f30f1376f60f3368880193f4f40f131d0302131b060233f3f90133f6f3013378e801833f8403a21483320403b36498001359890213588703187483338402b3e898011379f90fb3f8e801935985023363a3013366660193df8f0222193373e3013376e601b3f6e601b3f7e701833b0401033c8401833c0402033d8402833d0403033f840333e9280193d282029358870393f9f90f187893ffff0f135b050393d3830293f2f20fa219a21fb3693301b3eff70193f3f30ffd57a212137bfb0fb3f9d901b3e256001353870393d68700187c1c6893db0b03135c0c0393dc0c03a213135d0d0393dd0d03135f0f03421bb363760093fbfb0f137cfc0f93fcfc0f137dfd0f93fdfd0f137fff0f33eb690161913379d901b3f4d401b3f0d001b3f3d301b3f2d201b3ffdf016215337bdb00c21b421cc21c421dc21d421fb3ec900133eda301b3edb20133efef017074336bab00135e8e03b36b7901e19333ec840161932265e2176218e21862136217b3fada00b3fbdb00e215337cdc00b3fcdc00337ddd00b3fddd00621eb376df0033eeca01b3ebfb00b3ec0c01336d1d01b3ed6d00d98e336cbc000c0872e8b6e45aec5ef062f466f86afceee0ef00f02883b781f7130600048145080882970145ea704a74aa740a79ea694a6aaa6a0a6be67b467ca67c067de66d296182807d5738ed3db67d55e9bf986191478146032807009545630ff8025c439bd72700fd376379f60205269b152600939605028192ba9694429398060293d80802ba986300f6029125821581912e971c438145bb86d7402300b5002334150114c98280bb06d84081452300b5002334150114c982801c450d476371f710033805000545832808006399170f1d4609456375f60e8326480013f5360071ed637dd60c1bd326001b0ef3ff1b060e00894e194563f4ce0c99e16311e60c13f7c6ff094563ece70a93170302f983bd079b05d3ff41119183821522e492070008819189053301f1408a8e8a059307480023a0de0013864e00c295910798431106232ee6fe636fd7069b060700e397b7fe9b07e3ff8217f983f6979c4363e3f80693170e02f983f69723a0170103a74e0083a70e00930600021d45bb07f7406393d70483a68e0085473b87e640631cf70283a7ce001396060201920d47959f32986372f702032708001dc31127b307f7403335f00001c91d4531a00d458280094582800d45130104ff226441018280f1173335f000c5b74111856802e001458a85014691460547854793883882730000000f00f00f8267012541e5114e468811a01a8e1b131e003ee001458a8501469a8605478547c288730000000f00f00f8267012579dd1b071e0063096704056f130f3f823b076e001b58f7013b08e8009b5e18403ee401452c000146f68605478547fa88730000000f00f00fa26701251b881e001b071e0009e563096800768ed1b76304d701768375bf3a831a85410182801143014e65b7011122ec001081250d476372b70e1c41639ff50c9d4563fcf50c544193f836006397080c63f5d50c9bd52600fd35894863ffb80a639de50a13f7c6ff63e9e70a0c452320d4fe0a882322b4fe63e5d50c8328c500232414ff63efb80a63ed170b2326f4fe3b83d54063170308bb86b84085c20d476371d70a1397050201932a97184345cb1127b306d740b336d000c1e6bb87174185c30d47637ff7061397080201932a97184351cb1127b307f740b337f000b5e30c41914742816381f50658419b562700fd36b9ca9317070281930548aa976387060514453b87e64021c39843626491071ce218c601450561828079556264056182800d47637f67001397060201932a97184305c311273303674033336000e30d03f479554281d9bf7955c9bf3b87e54065bf711333336000e30003f4ddb7f116b336d00099bff117b337f0008dbf1571a2e9a6e5cae14efd52f956f586ed1379071032843a8aaa89ae84b68a10629307100463040900930710026360f6102330040081452685ef00806b137afa0f89476310fa1013060004d6852800ef00c068426782762266e263c272e27f0663fd57b183227e9315c700337ff60093de0601fd8d5192139a8301d18d337afa00135687029398c2001397460213988f0113154302b366df013366ca007d8fb3f8f8003378f8007d8d93d3c301135a4e0393d2820293dfcf01cd8e33677700b377fe00b3e84801336858003365f50113530301d18ebaf0fae4aee8b2ecf6f4bef8c6fc42e12ae51ae902cd558f35c7a800ef706fe08818ef700fe0ac0013851400ef70ff9463050906c67713071002858b89072380f40018e00545ee604e64ae640e69ea794a7aaa7a2d61828083b7890b83b5090c37c50100130505c682970145e9bf83b7890b83b5090c37c50100130585ca82970145d1b783b7890b83b5090c37c50100130585dd829701457db791472380f4008c1813851402ef705f8d1307100451bf597186f4a2f0a6eccae802c68d4763e7d706328408087000ae84a2853689ef70dfab93050402700008183244ef70ffaab2475d8c11cc1306100481452685ef00e0520145a6700674e6644669656182800c08130600022685ef00e04f0c181385040213060002ef00004f23802405a6700674e66446690545656182805c7d6c6137c50100130505cf8297014565bf1c61130101dfd2f32334112023308120a6ffcafbcef7d6efdaebdee77d731a912a8a6385073e056b7d74180893070b1bba97930984e53289be9913060002ae844e85ca85b68aef002048180893070b1bba97130584e793050902130600023e95ef008046180893070b1bba97130584e901463e95d68503490904ef703f9de2670276a2764277d18fd58fd98f89cbe2770666a6664667d18fd58fd98f85eb1306000481452685ef008043014505631a918330812003340120fe745e79be791e7afe6a5e6bbe6b130101218280180893070b1bba97930a84ebbe9ace855685ef70dfb4180893070b1bba97130584f33e95d685ef70cfdc93772900ddc7f267c5f3d267d1ff3267b757450193873712e3e8e7f8631cf702b7c70100126783b707d1e3efe7f66313f70213070b1b14083697fd77ba973ee403b787f3b7c7010083b787d1e3eee7f4e30cf7f4056714081307071b3697fd77ba9737c8010083b587f3033808d203b607f403b707f5c29537c80100033888d283b687f43ee44296fd5737c8010013d5c700033808d32a972265c296c183233cb5f22330c5f42334d5f42338e5f4233cf5f4856a7d74180893870a1bba97930584f3be9593870a1b130584f8ba97137619003e95efb07ff0e30805ecda6793850a1b0808832f8119366fd66e766e1673b67856789a6676763a67aa95930984ed13850a1b93020101ae991695930584e593820ad593030101aa95bef74e85854733895300232cf1217af376f772fb1affc6e3c2e7b6efb2ebbaf3befb23380120233401202330012082ffef80afa3180893870a1bba97130684e93e96ce854a85ef701fe3180893870a1bba97130b84ef3e9b5a85ca85ef707fb4da855a85ef701fab180893870a1bba97130684e73e96ce854a85ef70dfdf180893870a1bba97930b84f1be9bca855e85ef703fb1d68693870a1b18080808ba97930904069385061baa95be999307047a1303040e93080422930a044e130704fe130604f63384f5009387061baa973e939387061baa975a88368bbe9893050b1b9387061b9386061baa97aa96aa953697be9ace86de872e96528593058a0022f21af646fa56fecae2efb08f8e8327812913070bda140836971cc3e39a07d6138a0905d2855285ef90cfc8d2855685ef605fe95686d2852285ef60bfb05686ce854e85ef601fb0938589022e852286ef605faf833e0122930f0101130f0bd5033e81227e9f2330df01930e8bd503330123fe9e23b0ce01930e0bd603380124fe9e23b06e0013030bd783388123833501257e93130e8bd62330030113080bd803358124833601267e9e7e9823301e012330b80093088bd793050bd90336812503378126fe98fe9523b0a80094e113058bd893068bd9832781297e95fe9610e198e2e39707caca852285ef900f8a13060004a2852685ef00400c05454db15c7d6c6137c50100130585d38297014541b94111814522e006e42a84ef00600c03b581f63c6d91c382972285ef00a0200111f16722e871641387470013044400198c26e44ae006ec0d8481441389470063958402f16771641387870013048401198c0d84814413898700639f8400e2604264a26402690561828093973400ca979c6385048297e9b793973400ca979c6385048297d9bf01476314e60001458280b307e5000507b386e50083c7070083c6f6ffe383d7fe3b85d74082802a8309ca83830500230073007d16050385056dfa82802a8311c62300b3007d16050365fe82805d714ef483b981f652f056ec5ae886e4a2e026fc4af85ee4aa8a2e8a054b83b4891f81c880441b09f4ff0e042694635d0900a6600664e2744279a279027ae26a426ba26b6161828063090a0083378420638547017d396114d9bf9c441464fd376397270323a42401f5d603a704313b162b0183ab8400718f012709ef82969c44e39f77f983b7891fe38697fc49bf23340400d9bf83a7443183358410f18f812781e756858296e1bf2e858296c9bfaa858146014601456f00a0030111f16722e871641387870113040402198c26e406ec0d849384870111e4e2604264a264056182807d1493173400a6979c638297e5b703b781f62a838337871f89e793070720233cf71e98477d487d556344e804630a0302131837003e982338c81083a8073105463b16e600b3e8c80023a817312338d82089466317d30083a64731558e23aac7309b06170009070e0794c7ba978ce301458280814501468146014781479308d00573000000635c0500411122e02a8406e43b048040ef00a00000c101a001a003b501f882800000000000000000000000000000d182e6ad7f520e5108c9bcf367e6096a1f6c3e2b8c68059b3ba7ca8485ae67bb6bbd41fbabd9831f2bf894fe72f36e3c79217e1319cde05bf1361d5f3af54fa5ab3d15eb8492e4906ce8cd6bd4a721d2863000000000000000000000000000001222c4e4bf0aa97f546f28880e01d67e43e40000000000000000000000000000c3e4bf0aa97f546f28880e01d67e43e4000000000000000000000000000000002c56b13da8cd65d76d347407c50a288afeffffffffffffffffffffffffffffffcf8312b510c8cfe0c239c78efcb980a8a49bed77fde3d95a1fcfa33fb3529cac2a6f75747075746c656e203e3d202828666c616773202620534543503235364b315f464c4147535f4249545f434f4d5052455353494f4e29203f203333203a20363529000000000028666c616773202620534543503235364b315f464c4147535f545950455f4d41534b29203d3d20534543503235364b315f464c4147535f545950455f434f4d5052455353494f4e007265636964203e3d2030202626207265636964203c3d203300000000000000000244fc750b950100eebac92f72a10d00414136d08c5e0200fdbb038af46a0e00dcaebafeffff0f00736563703235366b315f65636d756c745f636f6e746578745f69735f6275696c7428266374782d3e65636d756c745f637478290000000000ea7944e60671000049f09ce934340c00ee019571286c0900135c99582f5107007c652b6ae97a0000103d0000100000002efcfffffeff0f002ffcfffffeff0f0078e1fffff7ff7f0034d2fffff3ffbf00d6d9fffff5ff9f00bcf0fffffbff3f001ae9fffff9ff5f0021736563703235366b315f66655f69735f7a65726f282667652d3e78290000003ba048afe6dcaeba404136d08c5ed2bf3aa048afe6dcaebabfbec92f73a12d40c45fb75019235145424136d08c5ed2bf00000000000000003ba048afe6dcaeba0000000000000000feffffffffffffff0000000000000000636b622d64656661756c742d6861736800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa0601000000000084070100000000004a070100000000009799bee251b975b82c45a02154ce28cec89c5853ecc14d12b7b8cccfc19e0af4000000000000000078c501000000000028c6010000000000d8c6010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000e33cdab34126de6ecde05000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c001000000000050be010000000000dcb901000000000040c00100000000004743433a2028474e552920382e332e30004128000000726973637600011e0000000572763634693270305f6d3270305f613270305f6332703000002e7368737472746162002e74657874002e726f64617461002e65685f6672616d65002e696e69745f6172726179002e66696e695f6172726179002e64617461002e7364617461002e627373002e636f6d6d656e74002e72697363762e6174747269627574657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b000000010000000600000000000000b000010000000000b000000000000000c2ba0000000000000000000000000000020000000000000000000000000000001100000001000000020000000000000080bb01000000000080bb000000000000e8020000000000000000000000000000100000000000000000000000000000001900000001000000030000000000000000c001000000000000c00000000000000400000000000000000000000000000004000000000000000000000000000000230000000e000000030000000000000008c001000000000008c000000000000010000000000000000000000000000000080000000000000008000000000000002f0000000f000000030000000000000018c001000000000018c000000000000008000000000000000000000000000000080000000000000008000000000000003b00000001000000030000000000000020c001000000000020c000000000000068070000000000000000000000000000080000000000000000000000000000004100000001000000030000000000000088c701000000000088c7000000000000200000000000000000000000000000000800000000000000000000000000000048000000080000000300000000000000a8c7010000000000a8c700000000000038000000000000000000000000000000080000000000000000000000000000004d0000000100000030000000000000000000000000000000a8c70000000000001100000000000000000000000000000001000000000000000100000000000000560000000300007000000000000000000000000000000000b9c70000000000002900000000000000000000000000000001000000000000000000000000000000010000000300000000000000000000000000000000000000e2c70000000000006800000000000000000000000000000001000000000000000000000000000000", - "header": "0xe733005d39642e3a2cd98b9a2e7272d12a3edbb6a931b946c54d20d1c4f5beb3" - }, - { - "cell_dep": { - "out_point": { - "tx_hash": "0xfd6d28084d2980b4a8413efa8be62025e581b2fc590684f7357870ec8b72e93a", - "index": "0x0" - }, - "dep_type": "dep_group" - }, - "output": { - "capacity": "0x2b95fd500", - "lock": { - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data", - "args": "0x" - }, - "type": null - }, - "data": "0x02000000cd8a652a20ac315d09137d11f6e24f1b552c255533658cb3d7be85594f00b9bb03000000cd8a652a20ac315d09137d11f6e24f1b552c255533658cb3d7be85594f00b9bb01000000", - "header": "0xe733005d39642e3a2cd98b9a2e7272d12a3edbb6a931b946c54d20d1c4f5beb3" - } - ], - "header_deps": [] - }, - "tx": { - "version": "0x0", - "cell_deps": [ - { - "out_point": { - "tx_hash": "0xfd6d28084d2980b4a8413efa8be62025e581b2fc590684f7357870ec8b72e93a", - "index": "0x0" - }, - "dep_type": "dep_group" - } - ], - "header_deps": [], - "inputs": [ - { - "since": "0x0", - "previous_output": { - "tx_hash": "0x9aeb4720bf11a6c51e476bb8c597e3669da1f0d28e73e22acdaa76d391e5f09c", - "index": "0x0" - } - }, - { - "since": "0x0", - "previous_output": { - "tx_hash": "0x52898b53616bdf1995885f86d413be98dd430a11bd5de687279c3a37bc1265ec", - "index": "0x0" - } - } - ], - "outputs": [ - { - "capacity": "0x9f05f8ee00", - "lock": { - "code_hash": "0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8", - "hash_type": "type", - "args": "0x75178f34549c5fe9cd1a0c57aebd01e7ddf9249e" - }, - "type": { - "code_hash": "0x00000000000000000000000000000000000000000000000000545950455f4944", - "hash_type": "type", - "args": "0xf0f0fe2ff6c61b8b2382ab7ddc6ce354a84c6bb49c1787415d03f7bf226fe383" - } - }, - { - "capacity": "0x2ecbd7c0c5", - "lock": { - "code_hash": "0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8", - "hash_type": "type", - "args": "0x75178f34549c5fe9cd1a0c57aebd01e7ddf9249e" - }, - "type": null - } - ], - "outputs_data": [ - "0x7f454c460201010000000000000000000200f3000100000016010100000000004000000000000000f0160000000000000100000040003800030040000d000c000300007004000000050c0000000000000000000000000000000000000000000050000000000000000000000000000000010000000000000001000000050000000000000000000000000001000000000000000100000000005a040000000000005a04000000000000001000000000000001000000060000005c040000000000005c140100000000005c140100000000007c07000000000000b40700000000000000100000000000004111814522e006e42a84ef00e01c03b581f43c6d91c382972285ef0000339307000089c74165130545385da4828097210000938121b6138501f6138681f9098e8145ef00c00e170500001305a52819c5170500001305c524ef008027ef00800602452c000146ef00e00459bf411122e083c701f606e491ef9307000081cb45651305c54597000000e700000085472380f1f6a2600264410182809307000091cb4565938581f61305c54517030000670000008280411122e4000885473e85226441018280011122e8c56745644ae0938707461307044606ec26e43389e740638de700135939401304044681441c60850421048297e3ec24ff4564c56793870747130704463389e74013593940638be7001304044681441c60850421048297e3ec24ffe2604264a2640269056182803d432a876371c3029377f700c1e3bde1937606ff3d8aba960ce30ce74107e36dd7fe11e28280b306c3408a069702000096966780a6002307b700a306b7002306b700a305b7002305b700a304b7002304b700a303b7002303b700a302b7002302b700a301b7002301b700a300b7002300b700828093f5f50f93968500d58d93960501d58d93960502d58d59b7939627009702000096968682e78026fa9680c1171d8f3e96e371c3f89db75d7152f003ba81f44af886e403398a1fa2e026fc4ef456ec5ae85ee462e0630909022a8bae8b854afd59832489001b84f4ff634f04008504b3e4242163860b0283b70420638277037d34e114e31834ffa6600664e2744279a279027ae26a426ba26b026c61618280832789009860fd376384870423b0040061db83270931bb968a00032c8900f58f812789ef02970327890083378a1f63148701e38727fbcddb3e8961b78327493183b50410f58f812799e75a850297e1bf2324890075bf2e850297f1b7011122e8c567456493870747130484471d8c26e406ec9354344081c861143e941c60fd1461148297e5fce2604264a26405618280aa8581460146014509a003b781f48337871fa1c398477d48634fe8041dc1b368f72023b8c81003a8073105463b16e6003368c80023a8073123b8d8208946630fd5009b06170094c73367f72001450ceb828093070720233cf71e6dbf83a647310145d18e23aad7309b06170094c73367f7200ceb82807d5582809308d005730000006343050001a0411122e02a8406e43b048040ef00800000c101a003b581f582800000000000000601010000000000820101000000000054010100000000000000000000000000b019010000000000601a010000000000101b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000e33cdab34126de6ecde05000b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007814010000000000000000000000000078140100000000004743433a2028673265653565343330303138292031322e322e30004743433a2028474e55292031322e322e3000414f000000726973637600014500000004100572763634693270305f6d3270305f613270305f633270305f7a6d6d756c3170305f7a62613170305f7a62623170305f7a62633170305f7a6273317030000000000000000000000000000000000000000000000000000000000000000003000100e800010000000000000000000000000000000000030002005c1401000000000000000000000000000000000003000300601401000000000000000000000000000000000003000400701401000000000000000000000000000000000003000500781401000000000000000000000000000000000003000600c01b01000000000000000000000000000000000003000700d81b0100000000000000000000000000000000000300080000000000000000000000000000000000000000000300090000000000000000000000000000000000820100000400f1ff000000000000000000000000000000000100000000000100e8000100000000000000000000000000400000000400f1ff000000000000000000000000000000005000000002000100060101000000000010000000000000000100000000000100060101000000000000000000000000000100000000000100c00201000000000000000000000000005e0000000400f1ff00000000000000000000000000000000010000000000010016010100000000000000000000000000650000000400f1ff0000000000000000000000000000000070000000010002005c1401000000000000000000000000008300000002000100540101000000000000000000000000000100000000000100540101000000000000000000000000009900000001000700d81b0100000000000100000000000000a50000000100040070140100000000000000000000000000cc0000000200010082010100000000000000000000000000d800000001000700e01b0100000000003000000000000000e10000000100030068140100000000000000000000000000000100000400f1ff0000000000000000000000000000000001000000000001009c010100000000000000000000000000070100000400f1ff000000000000000000000000000000001001000001000500781401000000000048070000000000001c0100000400f1ff000000000000000000000000000000000100000000000100ac010100000000000000000000000000230100000400f1ff000000000000000000000000000000000100000000000100160201000000000000000000000000003201000000000100480201000000000000000000000000000100000000000100880201000000000000000000000000006c0100000400f1ff00000000000000000000000000000000010000000000010084030100000000000000000000000000750100000400f1ff000000000000000000000000000000000100000000000100b8030100000000000000000000000000730100000400f1ff000000000000000000000000000000000100000000000100c20301000000000000000000000000007e0100000400f1ff00000000000000000000000000000000010000000000010032040100000000000000000000000000890100000400f1ff00000000000000000000000000000000010000000000010054040100000000000000000000000000650000000400f1ff0000000000000000000000000000000091010000010002005c140100000000000000000000000000000000000400f1ff000000000000000000000000000000009f0100000000040078140100000000000000000000000000b00100000000040070140100000000000000000000000000c30100000000030070140100000000000000000000000000d40100000000030060140100000000000000000000000000e80100000000030060140100000000000000000000000000fb0100000000030060140100000000000000000000000000110200001000f1ff781c01000000000000000000000000002302000012000100540401000000000006000000000000002b02000010000600c01b01000000000000000000000000003b02000011020600c81b01000000000000000000000000004802000011000600c01b01000000000008000000000000005b02000012000100ac010100000000006a000000000000006d02000012000100840301000000000034000000000000007f02000012000100c002010000000000c400000000000000b50200001200010016010100000000003e000000000000009002000012000100c2030100000000007000000000000000a402000010000700101c0100000000000000000000000000b002000010000700d81b0100000000000000000000000000bc020000120001001602010000000000aa00000000000000c3020000120001009c010100000000001000000000000000c802000012000100b8030100000000000a000000000000004f02000011000600d01b0100000000000800000000000000cf0200001000050078140100000000000000000000000000de02000010000600d81b0100000000000000000000000000ab01000010000700101c0100000000000000000000000000e602000012000100e8000100000000001e00000000000000e5020000120001003204010000000000220000000000000000247872763634693270305f6d3270305f613270305f633270305f7a6d6d756c3170305f7a62613170305f7a62623170305f7a62633170305f7a6273317030005f5f63616c6c5f6174657869742e630072656769737465725f66696e6900637274302e6f0063727473747566662e63005f5f45485f4652414d455f424547494e5f5f005f5f646f5f676c6f62616c5f64746f72735f61757800636f6d706c657465642e31005f5f646f5f676c6f62616c5f64746f72735f6175785f66696e695f61727261795f656e747279006672616d655f64756d6d79006f626a6563742e30005f5f6672616d655f64756d6d795f696e69745f61727261795f656e74727900726574312e6300696d707572652e6300696d707572655f6461746100696e69742e63006c69625f612d6d656d7365742e6f00247872763634693270305f6d3270305f613270305f7a6d6d756c3170305f7a62613170305f7a62623170305f7a62633170305f7a62733170300066696e692e63005f5f6174657869742e63007379735f657869742e63006572726e6f2e63005f5f4652414d455f454e445f5f005f5f66696e695f61727261795f656e64005f5f66696e695f61727261795f7374617274005f5f696e69745f61727261795f656e64005f5f707265696e69745f61727261795f656e64005f5f696e69745f61727261795f7374617274005f5f707265696e69745f61727261795f7374617274005f5f676c6f62616c5f706f696e74657224005f5f6572726e6f005f5f53444154415f424547494e5f5f005f5f64736f5f68616e646c65005f676c6f62616c5f696d707572655f707472005f5f6c6962635f696e69745f6172726179005f5f6c6962635f66696e695f6172726179005f5f63616c6c5f6578697470726f6373005f5f72656769737465725f6578697470726f63005f5f4253535f454e445f5f005f5f6273735f7374617274006d656d736574006d61696e00617465786974005f5f444154415f424547494e5f5f005f6564617461005f6578697400002e73796d746162002e737472746162002e7368737472746162002e74657874002e65685f6672616d65002e696e69745f6172726179002e66696e695f6172726179002e64617461002e7364617461002e627373002e636f6d6d656e74002e72697363762e61747472696275746573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b000000010000000600000000000000e800010000000000e8000000000000007203000000000000000000000000000002000000000000000000000000000000210000000100000003000000000000005c140100000000005c0400000000000004000000000000000000000000000000040000000000000000000000000000002b0000000e0000000300000000000000601401000000000060040000000000001000000000000000000000000000000008000000000000000800000000000000370000000f00000003000000000000007014010000000000700400000000000008000000000000000000000000000000080000000000000008000000000000004300000001000000030000000000000078140100000000007804000000000000480700000000000000000000000000000800000000000000000000000000000049000000010000000300000000000000c01b010000000000c00b000000000000180000000000000000000000000000000800000000000000000000000000000050000000080000000300000000000000d81b010000000000d80b0000000000003800000000000000000000000000000008000000000000000000000000000000550000000100000030000000000000000000000000000000d80b0000000000002d000000000000000000000000000000010000000000000001000000000000005e0000000300007000000000000000000000000000000000050c0000000000005000000000000000000000000000000001000000000000000000000000000000010000000200000000000000000000000000000000000000580c00000000000038070000000000000b00000038000000080000000000000018000000000000000900000003000000000000000000000000000000000000009013000000000000eb020000000000000000000000000000010000000000000000000000000000001100000003000000000000000000000000000000000000007b160000000000007000000000000000000000000000000001000000000000000000000000000000", - "0x" - ], - "witnesses": [ - "0x550000001000000055000000550000004100000030f10ad80e1badf108c64cf4bbb3ae682d2fe7d978770adc5f87c8d9828b7a0434392a1f5d4282e8395299e3a69b40314a35f8ed723aacb0028a272a7579f8c100", - "0x" - ] - } -} \ No newline at end of file diff --git a/ckb-debugger/src/api.rs b/ckb-debugger/src/api.rs new file mode 100644 index 0000000..c6786cc --- /dev/null +++ b/ckb-debugger/src/api.rs @@ -0,0 +1,75 @@ +use ckb_chain_spec::consensus::ConsensusBuilder; +use ckb_mock_tx_types::{MockTransaction, ReprMockTransaction, Resource}; +use ckb_script::{ScriptGroupType, TransactionScriptsVerifier, TxVerifyEnv}; +use ckb_types::{ + core::cell::resolve_transaction, + core::hardfork::{HardForks, CKB2021, CKB2023}, + core::{Cycle, EpochNumberWithFraction, HeaderView}, + packed::Byte32, + prelude::*, +}; +use serde::{Deserialize, Serialize}; +use std::collections::HashSet; +use std::sync::Arc; +use wasm_bindgen::prelude::*; + +pub fn run( + mock_tx: &MockTransaction, + script_group_type: &ScriptGroupType, + script_hash: &Byte32, + max_cycle: Cycle, +) -> Result> { + let resource = Resource::from_mock_tx(mock_tx)?; + let resolve_transaction = + resolve_transaction(mock_tx.core_transaction(), &mut HashSet::new(), &resource, &resource)?; + let hardforks = HardForks { ckb2021: CKB2021::new_dev_default(), ckb2023: CKB2023::new_dev_default() }; + let consensus = Arc::new(ConsensusBuilder::default().hardfork_switch(hardforks).build()); + let epoch = EpochNumberWithFraction::new(0, 0, 1); + let header = HeaderView::new_advanced_builder().epoch(epoch.pack()).build(); + let tx_env = Arc::new(TxVerifyEnv::new_commit(&header)); + let mut verifier = TransactionScriptsVerifier::new( + Arc::new(resolve_transaction), + resource.clone(), + consensus.clone(), + tx_env.clone(), + ); + #[cfg(any(target_family = "unix", target_family = "windows"))] + verifier.set_debug_printer(Box::new(move |_hash: &Byte32, message: &str| { + print!("Script log: {}", message); + if !message.ends_with('\n') { + println!(""); + } + })); + Ok(verifier.verify_single(*script_group_type, script_hash, max_cycle)?) +} + +#[derive(Clone, Serialize, Deserialize, PartialEq, Eq, Hash, Debug)] +struct JsonResult { + cycle: Option, + error: Option, +} + +impl From> for JsonResult { + fn from(result: Result) -> JsonResult { + match result { + Ok(cycle) => JsonResult { cycle: Some(cycle), error: None }, + Err(error) => JsonResult { cycle: None, error: Some(error) }, + } + } +} + +#[wasm_bindgen] +pub fn run_json(mock_tx: &str, script_group_type: &str, script_hash: &str, max_cycle: &str) -> String { + let result = || -> Result { + let repr_mock_tx: ReprMockTransaction = serde_json::from_str(mock_tx).map_err(|e| e.to_string())?; + let mock_tx: MockTransaction = repr_mock_tx.into(); + let script_group_type: ScriptGroupType = serde_plain::from_str(script_group_type).map_err(|e| e.to_string())?; + let script_hash = if script_hash.starts_with("0x") { &script_hash[2..] } else { &script_hash[0..] }; + let script_hash_byte = hex::decode(&script_hash.as_bytes()).map_err(|e| e.to_string())?; + let script_hash = Byte32::from_slice(script_hash_byte.as_slice()).map_err(|e| e.to_string())?; + let max_cycle: Cycle = max_cycle.parse().map_err(|_| "Invalid max cycle!".to_string())?; + run(&mock_tx, &script_group_type, &script_hash, max_cycle).map_err(|e| e.to_string()) + }(); + let result_json: JsonResult = result.into(); + serde_json::to_string(&result_json).unwrap() +} diff --git a/ckb-debugger/src/decode.rs b/ckb-debugger/src/decode.rs deleted file mode 100644 index 96fc165..0000000 --- a/ckb-debugger/src/decode.rs +++ /dev/null @@ -1,37 +0,0 @@ -use ckb_vm::instructions::*; -use ckb_vm::machine::VERSION2; - -pub fn decode_instruction(data: &str) -> Result<(), Box> { - let instruction = - if data.starts_with("0x") { u32::from_str_radix(&data[2..], 16)? } else { u32::from_str_radix(data, 10)? }; - let (ins, isa) = if let Some(i) = i::factory::(instruction, VERSION2) { - let tagged_instruction: tagged::TaggedInstruction = tagged::TaggedInstruction::try_from(i).unwrap(); - (tagged_instruction.to_string(), "I") - } else if let Some(i) = m::factory::(instruction, VERSION2) { - let tagged_instruction = tagged::TaggedInstruction::try_from(i).unwrap(); - (tagged_instruction.to_string(), "M") - } else if let Some(i) = a::factory::(instruction, VERSION2) { - let tagged_instruction = tagged::TaggedInstruction::try_from(i).unwrap(); - (tagged_instruction.to_string(), "A") - } else if let Some(i) = rvc::factory::(instruction, VERSION2) { - let tagged_instruction = tagged::TaggedInstruction::try_from(i).unwrap(); - (tagged_instruction.to_string(), "C") - } else if let Some(i) = b::factory::(instruction, VERSION2) { - let tagged_instruction = tagged::TaggedInstruction::try_from(i).unwrap(); - (tagged_instruction.to_string(), "B") - } else { - ("?".to_string(), "?") - }; - - println!(" Assembly = {}", ins); - if isa == "C" { - println!(" Binary = {:016b}", instruction); - println!(" Hexadecimal = {:04x}", instruction); - } else { - println!(" Binary = {:032b}", instruction); - println!(" Hexadecimal = {:08x}", instruction); - } - println!("Instruction set = {}", isa); - - Ok(()) -} diff --git a/ckb-debugger/src/dummy_tx.json b/ckb-debugger/src/dummy_tx.json deleted file mode 100644 index 958d0e5..0000000 --- a/ckb-debugger/src/dummy_tx.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "mock_info": { - "inputs": [ - { - "input": { - "previous_output": { - "tx_hash": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": "0x0" - }, - "since": "0x0" - }, - "output": { - "capacity": "0x10000000", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data2" - }, - "type": null - }, - "data": "0x" - } - ], - "cell_deps": [ - { - "cell_dep": { - "out_point": { - "tx_hash": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": "0x0" - }, - "dep_type": "code" - }, - "output": { - "capacity": "0x10000000", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data2" - }, - "type": null - }, - "data": "0x" - } - ], - "header_deps": [] - }, - "tx": { - "version": "0x0", - "cell_deps": [ - { - "out_point": { - "tx_hash": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": "0x0" - }, - "dep_type": "code" - } - ], - "header_deps": [], - "inputs": [ - { - "previous_output": { - "tx_hash": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": "0x0" - }, - "since": "0x0" - } - ], - "outputs": [ - { - "capacity": "0x0", - "lock": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data2" - }, - "type": { - "args": "0x", - "code_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "hash_type": "data2" - } - } - ], - "witnesses": [ - "0x" - ], - "outputs_data": [ - "0x" - ] - } -} diff --git a/ckb-debugger/src/lib.rs b/ckb-debugger/src/lib.rs new file mode 100644 index 0000000..8c9a255 --- /dev/null +++ b/ckb-debugger/src/lib.rs @@ -0,0 +1,19 @@ +mod api; +mod machine_analyzer; +mod machine_assign; +mod machine_gdb; +mod misc; +mod syscall_all; +mod syscall_elf_dumper; +#[cfg(target_family = "unix")] +mod syscall_stdio; + +pub use api::{run, run_json}; +pub use machine_analyzer::{MachineAnalyzer, MachineOverlap, MachineProfile, MachineStepLog}; +pub use machine_assign::MachineAssign; +pub use machine_gdb::{GdbStubHandler, GdbStubHandlerEventLoop}; +pub use misc::{get_script_hash_by_index, pre_check, DummyResourceLoader, Embed, HumanReadableCycles}; +pub use syscall_all::{FileOperation, FileStream, Random, TimeNow}; +pub use syscall_elf_dumper::ElfDumper; +#[cfg(target_family = "unix")] +pub use syscall_stdio::Stdio; diff --git a/ckb-debugger/src/machine_analyzer.rs b/ckb-debugger/src/machine_analyzer.rs new file mode 100644 index 0000000..2559184 --- /dev/null +++ b/ckb-debugger/src/machine_analyzer.rs @@ -0,0 +1,525 @@ +use crate::machine_assign::MachineAssign; +use ckb_traits::{CellDataProvider, ExtensionProvider, HeaderProvider}; +use ckb_vm::cost_model::estimate_cycles; +use ckb_vm::decoder::{build_decoder, Decoder}; +use ckb_vm::instructions::instruction_length; +use ckb_vm::machine::VERSION0; +use ckb_vm::registers::{A0, SP}; +use ckb_vm::{Bytes, CoreMachine, Error, FlatMemory, Machine, Register, SupportMachine, WXorXMemory, ISA_MOP}; +use std::borrow::Cow; +use std::cell::RefCell; +use std::collections::HashMap; +use std::rc::Rc; + +type Addr2LineEndianReader = addr2line::gimli::EndianReader>; +type Addr2LineContext = addr2line::Context; +type Addr2LineFrameIter<'a> = addr2line::FrameIter<'a, Addr2LineEndianReader>; + +fn sprint_fun(frame_iter: &mut Addr2LineFrameIter) -> String { + let mut s = String::from("??"); + loop { + if let Some(data) = frame_iter.next().unwrap() { + if let Some(function) = data.function { + s = String::from(addr2line::demangle_auto(Cow::from(function.raw_name().unwrap()), function.language)); + continue; + } + continue; + } + break; + } + s +} + +fn goblin_fun(elf: &goblin::elf::Elf) -> HashMap { + let mut map = HashMap::new(); + for sym in &elf.syms { + if !sym.is_function() { + continue; + } + if let Some(Ok(r)) = elf.strtab.get(sym.st_name) { + map.insert(sym.st_value, r.to_string()); + } + } + map +} + +fn goblin_get_sym(elf: &goblin::elf::Elf, sym: &str) -> u64 { + for e in &elf.syms { + if let Some(Ok(r)) = elf.strtab.get(e.st_name) { + if r == sym { + return e.st_value; + } + } + } + return 0; +} + +struct TrieNode { + addr: u64, + link: u64, + pc: u64, + parent: Option>>, + childs: Vec>>, + cycles: u64, + regs: [[u64; 32]; 2], +} + +impl TrieNode { + fn root() -> Self { + Self { addr: 0, link: 0, pc: 0, parent: None, childs: vec![], cycles: 0, regs: [[0; 32]; 2] } + } +} + +#[derive(Clone, Debug)] +pub struct Tags { + addr: u64, + file: String, + line: u32, + func: String, +} + +impl Tags { + fn new(addr: u64) -> Self { + Tags { addr, file: String::from("??"), line: 0xffffffff, func: String::from("??") } + } + + pub fn func(&self) -> String { + if self.func != "??" { + self.func.clone() + } else { + format!("func_0x{:x}", self.addr) + } + } + + pub fn simple(&self) -> String { + format!("{}:{}", self.file, self.func()) + } + + pub fn detail(&self) -> String { + if self.line == 0xffffffff { + format!("{}:??:{}", self.file, self.func) + } else { + format!("{}:{}:{}", self.file, self.line, self.func) + } + } +} + +pub struct MachineProfile { + addrctx: Addr2LineContext, + trie_root: Rc>, + trie_node: Rc>, + cache_tag: HashMap, + cache_fun: HashMap, +} + +impl MachineProfile { + pub fn new(program: &Bytes) -> Result> { + let object = addr2line::object::File::parse(program.as_ref())?; + let ctx = addr2line::Context::new(&object)?; + let trie_root = Rc::new(RefCell::new(TrieNode::root())); + let elf = goblin::elf::Elf::parse(&program)?; + trie_root.borrow_mut().addr = elf.entry; + Ok(Self { + addrctx: ctx, + trie_root: trie_root.clone(), + trie_node: trie_root, + cache_tag: HashMap::new(), + cache_fun: goblin_fun(&elf), + }) + } + + pub fn reset(&mut self, program: &Bytes) -> Result<(), Box> { + let object = addr2line::object::File::parse(program.as_ref())?; + let ctx = addr2line::Context::new(&object)?; + let trie_root = Rc::new(RefCell::new(TrieNode::root())); + let elf = goblin::elf::Elf::parse(&program)?; + trie_root.borrow_mut().addr = elf.entry; + self.addrctx = ctx; + self.trie_root = trie_root.clone(); + self.trie_node = trie_root; + self.cache_tag = HashMap::new(); + self.cache_fun = goblin_fun(&elf); + Ok(()) + } + + pub fn get_tag(&mut self, addr: u64) -> Tags { + if let Some(data) = self.cache_tag.get(&addr) { + return data.clone(); + } + let mut tag = Tags::new(addr); + let loc = self.addrctx.find_location(addr).unwrap(); + if let Some(loc) = loc { + tag.file = loc.file.as_ref().unwrap().to_string(); + if let Some(line) = loc.line { + tag.line = line; + } + } + let mut frame_iter = self.addrctx.find_frames(addr).unwrap(); + tag.func = sprint_fun(&mut frame_iter); + self.cache_tag.insert(addr, tag.clone()); + tag + } + + fn display_flamegraph_rec(&mut self, prefix: &str, node: Rc>, writer: &mut impl std::io::Write) { + let prefix_name = format!("{}{}", prefix, self.get_tag(node.borrow().addr).simple()); + writer.write_all(format!("{} {}\n", prefix_name, node.borrow().cycles).as_bytes()).unwrap(); + for e in &node.borrow().childs { + self.display_flamegraph_rec(format!("{}; ", prefix_name).as_str(), e.clone(), writer); + } + writer.flush().unwrap(); + } + + pub fn display_flamegraph(&mut self, writer: &mut impl std::io::Write) { + self.display_flamegraph_rec("", self.trie_root.clone(), writer); + } + + pub fn display_stacktrace(&mut self, prefix: &str, writer: &mut impl std::io::Write) { + let mut frame = self.trie_node.clone(); + let mut stack = vec![self.get_tag(frame.borrow().pc).detail()]; + loop { + stack.push(self.get_tag(frame.borrow().link).detail()); + let parent = frame.borrow().parent.clone(); + if let Some(p) = parent { + frame = p.clone(); + } else { + break; + } + } + stack.reverse(); + for i in &stack { + writer.write_all(format!("{}{}\n", prefix, i).as_bytes()).unwrap(); + } + writer.flush().unwrap(); + } + + pub fn step
(&mut self, decoder: &mut Decoder, machine: &mut MachineAssign
) -> Result<(), Error> + where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, + { + let pc = machine.pc().to_u64(); + let inst = decoder.decode(machine.memory_mut(), pc)?; + let opcode = ckb_vm::instructions::extract_opcode(inst); + let cycles = estimate_cycles(inst); + self.trie_node.borrow_mut().cycles += cycles; + self.trie_node.borrow_mut().pc = pc; + + let call = |s: &mut Self, addr: u64, link: u64| { + let mut regs = [[0; 32]; 2]; + for i in 0..32 { + regs[0][i] = machine.registers()[i].to_u64(); + } + let chd = Rc::new(RefCell::new(TrieNode { + addr: addr, + link: link, + pc: pc, + parent: Some(s.trie_node.clone()), + childs: vec![], + cycles: 0, + regs: regs, + })); + s.trie_node.borrow_mut().childs.push(chd.clone()); + s.trie_node = chd; + }; + + let jump = |s: &mut Self, addr: u64| { + let mut f = s.trie_node.clone(); + loop { + if f.borrow().link == addr { + for i in 0..32 { + s.trie_node.borrow_mut().regs[1][i] = machine.registers()[i].to_u64(); + } + if let Some(p) = f.borrow().parent.clone() { + s.trie_node = p.clone(); + } else { + unimplemented!(); + } + break; + } + let p = f.borrow().parent.clone(); + if let Some(p) = p { + f = p.clone(); + } else { + break; + } + } + }; + + if opcode == ckb_vm::instructions::insts::OP_JAL { + let inst_length = instruction_length(inst) as u64; + let inst = ckb_vm::instructions::Utype(inst); + let addr = pc.wrapping_add(inst.immediate_s() as u64) & 0xfffffffffffffffe; + let link = pc + inst_length; + if self.cache_fun.contains_key(&addr) { + call(self, addr, link); + return Ok(()); + } + jump(self, addr); + return Ok(()); + }; + if opcode == ckb_vm::instructions::insts::OP_JALR_VERSION0 { + let inst_length = instruction_length(inst) as u64; + let inst = ckb_vm::instructions::Itype(inst); + let base = machine.registers()[inst.rs1()].to_u64(); + let addr = base.wrapping_add(inst.immediate_s() as u64) & 0xfffffffffffffffe; + let link = pc + inst_length; + if self.cache_fun.contains_key(&addr) { + call(self, addr, link); + return Ok(()); + } + jump(self, addr); + return Ok(()); + }; + if opcode == ckb_vm::instructions::insts::OP_JALR_VERSION1 { + let inst_length = instruction_length(inst) as u64; + let inst = ckb_vm::instructions::Itype(inst); + let base = machine.registers()[inst.rs1()].to_u64(); + let addr = base.wrapping_add(inst.immediate_s() as u64) & 0xfffffffffffffffe; + let link = pc + inst_length; + if self.cache_fun.contains_key(&addr) { + call(self, addr, link); + return Ok(()); + } + jump(self, addr); + return Ok(()); + }; + if opcode == ckb_vm::instructions::insts::OP_FAR_JUMP_ABS { + let inst_length = instruction_length(inst) as u64; + let inst = ckb_vm::instructions::Utype(inst); + let addr = (inst.immediate_s() as u64) & 0xfffffffffffffffe; + let link = pc + inst_length; + if self.cache_fun.contains_key(&addr) { + call(self, addr, link); + return Ok(()); + } + jump(self, addr); + return Ok(()); + } + if opcode == ckb_vm::instructions::insts::OP_FAR_JUMP_REL { + let inst_length = instruction_length(inst) as u64; + let inst = ckb_vm::instructions::Utype(inst); + let addr = pc.wrapping_add(inst.immediate_s() as u64) & 0xfffffffffffffffe; + let link = pc + inst_length; + if self.cache_fun.contains_key(&addr) { + call(self, addr, link); + return Ok(()); + } + jump(self, addr); + return Ok(()); + } + return Ok(()); + } +} + +pub struct MachineOverlap { + sbrk_addr: u64, + sbrk_heap: u64, +} + +impl MachineOverlap { + pub fn new(program: &Bytes) -> Result> { + let elf = goblin::elf::Elf::parse(&program)?; + Ok(Self { sbrk_addr: goblin_get_sym(&elf, "_sbrk"), sbrk_heap: goblin_get_sym(&elf, "_end") }) + } + + pub fn step
( + &mut self, + decoder: &mut Decoder, + machine: &mut MachineAssign
, + profile: &MachineProfile, + ) -> Result<(), Error> + where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, + { + let pc = machine.pc().to_u64(); + let sp = machine.registers()[SP].to_u64(); + if sp < self.sbrk_heap { + return Err(Error::External(format!("Heap and stack overlapping sp={} heap={}", sp, self.sbrk_heap))); + } + let inst = decoder.decode(machine.memory_mut(), pc)?; + let opcode = ckb_vm::instructions::extract_opcode(inst); + let addr = match opcode { + ckb_vm::instructions::insts::OP_JAL => { + let inst = ckb_vm::instructions::Utype(inst); + let addr = pc.wrapping_add(inst.immediate_s() as u64) & 0xfffffffffffffffe; + addr + } + ckb_vm::instructions::insts::OP_JALR_VERSION0 => { + let inst = ckb_vm::instructions::Itype(inst); + let base = machine.registers()[inst.rs1()].to_u64(); + let addr = base.wrapping_add(inst.immediate_s() as u64) & 0xfffffffffffffffe; + addr + } + ckb_vm::instructions::insts::OP_JALR_VERSION1 => { + let inst = ckb_vm::instructions::Itype(inst); + let base = machine.registers()[inst.rs1()].to_u64(); + let addr = base.wrapping_add(inst.immediate_s() as u64) & 0xfffffffffffffffe; + addr + } + ckb_vm::instructions::insts::OP_FAR_JUMP_ABS => { + let inst = ckb_vm::instructions::Utype(inst); + let addr = (inst.immediate_s() as u64) & 0xfffffffffffffffe; + addr + } + ckb_vm::instructions::insts::OP_FAR_JUMP_REL => { + let inst = ckb_vm::instructions::Utype(inst); + let addr = pc.wrapping_add(inst.immediate_s() as u64) & 0xfffffffffffffffe; + addr + } + _ => return Ok(()), + }; + + let mut f = profile.trie_node.clone(); + loop { + if f.borrow().link == addr { + if profile.trie_node.borrow().addr == self.sbrk_addr { + // https://github.com/nervosnetwork/riscv-newlib/blob/newlib-4.1.0-fork/libgloss/riscv/sys_sbrk.c#L49 + // Note incr could be negative. + self.sbrk_heap = profile.trie_node.borrow().regs[0][A0].wrapping_add(machine.registers()[A0]); + } + break; + } + let p = f.borrow().parent.clone(); + if let Some(p) = p { + f = p.clone(); + } else { + break; + } + } + + return Ok(()); + } +} + +pub struct MachineStepLog {} + +impl MachineStepLog { + pub fn new() -> Self { + Self {} + } + + pub fn step
(&mut self, machine: &mut MachineAssign
) -> Result<(), Error> + where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, + { + println!("{}", machine); + Ok(()) + } +} + +pub struct MachineAnalyzer
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + pub enable_overlap: u8, + pub enable_profile: u8, + pub enable_steplog: u8, + pub machine: MachineAssign
, + pub profile: MachineProfile, + pub overlap: MachineOverlap, + pub steplog: MachineStepLog, +} + +impl
CoreMachine for MachineAnalyzer
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + type REG = u64; + type MEM = WXorXMemory>; + + fn pc(&self) -> &Self::REG { + &self.machine.pc() + } + + fn update_pc(&mut self, pc: Self::REG) { + self.machine.update_pc(pc) + } + + fn commit_pc(&mut self) { + self.machine.commit_pc() + } + + fn memory(&self) -> &Self::MEM { + self.machine.memory() + } + + fn memory_mut(&mut self) -> &mut Self::MEM { + self.machine.memory_mut() + } + + fn registers(&self) -> &[Self::REG] { + self.machine.registers() + } + + fn set_register(&mut self, idx: usize, value: Self::REG) { + self.machine.set_register(idx, value) + } + + fn isa(&self) -> u8 { + self.machine.isa() + } + + fn version(&self) -> u32 { + self.machine.version() + } +} + +impl
Machine for MachineAnalyzer
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn ecall(&mut self) -> Result<(), Error> { + self.machine.ecall() + } + + fn ebreak(&mut self) -> Result<(), Error> { + self.machine.ebreak() + } +} + +impl
std::fmt::Display for MachineAnalyzer
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + self.machine.fmt(f) + } +} + +impl
MachineAnalyzer
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + pub fn new( + machine: MachineAssign
, + profile: MachineProfile, + overlap: MachineOverlap, + steplog: MachineStepLog, + ) -> Self { + Self { enable_overlap: 0, enable_profile: 1, enable_steplog: 0, machine, profile, overlap, steplog } + } + + pub fn run(&mut self) -> Result { + if self.isa() & ISA_MOP != 0 && self.version() == VERSION0 { + return Err(Error::InvalidVersion); + } + let mut decoder = build_decoder::(self.isa(), self.version()); + self.machine.set_running(true); + while self.machine.running() { + if self.machine.reset_signal() { + decoder.reset_instructions_cache(); + self.profile = MachineProfile::new(&self.machine.code()).unwrap(); + } + if self.enable_profile > 0 && self.enable_overlap > 0 { + self.overlap.step(&mut decoder, &mut self.machine, &self.profile)?; + } + if self.enable_profile > 0 { + self.profile.step(&mut decoder, &mut self.machine)?; + } + if self.enable_steplog > 0 { + self.steplog.step(&mut self.machine)?; + } + self.machine.step(&mut decoder)?; + } + Ok(self.machine.exit_code()) + } +} diff --git a/ckb-debugger/src/machine_assign.rs b/ckb-debugger/src/machine_assign.rs new file mode 100644 index 0000000..d8c938c --- /dev/null +++ b/ckb-debugger/src/machine_assign.rs @@ -0,0 +1,224 @@ +use ckb_script::{DataPieceId, RunMode, Scheduler, ROOT_VM_ID}; +use ckb_traits::{CellDataProvider, ExtensionProvider, HeaderProvider}; +use ckb_vm::cost_model::estimate_cycles; +use ckb_vm::decoder::Decoder; +use ckb_vm::instructions::execute; +use ckb_vm::machine::Pause; +use ckb_vm::registers::A7; +use ckb_vm::{ + Bytes, CoreMachine, DefaultCoreMachine, Error, FlatMemory, Machine, SupportMachine, Syscalls, WXorXMemory, +}; + +pub struct MachineAssign
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + pub id: u64, + pub scheduler: Scheduler
, + pub expand_cycles: u64, + pub expand_syscalls: Vec>>>)>>, +} + +impl
CoreMachine for MachineAssign
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + type REG = u64; + type MEM = WXorXMemory>; + + fn pc(&self) -> &Self::REG { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.pc() + } + + fn update_pc(&mut self, pc: Self::REG) { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.update_pc(pc) + } + + fn commit_pc(&mut self) { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.commit_pc() + } + + fn memory(&self) -> &Self::MEM { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.memory() + } + + fn memory_mut(&mut self) -> &mut Self::MEM { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.memory_mut() + } + + fn registers(&self) -> &[Self::REG] { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.registers() + } + + fn set_register(&mut self, idx: usize, value: Self::REG) { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.set_register(idx, value) + } + + fn version(&self) -> u32 { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.version() + } + + fn isa(&self) -> u8 { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.isa() + } +} +impl
SupportMachine for MachineAssign
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn cycles(&self) -> u64 { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.cycles() + } + + fn set_cycles(&mut self, cycles: u64) { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.set_cycles(cycles) + } + + fn max_cycles(&self) -> u64 { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.max_cycles() + } + + fn set_max_cycles(&mut self, cycles: u64) { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.set_max_cycles(cycles); + } + + fn running(&self) -> bool { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.running() + } + + fn set_running(&mut self, running: bool) { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.set_running(running) + } + + fn reset(&mut self, max_cycles: u64) { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.reset(max_cycles) + } + + fn reset_signal(&mut self) -> bool { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.reset_signal() + } + + fn code(&self) -> &Bytes { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.code() + } +} + +impl
Machine for MachineAssign
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn ecall(&mut self) -> Result<(), Error> { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + for i in 0..self.expand_syscalls.len() { + if self.expand_syscalls[i].ecall(dm.inner_mut())? { + return Ok(()); + } + } + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + let result = dm.ecall(); + let cycles = dm.cycles(); + if result == Err(Error::Yield) { + dm.set_cycles(0); + self.scheduler.iterate_process_results(self.id, Err(Error::Yield), cycles)?; + self.scheduler.consumed_cycles_add(self.scheduler.current_iteration_cycles)?; + self.wait()?; + return Ok(()); + } + if dm.registers()[A7] == 93 { + dm.set_cycles(0); + self.scheduler.consumed_cycles_add(cycles)?; + return Ok(()); + } + result + } + + fn ebreak(&mut self) -> Result<(), Error> { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + dm.ebreak() + } +} + +impl
std::fmt::Display for MachineAssign
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + let dm = &self.scheduler.instantiated.get(&self.id).unwrap().1.machine; + dm.fmt(f) + } +} + +impl
MachineAssign
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + pub fn new(id: u64, args: &[Bytes], scheduler: Scheduler
) -> Result { + let mut r = Self { id: id, scheduler: scheduler, expand_cycles: u64::MAX, expand_syscalls: vec![] }; + if r.scheduler.states.is_empty() { + assert_eq!(r.scheduler.boot_vm(&DataPieceId::Program, 0, u64::MAX, args)?, ROOT_VM_ID); + } + Ok(r) + } + + pub fn exit_code(&self) -> i8 { + let root_vm = &self.scheduler.instantiated[&ROOT_VM_ID]; + root_vm.1.machine.exit_code() + } + + pub fn step(&mut self, decoder: &mut Decoder) -> Result<(), Error> { + let instruction = { + let pc = *self.pc(); + let memory = self.memory_mut(); + decoder.decode(memory, pc)? + }; + let cycles = estimate_cycles(instruction); + self.add_cycles(cycles)?; + execute(instruction, self) + } + + pub fn wait(&mut self) -> Result<(), Error> { + loop { + self.scheduler.current_iteration_cycles = 0; + let im = self.scheduler.iterate_prepare_machine(Pause::new(), self.expand_cycles)?; + let id = im.0; + let vm = im.1; + if self.id == id { + break; + } + let result = vm.run(); + let cycles = vm.machine.cycles(); + vm.machine.set_cycles(0); + self.scheduler.iterate_process_results(id, result, cycles)?; + self.scheduler.consumed_cycles_add(self.scheduler.current_iteration_cycles)?; + self.expand_cycles = self.expand_cycles.checked_sub(self.scheduler.current_iteration_cycles).unwrap(); + } + Ok(()) + } + + pub fn done(&mut self) -> Result<(), Error> { + let dm = &mut self.scheduler.instantiated.get_mut(&self.id).unwrap().1.machine; + let dmexit = dm.exit_code(); + self.scheduler.iterate_process_results(self.id, Ok(dmexit), 0)?; + self.scheduler.consumed_cycles_add(self.scheduler.current_iteration_cycles)?; + self.scheduler.run(RunMode::LimitCycles(self.expand_cycles))?; + return Ok(()); + } +} diff --git a/ckb-debugger/src/machine_gdb.rs b/ckb-debugger/src/machine_gdb.rs new file mode 100644 index 0000000..16cf753 --- /dev/null +++ b/ckb-debugger/src/machine_gdb.rs @@ -0,0 +1,699 @@ +use crate::machine_assign::MachineAssign; +use ckb_traits::{CellDataProvider, ExtensionProvider, HeaderProvider}; +use ckb_vm::cost_model::estimate_cycles; +use ckb_vm::{ + bytes::Bytes, + decoder::{build_decoder, Decoder}, + instructions::{execute, extract_opcode, insts}, + machine::{CoreMachine, Machine, SupportMachine}, + registers::A7, + Error, Memory, Register, +}; +use gdbstub::{ + arch::Arch, + common::Signal, + conn::{Connection, ConnectionExt}, + stub::{ + run_blocking::{BlockingEventLoop, Event, WaitForStopReasonError}, + SingleThreadStopReason, + }, + target::{ + ext::{ + base::{ + single_register_access::{SingleRegisterAccess, SingleRegisterAccessOps}, + singlethread::{ + SingleThreadBase, SingleThreadRangeStepping, SingleThreadRangeSteppingOps, SingleThreadResume, + SingleThreadResumeOps, SingleThreadSingleStep, SingleThreadSingleStepOps, + }, + BaseOps, + }, + breakpoints::{ + Breakpoints, BreakpointsOps, HwWatchpoint, HwWatchpointOps, SwBreakpoint, SwBreakpointOps, WatchKind, + }, + catch_syscalls::{CatchSyscallPosition, CatchSyscalls, CatchSyscallsOps, SyscallNumbers}, + }, + Target, TargetError, TargetResult, + }, +}; +use gdbstub_arch::riscv::reg::id::RiscvRegId; +use gdbstub_arch::riscv::Riscv64; +use std::collections::HashSet; +use std::fmt::Debug; +use std::marker::PhantomData; + +#[derive(Debug, Clone)] +pub enum ExecMode { + Step, + Continue, + RangeStep(u64, u64), +} + +pub enum FilteredSyscalls { + None, + All, + Filter(HashSet), +} + +impl FilteredSyscalls { + pub fn filtered(&self, syscall_number: &u64) -> bool { + match self { + FilteredSyscalls::None => false, + FilteredSyscalls::All => true, + FilteredSyscalls::Filter(filter) => filter.contains(syscall_number), + } + } +} + +pub struct GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + pub machine: MachineAssign
, + exec_mode: ExecMode, + decoder: Decoder, + breakpoints: Vec, + catch_syscalls: FilteredSyscalls, + watchpoints: Vec<(u64, WatchKind)>, + memory_writes: Vec, + memory_reads: Vec, +} + +// Note a lot of code in this file is copied over from +// https://github.com/daniel5151/gdbstub/blob/36f166e1aabe47ea2f0508207372e4a302fbac87/examples/armv4t/emu.rs +#[derive(Debug, Clone, PartialEq, Eq)] +enum VmEvent { + IncomingData, + DoneStep, + Exited(u8), + Break, + WatchWrite(u64), + WatchRead(u64), + CatchSyscall(u64), + Error(Error), +} + +impl
GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + pub fn new(machine: MachineAssign
) -> Self { + let decoder = build_decoder::(machine.isa(), machine.version()); + Self { + machine, + decoder, + exec_mode: ExecMode::Continue, + breakpoints: vec![], + catch_syscalls: FilteredSyscalls::None, + watchpoints: vec![], + memory_writes: vec![], + memory_reads: vec![], + } + } + + fn clear_memory_ops(&mut self) { + self.memory_writes.clear(); + self.memory_reads.clear(); + } +} + +impl
GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + pub fn run_till_exited(mut self) -> Result<(i8, u64), Error> { + while self.machine.running() { + self.step_inner()?; + } + Ok((self.machine.exit_code(), self.machine.scheduler.consumed_cycles())) + } + + fn next_opcode(&mut self) -> Option { + let pc = self.machine.pc().to_u64(); + let memory = self.machine.memory_mut(); + let inst = self.decoder.decode(memory, pc).ok()?; + Some(extract_opcode(inst)) + } + + fn step_inner(&mut self) -> Result<(), Error> { + let instruction = { + let pc = self.machine.pc().to_u64(); + let memory = self.machine.memory_mut(); + self.decoder.decode(memory, pc)? + }; + let cycles = estimate_cycles(instruction); + self.machine.add_cycles(cycles)?; + self.clear_memory_ops(); + execute(instruction, self) + } + + fn step(&mut self) -> Option { + if self.machine.reset_signal() { + self.decoder.reset_instructions_cache() + } + if !self.machine.running() { + return Some(VmEvent::Exited(self.machine.exit_code() as u8)); + } + match self.step_inner() { + Ok(_) => { + if let Some(opcode) = self.next_opcode() { + if opcode == insts::OP_ECALL { + let number = self.machine.registers()[A7].clone(); + if self.catch_syscalls.filtered(&number) { + return Some(VmEvent::CatchSyscall(number)); + } + } + } + if self.breakpoints.contains(self.machine.pc()) { + return Some(VmEvent::Break); + } + if !self.memory_writes.is_empty() { + return Some(VmEvent::WatchWrite(self.memory_writes.pop().unwrap())); + } + if !self.memory_reads.is_empty() { + return Some(VmEvent::WatchRead(self.memory_reads.pop().unwrap())); + } + None + } + Err(e) => Some(VmEvent::Error(e)), + } + } + + fn execute(&mut self, mut poll_incoming_data: impl FnMut() -> bool) -> VmEvent { + if poll_incoming_data() { + return VmEvent::IncomingData; + } + match self.exec_mode.clone() { + ExecMode::Step => self.step().unwrap_or(VmEvent::DoneStep), + ExecMode::Continue => { + let mut executed_cycles = 0; + loop { + if let Some(event) = self.step() { + let mut continue_step = true; + match event { + VmEvent::DoneStep | VmEvent::Exited(_) | VmEvent::Break | VmEvent::Error(_) => { + continue_step = false; + } + _ => {} + }; + if !continue_step { + break event; + } + } + + executed_cycles += 1; + if executed_cycles % 1024 == 0 && poll_incoming_data() { + break VmEvent::IncomingData; + } + } + } + ExecMode::RangeStep(start, end) => { + let mut executed_cycles = 0; + loop { + if let Some(event) = self.step() { + break event; + } + + if !(start.to_u64()..end.to_u64()).contains(&self.machine.pc().to_u64()) { + break VmEvent::DoneStep; + } + + executed_cycles += 1; + if executed_cycles % 1024 == 0 && poll_incoming_data() { + break VmEvent::IncomingData; + } + } + } + } + } +} + +impl
Target for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + type Arch = Riscv64; + type Error = Error; + + fn base_ops(&mut self) -> BaseOps { + BaseOps::SingleThread(self) + } + + fn support_breakpoints(&mut self) -> Option> { + Some(self) + } + + fn support_catch_syscalls(&mut self) -> Option> { + Some(self) + } +} + +impl
SingleThreadBase for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn read_registers(&mut self, regs: &mut ::Registers) -> TargetResult<(), Self> { + for (i, val) in self.machine.registers().iter().enumerate() { + regs.x[i] = val.clone().to_u64(); + } + regs.pc = self.machine.pc().clone().to_u64(); + Ok(()) + } + + fn write_registers(&mut self, regs: &::Registers) -> TargetResult<(), Self> { + regs.x.iter().enumerate().for_each(|(i, val)| { + self.machine.set_register(i, val.clone()); + }); + self.machine.update_pc(regs.pc.clone()); + self.machine.commit_pc(); + Ok(()) + } + + fn read_addrs(&mut self, start_addr: ::Usize, data: &mut [u8]) -> TargetResult { + for i in 0..data.len() { + data[i] = + self.machine.memory_mut().load8(&(start_addr.to_u64() + i as u64)).map_err(TargetError::Fatal)?.to_u8(); + } + Ok(data.len()) + } + + fn write_addrs(&mut self, start_addr: ::Usize, data: &[u8]) -> TargetResult<(), Self> { + self.machine.memory_mut().store_bytes(start_addr.to_u64(), data).map_err(TargetError::Fatal) + } + + fn support_single_register_access(&mut self) -> Option> { + Some(self) + } + + fn support_resume(&mut self) -> Option> { + Some(self) + } +} + +impl
SingleRegisterAccess<()> for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn read_register( + &mut self, + _tid: (), + reg_id: ::RegId, + buf: &mut [u8], + ) -> TargetResult { + let value = match reg_id { + RiscvRegId::Pc => self.machine.pc(), + RiscvRegId::Gpr(idx) => &self.machine.registers()[idx as usize], + _ => return Err(TargetError::Fatal(Error::External(format!("Invalid register id: {:?}", reg_id)))), + }; + buf.copy_from_slice(&value.to_u64().to_le_bytes()[0..(u64::BITS as usize / 8)]); + Ok(buf.len()) + } + + fn write_register(&mut self, _tid: (), reg_id: ::RegId, val: &[u8]) -> TargetResult<(), Self> { + let mut u64_buf = [0u8; 8]; + u64_buf[0..val.len()].copy_from_slice(val); + let v = u64::from_le_bytes(u64_buf); + match reg_id { + RiscvRegId::Pc => { + self.machine.update_pc(v); + self.machine.commit_pc(); + } + RiscvRegId::Gpr(idx) => { + self.machine.set_register(idx as usize, v); + } + _ => return Err(TargetError::Fatal(Error::External(format!("Invalid register id: {:?}", reg_id)))), + }; + + Ok(()) + } +} + +// This is only for setting execution modes, the actual execution shall live within +// BlockingEventLoop trait impl. +impl
SingleThreadResume for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn resume(&mut self, signal: Option) -> Result<(), Self::Error> { + if signal.is_some() { + return Err(Error::External("no support for continuing with signal".to_string())); + } + self.exec_mode = ExecMode::Continue; + Ok(()) + } + + fn support_single_step(&mut self) -> Option> { + Some(self) + } + + fn support_range_step(&mut self) -> Option> { + Some(self) + } +} + +impl
SingleThreadRangeStepping for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn resume_range_step(&mut self, start: u64, end: u64) -> Result<(), Self::Error> { + self.exec_mode = ExecMode::RangeStep(start, end); + Ok(()) + } +} + +impl
SingleThreadSingleStep for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn step(&mut self, signal: Option) -> Result<(), Self::Error> { + if signal.is_some() { + return Err(Error::External("no support for stepping with signal".to_string())); + } + self.exec_mode = ExecMode::Step; + Ok(()) + } +} + +impl
Breakpoints for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn support_sw_breakpoint(&mut self) -> Option> { + Some(self) + } + + fn support_hw_watchpoint(&mut self) -> Option> { + Some(self) + } +} + +impl
SwBreakpoint for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn add_sw_breakpoint( + &mut self, + addr: ::Usize, + _kind: ::BreakpointKind, + ) -> TargetResult { + self.breakpoints.push(addr); + Ok(true) + } + + fn remove_sw_breakpoint( + &mut self, + addr: ::Usize, + _kind: ::BreakpointKind, + ) -> TargetResult { + match self.breakpoints.iter().position(|x| *x == addr) { + None => return Ok(false), + Some(pos) => self.breakpoints.remove(pos), + }; + + Ok(true) + } +} + +impl
HwWatchpoint for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn add_hw_watchpoint( + &mut self, + addr: ::Usize, + _len: ::Usize, + kind: WatchKind, + ) -> TargetResult { + self.watchpoints.push((addr, kind)); + Ok(true) + } + + fn remove_hw_watchpoint( + &mut self, + addr: ::Usize, + _len: ::Usize, + kind: WatchKind, + ) -> TargetResult { + match self.watchpoints.iter().position(|(a, k)| *a == addr && *k == kind) { + None => return Ok(false), + Some(pos) => self.breakpoints.remove(pos), + }; + + Ok(true) + } +} + +impl
CatchSyscalls for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn enable_catch_syscalls( + &mut self, + filter: Option::Usize>>, + ) -> TargetResult<(), Self> { + self.catch_syscalls = match filter { + Some(numbers) => FilteredSyscalls::Filter(numbers.collect()), + None => FilteredSyscalls::All, + }; + Ok(()) + } + + fn disable_catch_syscalls(&mut self) -> TargetResult<(), Self> { + self.catch_syscalls = FilteredSyscalls::None; + Ok(()) + } +} + +#[derive(Default)] +pub struct GdbStubHandlerEventLoop
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + dl: PhantomData
, +} + +impl
BlockingEventLoop for GdbStubHandlerEventLoop
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + type Target = GdbStubHandler
; + type Connection = Box>; + type StopReason = SingleThreadStopReason; + + fn on_interrupt( + _target: &mut Self::Target, + ) -> Result>, as Target>::Error> { + Ok(Some(SingleThreadStopReason::Signal(Signal::SIGINT))) + } + + #[allow(clippy::type_complexity)] + fn wait_for_stop_reason( + target: &mut Self::Target, + conn: &mut Self::Connection, + ) -> Result< + Event>, + WaitForStopReasonError<::Error, ::Error>, + > { + let poll_incoming_data = || conn.peek().map(|b| b.is_some()).unwrap_or(true); + + Ok(match target.execute(poll_incoming_data) { + VmEvent::IncomingData => { + let byte = conn.read().map_err(WaitForStopReasonError::Connection)?; + Event::IncomingData(byte) + } + VmEvent::DoneStep => Event::TargetStopped(SingleThreadStopReason::DoneStep), + VmEvent::Exited(code) => Event::TargetStopped(SingleThreadStopReason::Exited(code)), + VmEvent::Break => Event::TargetStopped(SingleThreadStopReason::SwBreak(())), + VmEvent::WatchRead(addr) => Event::TargetStopped(SingleThreadStopReason::Watch { + tid: (), + kind: WatchKind::Read, + addr: addr.to_u64(), + }), + VmEvent::WatchWrite(addr) => Event::TargetStopped(SingleThreadStopReason::Watch { + tid: (), + kind: WatchKind::Write, + addr: addr.to_u64(), + }), + VmEvent::CatchSyscall(number) => Event::TargetStopped(SingleThreadStopReason::CatchSyscall { + tid: None, + number: number.to_u64(), + position: CatchSyscallPosition::Entry, + }), + VmEvent::Error(e) => return Err(WaitForStopReasonError::Target(e)), + }) + } +} + +impl
Memory for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + type REG = u64; + + fn new() -> Self { + todo!() + } + + fn new_with_memory(_: usize) -> Self { + todo!() + } + + fn memory_size(&self) -> usize { + self.machine.memory().memory_size() + } + + fn load_bytes(&mut self, addr: u64, size: u64) -> Result { + self.machine.memory_mut().load_bytes(addr, size) + } + + fn lr(&self) -> &::REG { + self.machine.memory().lr() + } + + fn set_lr(&mut self, addr: &::REG) { + self.machine.memory_mut().set_lr(addr) + } + + fn init_pages( + &mut self, + addr: u64, + size: u64, + flags: u8, + source: Option, + offset_from_addr: u64, + ) -> Result<(), Error> { + self.machine.memory_mut().init_pages(addr, size, flags, source, offset_from_addr) + } + + fn fetch_flag(&mut self, page: u64) -> Result { + self.machine.memory_mut().fetch_flag(page) + } + + fn set_flag(&mut self, page: u64, flag: u8) -> Result<(), Error> { + self.machine.memory_mut().set_flag(page, flag) + } + + fn clear_flag(&mut self, page: u64, flag: u8) -> Result<(), Error> { + self.machine.memory_mut().clear_flag(page, flag) + } + + fn store_byte(&mut self, addr: u64, size: u64, value: u8) -> Result<(), Error> { + self.machine.memory_mut().store_byte(addr, size, value) + } + + fn store_bytes(&mut self, addr: u64, value: &[u8]) -> Result<(), Error> { + self.machine.memory_mut().store_bytes(addr, value) + } + + fn execute_load16(&mut self, addr: u64) -> Result { + self.machine.memory_mut().execute_load16(addr) + } + + fn execute_load32(&mut self, addr: u64) -> Result { + self.machine.memory_mut().execute_load32(addr) + } + + fn load8(&mut self, addr: &Self::REG) -> Result { + let result = self.machine.memory_mut().load8(addr)?; + self.memory_reads.push(addr.clone()); + Ok(result) + } + + fn load16(&mut self, addr: &Self::REG) -> Result { + let result = self.machine.memory_mut().load16(addr)?; + self.memory_reads.push(addr.clone()); + Ok(result) + } + + fn load32(&mut self, addr: &Self::REG) -> Result { + let result = self.machine.memory_mut().load32(addr)?; + self.memory_reads.push(addr.clone()); + Ok(result) + } + + fn load64(&mut self, addr: &Self::REG) -> Result { + let result = self.machine.memory_mut().load64(addr)?; + self.memory_reads.push(addr.clone()); + Ok(result) + } + + fn store8(&mut self, addr: &Self::REG, value: &Self::REG) -> Result<(), Error> { + self.machine.memory_mut().store8(addr, value)?; + self.memory_writes.push(addr.clone()); + Ok(()) + } + + fn store16(&mut self, addr: &Self::REG, value: &Self::REG) -> Result<(), Error> { + self.machine.memory_mut().store16(addr, value)?; + self.memory_writes.push(addr.clone()); + Ok(()) + } + + fn store32(&mut self, addr: &Self::REG, value: &Self::REG) -> Result<(), Error> { + self.machine.memory_mut().store32(addr, value)?; + self.memory_writes.push(addr.clone()); + Ok(()) + } + + fn store64(&mut self, addr: &Self::REG, value: &Self::REG) -> Result<(), Error> { + self.machine.memory_mut().store64(addr, value)?; + self.memory_writes.push(addr.clone()); + Ok(()) + } +} + +impl
CoreMachine for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + type REG = u64; + type MEM = Self; + + fn pc(&self) -> &Self::REG { + self.machine.pc() + } + + fn update_pc(&mut self, pc: Self::REG) { + self.machine.update_pc(pc) + } + + fn commit_pc(&mut self) { + self.machine.commit_pc() + } + + fn memory(&self) -> &Self::MEM { + self + } + + fn memory_mut(&mut self) -> &mut Self::MEM { + self + } + + fn registers(&self) -> &[Self::REG] { + self.machine.registers() + } + + fn set_register(&mut self, idx: usize, value: Self::REG) { + self.machine.set_register(idx, value) + } + + fn version(&self) -> u32 { + self.machine.version() + } + + fn isa(&self) -> u8 { + self.machine.isa() + } +} + +impl
Machine for GdbStubHandler
+where + DL: CellDataProvider + HeaderProvider + ExtensionProvider + Send + Sync + Clone + 'static, +{ + fn ecall(&mut self) -> Result<(), Error> { + self.machine.ecall() + } + + fn ebreak(&mut self) -> Result<(), Error> { + self.machine.ebreak() + } +} diff --git a/ckb-debugger/src/main.rs b/ckb-debugger/src/main.rs index 4dd1cc5..a1d559b 100644 --- a/ckb-debugger/src/main.rs +++ b/ckb-debugger/src/main.rs @@ -1,60 +1,47 @@ -use ckb_chain_spec::consensus::ConsensusBuilder; -use ckb_debugger_api::embed::Embed; -use ckb_debugger_api::DummyResourceLoader; -use ckb_debugger_api::{check, get_script_hash_by_index}; -use ckb_mock_tx_types::{MockTransaction, ReprMockTransaction, Resource}; -use ckb_script::cost_model::transferred_byte_cycles; -use ckb_script::{ - update_caller_machine, MachineContext, ResumableMachine, ScriptGroupType, ScriptVersion, - TransactionScriptsVerifier, TxVerifyEnv, +use ckb_chain_spec::consensus::{ConsensusBuilder, TYPE_ID_CODE_HASH}; +#[cfg(target_family = "unix")] +use ckb_debugger::Stdio; +use ckb_debugger::{ + get_script_hash_by_index, pre_check, ElfDumper, FileOperation, FileStream, HumanReadableCycles, MachineAnalyzer, + MachineAssign, MachineOverlap, MachineProfile, MachineStepLog, Random, TimeNow, }; -use ckb_types::core::cell::resolve_transaction; -use ckb_types::core::HeaderView; -use ckb_types::packed::Byte32; -use ckb_types::prelude::Entity; +use ckb_debugger::{Embed, GdbStubHandler, GdbStubHandlerEventLoop}; +use ckb_mock_tx_types::{MockCellDep, MockInfo, MockInput, MockTransaction, ReprMockTransaction, Resource}; +use ckb_script::{ScriptGroupType, ScriptVersion, TransactionScriptsVerifier, TxVerifyEnv, ROOT_VM_ID}; +use ckb_types::core::cell::{resolve_transaction, CellMetaBuilder}; +use ckb_types::core::{hardfork, Capacity, DepType, HeaderView, ScriptHashType, TransactionBuilder}; +use ckb_types::packed::{Byte32, CellDep, CellInput, CellOutput, OutPoint, Script, ScriptOpt}; +use ckb_types::prelude::{Builder, Entity, Pack}; use ckb_vm::cost_model::estimate_cycles; use ckb_vm::decoder::build_decoder; use ckb_vm::error::Error; -use ckb_vm::instructions::extract_opcode; -use ckb_vm::instructions::insts::OP_ECALL; -use ckb_vm::memory::flat::FlatMemory; -use ckb_vm::registers::A7; -use ckb_vm::{ - Bytes, CoreMachine, DefaultCoreMachine, DefaultMachine, DefaultMachineBuilder, Register, SupportMachine, - WXorXMemory, -}; -use ckb_vm_debug_utils::ElfDumper; -#[cfg(feature = "stdio")] -use ckb_vm_debug_utils::Stdio; -use ckb_vm_pprof::{PProfMachine, Profile}; +use ckb_vm::instructions::execute; +use ckb_vm::machine::VERSION2; +use ckb_vm::{Bytes, CoreMachine, Register, SupportMachine}; use clap::{crate_version, App, Arg}; -use serde_json::from_str as from_json_str; -use serde_plain::from_str as from_plain_str; -use std::fs::{read, read_to_string}; +use gdbstub::{ + conn::ConnectionExt, + stub::{DisconnectReason, GdbStub}, +}; +use probe::probe; +use std::collections::HashSet; +use std::io::{BufRead, Read}; use std::net::TcpListener; use std::path::PathBuf; -use std::sync::{Arc, Mutex}; -use std::{collections::HashSet, io::Read}; -mod decode; -mod misc; -use decode::decode_instruction; -use misc::{FileOperation, FileStream, HumanReadableCycles, Random, TimeNow}; - -#[cfg(feature = "probes")] -type MemoryType = ckb_vm::FlatMemory; -#[cfg(not(feature = "probes"))] -type MemoryType = ckb_vm::SparseMemory; +use std::sync::Arc; fn main() -> Result<(), Box> { drop(env_logger::init()); + let default_gdb_listen = "127.0.0.1:9999"; let default_max_cycles = format!("{}", 70_000_000u64); - let default_script_version = "2"; let default_mode = "full"; - let default_gdb_specify_depth = "0"; + let default_pid = ROOT_VM_ID.to_string(); + let default_script_version = "2"; let matches = App::new("ckb-debugger") .version(crate_version!()) + .arg(Arg::with_name("args").multiple(true)) .arg( Arg::with_name("bin") .long("bin") @@ -71,19 +58,25 @@ fn main() -> Result<(), Box> { .takes_value(true), ) .arg(Arg::with_name("dump-file").long("dump-file").help("Dump file name").takes_value(true)) + .arg( + Arg::with_name("enable-overlapping-detection") + .long("enable-overlapping-detection") + .required(false) + .takes_value(false) + .help("Set to true to enable overlapping detection between stack and heap"), + ) + .arg( + Arg::with_name("enable-steplog") + .long("enable-steplog") + .help("Set to true to enable step mode, where we print PC address for each instruction"), + ) .arg( Arg::with_name("gdb-listen") .long("gdb-listen") + .default_value(default_gdb_listen) .help("Address to listen for GDB remote debugging server") .takes_value(true), ) - .arg( - Arg::with_name("gdb-specify-depth") - .long("gdb-specify-depth") - .help("Specifies the depth of the exec/spawn stack") - .default_value(&default_gdb_specify_depth) - .takes_value(true), - ) .arg( Arg::with_name("max-cycles") .long("max-cycles") @@ -95,18 +88,31 @@ fn main() -> Result<(), Box> { Arg::with_name("mode") .long("mode") .help("Execution mode of debugger") - .possible_values(&["full", "fast", "gdb", "probe", "gdb_gdbstub"]) + .possible_values(&["decode-instruction", "fast", "full", "gdb", "probe"]) .default_value(&default_mode) .required(true) .takes_value(true), ) + .arg(Arg::with_name("pid").long("pid").default_value(&default_pid).help("Process ID").takes_value(true)) .arg( Arg::with_name("pprof") .long("pprof") .help("Performance profiling, specify output file for further use") .takes_value(true), ) - .arg(Arg::with_name("script-hash").long("script-hash").help("Script hash").takes_value(true)) + .arg( + Arg::with_name("prompt") + .long("prompt") + .required(false) + .takes_value(false) + .help("Set to true to prompt for stdin input before executing"), + ) + .arg( + Arg::with_name("read-file") + .long("read-file") + .help("Read content from local file or stdin. Then feed the content to syscall in scripts") + .takes_value(true), + ) .arg( Arg::with_name("script-group-type") .long("script-group-type") @@ -115,6 +121,7 @@ fn main() -> Result<(), Box> { .help("Script group type") .takes_value(true), ) + .arg(Arg::with_name("script-hash").long("script-hash").help("Script hash").takes_value(true)) .arg( Arg::with_name("script-version") .long("script-version") @@ -122,115 +129,160 @@ fn main() -> Result<(), Box> { .help("Script version") .takes_value(true), ) - .arg( - Arg::with_name("skip-end") - .long("skip-end") - .help("End address to skip printing debug info") - .takes_value(true), - ) - .arg( - Arg::with_name("skip-start") - .long("skip-start") - .help("Start address to skip printing debug info") - .takes_value(true), - ) - .arg( - Arg::with_name("step") - .long("step") - .multiple(true) - .help("Set to true to enable step mode, where we print PC address for each instruction"), - ) - .arg( - Arg::with_name("prompt") - .long("prompt") - .required(false) - .takes_value(false) - .help("Set to true to prompt for stdin input before executing"), - ) .arg( Arg::with_name("tx-file") .long("tx-file") .short("f") - .required_unless_one(&["bin", "decode"]) .help("Filename containing JSON formatted transaction dump") .takes_value(true), ) - .arg( - Arg::with_name("read-file") - .long("read-file") - .help("Read content from local file or stdin. Then feed the content to syscall in scripts") - .takes_value(true), - ) - .arg(Arg::with_name("args").multiple(true)) - .arg( - Arg::with_name("decode") - .long("decode") - .help("Decode RISC-V instruction") - .takes_value(true) - .conflicts_with_all(&["bin", "tx-file"]), - ) - .arg( - Arg::with_name("disable-overlapping-detection") - .long("disable-overlapping-detection") - .required(false) - .takes_value(false) - .help("Set to true to disable overlapping detection between stack and heap"), - ) .get_matches(); + let matches_args = matches.values_of("args").unwrap_or_default(); let matches_bin = matches.value_of("bin"); let matches_cell_index = matches.value_of("cell-index"); let matches_cell_type = matches.value_of("cell-type"); - let matches_decode = matches.value_of_lossy("decode"); - let matches_pprof = matches.value_of("pprof"); let matches_dump_file = matches.value_of("dump-file"); - let matches_gdb_listen = matches.value_of("gdb-listen"); - let matches_gdb_specify_depth = matches.value_of("gdb-specify-depth").unwrap(); + let matches_enable_overlapping_detection = matches.is_present("enable-overlapping-detection"); + let matches_enable_steplog = matches.is_present("enable-steplog"); + let matches_gdb_listen = matches.value_of("gdb-listen").unwrap(); let matches_max_cycles = matches.value_of("max-cycles").unwrap(); let matches_mode = matches.value_of("mode").unwrap(); - let matches_script_hash = matches.value_of("script-hash"); + let matches_pid = u64::from_str_radix(matches.value_of("pid").unwrap(), 10).unwrap(); + let matches_pprof = matches.value_of("pprof"); + let matches_prompt = matches.is_present("prompt"); + let matches_read_file_name = matches.value_of("read-file"); let matches_script_group_type = matches.value_of("script-group-type"); + let matches_script_hash = matches.value_of("script-hash"); let matches_script_version = matches.value_of("script-version").unwrap(); - let matches_skip_end = matches.value_of("skip-end"); - let matches_skip_start = matches.value_of("skip-start"); - let matches_step = matches.occurrences_of("step"); let matches_tx_file = matches.value_of("tx-file"); - let matches_args = matches.values_of("args").unwrap_or_default(); - let matches_read_file_name = matches.value_of("read-file"); - if matches_decode.is_some() { - decode_instruction(&matches_decode.unwrap())?; + if matches_mode == "decode-instruction" { + let args: Vec = matches_args.clone().into_iter().map(|s| s.into()).collect(); + let inst_str = &args[0]; + let inst_bin = if inst_str.starts_with("0x") { + u32::from_str_radix(&inst_str[2..], 16)? + } else { + u32::from_str_radix(&inst_str, 10)? + }; + let mut inst_tag = String::from("?"); + let mut inst_isa = String::from("?"); + if let Some(i) = ckb_vm::instructions::i::factory::(inst_bin, VERSION2) { + assert_eq!(inst_tag.as_str(), "?"); + let tagged_instruction = ckb_vm::instructions::tagged::TaggedInstruction::try_from(i).unwrap(); + inst_tag = tagged_instruction.to_string(); + inst_isa = "I".to_string(); + } + if let Some(i) = ckb_vm::instructions::m::factory::(inst_bin, VERSION2) { + assert_eq!(inst_tag.as_str(), "?"); + let tagged_instruction = ckb_vm::instructions::tagged::TaggedInstruction::try_from(i).unwrap(); + inst_tag = tagged_instruction.to_string(); + inst_isa = "M".to_string(); + } + if let Some(i) = ckb_vm::instructions::a::factory::(inst_bin, VERSION2) { + assert_eq!(inst_tag.as_str(), "?"); + let tagged_instruction = ckb_vm::instructions::tagged::TaggedInstruction::try_from(i).unwrap(); + inst_tag = tagged_instruction.to_string(); + inst_isa = "A".to_string(); + } + if let Some(i) = ckb_vm::instructions::rvc::factory::(inst_bin, VERSION2) { + assert_eq!(inst_tag.as_str(), "?"); + let tagged_instruction = ckb_vm::instructions::tagged::TaggedInstruction::try_from(i).unwrap(); + inst_tag = tagged_instruction.to_string(); + inst_isa = "C".to_string(); + } + if let Some(i) = ckb_vm::instructions::b::factory::(inst_bin, VERSION2) { + assert_eq!(inst_tag.as_str(), "?"); + let tagged_instruction = ckb_vm::instructions::tagged::TaggedInstruction::try_from(i).unwrap(); + inst_tag = tagged_instruction.to_string(); + inst_isa = "B".to_string(); + } + println!(" Assembly = {}", inst_tag); + if inst_isa == "C" { + println!(" Binary = {:016b}", inst_bin); + println!(" Hexadecimal = {:04x}", inst_bin); + } else { + println!(" Binary = {:032b}", inst_bin); + println!(" Hexadecimal = {:08x}", inst_bin); + } + println!("Instruction set = {}", inst_isa); return Ok(()); } - let verifier_args: Vec = matches_args.into_iter().map(|s| s.into()).collect(); - let verifier_args_byte: Vec = verifier_args.into_iter().map(|s| s.into()).collect(); let verifier_max_cycles: u64 = matches_max_cycles.parse()?; - let verifier_mock_tx: MockTransaction = { - let mock_tx = if matches_tx_file.is_none() { - String::from_utf8_lossy(include_bytes!("./dummy_tx.json")).to_string() - } else { - let matches_tx_file = matches_tx_file.unwrap(); - if matches_tx_file == "-" { - let mut buf = String::new(); - std::io::stdin().read_to_string(&mut buf)?; - buf - } else { - let mock_tx = read_to_string(matches_tx_file)?; - let mut mock_tx_embed = Embed::new(PathBuf::from(matches_tx_file.to_string()), mock_tx.clone()); - mock_tx_embed.replace_all() + let verifier_mock_tx: MockTransaction = match matches_tx_file { + Some("-") => { + let mut buf = String::new(); + std::io::stdin().read_to_string(&mut buf)?; + let repr_mock_tx: ReprMockTransaction = serde_json::from_str(&buf)?; + if let Err(msg) = pre_check(&repr_mock_tx) { + println!("Potential format error found: {}", msg); } - }; - let repr_mock_tx: ReprMockTransaction = from_json_str(&mock_tx)?; - if let Err(msg) = check(&repr_mock_tx) { - eprintln!("Warning, potential format error found: {}", msg); - eprintln!("If tx-file is crafted manually, please double check it.") + repr_mock_tx.into() + } + Some(doc) => { + let buf = std::fs::read_to_string(doc)?; + let mut mock_tx_embed = Embed::new(PathBuf::from(doc.to_string()), buf.clone()); + let buf = mock_tx_embed.replace_all(); + let repr_mock_tx: ReprMockTransaction = serde_json::from_str(&buf)?; + if let Err(msg) = pre_check(&repr_mock_tx) { + println!("Potential format error found: {}", msg); + } + repr_mock_tx.into() + } + None => { + let bin_path = matches_bin.unwrap(); + let bin_data = std::fs::read(bin_path)?; + let bin_cell_data = Bytes::copy_from_slice(&bin_data); + let bin_cell_type_script = Script::new_builder() + .code_hash(TYPE_ID_CODE_HASH.pack()) + .hash_type(ScriptHashType::Type.into()) + .args([0; 20].pack()) + .build(); + let bin_cell_output = CellOutput::new_builder() + .capacity(Capacity::bytes(bin_cell_data.len()).unwrap().pack()) + .type_(ScriptOpt::new_builder().set(Some(bin_cell_type_script)).build()) + .build(); + let bin_cell_meta = CellMetaBuilder::from_cell_output(bin_cell_output.clone(), bin_cell_data).build(); + let bin_cell_hash = bin_cell_meta.cell_output.type_().to_opt().unwrap().calc_script_hash(); + + let mut mock_info = MockInfo::default(); + mock_info.cell_deps.push(MockCellDep { + cell_dep: CellDep::new_builder() + .out_point(OutPoint::new(Byte32::from_slice(vec![0x00; 32].as_slice()).unwrap(), 0)) + .dep_type(DepType::Code.into()) + .build(), + output: bin_cell_output, + data: Bytes::from(bin_data.clone()), + header: None, + }); + mock_info.inputs.push(MockInput { + input: CellInput::new(OutPoint::new(Byte32::from_slice(vec![0x00; 32].as_slice()).unwrap(), 1), 0), + output: CellOutput::new_builder() + .lock(Script::new_builder().code_hash(bin_cell_hash).hash_type(ScriptHashType::Type.into()).build()) + .build_exact_capacity(Capacity::bytes(bin_data.len()).unwrap()) + .unwrap(), + data: Bytes::new(), + header: None, + }); + + let tx = TransactionBuilder::default(); + let tx = tx.cell_dep(mock_info.cell_deps[0].cell_dep.clone()); + let tx = tx.input(mock_info.inputs[0].input.clone()); + let tx = tx.output( + CellOutput::new_builder() + .capacity(Capacity::zero().pack()) + .lock(mock_info.inputs[0].output.lock()) + .build(), + ); + let tx = tx.build(); + + MockTransaction { mock_info: mock_info, tx: tx.data() } } - repr_mock_tx.into() }; let verifier_script_group_type = { - let script_group_type = if matches_tx_file.is_none() { "type" } else { matches_script_group_type.unwrap() }; - from_plain_str(script_group_type)? + let script_group_type = if matches_tx_file.is_none() { "lock" } else { matches_script_group_type.unwrap() }; + serde_plain::from_str(script_group_type)? }; let verifier_script_hash = if matches_tx_file.is_none() { verifier_mock_tx.mock_info.inputs[0].output.calc_lock_hash() @@ -250,7 +302,7 @@ fn main() -> Result<(), Box> { } if cell_index.is_none() { cell_index = Some("0"); - println!("cell_index is not specified. Assume --cell-index = 0") + println!("The cell_index is not specified. Assume --cell-index = 0") } } ScriptGroupType::Type => { @@ -267,25 +319,37 @@ fn main() -> Result<(), Box> { "0" => ScriptVersion::V0, "1" => ScriptVersion::V1, "2" => ScriptVersion::V2, - _ => panic!("wrong script version"), + _ => panic!("Wrong script version"), }; - let verifier_resource = Resource::from_both(&verifier_mock_tx, DummyResourceLoader {})?; + let verifier_resource = Resource::from_mock_tx(&verifier_mock_tx)?; let verifier_resolve_transaction = resolve_transaction( verifier_mock_tx.core_transaction(), &mut HashSet::new(), &verifier_resource, &verifier_resource, )?; - let consensus = Arc::new(ConsensusBuilder::default().build()); - let tx_env = Arc::new(TxVerifyEnv::new_commit(&HeaderView::new_advanced_builder().build())); - let mut verifier = TransactionScriptsVerifier::new( - Arc::new(verifier_resolve_transaction), - verifier_resource, - consensus.clone(), - tx_env.clone(), - ); + let mut verifier = { + let hardforks = hardfork::HardForks { + ckb2021: hardfork::CKB2021::new_mirana().as_builder().rfc_0032(20).build().unwrap(), + ckb2023: hardfork::CKB2023::new_mirana().as_builder().rfc_0049(30).build().unwrap(), + }; + let consensus = Arc::new(ConsensusBuilder::default().hardfork_switch(hardforks).build()); + let epoch = match verifier_script_version { + ScriptVersion::V0 => ckb_types::core::EpochNumberWithFraction::new(15, 0, 1), + ScriptVersion::V1 => ckb_types::core::EpochNumberWithFraction::new(25, 0, 1), + ScriptVersion::V2 => ckb_types::core::EpochNumberWithFraction::new(35, 0, 1), + }; + let header_view = HeaderView::new_advanced_builder().epoch(epoch.pack()).build(); + let tx_env = Arc::new(TxVerifyEnv::new_commit(&header_view)); + TransactionScriptsVerifier::new( + Arc::new(verifier_resolve_transaction.clone()), + verifier_resource.clone(), + consensus.clone(), + tx_env.clone(), + ) + }; verifier.set_debug_printer(Box::new(move |_hash: &Byte32, message: &str| { - print!("{}", message); + print!("Script log: {}", message); if !message.ends_with('\n') { println!(""); } @@ -293,97 +357,61 @@ fn main() -> Result<(), Box> { let verifier_script_group = verifier.find_script_group(verifier_script_group_type, &verifier_script_hash).unwrap(); let verifier_program = match matches_bin { Some(path) => { - let data = read(path)?; + let data = std::fs::read(path)?; data.into() } None => verifier.extract_script(&verifier_script_group.script)?, }; - let machine_context = Arc::new(Mutex::new(MachineContext::default())); - let machine_init = || { - let machine_core = DefaultCoreMachine::>::new( - verifier_script_version.vm_isa(), - verifier_script_version.vm_version(), - verifier_max_cycles, - ); - #[cfg(feature = "stdio")] - let mut machine_builder = DefaultMachineBuilder::new(machine_core) - .instruction_cycle_func(Box::new(estimate_cycles)) - .syscall(Box::new(Stdio::new(false))); - #[cfg(not(feature = "stdio"))] - let mut machine_builder = - DefaultMachineBuilder::new(machine_core).instruction_cycle_func(Box::new(estimate_cycles)); + let machine_assign_init = || -> Result<_, Box> { + let args: Vec = matches_args.clone().into_iter().map(|s| s.into()).collect(); + let args: Vec = args.into_iter().map(|s| s.into()).collect(); + let mut scheduler = verifier.create_scheduler(&verifier_script_group).unwrap(); + scheduler.tx_data.program = verifier_program.clone(); + let mut machine_assign = MachineAssign::new(matches_pid, &args, scheduler)?; + machine_assign.expand_cycles = verifier_max_cycles; if let Some(data) = matches_dump_file { - machine_builder = machine_builder.syscall(Box::new(ElfDumper::new(data.to_string(), 4097, 64))); + machine_assign.expand_syscalls.push(Box::new(ElfDumper::new(data.to_string(), 4097, 64))); } - let machine_syscalls = - verifier.generate_syscalls(verifier_script_version, verifier_script_group, machine_context.clone()); - machine_builder = - machine_syscalls.into_iter().fold(machine_builder, |builder, syscall| builder.syscall(syscall)); - if let Some(file_name) = matches_read_file_name { - machine_builder = machine_builder.syscall(Box::new(FileStream::new(file_name))); + machine_assign.expand_syscalls.push(Box::new(FileOperation::new())); + if let Some(name) = matches_read_file_name { + machine_assign.expand_syscalls.push(Box::new(FileStream::new(name))); } - let machine_builder = machine_builder.syscall(Box::new(TimeNow::new())); - let machine_builder = machine_builder.syscall(Box::new(Random::new())); - let machine_builder = machine_builder.syscall(Box::new(FileOperation::new())); - let machine = machine_builder.build(); - machine + machine_assign.expand_syscalls.push(Box::new(Random::new())); + #[cfg(target_family = "unix")] + machine_assign.expand_syscalls.push(Box::new(Stdio::new(false))); + machine_assign.expand_syscalls.push(Box::new(TimeNow::new())); + machine_assign.wait()?; + Ok(machine_assign) }; - let machine_step = - |machine: &mut PProfMachine>>| -> Result { - machine.machine.set_running(true); - let mut decoder = - build_decoder::(verifier_script_version.vm_isa(), verifier_script_version.vm_version()); - let mut step_result = Ok(()); - let skip_range = if let (Some(s), Some(e)) = (matches_skip_start, matches_skip_end) { - let s = u64::from_str_radix(s.trim_start_matches("0x"), 16).expect("parse skip start"); - let e = u64::from_str_radix(e.trim_start_matches("0x"), 16).expect("parse skip end"); - Some(std::ops::Range { start: s, end: e }) - } else { - None - }; - while machine.machine.running() && step_result.is_ok() { - let mut print_info = true; - if let Some(skip_range) = &skip_range { - if skip_range.contains(machine.machine.pc()) { - print_info = false; - } - } - if print_info { - println!("PC: 0x{:x}", machine.machine.pc()); - if matches_step > 1 { - println!("Machine: {}", machine.machine); - } - } - step_result = machine.machine.step(&mut decoder); - } - if step_result.is_err() { - Err(step_result.unwrap_err()) - } else { - Ok(machine.machine.exit_code()) - } - }; + if matches_mode == "fast" { + let cycles = verifier.verify_single(verifier_script_group_type, &verifier_script_hash, verifier_max_cycles)?; + println!("Total cycles consumed: {}", HumanReadableCycles(cycles)); + return Ok(()); + } if matches_mode == "full" { - let mut machine = PProfMachine::new( - machine_init(), - Profile::new(&verifier_program)? - .set_disable_overlapping_detection(matches.is_present("disable-overlapping-detection")), - ); - let bytes = machine.load_program(&verifier_program, &verifier_args_byte)?; - let transferred_cycles = transferred_byte_cycles(bytes); - machine.machine.add_cycles(transferred_cycles)?; - let result = if matches_step > 0 { machine_step(&mut machine) } else { machine.run() }; + let machine_assign = machine_assign_init()?; + let machine_profile = MachineProfile::new(&machine_assign.code().clone())?; + let machine_overlap = MachineOverlap::new(&machine_assign.code().clone())?; + let machine_steplog = MachineStepLog::new(); + let mut machine = MachineAnalyzer::new(machine_assign, machine_profile, machine_overlap, machine_steplog); + if matches_enable_overlapping_detection { + machine.enable_overlap = 1; + } + if matches_enable_steplog { + machine.enable_steplog = 1; + } + let result = machine.run(); + if matches_pid != ROOT_VM_ID { + machine.machine.done()?; + } + let cycles = machine.machine.scheduler.consumed_cycles(); match result { Ok(data) => { println!("Run result: {:?}", data); - println!("Total cycles consumed: {}", HumanReadableCycles(machine.machine.cycles())); - println!( - "Transfer cycles: {}, running cycles: {}", - HumanReadableCycles(transferred_cycles), - HumanReadableCycles(machine.machine.cycles() - transferred_cycles) - ); + println!("Total cycles consumed: {}", HumanReadableCycles(cycles)); if let Some(fp) = matches_pprof { let mut output = std::fs::File::create(&fp)?; machine.profile.display_flamegraph(&mut output); @@ -391,96 +419,50 @@ fn main() -> Result<(), Box> { if data != 0 { std::process::exit(254); } + return Ok(()); } Err(err) => { - println!("Trace:"); - machine.profile.display_stacktrace(" ", &mut std::io::stdout()); - println!("Error:"); - println!(" {:?}", err); - println!("Machine: {}", machine.machine); + machine.profile.display_stacktrace("", &mut std::io::stdout()); + println!(""); + println!("{}", machine); + return Err(Box::new(err)); } } - return Ok(()); } - if matches_mode == "fast" { - let mut machine = machine_init(); - let bytes = machine.load_program(&verifier_program, &verifier_args_byte)?; - let transferred_cycles = transferred_byte_cycles(bytes); - machine.add_cycles(transferred_cycles)?; - let result = machine.run(); - println!("Run result: {:?}", result); - println!("Total cycles consumed: {}", HumanReadableCycles(machine.cycles())); - println!( - "Transfer cycles: {}, running cycles: {}", - HumanReadableCycles(transferred_cycles), - HumanReadableCycles(machine.cycles() - transferred_cycles) - ); - if let Ok(data) = result { - if data != 0 { - std::process::exit(254); - } - } - return Ok(()); - } - - if matches_mode == "gdb" || matches_mode == "gdb_gdbstub" { - let listen_address = matches_gdb_listen.unwrap(); - let listener = TcpListener::bind(listen_address)?; - println!("Listening for gdb remote connection on {}", listen_address); + if matches_mode == "gdb" { + let listener = TcpListener::bind(matches_gdb_listen)?; + println!("Listening for gdb remote connection on {}", matches_gdb_listen); for res in listener.incoming() { if let Ok(stream) = res { println!("Accepted connection from: {}, booting VM", stream.peer_addr()?); - let mut machine = machine_init(); - let bytes = machine.load_program(&verifier_program, &verifier_args_byte)?; - let transferred_cycles = transferred_byte_cycles(bytes); - machine.add_cycles(transferred_cycles)?; - machine.set_running(true); - - let specify = usize::from_str_radix(matches_gdb_specify_depth, 10).unwrap(); - let machine = machine_sget(machine, machine_context.clone(), specify)?; - - if matches_mode == "gdb" { - let h = ckb_vm_debug_utils::GdbHandler::new(machine); - ckb_gdb_remote_protocol::process_packets_from(stream.try_clone().unwrap(), stream, h); - } else if matches_mode == "gdb_gdbstub" { - use ckb_vm_debug_utils::{GdbStubHandler, GdbStubHandlerEventLoop}; - use gdbstub::{ - conn::ConnectionExt, - stub::{DisconnectReason, GdbStub}, - }; - use gdbstub_arch::riscv::Riscv64; - let mut h: GdbStubHandler<_, Riscv64> = GdbStubHandler::new(machine); - let connection: Box<(dyn ConnectionExt + 'static)> = Box::new(stream); - let gdb = GdbStub::new(connection); + let mut machine_assign = machine_assign_init()?; + machine_assign.set_running(true); + let mut h = GdbStubHandler::new(machine_assign); + let connection: Box<(dyn ConnectionExt + 'static)> = Box::new(stream); + let gdb = GdbStub::new(connection); - let result = match gdb.run_blocking::>(&mut h) { - Ok(disconnect_reason) => match disconnect_reason { - DisconnectReason::Disconnect => { - println!("GDB client has disconnected. Running to completion..."); - h.run_till_exited() - } - DisconnectReason::TargetExited(_) => h.run_till_exited(), - DisconnectReason::TargetTerminated(sig) => { - Err(Error::External(format!("Target terminated with signal {}!", sig))) - } - DisconnectReason::Kill => Err(Error::External("GDB sent a kill command!".to_string())), - }, - Err(e) => Err(Error::External(format!("gdbstub encountered a fatal error: {}", e))), - }; - match result { - Ok((exit_code, cycles)) => { - println!("Exit code: {:?}", exit_code); - println!("Total cycles consumed: {}", HumanReadableCycles(cycles)); - println!( - "Transfer cycles: {}, running cycles: {}", - HumanReadableCycles(transferred_cycles), - HumanReadableCycles(cycles - transferred_cycles) - ); + let result = match gdb.run_blocking::>(&mut h) { + Ok(disconnect_reason) => match disconnect_reason { + DisconnectReason::Disconnect => { + println!("GDB client has disconnected. Running to completion..."); + h.run_till_exited() } - Err(e) => { - println!("Error: {}", e); + DisconnectReason::TargetExited(_) => h.run_till_exited(), + DisconnectReason::TargetTerminated(sig) => { + Err(Error::External(format!("Target terminated with signal {}!", sig))) } + DisconnectReason::Kill => Err(Error::External("GDB sent a kill command!".to_string())), + }, + Err(e) => Err(Error::External(format!("Gdbstub encountered a fatal error: {}", e))), + }; + match result { + Ok((exit_code, cycles)) => { + println!("Exit code: {:?}", exit_code); + println!("Total cycles consumed: {}", HumanReadableCycles(cycles)); + } + Err(e) => { + println!("Error: {}", e); } } } @@ -489,118 +471,39 @@ fn main() -> Result<(), Box> { } if matches_mode == "probe" { - #[cfg(not(feature = "probes"))] - { - println!("To use probe mode, feature probes must be enabled!"); - return Ok(()); + if matches_prompt { + println!("Enter to start executing:"); + let mut line = String::new(); + std::io::stdin().lock().read_line(&mut line).expect("read"); } - #[cfg(feature = "probes")] - { - use ckb_vm::instructions::execute; - use probe::probe; - use std::io::BufRead; - - let prompt = matches.is_present("prompt"); - if prompt { - println!("Enter to start executing:"); - let mut line = String::new(); - std::io::stdin().lock().read_line(&mut line).expect("read"); - } - - let mut machine = machine_init(); - let bytes = machine.load_program(&verifier_program, &verifier_args_byte)?; - let transferred_cycles = transferred_byte_cycles(bytes); - machine.add_cycles(transferred_cycles)?; - - machine.set_running(true); - let mut decoder = - build_decoder::(verifier_script_version.vm_isa(), verifier_script_version.vm_version()); - - let mut step_result = Ok(()); - while machine.running() && step_result.is_ok() { - let pc = machine.pc().to_u64(); - step_result = decoder - .decode(machine.memory_mut(), pc) - .and_then(|inst| { - let cycles = machine.instruction_cycle_func()(inst); - machine.add_cycles(cycles).map(|_| inst) - }) - .and_then(|inst| { - let regs = machine.registers().as_ptr(); - let memory = (&mut machine.memory_mut().inner_mut()).as_ptr(); - let cycles = machine.cycles(); - probe!(ckb_vm, execute_inst, pc, cycles, inst, regs, memory); - let r = execute(inst, &mut machine); - let cycles = machine.cycles(); - probe!(ckb_vm, execute_inst_end, pc, cycles, inst, regs, memory, if r.is_ok() { 0 } else { 1 }); - r - }); - } - let result = step_result.map(|_| machine.exit_code()); - - println!("Run result: {:?}", result); - println!("Total cycles consumed: {}", HumanReadableCycles(machine.cycles())); - println!( - "Transfer cycles: {}, running cycles: {}", - HumanReadableCycles(transferred_cycles), - HumanReadableCycles(machine.cycles() - transferred_cycles) - ); + let mut machine = machine_assign_init()?; + machine.set_running(true); + let mut decoder = build_decoder::(verifier_script_version.vm_isa(), verifier_script_version.vm_version()); + let mut step_result = Ok(()); + while machine.running() && step_result.is_ok() { + let pc = machine.pc().to_u64(); + step_result = decoder + .decode(machine.memory_mut(), pc) + .and_then(|inst| { + let cycles = estimate_cycles(inst); + machine.add_cycles(cycles).map(|_| inst) + }) + .and_then(|inst| { + let regs = machine.registers().as_ptr(); + let memory = (&mut machine.memory_mut().inner_mut()).as_ptr(); + let cycles = machine.cycles(); + probe!(ckb_vm, execute_inst, pc, cycles, inst, regs, memory); + let r = execute(inst, &mut machine); + let cycles = machine.cycles(); + probe!(ckb_vm, execute_inst_end, pc, cycles, inst, regs, memory, if r.is_ok() { 0 } else { 1 }); + r + }); } + let result = step_result.map(|_| machine.exit_code()); + println!("Run result: {:?}", result); + println!("Total cycles consumed: {}", HumanReadableCycles(machine.scheduler.consumed_cycles())); } Ok(()) } - -fn machine_sget( - machine: DefaultMachine>>>, - context: Arc>, - specify: usize, -) -> Result>>>, Error> { - let mut machine = machine; - let mut decoder = build_decoder::(machine.isa(), machine.version()); - let mut specify = specify; - let mut machine_vec = vec![]; - let mut spawn_data = None; - while specify != 0 { - decoder.reset_instructions_cache(); - while machine.running() { - let opcode = { - let pc = machine.pc().to_u64(); - let memory = machine.memory_mut(); - extract_opcode(decoder.decode(memory, pc)?) - }; - if opcode == OP_ECALL && machine.registers()[A7] == 2043 { - machine.step(&mut decoder)?; - if machine.reset_signal() { - decoder.reset_instructions_cache() - } - specify -= 1; - break; - } - if opcode == OP_ECALL && machine.registers()[A7] == 2101 { - let cycles_current = machine.cycles(); - machine.set_cycles(machine.max_cycles() - 500); - let cycles_diff = machine.cycles() - cycles_current; - let _ = machine.step(&mut decoder); - machine.set_cycles(cycles_current + 500); - - let machine_resumable = context.lock().unwrap().suspended_machines.pop().unwrap(); - if let ResumableMachine::Spawn(mut machine_child, spawn_data_child) = machine_resumable { - machine_child.machine.inner_mut().set_max_cycles(cycles_diff); - machine_vec.push(machine); - machine = machine_child.machine; - spawn_data = Some(spawn_data_child); - } - specify -= 1; - break; - } - machine.step(&mut decoder)?; - } - if !machine.running() { - machine = machine_vec.pop().unwrap(); - update_caller_machine(&mut machine, 0, 0, &spawn_data.clone().unwrap()).unwrap(); - } - } - return Ok(machine); -} diff --git a/ckb-debugger/src/misc.rs b/ckb-debugger/src/misc.rs index b05dc2e..8d6d3b6 100644 --- a/ckb-debugger/src/misc.rs +++ b/ckb-debugger/src/misc.rs @@ -1,103 +1,133 @@ -use std::io::Read; -use std::time::SystemTime; -use std::{cmp::min, fmt, fs, io}; +use ckb_chain_spec::consensus::TYPE_ID_CODE_HASH; +use ckb_hash::blake2b_256; +use ckb_mock_tx_types::{MockResourceLoader, MockTransaction, ReprMockTransaction}; +use ckb_script::ScriptGroupType; +use ckb_types::core::{HeaderView, ScriptHashType}; +use ckb_types::packed::{Byte32, CellOutput, OutPoint, OutPointVec, Script}; +use ckb_types::prelude::{Builder, Entity, Pack}; +use ckb_types::H256; +use ckb_vm::Bytes; +use regex::{Captures, Regex}; +use std::collections::HashMap; +use std::path::{Path, PathBuf}; -use lazy_static::lazy_static; -use libc::{ - c_char, c_int, c_long, c_void, fclose, feof, ferror, fgetc, fopen, fread, freopen, fseek, ftell, size_t, FILE, -}; -use rand::prelude::*; +pub struct DummyResourceLoader {} -use ckb_vm::{ - registers::{A0, A1, A2, A3, A7}, - Error, Memory, Register, SupportMachine, Syscalls, -}; - -pub const READ_SYSCALL_NUMBER: u64 = 9000; -pub const NOW_SYSCALL_NUMBER: u64 = 9001; -pub const RANDOM_SYSCALL_NUMBER: u64 = 9002; -pub const FOPEN_SYSCALL_NUMBER: u64 = 9003; -pub const FREOPEN_SYSCALL_NUMBER: u64 = 9004; -pub const FREAD_SYSCALL_NUMBER: u64 = 9005; -pub const FEOF_SYSCALL_NUMBER: u64 = 9006; -pub const FERROR_SYSCALL_NUMBER: u64 = 9007; -pub const FGETC_SYSCALL_NUMBER: u64 = 9008; -pub const FCLOSE_SYSCALL_NUMBER: u64 = 9009; -pub const FTELL_SYSCALL_NUMBER: u64 = 9010; -pub const FSEEK_SYSCALL_NUMBER: u64 = 9011; - -// TODO: fprintf, fwrite +impl MockResourceLoader for DummyResourceLoader { + fn get_header(&mut self, hash: H256) -> Result, String> { + return Err(format!("Header {:x} is missing!", hash)); + } -#[derive(Clone)] -pub struct FileStream { - content: Vec, - offset: usize, + fn get_live_cell(&mut self, out_point: OutPoint) -> Result)>, String> { + return Err(format!("Cell: {:?} is missing!", out_point)); + } } -lazy_static! { - static ref STREAM: FileStream = Default::default(); +pub struct Embed { + pub data: String, + pub path: PathBuf, + pub type_id_dict: HashMap, } -impl Default for FileStream { - fn default() -> Self { - Self { content: Default::default(), offset: 0 } +impl Embed { + pub fn new(path: PathBuf, data: String) -> Self { + Self { data, path, type_id_dict: HashMap::new() } } -} -impl FileStream { - pub fn new(file_name: &str) -> Self { - let content = if file_name == "-" { - let mut v = Vec::::new(); - let mut stdin = io::stdin(); - stdin.read_to_end(&mut v).expect("should read from stdin"); - v - } else { - fs::read(file_name).expect("should read the file") - }; - FileStream { content, offset: 0 } - } - // mimic: ssize_t read(int fd, void *buf, size_t count); - fn read(&mut self, buf: &mut [u8]) -> isize { - if self.offset >= self.content.len() { - return -1; + pub fn replace_data(&mut self) -> &mut Self { + let regex = Regex::new(r"\{\{ ?data (.+?) ?\}\}").unwrap(); + self.data = regex + .replace_all(&self.data, |caps: &Captures| -> String { + let cap1 = &caps[1]; + let path = if !Path::new(cap1).is_absolute() { + let root = self.path.parent().unwrap(); + root.join(cap1) + } else { + Path::new(cap1).to_path_buf() + }; + let data = std::fs::read(&path); + if data.is_err() { + panic!("Read {:?} failed : {:?}", path, data); + } + let data = data.unwrap(); + hex::encode(data) + }) + .to_string(); + self + } + + pub fn replace_hash(&mut self) -> &mut Self { + let regex = Regex::new(r"\{\{ ?hash (.+?) ?\}\}").unwrap(); + self.data = regex + .replace_all(&self.data, |caps: &Captures| -> String { + let cap1 = &caps[1]; + let path = if !Path::new(cap1).is_absolute() { + let root = self.path.parent().unwrap(); + root.join(cap1) + } else { + Path::new(cap1).to_path_buf() + }; + let data = std::fs::read(path).unwrap(); + hex::encode(blake2b_256(data)) + }) + .to_string(); + self + } + + pub fn prelude_type_id(&mut self) -> &mut Self { + let rule = Regex::new(r"\{\{ ?def_type (.+?) ?\}\}").unwrap(); + for caps in rule.captures_iter(&self.data) { + let type_id_name = &caps[1]; + assert!(!self.type_id_dict.contains_key(type_id_name)); + let type_id_script = Script::new_builder() + .args(Bytes::from(type_id_name.to_string()).pack()) + .code_hash(TYPE_ID_CODE_HASH.pack()) + .hash_type(ScriptHashType::Type.into()) + .build(); + let type_id_script_hash = type_id_script.calc_script_hash(); + let type_id_script_hash = format!("{:x}", type_id_script_hash); + self.type_id_dict.insert(type_id_name.to_string(), type_id_script_hash); } - let remaining_size = self.content.len() - self.offset; - let read_size = min(buf.len(), remaining_size); - buf[0..read_size].copy_from_slice(&self.content[self.offset..self.offset + read_size]); - - self.offset += read_size; - read_size as isize + self + } + + pub fn replace_def_type(&mut self) -> &mut Self { + let regex = Regex::new(r#""?\{\{ ?def_type (.+?) ?\}\}"?"#).unwrap(); + self.data = regex + .replace_all(&self.data, |caps: &Captures| -> String { + let cap1 = &caps[1]; + let type_id_script_json = ckb_jsonrpc_types::Script { + code_hash: TYPE_ID_CODE_HASH, + hash_type: ckb_jsonrpc_types::ScriptHashType::Type, + args: ckb_jsonrpc_types::JsonBytes::from_vec(cap1.as_bytes().to_vec()), + }; + return serde_json::to_string_pretty(&type_id_script_json).unwrap(); + }) + .to_string(); + self } -} -impl Syscalls for FileStream { - fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { - Ok(()) + pub fn replace_ref_type(&mut self) -> &mut Self { + let regex = Regex::new(r"\{\{ ?ref_type (.+?) ?\}\}").unwrap(); + self.data = regex + .replace_all(&self.data, |caps: &Captures| -> String { + let cap1 = &caps[1]; + return self.type_id_dict[&cap1.to_string()].clone(); + }) + .to_string(); + self } - fn ecall(&mut self, machine: &mut Mac) -> Result { - let id = machine.registers()[A7].to_u64(); - if id != READ_SYSCALL_NUMBER { - return Ok(false); - } - let arg_buf = machine.registers()[A0].to_u64(); - let arg_count = machine.registers()[A1].to_u64(); - let mut buf = vec![0u8; arg_count as usize]; - let read_size = self.read(&mut buf); - if read_size > 0 { - machine.memory_mut().store_bytes(arg_buf, &buf[0..read_size as usize])?; - machine.set_register(A0, Mac::REG::from_u64(read_size as u64)); - } else { - machine.set_register(A0, Mac::REG::from_i64(-1)); - } - return Ok(true); + pub fn replace_all(&mut self) -> String { + self.replace_data().replace_hash().prelude_type_id().replace_def_type().replace_ref_type(); + self.data.clone() } } pub struct HumanReadableCycles(pub u64); -impl fmt::Display for HumanReadableCycles { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { +impl std::fmt::Display for HumanReadableCycles { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{}", self.0)?; if self.0 >= 1024 * 1024 { write!(f, "({:.1}M)", self.0 as f64 / 1024. / 1024.)?; @@ -109,166 +139,70 @@ impl fmt::Display for HumanReadableCycles { } } -pub struct TimeNow {} - -impl TimeNow { - pub fn new() -> Self { - Self {} - } -} - -impl Syscalls for TimeNow { - fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { - Ok(()) - } - - fn ecall(&mut self, machine: &mut Mac) -> Result { - let id = machine.registers()[A7].to_u64(); - if id != NOW_SYSCALL_NUMBER { - return Ok(false); - } - let duration = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap(); - let now = duration.as_nanos(); - machine.set_register(A0, Mac::REG::from_u64(now as u64)); - return Ok(true); +// Get script hash by give group type, cell type and cell index. +// Note cell_type should be a string, in the range ["input", "output"]. +pub fn get_script_hash_by_index( + mock_tx: &MockTransaction, + script_group_type: &ScriptGroupType, + cell_type: &str, + cell_index: usize, +) -> Byte32 { + match (&script_group_type, cell_type) { + (ScriptGroupType::Lock, "input") => mock_tx.mock_info.inputs[cell_index].output.calc_lock_hash(), + (ScriptGroupType::Type, "input") => mock_tx.mock_info.inputs[cell_index] + .output + .type_() + .to_opt() + .expect("cell should have type script") + .calc_script_hash(), + (ScriptGroupType::Type, "output") => mock_tx + .tx + .raw() + .outputs() + .get(cell_index) + .expect("index out of bound") + .type_() + .to_opt() + .expect("cell should have type script") + .calc_script_hash(), + _ => panic!("Invalid specified script: {:?} {} {}", script_group_type, cell_type, cell_index), } } -pub struct Random {} - -impl Random { - pub fn new() -> Self { - Self {} - } -} - -impl Syscalls for Random { - fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { - Ok(()) - } - - fn ecall(&mut self, machine: &mut Mac) -> Result { - let id = machine.registers()[A7].to_u64(); - if id != RANDOM_SYSCALL_NUMBER { - return Ok(false); - } - let r: u64 = random(); - machine.set_register(A0, Mac::REG::from_u64(r)); - return Ok(true); - } -} - -pub struct FileOperation {} - -impl FileOperation { - pub fn new() -> Self { - Self {} - } - fn fetch_string(machine: &mut Mac, addr: u64) -> Result { - let mut res = Vec::::new(); - let mut done = false; - let mut count = 0; - let mut addr = addr; - while !done { - let reg = Mac::REG::from_u64(addr); - let eight_bytes = machine.memory_mut().load64(®)?; - let buf = eight_bytes.to_u64().to_le_bytes(); - for c in buf { - if c != 0 { - res.push(c); - } else { - res.push(c); - done = true; - break; - } - } - count += 1; - if count > 1024 { - panic!("too long string"); - } - addr += 8; - } - Ok(String::from_utf8(res).expect("A valid UTF-8 string")) - } -} - -impl Syscalls for FileOperation { - fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { - Ok(()) - } - fn ecall(&mut self, machine: &mut Mac) -> Result { - let id = machine.registers()[A7].to_u64(); - let arg0 = machine.registers()[A0].to_u64(); - let arg1 = machine.registers()[A1].to_u64(); - let arg2 = machine.registers()[A2].to_u64(); - let arg3 = machine.registers()[A3].to_u64(); - - match id { - FOPEN_SYSCALL_NUMBER => { - let path = Self::fetch_string(machine, arg0)?; - let mode = Self::fetch_string(machine, arg1)?; - let handler = unsafe { - fopen(path.as_bytes().as_ptr() as *const c_char, mode.as_bytes().as_ptr() as *const c_char) - }; - machine.set_register(A0, Mac::REG::from_u64(handler as u64)); - } - FREOPEN_SYSCALL_NUMBER => { - let path = Self::fetch_string(machine, arg0)?; - let mode = Self::fetch_string(machine, arg1)?; - let stream = arg2; - let handler = unsafe { - freopen( - path.as_bytes().as_ptr() as *const c_char, - mode.as_bytes().as_ptr() as *const c_char, - stream as *mut FILE, - ) - }; - machine.set_register(A0, Mac::REG::from_u64(handler as u64)); - } - FREAD_SYSCALL_NUMBER => { - let ptr = arg0; - let size = arg1; - let nitems = arg2; - let stream = arg3; - let total_size = nitems * size; - if total_size > 3 * 1024 * 1024 { - panic!("too much memory to read"); - } - let buf = vec![0u8; total_size as usize]; - let read_count = unsafe { - fread(buf.as_ptr() as *mut c_void, size as size_t, nitems as size_t, stream as *mut FILE) - }; - machine.memory_mut().store_bytes(ptr, &buf[0..read_count * size as usize])?; - machine.set_register(A0, Mac::REG::from_u64(read_count as u64)); - } - FEOF_SYSCALL_NUMBER => { - let eof = unsafe { feof(arg0 as *mut FILE) }; - machine.set_register(A0, Mac::REG::from_i32(eof)); - } - FERROR_SYSCALL_NUMBER => { - let error = unsafe { ferror(arg0 as *mut FILE) }; - machine.set_register(A0, Mac::REG::from_i32(error)); - } - FGETC_SYSCALL_NUMBER => { - let ch = unsafe { fgetc(arg0 as *mut FILE) }; - machine.set_register(A0, Mac::REG::from_i32(ch)); - } - FCLOSE_SYSCALL_NUMBER => { - let ret = unsafe { fclose(arg0 as *mut FILE) }; - machine.set_register(A0, Mac::REG::from_i32(ret)); - } - FTELL_SYSCALL_NUMBER => { - let pos = unsafe { ftell(arg0 as *mut FILE) }; - machine.set_register(A0, Mac::REG::from_i64(pos.into())); - } - FSEEK_SYSCALL_NUMBER => { - let ret = unsafe { fseek(arg0 as *mut FILE, arg1 as c_long, arg2 as c_int) }; - machine.set_register(A0, Mac::REG::from_i32(ret)); - } - _ => { - return Ok(false); - } +// Check transactions before executing them to avoid obvious mistakes. +pub fn pre_check(tx: &ReprMockTransaction) -> Result<(), String> { + let mut mock_cell_deps: Vec<_> = tx.mock_info.cell_deps.iter().map(|c| c.cell_dep.clone()).collect(); + let mut real_cell_deps: Vec<_> = tx.tx.cell_deps.iter().map(|c| c.clone()).collect(); + for dep in &tx.mock_info.cell_deps { + if dep.cell_dep.dep_type == ckb_jsonrpc_types::DepType::DepGroup { + let outpoints = OutPointVec::from_slice(dep.data.as_bytes()).unwrap(); + let outpoints: Vec = outpoints.into_iter().collect(); + let resolved_cell_deps: Vec<_> = outpoints + .into_iter() + .map(|o| ckb_jsonrpc_types::CellDep { out_point: o.into(), dep_type: ckb_jsonrpc_types::DepType::Code }) + .collect(); + real_cell_deps.extend(resolved_cell_deps); } - Ok(true) } + let compare = |a: &ckb_jsonrpc_types::CellDep, b: &ckb_jsonrpc_types::CellDep| { + let l = serde_json::to_string(a).unwrap(); + let r = serde_json::to_string(b).unwrap(); + l.cmp(&r) + }; + mock_cell_deps.sort_by(compare); + real_cell_deps.sort_by(compare); + if mock_cell_deps != real_cell_deps { + return Err(String::from("Precheck: celldeps is mismatched")); + } + let mock_inputs: Vec<_> = tx.mock_info.inputs.iter().map(|i| i.input.clone()).collect(); + let real_inputs: Vec<_> = tx.tx.inputs.clone(); + if mock_inputs != real_inputs { + return Err(String::from("Precheck: inputs is mismatched")); + } + let mock_header_deps: Vec<_> = tx.mock_info.header_deps.iter().map(|h| h.hash.clone()).collect(); + let read_header_deps: Vec<_> = tx.tx.header_deps.clone(); + if mock_header_deps != read_header_deps { + return Err(String::from("Precheck: header deps is mismatched")); + } + Ok(()) } diff --git a/ckb-debugger/src/syscall_all.rs b/ckb-debugger/src/syscall_all.rs new file mode 100644 index 0000000..13b215f --- /dev/null +++ b/ckb-debugger/src/syscall_all.rs @@ -0,0 +1,250 @@ +use ckb_vm::{ + registers::{A0, A1, A2, A3, A7}, + Error, Memory, Register, SupportMachine, Syscalls, +}; +use libc::{ + c_char, c_int, c_long, c_void, fclose, feof, ferror, fgetc, fopen, fread, freopen, fseek, ftell, size_t, FILE, +}; +use rand::prelude::*; +use std::io::Read; +use std::time::SystemTime; +use std::{cmp::min, fs, io}; + +pub const SYSCALL_NUMBER_READ: u64 = 9000; +pub const SYSCALL_NUMBER_NOW: u64 = 9001; +pub const SYSCALL_NUMBER_RANDOM: u64 = 9002; +pub const SYSCALL_NUMBER_FOPEN: u64 = 9003; +pub const SYSCALL_NUMBER_FREOPEN: u64 = 9004; +pub const SYSCALL_NUMBER_FREAD: u64 = 9005; +pub const SYSCALL_NUMBER_FEOF: u64 = 9006; +pub const SYSCALL_NUMBER_FERROR: u64 = 9007; +pub const SYSCALL_NUMBER_FGETC: u64 = 9008; +pub const SYSCALL_NUMBER_FCLOSE: u64 = 9009; +pub const SYSCALL_NUMBER_FTELL: u64 = 9010; +pub const SYSCALL_NUMBER_FSEEK: u64 = 9011; + +pub struct FileOperation {} + +impl FileOperation { + pub fn new() -> Self { + Self {} + } + fn fetch_string(machine: &mut Mac, addr: u64) -> Result { + let mut res = Vec::::new(); + let mut done = false; + let mut count = 0; + let mut addr = addr; + while !done { + let reg = Mac::REG::from_u64(addr); + let eight_bytes = machine.memory_mut().load64(®)?; + let buf = eight_bytes.to_u64().to_le_bytes(); + for c in buf { + if c != 0 { + res.push(c); + } else { + res.push(c); + done = true; + break; + } + } + count += 1; + if count > 1024 { + panic!("Too long string"); + } + addr += 8; + } + Ok(String::from_utf8(res).expect("A valid UTF-8 string")) + } +} + +impl Syscalls for FileOperation { + fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { + Ok(()) + } + fn ecall(&mut self, machine: &mut Mac) -> Result { + let id = machine.registers()[A7].to_u64(); + let arg0 = machine.registers()[A0].to_u64(); + let arg1 = machine.registers()[A1].to_u64(); + let arg2 = machine.registers()[A2].to_u64(); + let arg3 = machine.registers()[A3].to_u64(); + + match id { + SYSCALL_NUMBER_FOPEN => { + let path = Self::fetch_string(machine, arg0)?; + let mode = Self::fetch_string(machine, arg1)?; + let handler = unsafe { + fopen(path.as_bytes().as_ptr() as *const c_char, mode.as_bytes().as_ptr() as *const c_char) + }; + machine.set_register(A0, Mac::REG::from_u64(handler as u64)); + } + SYSCALL_NUMBER_FREOPEN => { + let path = Self::fetch_string(machine, arg0)?; + let mode = Self::fetch_string(machine, arg1)?; + let stream = arg2; + let handler = unsafe { + freopen( + path.as_bytes().as_ptr() as *const c_char, + mode.as_bytes().as_ptr() as *const c_char, + stream as *mut FILE, + ) + }; + machine.set_register(A0, Mac::REG::from_u64(handler as u64)); + } + SYSCALL_NUMBER_FREAD => { + let ptr = arg0; + let size = arg1; + let nitems = arg2; + let stream = arg3; + let total_size = nitems * size; + if total_size > 3 * 1024 * 1024 { + panic!("Too much memory to read"); + } + let buf = vec![0u8; total_size as usize]; + let read_count = unsafe { + fread(buf.as_ptr() as *mut c_void, size as size_t, nitems as size_t, stream as *mut FILE) + }; + machine.memory_mut().store_bytes(ptr, &buf[0..read_count * size as usize])?; + machine.set_register(A0, Mac::REG::from_u64(read_count as u64)); + } + SYSCALL_NUMBER_FEOF => { + let eof = unsafe { feof(arg0 as *mut FILE) }; + machine.set_register(A0, Mac::REG::from_i32(eof)); + } + SYSCALL_NUMBER_FERROR => { + let error = unsafe { ferror(arg0 as *mut FILE) }; + machine.set_register(A0, Mac::REG::from_i32(error)); + } + SYSCALL_NUMBER_FGETC => { + let ch = unsafe { fgetc(arg0 as *mut FILE) }; + machine.set_register(A0, Mac::REG::from_i32(ch)); + } + SYSCALL_NUMBER_FCLOSE => { + let ret = unsafe { fclose(arg0 as *mut FILE) }; + machine.set_register(A0, Mac::REG::from_i32(ret)); + } + SYSCALL_NUMBER_FTELL => { + let pos = unsafe { ftell(arg0 as *mut FILE) }; + machine.set_register(A0, Mac::REG::from_i64(pos.into())); + } + SYSCALL_NUMBER_FSEEK => { + let ret = unsafe { fseek(arg0 as *mut FILE, arg1 as c_long, arg2 as c_int) }; + machine.set_register(A0, Mac::REG::from_i32(ret)); + } + _ => { + return Ok(false); + } + } + Ok(true) + } +} + +#[derive(Clone)] +pub struct FileStream { + content: Vec, + offset: usize, +} + +impl Default for FileStream { + fn default() -> Self { + Self { content: Default::default(), offset: 0 } + } +} + +impl FileStream { + pub fn new(file_name: &str) -> Self { + let content = if file_name == "-" { + let mut v = Vec::::new(); + let mut stdin = io::stdin(); + stdin.read_to_end(&mut v).expect("Should read from stdin"); + v + } else { + fs::read(file_name).expect("Should read the file") + }; + FileStream { content, offset: 0 } + } + // Mimic: ssize_t read(int fd, void *buf, size_t count); + fn read(&mut self, buf: &mut [u8]) -> isize { + if self.offset >= self.content.len() { + return -1; + } + let remaining_size = self.content.len() - self.offset; + let read_size = min(buf.len(), remaining_size); + buf[0..read_size].copy_from_slice(&self.content[self.offset..self.offset + read_size]); + + self.offset += read_size; + read_size as isize + } +} + +impl Syscalls for FileStream { + fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { + Ok(()) + } + + fn ecall(&mut self, machine: &mut Mac) -> Result { + let id = machine.registers()[A7].to_u64(); + if id != SYSCALL_NUMBER_READ { + return Ok(false); + } + let arg_buf = machine.registers()[A0].to_u64(); + let arg_count = machine.registers()[A1].to_u64(); + let mut buf = vec![0u8; arg_count as usize]; + let read_size = self.read(&mut buf); + if read_size > 0 { + machine.memory_mut().store_bytes(arg_buf, &buf[0..read_size as usize])?; + machine.set_register(A0, Mac::REG::from_u64(read_size as u64)); + } else { + machine.set_register(A0, Mac::REG::from_i64(-1)); + } + return Ok(true); + } +} + +pub struct Random {} + +impl Random { + pub fn new() -> Self { + Self {} + } +} + +impl Syscalls for Random { + fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { + Ok(()) + } + + fn ecall(&mut self, machine: &mut Mac) -> Result { + let id = machine.registers()[A7].to_u64(); + if id != SYSCALL_NUMBER_RANDOM { + return Ok(false); + } + let r: u64 = random(); + machine.set_register(A0, Mac::REG::from_u64(r)); + return Ok(true); + } +} + +pub struct TimeNow {} + +impl TimeNow { + pub fn new() -> Self { + Self {} + } +} + +impl Syscalls for TimeNow { + fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { + Ok(()) + } + + fn ecall(&mut self, machine: &mut Mac) -> Result { + let id = machine.registers()[A7].to_u64(); + if id != SYSCALL_NUMBER_NOW { + return Ok(false); + } + let duration = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap(); + let now = duration.as_nanos(); + machine.set_register(A0, Mac::REG::from_u64(now as u64)); + return Ok(true); + } +} diff --git a/ckb-debugger/src/syscall_elf_dumper.rs b/ckb-debugger/src/syscall_elf_dumper.rs new file mode 100644 index 0000000..7c5403d --- /dev/null +++ b/ckb-debugger/src/syscall_elf_dumper.rs @@ -0,0 +1,330 @@ +use byteorder::{ByteOrder, LittleEndian}; +use ckb_vm::{ + bytes::{BufMut, Bytes, BytesMut}, + memory::{FLAG_EXECUTABLE, FLAG_WXORX_BIT}, + registers::A7, + Error, Memory, Register, SupportMachine, Syscalls, RISCV_PAGES, RISCV_PAGESIZE, +}; +use std::fs::File; +use std::io::Write; + +pub struct ElfDumper { + dump_file_name: String, + syscall_number: u64, + maximum_zero_gap: u64, +} + +impl Default for ElfDumper { + fn default() -> ElfDumper { + ElfDumper { dump_file_name: "dump.bin".to_string(), syscall_number: 4097, maximum_zero_gap: 64 } + } +} + +impl ElfDumper { + pub fn new(dump_file_name: String, syscall_number: u64, maximum_zero_gap: u64) -> Self { + ElfDumper { dump_file_name, syscall_number, maximum_zero_gap } + } +} + +#[derive(Clone)] +struct Segment { + start: u64, + data: Bytes, + executable: bool, +} + +impl Segment { + fn first_page(&self) -> u64 { + self.start / RISCV_PAGESIZE as u64 + } + + fn first_page_address(&self) -> u64 { + self.first_page() * RISCV_PAGESIZE as u64 + } + + fn last_page(&self) -> u64 { + (self.start + self.data.len() as u64 - 1) / RISCV_PAGESIZE as u64 + } +} + +impl Syscalls for ElfDumper { + fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { + Ok(()) + } + + fn ecall(&mut self, machine: &mut Mac) -> Result { + if machine.registers()[A7].to_u64() != self.syscall_number { + return Ok(false); + } + let mut segments: Vec = vec![]; + let mut page = 0; + // Extract all non-empty data from memory + while page < RISCV_PAGES as u64 { + let mut start = page * RISCV_PAGESIZE as u64; + let end = (page + 1) * RISCV_PAGESIZE as u64; + + while start < end { + // First, loop for the start of non-zero values + while start < end { + if machine.memory_mut().load64(&Mac::REG::from_u64(start))?.to_u64() != 0 { + break; + } + start += 8; + } + + if start < end { + // See if we can append to last segment + let executable = machine.memory_mut().fetch_flag(page)? & FLAG_WXORX_BIT == FLAG_EXECUTABLE; + let (bytes_start, mut bytes_mut) = if segments.is_empty() { + (start, BytesMut::new()) + } else { + let last_segment = &segments[segments.len() - 1]; + let same_page = page == last_segment.last_page(); + let gap = start - (last_segment.start + last_segment.data.len() as u64); + if last_segment.executable == executable && ((gap <= self.maximum_zero_gap) || same_page) { + let Segment { start: segment_start, data: segment_data, .. } = + segments.remove(segments.len() - 1); + let mut segment_data = BytesMut::from(segment_data.as_ref()); + // Fill in gap first + let mut zeros = vec![]; + zeros.resize(gap as usize, 0); + segment_data.extend_from_slice(&zeros); + (segment_start, segment_data) + } else { + (start, BytesMut::new()) + } + }; + + // Append non-zero data + while start < end { + let value = machine.memory_mut().load64(&Mac::REG::from_u64(start))?.to_u64(); + if value == 0 { + break; + } + + bytes_mut.put_u64_le(value); + start += 8; + } + + segments.push(Segment { start: bytes_start, data: bytes_mut.freeze(), executable }); + } + } + page += 1; + } + // There must be one page at least before the first segment, so we can + // allocate code we need. + if segments.is_empty() || segments[0].start <= RISCV_PAGESIZE as u64 { + return Err(Error::Unexpected("Unexpected segments".into())); + } + + // Build instructions that restore register values + let mut register_buffer = BytesMut::new(); + for register_value in &machine.registers()[1..] { + register_buffer.put_u64_le(register_value.to_u64()); + } + let register_entrypoint = register_buffer.len() as u64; + register_buffer.put_u32_le(0x00000517); // auipc a0, 0x0 + register_buffer.put_u32_le(0xf0050513); // addi a0, a0, -256 + register_buffer.put_u32_le(0x00853083); // ld ra,8(a0) + register_buffer.put_u32_le(0x01053103); // ld sp,16(a0) + register_buffer.put_u32_le(0x01853183); // ld gp,24(a0) + register_buffer.put_u32_le(0x02053203); // ld tp,32(a0) + register_buffer.put_u32_le(0x02853283); // ld t0,40(a0) + register_buffer.put_u32_le(0x03053303); // ld t1,48(a0) + register_buffer.put_u32_le(0x03853383); // ld t2,56(a0) + register_buffer.put_u32_le(0x04053403); // ld s0,64(a0) + register_buffer.put_u32_le(0x04853483); // ld s1,72(a0) + register_buffer.put_u32_le(0x05853583); // ld a1,88(a0) + register_buffer.put_u32_le(0x06053603); // ld a2,96(a0) + register_buffer.put_u32_le(0x06853683); // ld a3,104(a0) + register_buffer.put_u32_le(0x07053703); // ld a4,112(a0) + register_buffer.put_u32_le(0x07853783); // ld a5,120(a0) + register_buffer.put_u32_le(0x08053803); // ld a6,128(a0) + register_buffer.put_u32_le(0x08853883); // ld a7,136(a0) + register_buffer.put_u32_le(0x09053903); // ld s2,144(a0) + register_buffer.put_u32_le(0x09853983); // ld s3,152(a0) + register_buffer.put_u32_le(0x0a053a03); // ld s4,160(a0) + register_buffer.put_u32_le(0x0a853a83); // ld s5,168(a0) + register_buffer.put_u32_le(0x0b053b03); // ld s6,176(a0) + register_buffer.put_u32_le(0x0b853b83); // ld s7,184(a0) + register_buffer.put_u32_le(0x0c053c03); // ld s8,192(a0) + register_buffer.put_u32_le(0x0c853c83); // ld s9,200(a0) + register_buffer.put_u32_le(0x0d053d03); // ld s10,208(a0) + register_buffer.put_u32_le(0x0d853d83); // ld s11,216(a0) + register_buffer.put_u32_le(0x0e053e03); // ld t3,224(a0) + register_buffer.put_u32_le(0x0e853e83); // ld t4,232(a0) + register_buffer.put_u32_le(0x0f053f03); // ld t5,240(a0) + register_buffer.put_u32_le(0x0f853f83); // ld t6,248(a0) + register_buffer.put_u32_le(0x05053503); // ld a0,80(a0) + + let register_buffer_start = segments[0].first_page_address() - RISCV_PAGESIZE as u64; + let jump_instruction_pc = register_buffer_start + register_buffer.len() as u64; + let jump_offset = machine.pc().to_u64() - jump_instruction_pc; + let masked = jump_offset & 0xFFFFFFFFFFE00001; + if masked != 0 && masked != 0xFFFFFFFFFFE00000 { + return Err(Error::Unexpected("Unexpected masked".into())); + } + let jump_instruction = 0b1101111 + | ((((jump_offset >> 12) & 0b_1111_1111) as u32) << 12) + | ((((jump_offset >> 11) & 1) as u32) << 20) + | ((((jump_offset >> 1) & 0b_1111_1111_11) as u32) << 21) + | ((((jump_offset >> 20) & 1) as u32) << 31); + register_buffer.put_u32_le(jump_instruction); + assert!(register_buffer.len() < RISCV_PAGESIZE); + + segments.push(Segment { start: register_buffer_start, data: register_buffer.freeze(), executable: true }); + + // Piece everything together into an ELF binary + let mut elf = BytesMut::new(); + // ELF Magic + elf.extend_from_slice(&[ + 0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ]); + // ELF Type + elf.put_u16_le(2); + // ELF Machine; RISC-V + elf.put_u16_le(243); + // ELF Version + elf.put_u32_le(1); + // ELF Entry + elf.put_u64_le(register_buffer_start + register_entrypoint); + let program_header_offset = elf.len(); + // Program Header Offset, placeholder for now + elf.put_u64_le(0); + let section_header_offset = elf.len(); + // Section Header Offset, placeholder for now + elf.put_u64_le(0); + // ELF Flags: 0x1, RVC, soft-float ABI + elf.put_u32_le(1); + // ELF Header Size: 64 + elf.put_u16_le(64); + // Program Header Entry Size: 56 + elf.put_u16_le(56); + let program_header_number_offset = elf.len(); + // Program Header Number, placeholder for now + elf.put_u16_le(0); + // Section Header Entry Size: 64 + elf.put_u16_le(64); + let section_header_number_offset = elf.len(); + // Section Header Number, placeholder for now + elf.put_u16_le(0); + // Section header string table index: 0 + elf.put_u16_le(0); + assert!(elf.len() == 64); + + let string_table_offset = elf.len() as u64; + elf.put_u32_le(0); + + let mut section_headers = vec![]; + let mut string_table_section_header = BytesMut::new(); + // Name + string_table_section_header.put_u32_le(0); + // Type: STRTAB + string_table_section_header.put_u32_le(3); + // Flags + string_table_section_header.put_u64_le(0); + // Address + string_table_section_header.put_u64_le(0); + // Offset + string_table_section_header.put_u64_le(string_table_offset); + // Size + string_table_section_header.put_u64_le(4); + // Link + string_table_section_header.put_u32_le(0); + // Info + string_table_section_header.put_u32_le(0); + // Align + string_table_section_header.put_u64_le(1); + // Entry size + string_table_section_header.put_u64_le(0); + assert!(string_table_section_header.len() == 64); + section_headers.push(string_table_section_header.freeze()); + + let mut program_headers = vec![]; + + for segment in segments { + let current_offset = elf.len() as u64; + elf.extend_from_slice(segment.data.as_ref()); + + let mut program_header = BytesMut::new(); + // Type: LOAD + program_header.put_u32_le(1); + // Flags + program_header.put_u32_le(if segment.executable { 5 } else { 6 }); + // Offset + program_header.put_u64_le(current_offset); + // Vaddr + program_header.put_u64_le(segment.start); + // Paddr + program_header.put_u64_le(segment.start); + // File size + program_header.put_u64_le(segment.data.len() as u64); + // Memory size + program_header.put_u64_le(segment.data.len() as u64); + // Align + program_header.put_u64_le(0x1000); + assert!(program_header.len() == 56); + program_headers.push(program_header.freeze()); + + // TODO: add an option to provide a binary, and use the binary's + // section headers to replace the inferred ones here. Since inferred + // sections here can contain non-code data section as well. + if segment.executable { + let mut section_header = BytesMut::new(); + // Name + section_header.put_u32_le(0); + // Type: PROGBITS + section_header.put_u32_le(1); + // Flags: AX + section_header.put_u64_le(6); + // Address + section_header.put_u64_le(segment.start); + // Offset + section_header.put_u64_le(current_offset); + // Size + section_header.put_u64_le(segment.data.len() as u64); + // Link + section_header.put_u32_le(0); + // Info + section_header.put_u32_le(0); + // Align + section_header.put_u64_le(2); + // Entry size + section_header.put_u64_le(0); + assert!(section_header.len() == 64); + section_headers.push(section_header.freeze()); + } + } + + while elf.len() % 4 != 0 { + elf.put_u8(0); + } + let current_offset = elf.len() as u64; + LittleEndian::write_u64(&mut elf[program_header_offset..program_header_offset + 8], current_offset); + LittleEndian::write_u16( + &mut elf[program_header_number_offset..program_header_number_offset + 8], + program_headers.len() as u16, + ); + for program_header in program_headers { + elf.extend_from_slice(program_header.as_ref()); + } + + while elf.len() % 4 != 0 { + elf.put_u8(0); + } + let current_offset = elf.len() as u64; + LittleEndian::write_u64(&mut elf[section_header_offset..section_header_offset + 8], current_offset); + LittleEndian::write_u16( + &mut elf[section_header_number_offset..section_header_number_offset + 8], + section_headers.len() as u16, + ); + for section_header in section_headers { + elf.extend_from_slice(section_header.as_ref()); + } + + let mut file = File::create(&self.dump_file_name)?; + file.write_all(&elf)?; + + Ok(true) + } +} diff --git a/ckb-debugger/src/syscall_stdio.rs b/ckb-debugger/src/syscall_stdio.rs new file mode 100644 index 0000000..46f8aa5 --- /dev/null +++ b/ckb-debugger/src/syscall_stdio.rs @@ -0,0 +1,194 @@ +use ckb_vm::{ + registers::{A0, A1, A2, A7}, + Error, Memory, Register, SupportMachine, Syscalls, +}; +use libc::{SEEK_CUR, SEEK_END, SEEK_SET}; +use nix::{ + sys::stat::fstat, + unistd::{close, lseek, read, write, Whence}, +}; +use std::mem::size_of; +use std::slice::from_raw_parts; + +#[derive(Clone, Debug, Default)] +#[repr(C)] +struct AbiStat { + dev: u64, + ino: u64, + mode: u32, + nlink: i32, + uid: u32, + gid: u32, + rdev: u64, + __pad1: u64, + size: i64, + blksize: i32, + __pad2: i32, + blocks: i64, + atime: i64, + atime_nsec: i64, + mtime: i64, + mtime_nsec: i64, + ctime: i64, + ctime_nsec: i64, + __unused4: i32, + __unused5: i32, +} + +#[derive(Default)] +pub struct Stdio { + keep_stdios: bool, +} + +impl Stdio { + pub fn new(keep_stdios: bool) -> Self { + Stdio { keep_stdios } + } + + fn close(&mut self, machine: &mut Mac) -> Result<(), Error> { + let fd = machine.registers()[A0].to_i32(); + if (fd >= 0 && fd <= 2) && self.keep_stdios { + machine.set_register(A0, Mac::REG::zero()); + return Ok(()); + } + let ret = match close(fd) { + Ok(()) => 0, + Err(e) => { + println!("Error: {:?}", e); + (-1i64) as u64 + } + }; + machine.set_register(A0, Mac::REG::from_u64(ret)); + Ok(()) + } + + fn fstat(&mut self, machine: &mut Mac) -> Result<(), Error> { + let stat = match fstat(machine.registers()[A0].to_i32()) { + Ok(stat) => stat, + Err(e) => { + println!("Error: {:?}", e); + machine.set_register(A0, Mac::REG::from_i8(-1)); + return Ok(()); + } + }; + let mut abi_stat = AbiStat::default(); + abi_stat.dev = stat.st_dev as u64; + abi_stat.ino = stat.st_ino; + abi_stat.mode = stat.st_mode as u32; + abi_stat.nlink = stat.st_nlink as i32; + abi_stat.uid = stat.st_uid; + abi_stat.gid = stat.st_gid; + abi_stat.rdev = stat.st_rdev as u64; + abi_stat.size = stat.st_size; + abi_stat.blksize = stat.st_blksize as i32; + abi_stat.blocks = stat.st_blocks; + abi_stat.atime = stat.st_atime; + abi_stat.atime_nsec = stat.st_atime_nsec; + abi_stat.mtime = stat.st_mtime; + abi_stat.mtime_nsec = stat.st_mtime_nsec; + abi_stat.ctime = stat.st_ctime; + abi_stat.ctime_nsec = stat.st_ctime_nsec; + let len = size_of::(); + let b: &[u8] = unsafe { from_raw_parts(&abi_stat as *const AbiStat as *const u8, len) }; + let addr = machine.registers()[A1].to_u64(); + machine.memory_mut().store_bytes(addr, b)?; + machine.set_register(A0, Mac::REG::zero()); + Ok(()) + } + + fn lseek(&mut self, machine: &mut Mac) -> Result<(), Error> { + let fd = machine.registers()[A0].to_i32(); + let offset = machine.registers()[A1].to_i64(); + let whence = match machine.registers()[A2].to_i32() { + SEEK_SET => Whence::SeekSet, + SEEK_CUR => Whence::SeekCur, + SEEK_END => Whence::SeekEnd, + _ => return Err(Error::Unexpected("Unexpected whence".into())), + }; + let ret = lseek(fd, offset, whence).unwrap_or_else(|e| { + println!("Error: {:?}", e); + -1 + }); + machine.set_register(A0, Mac::REG::from_i64(ret)); + Ok(()) + } + + fn read(&mut self, machine: &mut Mac) -> Result<(), Error> { + let fd = machine.registers()[A0].to_i32(); + let addr = machine.registers()[A1].to_u64(); + let size = machine.registers()[A2].to_u64() as usize; + let mut buf = vec![0u8; size]; + + match read(fd, &mut buf) { + Ok(read_size) => { + machine.memory_mut().store_bytes(addr, &buf[0..read_size])?; + machine.set_register(A0, Mac::REG::from_u64(read_size as u64)); + } + Err(e) => { + println!("Error: {:?}", e); + machine.set_register(A0, Mac::REG::from_i64(-1i64)); + } + }; + Ok(()) + } + + fn write(&mut self, machine: &mut Mac) -> Result<(), Error> { + let fd = machine.registers()[A0].to_i32(); + let addr = machine.registers()[A1].to_u64(); + let size = machine.registers()[A2].to_u64() as usize; + let mut buf = vec![0u8; size]; + for i in 0..size { + buf[i] = machine.memory_mut().load8(&Mac::REG::from_u64(addr + i as u64))?.to_u8(); + } + let ret = write(fd, &buf).unwrap_or_else(|e| { + println!("Error: {:?}", e); + (-1isize) as usize + }); + machine.set_register(A0, Mac::REG::from_u64(ret as u64)); + Ok(()) + } + + fn writev(&mut self, machine: &mut Mac) -> Result<(), Error> { + let fd = machine.registers()[A0].to_i32(); + let iov = machine.registers()[A1].to_u64(); + let iovcnt = machine.registers()[A2].to_u64(); + + let mut written = 0; + for i in 0..iovcnt { + let base = machine.memory_mut().load64(&Mac::REG::from_u64(iov + i * 16))?.to_u64(); + let len = machine.memory_mut().load64(&Mac::REG::from_u64(iov + i * 16 + 8))?.to_u64(); + + let buf = machine.memory_mut().load_bytes(base, len)?; + + written += match write(fd, &buf) { + Ok(w) => w as u64, + Err(e) => { + println!("Error: {:?}", e); + machine.set_register(A0, Mac::REG::from_i64(-1)); + return Ok(()); + } + }; + } + machine.set_register(A0, Mac::REG::from_u64(written)); + Ok(()) + } +} + +impl Syscalls for Stdio { + fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> { + Ok(()) + } + + fn ecall(&mut self, machine: &mut Mac) -> Result { + match machine.registers()[A7].to_u64() { + 57 => self.close(machine)?, + 62 => self.lseek(machine)?, + 63 => self.read(machine)?, + 64 => self.write(machine)?, + 66 => self.writev(machine)?, + 80 => self.fstat(machine)?, + _ => return Ok(false), + }; + Ok(true) + } +} diff --git a/ckb-debugger/tests/test_api.rs b/ckb-debugger/tests/test_api.rs new file mode 100644 index 0000000..b75cdc7 --- /dev/null +++ b/ckb-debugger/tests/test_api.rs @@ -0,0 +1,12 @@ +use ckb_mock_tx_types::{MockTransaction, ReprMockTransaction}; + +#[test] +pub fn test_run_json() { + let mock_tx_repr_str = std::fs::read_to_string("examples/mock_tx.json").unwrap(); + let mock_tx_repr: ReprMockTransaction = serde_json::from_str(&mock_tx_repr_str).unwrap(); + let mock_tx: MockTransaction = mock_tx_repr.into(); + let script_hash = ckb_debugger::get_script_hash_by_index(&mock_tx, &ckb_script::ScriptGroupType::Lock, "input", 0); + let script_hash_hex = hex::encode(script_hash.raw_data()); + let result = ckb_debugger::run_json(&mock_tx_repr_str, "lock", &script_hash_hex, "70000000"); + assert_eq!(result, "{\"cycle\":1641938,\"error\":null}"); +} diff --git a/ckb-gdb-remote-protocol/.gitignore b/ckb-gdb-remote-protocol/.gitignore deleted file mode 100644 index 57655d7..0000000 --- a/ckb-gdb-remote-protocol/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -Cargo.lock -*~ -target/* diff --git a/ckb-gdb-remote-protocol/Cargo.toml b/ckb-gdb-remote-protocol/Cargo.toml deleted file mode 100644 index eb1a1b3..0000000 --- a/ckb-gdb-remote-protocol/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "ckb-gdb-remote-protocol" -edition = "2021" -version = "0.117.0" -description = "An implementation of the GDB remote protocol" -authors = ["Ted Mielczarek "] -license = "Apache-2.0/MIT" - -[dependencies] -log = "0.4.1" -nom = "3.2.0" -strum = "0.8.0" -strum_macros = "0.8.0" -bitflags = "1.0" -byteorder = "1.2" -memchr = "2.3.3" -libc = { version = "0.2.71", optional = true } -num-derive = "0.3.0" -num-traits = "0.2.12" - -[dev-dependencies] -assert_cli = "0.5.4" -env_logger = "0.4.3" -which = "1.0.3" - -[features] -all_stop = [] -lldb = [] diff --git a/ckb-gdb-remote-protocol/LICENSE-APACHE b/ckb-gdb-remote-protocol/LICENSE-APACHE deleted file mode 100644 index 16fe87b..0000000 --- a/ckb-gdb-remote-protocol/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/ckb-gdb-remote-protocol/LICENSE-MIT b/ckb-gdb-remote-protocol/LICENSE-MIT deleted file mode 100644 index 396cebf..0000000 --- a/ckb-gdb-remote-protocol/LICENSE-MIT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2017 Mozilla - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/ckb-gdb-remote-protocol/README.md b/ckb-gdb-remote-protocol/README.md deleted file mode 100644 index c24e017..0000000 --- a/ckb-gdb-remote-protocol/README.md +++ /dev/null @@ -1,12 +0,0 @@ -[![Build Status](https://travis-ci.org/luser/rust-gdb-remote-protocol.svg?branch=master)](https://travis-ci.org/luser/rust-gdb-remote-protocol) - -Work-in-progress Rust implementation of the [GDB remote protocol](https://sourceware.org/gdb/onlinedocs/gdb/Remote-Protocol.html). - -## License - -Licensed under either of - - * Apache License, Version 2.0 ([`LICENSE-APACHE`](./LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) - * MIT license ([`LICENSE-MIT`](./LICENSE-MIT) or http://opensource.org/licenses/MIT) - -at your option. diff --git a/ckb-gdb-remote-protocol/examples/noop-server.rs b/ckb-gdb-remote-protocol/examples/noop-server.rs deleted file mode 100644 index 057333d..0000000 --- a/ckb-gdb-remote-protocol/examples/noop-server.rs +++ /dev/null @@ -1,29 +0,0 @@ -use ckb_gdb_remote_protocol::{process_packets_from, Error, Handler, ProcessType, StopReason}; -use std::net::TcpListener; - -struct NoopHandler; - -impl Handler for NoopHandler { - fn attached(&self, _pid: Option) -> Result { - Ok(ProcessType::Created) - } - - fn halt_reason(&self) -> Result { - Ok(StopReason::Exited(23, 0)) - } -} - -#[cfg_attr(test, allow(dead_code))] -fn main() { - drop(env_logger::init()); - let listener = TcpListener::bind("0.0.0.0:2424").unwrap(); - println!("Listening on port 2424"); - for res in listener.incoming() { - println!("Got connection"); - if let Ok(stream) = res { - let h = NoopHandler; - process_packets_from(stream.try_clone().unwrap(), stream, h); - } - println!("Connection closed"); - } -} diff --git a/ckb-gdb-remote-protocol/src/fs.rs b/ckb-gdb-remote-protocol/src/fs.rs deleted file mode 100644 index fc18b4e..0000000 --- a/ckb-gdb-remote-protocol/src/fs.rs +++ /dev/null @@ -1,262 +0,0 @@ -//! Filesystem APIs for GDB, vFile - -use bitflags::bitflags; -use std::io::{self, prelude::*}; - -/// Errno values for Host I/O operations. -#[derive(Debug)] -pub enum HostErrno { - /// Operation not permitted (POSIX.1-2001). - EPERM = 1, - /// No such file or directory (POSIX.1-2001). - /// - /// Typically, this error results when a specified pathname does not exist, - /// or one of the components in the directory prefix of a pathname does not - /// exist, or the specified pathname is a dangling symbolic link. - ENOENT = 2, - /// Interrupted function call (POSIX.1-2001); see signal(7). - EINTR = 4, - /// Bad file descriptor (POSIX.1-2001). - EBADF = 9, - /// Permission denied (POSIX.1-2001). - EACCES = 13, - /// Bad address (POSIX.1-2001). - EFAULT = 14, - /// Device or resource busy (POSIX.1-2001). - EBUSY = 16, - /// File exists (POSIX.1-2001). - EEXIST = 17, - /// No such device (POSIX.1-2001). - ENODEV = 19, - /// Not a directory (POSIX.1-2001). - ENOTDIR = 20, - /// Is a directory (POSIX.1-2001). - EISDIR = 21, - /// Invalid argument (POSIX.1-2001). - EINVAL = 22, - /// Too many open files in system (POSIX.1-2001). On Linux, this is probably - /// a result of encountering the /proc/sys/fs/file-max limit (see proc(5)). - ENFILE = 23, - /// Too many open files (POSIX.1-2001). Commonly caused by exceeding the - /// RLIMIT_NOFILE resource limit described in getrlimit(2). - EMFILE = 24, - /// File too large (POSIX.1-2001). - EFBIG = 27, - /// No space left on device (POSIX.1-2001). - ENOSPC = 28, - /// Invalid seek (POSIX.1-2001). - ESPIPE = 29, - /// Read-only filesystem (POSIX.1-2001). - EROFS = 30, - /// Filename too long (POSIX.1-2001). - ENAMETOOLONG = 91, - /// Unknown errno - there may not be a GDB mapping for this value - EUNKNOWN = 9999, -} - -/// The result type for host I/O operations. Return error if the operation -/// in question is not implemented. Otherwise, the success type indicates -/// whether the operation succeeded, with `HostErrno` values for failure. -pub type IOResult = Result, ()>; - -bitflags! { - /// Host file permissions. - pub struct HostMode: u32 { - /// A regular file. - const S_IFREG = 0o100000; - /// A directory. - const S_IFDIR = 0o40000; - /// User read permissions. - const S_IRUSR = 0o400; - /// User write permissions. - const S_IWUSR = 0o200; - /// User execute permissions. - const S_IXUSR = 0o100; - /// Group read permissions. - const S_IRGRP = 0o40; - /// Group write permissions - const S_IWGRP = 0o20; - /// Group execute permissions. - const S_IXGRP = 0o10; - /// World read permissions. - const S_IROTH = 0o4; - /// World write permissions - const S_IWOTH = 0o2; - /// World execute permissions. - const S_IXOTH = 0o1; - } -} - -bitflags! { - // The read/write flags below may look a little weird, but that is the way - // they are defined in the protocol. - /// Host flags for opening files. - pub struct HostOpenFlags: u32 { - /// A read-only file. - const O_RDONLY = 0x0; - /// A write-only file. - const O_WRONLY = 0x1; - /// A read-write file. - const O_RDWR = 0x2; - /// Append to an existing file. - const O_APPEND = 0x8; - /// Create a non-existent file. - const O_CREAT = 0x200; - /// Truncate an existing file. - const O_TRUNC = 0x400; - /// Exclusive access. - const O_EXCL = 0x800; - } -} - -/// Data returned by a host fstat request. The members of this structure are -/// specified by the remote protocol; conversion of actual host stat -/// information into this structure may therefore require truncation of some -/// members. -#[derive(Debug)] -pub struct HostStat { - /// The device. - pub st_dev: u32, - /// The inode. - pub st_ino: u32, - /// Protection bits. - pub st_mode: HostMode, - /// The number of hard links. - pub st_nlink: u32, - /// The user id of the owner. - pub st_uid: u32, - /// The group id of the owner. - pub st_gid: u32, - /// The device type, if an inode device. - pub st_rdev: u32, - /// The size of the file in bytes. - pub st_size: u64, - /// The blocksize for the filesystem. - pub st_blksize: u64, - /// The number of blocks allocated. - pub st_blocks: u64, - /// The last time the file was accessed, in seconds since the epoch. - pub st_atime: u32, - /// The last time the file was modified, in seconds since the epoch. - pub st_mtime: u32, - /// The last time the file was changed, in seconds since the epoch. - pub st_ctime: u32, -} - -// Having to write out all the fields for these two operations is annoying, -// but the alternatives are even more annoying. For instance, we could -// represent HostStat as a big array, with fields at appropriate offsets, but -// we'd have to write a bunch of accessor methods. Note that #[repr(C)] -// isn't quite good enough, since that might introduce C-mandated padding -// into the structure. -pub fn write_stat(writer: &mut W, stat: HostStat) -> io::Result<()> -where - W: Write, -{ - use byteorder::{BigEndian, WriteBytesExt}; - - writer.write_u32::(stat.st_dev)?; - writer.write_u32::(stat.st_ino)?; - writer.write_u32::(stat.st_mode.bits())?; - writer.write_u32::(stat.st_nlink)?; - writer.write_u32::(stat.st_uid)?; - writer.write_u32::(stat.st_gid)?; - writer.write_u32::(stat.st_rdev)?; - writer.write_u64::(stat.st_size)?; - writer.write_u64::(stat.st_blksize)?; - writer.write_u64::(stat.st_blocks)?; - writer.write_u32::(stat.st_atime)?; - writer.write_u32::(stat.st_mtime)?; - writer.write_u32::(stat.st_ctime) -} - -#[allow(dead_code)] -pub fn read_stat(v: &[u8]) -> io::Result { - use byteorder::{BigEndian, ReadBytesExt}; - use std::io::Cursor; - - let mut r = Cursor::new(v); - let st_dev = r.read_u32::()?; - let st_ino = r.read_u32::()?; - let st_mode = HostMode::from_bits_truncate(r.read_u32::()?); - let st_nlink = r.read_u32::()?; - let st_uid = r.read_u32::()?; - let st_gid = r.read_u32::()?; - let st_rdev = r.read_u32::()?; - let st_size = r.read_u64::()?; - let st_blksize = r.read_u64::()?; - let st_blocks = r.read_u64::()?; - let st_atime = r.read_u32::()?; - let st_mtime = r.read_u32::()?; - let st_ctime = r.read_u32::()?; - - Ok(HostStat { - st_dev, - st_ino, - st_mode, - st_nlink, - st_uid, - st_gid, - st_rdev, - st_size, - st_blksize, - st_blocks, - st_atime, - st_mtime, - st_ctime, - }) -} - -/// TODO: doc -pub trait FileSystem { - /// Open a file on the remote stub's current filesystem. - fn host_open(&self, _filename: Vec, _flags: HostOpenFlags, _mode: HostMode) -> IOResult { - Err(()) - } - - /// Close a file opened with `host_open`. - fn host_close(&self, _fd: u64) -> IOResult<()> { - Err(()) - } - - /// Read data from an open file at the given offset. - fn host_pread(&self, _fd: u64, _count: u64, _offset: u64) -> IOResult> { - Err(()) - } - - /// Write data to an open file at the given offset. - fn host_pwrite(&self, _fd: u64, _offset: u64, _data: Vec) -> IOResult { - Err(()) - } - - /// Return a `HostStat` describing the attributes of the given open file. - fn host_fstat(&self, _fd: u64) -> IOResult { - Err(()) - } - - /// Remove a file from the remote stub's current filesystem. - fn host_unlink(&self, _filename: Vec) -> IOResult<()> { - Err(()) - } - - /// Read the contents of a symbolic link on the remote stub's current filesystem. - fn host_readlink(&self, _filename: Vec) -> IOResult> { - Err(()) - } - - /// Set the current filesystem for subsequent host I/O requests. If the - /// given pid is 0, select the filesystem of the remote stub. Otherwise, - /// select the filesystem as seen by the process with the given pid. - fn host_setfs(&self, _pid: u64) -> IOResult<()> { - Err(()) - } -} - -#[test] -fn stat_size() { - // See https://sourceware.org/gdb/onlinedocs/gdb/struct-stat.html#struct-stat - // 10 int fields (32 bits, 4 bytes) - // 3 long fields (64 bits, 8 bytes) - use std::mem; - assert_eq!(mem::size_of::(), 4 * 10 + 8 * 3); -} diff --git a/ckb-gdb-remote-protocol/src/lib.rs b/ckb-gdb-remote-protocol/src/lib.rs deleted file mode 100644 index fb8e9a0..0000000 --- a/ckb-gdb-remote-protocol/src/lib.rs +++ /dev/null @@ -1,2323 +0,0 @@ -//! An implementation of the server side of the GDB Remote Serial -//! Protocol -- the protocol used by GDB and LLDB to talk to remote -//! targets. -//! -//! This library attempts to hide many of the protocol warts from -//! server implementations. It is also mildly opinionated, in that it -//! implements certain features itself and requires users of the -//! library to conform. For example, it unconditionally implements -//! the multiprocess and non-stop modes. -//! -//! ## Protocol Documentation -//! -//! * [Documentation of the protocol](https://sourceware.org/gdb/onlinedocs/gdb/Remote-Protocol.html) -//! * [LLDB extensions](https://github.com/llvm-mirror/lldb/blob/master/docs/lldb-gdb-remote.txt) - -#![deny(missing_docs)] -#![allow(clippy::enum_variant_names, clippy::result_unit_err)] - -use log::{debug, trace}; - -use nom::*; -use strum_macros::*; - -use nom::IResult::*; -use nom::{IResult, Needed}; -use std::borrow::Cow; -use std::cmp::min; -use std::convert::From; -use std::io::{self, Read, Write}; -use std::ops::Range; -use std::str::{self, FromStr}; - -mod fs; -#[cfg(feature = "libc")] -mod libc_fs; -mod sigs; - -pub use self::fs::{FileSystem, HostErrno, HostMode, HostOpenFlags, IOResult}; -#[cfg(feature = "libc")] -pub use self::libc_fs::LibcFS; -pub use self::sigs::Signal; - -use self::fs::{write_stat, HostStat}; - -const MAX_PACKET_SIZE: usize = 64 * 1024; - -named!(checksum<&[u8], u8>, - map_res!(map_res!(take!(2), str::from_utf8), - |s| u8::from_str_radix(s, 16))); - -named!(packet<&[u8], (Vec, u8)>, - preceded!(tag!("$"), - separated_pair!(map!(opt!(is_not!("#")), |o: Option<&[u8]>| { - o.map_or(vec!(), |s| s.to_vec()) - }), - tag!("#"), - checksum))); - -#[derive(Debug, PartialEq, Eq)] -enum Packet { - Ack, - Nack, - Interrupt, - Data(Vec, u8), -} - -named!( - packet_or_response, - alt!( - packet => { |(d, chk)| Packet::Data(d, chk) } - | tag!("+") => { |_| Packet::Ack } - | tag!("-") => { |_| Packet::Nack } - | tag!("\x03") => { |_| Packet::Interrupt } - ) -); - -#[allow(non_camel_case_types)] -#[derive(Copy, Clone, Debug, EnumString, PartialEq)] -enum GDBFeature { - multiprocess, - xmlRegisters, - qRelocInsn, - swbreak, - hwbreak, - #[strum(serialize = "fork-events")] - fork_events, - #[strum(serialize = "vfork-events")] - vfork_events, - #[strum(serialize = "exec-events")] - exec_events, - vContSupported, - // these are not listed in the docs but GDB sends them - #[strum(serialize = "no-resumed")] - no_resumed, - QThreadEvents, -} - -#[derive(Clone, Debug, PartialEq)] -enum Known<'a> { - Yes(GDBFeature), - No(&'a str), -} - -#[derive(Clone, Debug, PartialEq)] -struct GDBFeatureSupported<'a>(Known<'a>, FeatureSupported<'a>); - -#[derive(Clone, Debug, PartialEq)] -enum FeatureSupported<'a> { - Yes, - No, - #[allow(unused)] - Maybe, - Value(&'a str), -} - -/// Defines target for the set_current_thread command. -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum SetThreadFor { - /// For 'Continue' command. - Continue, - /// For `ReadRegister` command. - ReadRegister, -} - -#[derive(Clone, Debug, PartialEq)] -enum Query<'a> { - /// Return the attached state of the indicated process. - // FIXME the PID only needs to be optional in the - // non-multi-process case, which we aren't supporting; but we - // don't send multiprocess+ in the feature response yet. - Attached(Option), - /// Return the current thread ID. - CurrentThread, - /// Search memory for some bytes. - SearchMemory { address: u64, length: u64, bytes: Vec }, - /// Compute the CRC checksum of a block of memory. - // Uncomment this when qC is implemented. - // #[allow(unused)] - // CRC { addr: u64, length: u64 }, - /// Tell the remote stub about features supported by gdb, and query the stub for features - /// it supports. - SupportedFeatures(Vec>), - /// Disable acknowledgments. - StartNoAckMode, - /// Invoke a command on the server. The server defines commands - /// and how to parse them. - Invoke(Vec), - /// Enable or disable address space randomization. - AddressRandomization(bool), - /// Enable or disable catching of syscalls. - CatchSyscalls(Option>), - /// Set the list of pass signals. - PassSignals(Vec), - /// Set the list of program signals. - ProgramSignals(Vec), - /// Get a string description of a thread. - ThreadInfo(ThreadId), - /// Get a list of all active threads - ThreadList(bool), - /// Read a file such as target.xml from server - ReadBytes { - /// An object, like "features" for reading target.xml - object: String, - /// Object-specific data, like the string "target.xml" - annex: String, - /// Offset in data to start reading from - offset: u64, - /// How long to read (at most!) - length: u64, - }, - /// Register info - #[cfg(feature = "lldb")] - RegisterInfo(u64), - /// Process info - #[cfg(feature = "lldb")] - ProcessInfo, - /// Symbol - Symbol(String, String), -} - -/// Part of a process id. -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum Id { - /// A process or thread id. This value may not be 0 or -1. - Id(u32), - /// A special form meaning all processes or all threads of a given - /// process. - All, - /// A special form meaning any process or any thread of a given - /// process. - Any, -} - -/// A thread identifier. In the RSP this is just a numeric handle -/// that is passed across the wire. It needn't correspond to any real -/// thread or process id (though obviously it may be more convenient -/// when it does). -#[derive(Clone, Copy, Debug, PartialEq)] -pub struct ThreadId { - /// The process id. - pub pid: Id, - /// The thread id. - pub tid: Id, -} - -/// A descriptor for a watchpoint. The particular semantics of the watchpoint -/// (watching memory for read or write access) are addressed elsewhere. -#[derive(Clone, Copy, Debug, PartialEq)] -pub struct Watchpoint { - /// The address. - pub addr: u64, - - /// The number of bytes covered. - pub n_bytes: u64, -} - -impl Watchpoint { - fn new(addr: u64, n_bytes: u64) -> Watchpoint { - Watchpoint { addr, n_bytes } - } -} - -/// Target-specific bytecode. -#[derive(Clone, Debug, PartialEq)] -pub struct Bytecode { - /// The bytecodes. - pub bytecode: Vec, -} - -/// A descriptor for a breakpoint. The particular implementation technique -/// of the breakpoint, hardware or software, is handled elsewhere. -#[derive(Clone, Debug, PartialEq)] -pub struct Breakpoint { - /// The address. - pub addr: u64, - - /// The kind of breakpoint. This field is generally 0 and its - /// interpretation is target-specific. A typical use of it is for - /// targets that support multiple execution modes (e.g. ARM/Thumb); - /// different values for this field would identify the kind of code - /// region in which the breakpoint is being inserted. - pub kind: u64, - - /// An optional list of target-specific bytecodes representing - /// conditions. Each condition should be evaluated by the target when - /// the breakpoint is hit to determine whether the hit should be reported - /// back to the debugger. - pub conditions: Option>, - - /// An optional list of target-specific bytecodes representing commands. - /// These commands should be evaluated when a breakpoint is hit; any - /// results are not reported back to the debugger. - pub commands: Option>, -} - -impl Breakpoint { - fn new(addr: u64, kind: u64, conditions: Option>, commands: Option>) -> Breakpoint { - Breakpoint { addr, kind, conditions, commands } - } -} - -/// A descriptor for a region of memory. -#[derive(Clone, Debug, PartialEq)] -pub struct MemoryRegion { - /// The base address. - pub address: u64, - /// The length. - pub length: u64, -} - -impl MemoryRegion { - fn new(address: u64, length: u64) -> MemoryRegion { - MemoryRegion { address, length } - } -} - -/// The name of certain vCont features to be addressed when queried -/// for which are supported. -#[repr(u8)] -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum VContFeature { - /// Indicate that you support continuing until breakpoint - Continue = b'c', - /// Indicate that you support continuing with a signal - ContinueWithSignal = b'C', - /// Indicate that you support singlestepping one instruction - Step = b's', - /// Indicate that you support singlestepping with a signal - StepWithSignal = b'S', - /// Indicate that you support stopping a thread - Stop = b't', - /// Indicate that you support singlestepping while inside of a range - RangeStep = b'r', -} - -/// vCont commands -#[derive(Clone, Debug, PartialEq)] -pub enum VCont { - /// Continue until breakpoint, signal or exit - Continue, - /// Like `Continue`, but replace any current signal with a - /// specified one - ContinueWithSignal(u8), - /// Step one machine instruction - Step, - /// Like `Step`, but replace any current signal with a specified - /// one - StepWithSignal(u8), - /// Only relevant in non-stop mode. Stop a thread and when - /// queried, indicate a stop with signal 0 - Stop, - /// Keep stepping until instruction pointer is outside of - /// specified range. May also spuriously stop, such as when a - /// breakpoint is reached. - RangeStep(Range), -} - -/// GDB remote protocol commands, as defined in (the GDB documentation)[1] -/// [1]: https://sourceware.org/gdb/onlinedocs/gdb/Packets.html#Packets -#[derive(Clone, Debug, PartialEq)] -enum Command<'a> { - /// Detach from a process or from all processes. - Detach(Option), - /// Enable extended mode. - EnableExtendedMode, - /// Indicate the reason the target halted. - TargetHaltReason, - // Read general registers. - ReadGeneralRegisters, - // Write general registers. - WriteGeneralRegisters(Vec), - // Read a single register. - ReadRegister(u64), - // Write a single register. - WriteRegister(u64, Vec), - // Kill request. The argument is the optional PID, provided when the vKill - // packet was used, and None when the k packet was used. - Kill(Option), - // Read specified region of memory. - ReadMemory(MemoryRegion), - // Write specified region of memory. - WriteMemory(MemoryRegion, Vec), - Query(Query<'a>), - #[cfg(feature = "all_stop")] - Continue, - #[cfg(feature = "all_stop")] - Step, - Reset, - PingThread(ThreadId), - CtrlC, - UnknownVCommand, - /// Set the current thread for future commands, such as `ReadRegister`. - SetCurrentThread(SetThreadFor, ThreadId), - /// Insert a software breakpoint. - InsertSoftwareBreakpoint(Breakpoint), - /// Insert a hardware breakpoint - InsertHardwareBreakpoint(Breakpoint), - /// Insert a write watchpoint. - InsertWriteWatchpoint(Watchpoint), - /// Insert a read watchpoint. - InsertReadWatchpoint(Watchpoint), - /// Insert an access watchpoint. - InsertAccessWatchpoint(Watchpoint), - /// Remove a software breakpoint. - RemoveSoftwareBreakpoint(Breakpoint), - /// Remove a hardware breakpoint. - RemoveHardwareBreakpoint(Breakpoint), - /// Remove a write watchpoint. - RemoveWriteWatchpoint(Watchpoint), - /// Remove a read watchpoint. - RemoveReadWatchpoint(Watchpoint), - /// Remove an access watchpoint. - RemoveAccessWatchpoint(Watchpoint), - /// Query for a list of supported vCont features. - VContSupported, - /// Resume with different actions for each thread. Choose the - /// first matching thread in the list. - VCont(Vec<(VCont, Option)>), - /// Open a file on the remote stub's filesystem. - /// TODO structured values for the flags and mode. - HostOpen(Vec, u64, u64), - /// Close an open filehandle from the remote stub's filesystem. - HostClose(u64), - /// Read data from an open filehandle from the remote stub's filesystem. - HostPRead(u64, u64, u64), - /// Write data to an open filehandle from the remote stub's filesystem. - HostPWrite(u64, u64, Vec), - /// Stat an open filehandle from the remote stub's filesystem. - HostFStat(u64), - /// Delete a file on the remote stub's filesystem. - HostUnlink(Vec), - /// Read a symbolic link on the remote stub's filesystem. - HostReadlink(Vec), - /// Set the filesystem for subsequent Host I/O operations, such as `HostOpen`. - HostSetFS(u64), -} - -named!( - gdbfeature>, - map!(map_res!(is_not_s!(";="), str::from_utf8), |s| { - match GDBFeature::from_str(s) { - Ok(f) => Known::Yes(f), - Err(_) => Known::No(s), - } - }) -); - -fn gdbfeaturesupported<'a>(i: &'a [u8]) -> IResult<&'a [u8], GDBFeatureSupported<'a>> { - flat_map!(i, is_not!(";"), |f: &'a [u8]| { - match f.split_last() { - None => IResult::Incomplete(Needed::Size(2)), - Some((&b'+', first)) => map!(first, gdbfeature, |feat| GDBFeatureSupported(feat, FeatureSupported::Yes)), - Some((&b'-', first)) => map!(first, gdbfeature, |feat| GDBFeatureSupported(feat, FeatureSupported::No)), - Some((_, _)) => map!( - f, - separated_pair!(gdbfeature, tag!("="), map_res!(is_not!(";"), str::from_utf8)), - |(feat, value)| GDBFeatureSupported(feat, FeatureSupported::Value(value)) - ), - } - }) -} - -named!(q_search_memory<&[u8], (u64, u64, Vec)>, - complete!(do_parse!( - tag!("qSearch:memory:") >> - address: hex_value >> - tag!(";") >> - length: hex_value >> - tag!(";") >> - data: hex_byte_sequence >> - (address, length, data)))); - -#[cfg(feature = "lldb")] -fn lldb_query(i: &[u8]) -> IResult<&[u8], Query<'_>> { - alt!(i, - tag!("qProcessInfo") => { |_| Query::ProcessInfo } - | preceded!(tag!("qRegisterInfo"), hex_value) => { - |reg| Query::RegisterInfo(reg) - } - ) -} - -#[cfg(not(feature = "lldb"))] -fn lldb_query(_i: &[u8]) -> IResult<&[u8], Query<'_>> { - IResult::Error(error_position!(ErrorKind::Alt, _i)) -} - -fn query<'a>(i: &'a [u8]) -> IResult<&'a [u8], Query<'a>> { - alt_complete!(i, - tag!("qC") => { |_| Query::CurrentThread } - | preceded!(tag!("qSupported"), - preceded!(tag!(":"), - separated_list_complete!(tag!(";"), - gdbfeaturesupported))) => { - |features: Vec>| Query::SupportedFeatures(features) - } - | preceded!(tag!("qRcmd,"), hex_byte_sequence) => { - |bytes| Query::Invoke(bytes) - } - | q_search_memory => { - |(address, length, bytes)| Query::SearchMemory { address, length, bytes } - } - | tag!("QStartNoAckMode") => { |_| Query::StartNoAckMode } - | preceded!(tag!("qAttached:"), hex_value) => { - |value| Query::Attached(Some(value)) - } - | tag!("qAttached") => { |_| Query::Attached(None) } - | tag!("qfThreadInfo") => { |_| Query::ThreadList(true) } - | tag!("qsThreadInfo") => { |_| Query::ThreadList(false) } - | tag!("QDisableRandomization:0") => { |_| Query::AddressRandomization(true) } - | tag!("QDisableRandomization:1") => { |_| Query::AddressRandomization(false) } - | tag!("QCatchSyscalls:0") => { |_| Query::CatchSyscalls(None) } - | preceded!(tag!("QCatchSyscalls:1"), - many0!(preceded!(tag!(";"), hex_value))) => { - |syscalls| Query::CatchSyscalls(Some(syscalls)) - } - | preceded!(tag!("QPassSignals:"), - separated_list_complete!(tag!(";"), hex_value)) => { - |signals| Query::PassSignals(signals) - } - | preceded!(tag!("QProgramSignals:"), - separated_nonempty_list_complete!(tag!(";"), hex_value)) => { - |signals| Query::ProgramSignals(signals) - } - | preceded!(tag!("qThreadExtraInfo,"), parse_thread_id) => { - |thread_id| Query::ThreadInfo(thread_id) - } - | tuple!( - preceded!(tag!("qSymbol:"), map_res!(take_until!(":"), str::from_utf8)), - preceded!(tag!(":"), map_res!(eof!(), str::from_utf8))) => { - |(sym_value, sym_name): (&str, &str)| Query::Symbol(sym_value.to_owned(), sym_name.to_owned()) - } - | tuple!( - preceded!(tag!("qXfer:"), map_res!(take_until!(":"), str::from_utf8)), - preceded!(tag!(":read:"), map_res!(take_until!(":"), str::from_utf8)), - preceded!(tag!(":"), hex_value), - preceded!(tag!(","), hex_value)) => { - |(object, annex, offset, length): (&str, &str, u64, u64)| Query::ReadBytes { - object: object.to_owned(), - annex: annex.to_owned(), - offset, - length, - } - } - | lldb_query => { - |q| q - } - ) -} - -// TODO: should the caller be responsible for determining whether they actually -// wanted a u32, or should we provide different versions of this function with -// extra checking? -named!(hex_value<&[u8], u64>, -map!(take_while1!(&nom::is_hex_digit), - |hex| { - let s = str::from_utf8(hex).unwrap(); - let r = u64::from_str_radix(s, 16); - r.unwrap() - })); - -named!(hex_digit<&[u8], char>, - one_of!("0123456789abcdefABCDEF")); - -named!(hex_byte<&[u8], u8>, - do_parse!( - digit0: hex_digit >> - digit1: hex_digit >> - ((16 * digit0.to_digit(16).unwrap() + digit1.to_digit(16).unwrap()) as u8) - ) -); - -named!(hex_byte_sequence<&[u8], Vec>, - many1!(hex_byte)); - -named!(write_memory<&[u8], (u64, u64, Vec)>, - complete!(do_parse!( - tag!("M") >> - address: hex_value >> - tag!(",") >> - length: hex_value >> - tag!(":") >> - data: hex_byte_sequence >> - (address, length, data)))); - -named!(binary_byte<&[u8], u8>, - alt_complete!( - preceded!(tag!("}"), take!(1)) => { |b: &[u8]| b[0] ^ 0x20 } | - take!(1) => { |b: &[u8]| b[0] })); - -named!(binary_byte_sequence<&[u8], Vec>, - many1!(binary_byte)); - -named!(write_memory_binary<&[u8], (u64, u64, Vec)>, - complete!(do_parse!( - tag!("X") >> - address: hex_value >> - tag!(",") >> - length: hex_value >> - tag!(":") >> - data: binary_byte_sequence >> - (address, length, data)))); - -named!(read_memory<&[u8], (u64, u64)>, - preceded!(tag!("m"), - separated_pair!(hex_value, - tag!(","), - hex_value))); - -named!(read_register<&[u8], u64>, - preceded!(tag!("p"), hex_value)); - -named!(write_register<&[u8], (u64, Vec)>, - preceded!(tag!("P"), - separated_pair!(hex_value, - tag!("="), - hex_byte_sequence))); - -named!(write_general_registers<&[u8], Vec>, - preceded!(tag!("G"), hex_byte_sequence)); - -// Helper for parse_thread_id that parses a single thread-id element. -named!(parse_thread_id_element<&[u8], Id>, - alt_complete!(tag!("0") => { |_| Id::Any } - | tag!("-1") => { |_| Id::All } - | hex_value => { |val: u64| Id::Id(val as u32) })); - -// Parse a thread-id. -named!(parse_thread_id<&[u8], ThreadId>, -alt_complete!(parse_thread_id_element => { |pid| ThreadId { pid, tid: Id::Any } } - | preceded!(tag!("p"), - separated_pair!(parse_thread_id_element, - tag!("."), - parse_thread_id_element)) => { - |pair: (Id, Id)| ThreadId { pid: pair.0, tid: pair.1 } - } - | preceded!(tag!("p"), parse_thread_id_element) => { - |id: Id| ThreadId { pid: id, tid: Id::All } - })); - -// Parse the T packet. -named!(parse_ping_thread<&[u8], ThreadId>, - preceded!(tag!("T"), parse_thread_id)); - -fn parse_vfile_open(i: &[u8]) -> IResult<&[u8], Command<'_>> { - do_parse!( - i, - tag!("open:") - >> filename: hex_byte_sequence - >> tag!(",") - >> flags: hex_value - >> tag!(",") - >> mode: hex_value - >> (Command::HostOpen(filename, flags, mode)) - ) -} - -fn parse_vfile_close(i: &[u8]) -> IResult<&[u8], Command> { - do_parse!( - i, - tag!("close:") >> fd: hex_value >> (Command::HostClose(fd)) - ) -} - -fn parse_vfile_pread(i: &[u8]) -> IResult<&[u8], Command<'_>> { - do_parse!( - i, - tag!("pread:") - >> fd: hex_value - >> tag!(",") - >> count: hex_value - >> tag!(",") - >> offset: hex_value - >> (Command::HostPRead(fd, count, offset)) - ) -} - -fn parse_vfile_pwrite(i: &[u8]) -> IResult<&[u8], Command<'_>> { - do_parse!( - i, - tag!("pwrite:") - >> fd: hex_value - >> tag!(",") - >> offset: hex_value - >> tag!(",") - >> data: binary_byte_sequence - >> (Command::HostPWrite(fd, offset, data)) - ) -} - -fn parse_vfile_fstat(i: &[u8]) -> IResult<&[u8], Command<'_>> { - do_parse!( - i, - tag!("fstat:") >> fd: hex_value >> (Command::HostFStat(fd)) - ) -} - -fn parse_vfile_unlink(i: &[u8]) -> IResult<&[u8], Command<'_>> { - do_parse!( - i, - tag!("unlink:") >> filename: hex_byte_sequence >> (Command::HostUnlink(filename)) - ) -} - -fn parse_vfile_readlink(i: &[u8]) -> IResult<&[u8], Command<'_>> { - do_parse!( - i, - tag!("readlink:") >> filename: hex_byte_sequence >> (Command::HostReadlink(filename)) - ) -} - -fn parse_vfile_setfs(i: &[u8]) -> IResult<&[u8], Command<'_>> { - do_parse!( - i, - tag!("setfs:") >> pid: hex_value >> (Command::HostSetFS(pid)) - ) -} - -fn parse_unknown_vfile_op(i: &[u8]) -> IResult<&[u8], Command<'_>> { - // TODO: log the unknown operation for debugging purposes. - map!(i, take_till!(|_| { false }), { |_: &[u8]| Command::UnknownVCommand }) -} - -fn parse_vfile_op(i: &[u8]) -> IResult<&[u8], Command<'_>> { - alt_complete!( - i, - parse_vfile_open - | parse_vfile_close - | parse_vfile_pread - | parse_vfile_pwrite - | parse_vfile_fstat - | parse_vfile_unlink - | parse_vfile_readlink - | parse_vfile_setfs - | parse_unknown_vfile_op - ) -} - -fn v_command(i: &[u8]) -> IResult<&[u8], Command<'_>> { - alt_complete!(i, - tag!("vCtrlC") => { |_| Command::CtrlC } - | preceded!(tag!("vCont"), - alt_complete!(tag!("?") => { |_| Command::VContSupported } - | many0!(do_parse!( - tag!(";") >> - action: alt_complete!(tag!("c") => { |_| VCont::Continue } - | preceded!(tag!("C"), hex_byte) => { |sig| VCont::ContinueWithSignal(sig) } - | tag!("s") => { |_| VCont::Step } - | preceded!(tag!("S"), hex_byte) => { |sig| VCont::StepWithSignal(sig) } - | tag!("t") => { |_| VCont::Stop } - | do_parse!(tag!("r") >> - start: hex_value >> - tag!(",") >> - end: hex_value >> - (start, end)) => { |(start, end)| VCont::RangeStep(start..end) } - ) >> - thread: opt!(complete!(preceded!(tag!(":"), parse_thread_id))) >> - (action, thread) - )) => { |actions| Command::VCont(actions) } - )) => { - |c| c - } - | preceded!(tag!("vKill;"), hex_value) => { - |pid| Command::Kill(Some(pid)) - } - | preceded!(tag!("vFile:"), parse_vfile_op) => { - |c| c - } - // TODO: log the unknown command for debugging purposes. - | preceded!(tag!("v"), take_till!(|_| { false })) => { - |_| Command::UnknownVCommand - }) -} - -// Parse the H packet. -named!(parse_h_packet<&[u8], (SetThreadFor, ThreadId)>, - alt_complete!( - preceded!(tag!("Hg"), parse_thread_id) => { - |id| (SetThreadFor::ReadRegister, id) - } - | preceded!(tag!("Hc"), parse_thread_id) => { - |id| (SetThreadFor::Continue, id) - } -)); - -// Parse the D packet. -named!(parse_d_packet<&[u8], Option>, - alt_complete!(preceded!(tag!("D;"), hex_value) => { - |pid| Some(pid) - } - | tag!("D") => { |_| None })); - -#[derive(Copy, Clone)] -enum ZAction { - Insert, - Remove, -} - -named!(parse_z_action<&[u8], ZAction>, - alt_complete!(tag!("z") => { |_| ZAction::Remove } | - tag!("Z") => { |_| ZAction::Insert })); - -#[derive(Copy, Clone)] -enum ZType { - SoftwareBreakpoint, - HardwareBreakpoint, - WriteWatchpoint, - ReadWatchpoint, - AccessWatchpoint, -} - -named!(parse_z_type<&[u8], ZType>, - alt_complete!(tag!("0") => { |_| ZType::SoftwareBreakpoint } | - tag!("1") => { |_| ZType::HardwareBreakpoint } | - tag!("2") => { |_| ZType::WriteWatchpoint } | - tag!("3") => { |_| ZType::ReadWatchpoint } | - tag!("4") => { |_| ZType::AccessWatchpoint })); - -named!(parse_cond_or_command_expression<&[u8], Bytecode>, - do_parse!(tag!("X") >> - len: hex_value >> - tag!(",") >> - expr: take!(len) >> - (Bytecode { bytecode: expr.to_vec() }))); - -named!(parse_condition_list<&[u8], Vec>, - do_parse!(tag!(";") >> - list: many1!(parse_cond_or_command_expression) >> - (list))); - -fn maybe_condition_list(i: &[u8]) -> IResult<&[u8], Option>> { - // An Incomplete here really means "not enough input to match a - // condition list", and that's OK. An Error is *probably* that the - // input contains a command list rather than a condition list; the - // two are identical in their first character. So just ignore that - // FIXME. - match parse_condition_list(i) { - Done(rest, v) => Done(rest, Some(v)), - Incomplete(_i) => Done(i, None), - Error(_) => Done(i, None), - } -} - -named!(parse_command_list<&[u8], Vec>, - // FIXME we drop the persistence flag here. - do_parse!(tag!(";cmds") >> - list: alt_complete!(do_parse!(persist_flag: hex_value >> - tag!(",") >> - cmd_list: many1!(parse_cond_or_command_expression) >> - (cmd_list)) | - many1!(parse_cond_or_command_expression)) >> - (list))); - -fn maybe_command_list(i: &[u8]) -> IResult<&[u8], Option>> { - // An Incomplete here really means "not enough input to match a - // command list", and that's OK. - match parse_command_list(i) { - Done(rest, v) => Done(rest, Some(v)), - Incomplete(_i) => Done(i, None), - Error(e) => Error(e), - } -} - -named!(parse_cond_and_command_list<&[u8], (Option>, - Option>)>, - do_parse!(cond_list: maybe_condition_list >> - cmd_list: maybe_command_list >> - (cond_list, cmd_list))); - -fn parse_z_packet(i: &[u8]) -> IResult<&[u8], Command<'_>> { - let (rest, (action, type_, addr, kind)) = try_parse!( - i, - do_parse!( - action: parse_z_action - >> type_: parse_z_type - >> tag!(",") - >> addr: hex_value - >> tag!(",") - >> kind: hex_value - >> (action, type_, addr, kind) - ) - ); - - return match action { - ZAction::Insert => insert_command(rest, type_, addr, kind), - ZAction::Remove => Done(rest, remove_command(type_, addr, kind)), - }; - - fn insert_command(rest: &[u8], type_: ZType, addr: u64, kind: u64) -> IResult<&[u8], Command<'_>> { - match type_ { - // Software and hardware breakpoints both permit optional condition - // lists and commands that are evaluated on the target when - // breakpoints are hit. - ZType::SoftwareBreakpoint | ZType::HardwareBreakpoint => { - let (rest, (cond_list, cmd_list)) = parse_cond_and_command_list(rest).unwrap(); - let c = (match type_ { - ZType::SoftwareBreakpoint => Command::InsertSoftwareBreakpoint, - ZType::HardwareBreakpoint => Command::InsertHardwareBreakpoint, - // Satisfy rustc's checking - _ => panic!("cannot get here"), - })(Breakpoint::new(addr, kind, cond_list, cmd_list)); - Done(rest, c) - } - ZType::WriteWatchpoint => Done(rest, Command::InsertWriteWatchpoint(Watchpoint::new(addr, kind))), - ZType::ReadWatchpoint => Done(rest, Command::InsertReadWatchpoint(Watchpoint::new(addr, kind))), - ZType::AccessWatchpoint => Done(rest, Command::InsertAccessWatchpoint(Watchpoint::new(addr, kind))), - } - } - - fn remove_command<'a>(type_: ZType, addr: u64, kind: u64) -> Command<'a> { - match type_ { - ZType::SoftwareBreakpoint => Command::RemoveSoftwareBreakpoint(Breakpoint::new(addr, kind, None, None)), - ZType::HardwareBreakpoint => Command::RemoveHardwareBreakpoint(Breakpoint::new(addr, kind, None, None)), - ZType::WriteWatchpoint => Command::RemoveWriteWatchpoint(Watchpoint::new(addr, kind)), - ZType::ReadWatchpoint => Command::RemoveReadWatchpoint(Watchpoint::new(addr, kind)), - ZType::AccessWatchpoint => Command::RemoveAccessWatchpoint(Watchpoint::new(addr, kind)), - } - } -} - -#[cfg(feature = "all_stop")] -fn all_stop_command(i: &[u8]) -> IResult<&[u8], Command<'_>> { - alt!(i, - tag!("c") => { |_| Command::Continue } - | tag!("s") => { |_| Command::Step } - ) -} - -#[cfg(not(feature = "all_stop"))] -fn all_stop_command(_i: &[u8]) -> IResult<&[u8], Command<'_>> { - IResult::Error(error_position!(ErrorKind::Alt, _i)) -} - -fn command(i: &[u8]) -> IResult<&[u8], Command<'_>> { - alt!(i, - tag!("!") => { |_| Command::EnableExtendedMode } - | tag!("?") => { |_| Command::TargetHaltReason } - | parse_d_packet => { |pid| Command::Detach(pid) } - | tag!("g") => { |_| Command::ReadGeneralRegisters } - | write_general_registers => { |bytes| Command::WriteGeneralRegisters(bytes) } - | parse_h_packet => { |(f, thread_id)| Command::SetCurrentThread(f, thread_id) } - | tag!("k") => { |_| Command::Kill(None) } - | read_memory => { |(addr, length)| Command::ReadMemory(MemoryRegion::new(addr, length)) } - | write_memory => { |(addr, length, bytes)| Command::WriteMemory(MemoryRegion::new(addr, length), bytes) } - | read_register => { |regno| Command::ReadRegister(regno) } - | write_register => { |(regno, bytes)| Command::WriteRegister(regno, bytes) } - | query => { |q| Command::Query(q) } - | tag!("r") => { |_| Command::Reset } - | preceded!(tag!("R"), take!(2)) => { |_| Command::Reset } - | parse_ping_thread => { |thread_id| Command::PingThread(thread_id) } - | v_command => { |command| command } - | write_memory_binary => { |(addr, length, bytes)| Command::WriteMemory(MemoryRegion::new(addr, length), bytes) } - | parse_z_packet => { |command| command } - | all_stop_command => { |command| command } - ) -} - -/// An error as returned by a `Handler` method. -pub enum Error { - /// A plain error. The meaning of the value is not defined by the - /// protocol. Different values can therefore be used by a handler - /// for debugging purposes. - Error(u8), - /// The request is not implemented. Note that, in some cases, the - /// protocol implementation tells the client that a feature is implemented; - /// if the handler method then returns `Unimplemented`, the client will - /// be confused. So, normally it is best either to not implement - /// a `Handler` method, or to return `Error` from implementations. - Unimplemented, -} - -/// The `qAttached` packet lets the client distinguish between -/// attached and created processes, so that it knows whether to send a -/// detach request when disconnecting. -#[derive(Clone, Copy, Debug)] -pub enum ProcessType { - /// The process already existed and was attached to. - Attached, - /// The process was created by the server. - Created, -} - -/// The possible reasons for a thread to stop. -#[derive(Clone, Copy, Debug)] -pub enum StopReason { - /// Process stopped due to a signal. - Signal(u8), - /// The process with the given PID exited with the given status. - Exited(u64, u8), - /// The process with the given PID terminated due to the given - /// signal. - ExitedWithSignal(u64, u8), - /// The indicated thread exited with the given status. - ThreadExited(ThreadId, u64), - /// There are no remaining resumed threads. - // FIXME we should report the 'no-resumed' feature in response to - // qSupports before emitting this; and we should also check that - // the client knows about it. - NoMoreThreads, - // FIXME implement these as well. These are used by the T packet, - // which can also send along registers. - // Watchpoint(u64), - // ReadWatchpoint(u64), - // AccessWatchpoint(u64), - // SyscallEntry(u8), - // SyscallExit(u8), - // LibraryChange, - // ReplayLogStart, - // ReplayLogEnd, - // SoftwareBreakpoint, - // HardwareBreakpoint, - // Fork(ThreadId), - // VFork(ThreadId), - // VForkDone, - // Exec(String), - // NewThread(ThreadId), -} - -/// Symbol lookup response. -#[derive(Clone, Debug)] -pub enum SymbolLookupResponse { - /// No symbol name. - Ok, - /// New symbol name. - Symbol(String), -} - -/// This trait should be implemented by servers. Methods in the trait -/// generally default to returning `Error::Unimplemented`; but some -/// exceptions are noted below. Methods that must be implemented in -/// order for the server to work at all do not have a default -/// implementation. -pub trait Handler { - /// Return a vector of additional features supported by this handler. - /// Note that there currently is no way to override the built-in - /// features that are always handled by the protocol - /// implementation. - fn query_supported_features(&self) -> Vec { - vec![] - } - - /// Indicate whether the process in question already existed, and - /// was attached to; or whether it was created by this server. - fn attached(&self, _pid: Option) -> Result; - - /// Detach from the process. - fn detach(&self, _pid: Option) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Kill the indicated process. If no process is given, then the - /// precise effect is unspecified; but killing any or all - /// processes, or even rebooting an entire bare-metal target, - /// would be appropriate. - fn kill(&self, _pid: Option) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Check whether the indicated thread is alive. If alive, return - /// `()`. Otherwise, return an error. - fn ping_thread(&self, _id: ThreadId) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Read a memory region. - fn read_memory(&self, _region: MemoryRegion) -> Result, Error> { - Err(Error::Unimplemented) - } - - /// Write the provided bytes to memory at the given address. - fn write_memory(&self, _address: u64, _bytes: &[u8]) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Read the contents of the indicated register. The results - /// should be in target byte order. Note that a value-based API - /// is not provided here because on some architectures, there are - /// registers wider than ordinary integer types. - fn read_register(&self, _register: u64) -> Result, Error> { - Err(Error::Unimplemented) - } - - /// Set the contents of the indicated register to the given - /// contents. The contents are in target byte order. Note that a - /// value-based API is not provided here because on some - /// architectures, there are registers wider than ordinary integer - /// types. - fn write_register(&self, _register: u64, _contents: &[u8]) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Return the general registers. The registers are returned as a - /// vector of bytes, with the registers appearing contiguously in - /// a target-specific order, with the bytes laid out in the target - /// byte order. - fn read_general_registers(&self) -> Result, Error> { - Err(Error::Unimplemented) - } - - /// Write the general registers. The registers are specified as a - /// vector of bytes, with the registers appearing contiguously in - /// a target-specific order, with the bytes laid out in the target - /// byte order. - fn write_general_registers(&self, _contents: &[u8]) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Read raw bytes from an object, such as "target.xml". See - /// https://sourceware.org/gdb/onlinedocs/gdb/General-Query-Packets.html#qXfer-read, - /// which describes which kinds of qXfer packets are available. - /// - /// Return `(buffer, eof)`, a tuple containing the read bytes (at most of - /// size `length`), if any, and also a boolean specifying whether or not - /// you're at the end (true = end of file, false = there's more to - /// read). - /// - /// If you're unsure of what to do, follow the rule `eof = - /// buffer.is_empty()`. You're allowed to lie about EOF when you're at the - /// end, GDB will just send one extra command asking for data, where you - /// must disappoint it by admitting you lied. - fn read_bytes( - &self, - _object: String, - _annex: String, - _offset: u64, - _length: u64, - ) -> Result<(Vec, bool), Error> { - Err(Error::Unimplemented) - } - - /// Return the identifier of the current thread. - fn current_thread(&self) -> Result, Error> { - Ok(None) - } - - /// Set the current thread for future operations. - fn set_current_thread(&self, _for: SetThreadFor, _id: ThreadId) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Search memory. The search begins at the given address, and - /// ends after length bytes have been searched. If the provided - /// bytes are not seen, `None` should be returned; otherwise, the - /// address at which the bytes were found should be returned. - fn search_memory(&self, _address: u64, _length: u64, _bytes: &[u8]) -> Result, Error> { - Err(Error::Unimplemented) - } - - /// Return the reason that the inferior has halted. - fn halt_reason(&self) -> Result; - - /// Invoke a command. The command is just a sequence of bytes - /// (typically ASCII characters), to be interpreted by the server - /// in any way it likes. The result is output to send back to the - /// client. This is used to implement gdb's `monitor` command. - fn invoke(&self, _: &[u8]) -> Result { - Err(Error::Unimplemented) - } - - /// Enable or disable address space randomization. This setting - /// should be used when launching a new process. - fn set_address_randomization(&self, _enable: bool) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Start or stop catching syscalls. If the argument is `None`, then - /// stop catching syscalls. Otherwise, start catching syscalls. - /// If any syscalls are specified, then only those need be caught; - /// however, it is ok to report syscall stops that aren't in the - /// list if that is convenient. - fn catch_syscalls(&self, _syscalls: Option>) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Set the list of "pass signals". A signal marked as a pass - /// signal can be delivered to the inferior. No stopping or - /// notification of the client is required. - fn set_pass_signals(&self, _signals: Vec) -> Result<(), Error> { - Ok(()) - } - - /// Set the list of "program signals". A signal marked as a - /// program signal can be delivered to the inferior; other signals - /// should be silently discarded. - fn set_program_signals(&self, _signals: Vec) -> Result<(), Error> { - Ok(()) - } - - /// Return information about a given thread. The returned - /// information is just a string description that can be presented - /// to the user. - fn thread_info(&self, _thread: ThreadId) -> Result { - Err(Error::Unimplemented) - } - - /// Return a list of all active thread IDs. GDB will call this in - /// a paging fashion: First query has `reset` set to true and - /// should reply with the first chunk of threads. Further queries - /// have `reset` set to false and should respond with a chunk of - /// remaining threads, until completion which should return an - /// empty list to signify it's the end. - /// - /// Each initial GDB connection will query this and the very first - /// thread ID will be stopped - so ensure the first ID is ready to - /// be stopped and inspected by GDB. - fn thread_list(&self, _reset: bool) -> Result, Error> { - Err(Error::Unimplemented) - } - - /// Insert a software breakpoint. - fn insert_software_breakpoint(&self, _breakpoint: Breakpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Insert a hardware breakpoint. - fn insert_hardware_breakpoint(&self, _breakpoint: Breakpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Insert a write watchpoint. - fn insert_write_watchpoint(&self, _watchpoint: Watchpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Insert a read watchpoint. - fn insert_read_watchpoint(&self, _watchpoint: Watchpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Insert an access watchpoint. - fn insert_access_watchpoint(&self, _watchpoint: Watchpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Remove a software breakpoint. - fn remove_software_breakpoint(&self, _breakpoint: Breakpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Remove a hardware breakpoint. - fn remove_hardware_breakpoint(&self, _breakpoint: Breakpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Remove a write watchpoint. - fn remove_write_watchpoint(&self, _watchpoint: Watchpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Remove a read watchpoint. - fn remove_read_watchpoint(&self, _watchpoint: Watchpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Remove an access watchpoint. - fn remove_access_watchpoint(&self, _watchpoint: Watchpoint) -> Result<(), Error> { - Err(Error::Unimplemented) - } - - /// Query for a list of supported vCont features. - fn query_supported_vcont(&self) -> Result, Error> { - Err(Error::Unimplemented) - } - - /// Resume with different actions for each thread. Choose the - /// first matching thread in the list. - fn vcont(&self, _request: Vec<(VCont, Option)>) -> Result { - Err(Error::Unimplemented) - } - - /// Return a filesystem handle to use for `vFile` requests. - /// - /// # Dynamic types - /// - /// The reason this uses a &dyn pointer instead of a generic HostFS type parameter, is that type parameters with default values aren't stable yet - fn fs(&self) -> Result<&dyn FileSystem, ()> { - Err(()) - } - - /// Continues execution. - #[cfg(feature = "all_stop")] - fn process_continue(&self) -> Result { - Err(Error::Unimplemented) - } - - /// Step execution. - #[cfg(feature = "all_stop")] - fn process_step(&self) -> Result { - Err(Error::Unimplemented) - } - - /// Notifies about symbol requests. - fn process_symbol(&self, _sym_value: &str, _sym_name: &str) -> Result { - Err(Error::Unimplemented) - } - - /// Returns information about specified register. - #[cfg(feature = "lldb")] - fn register_info(&self, _reg: u64) -> Result { - Err(Error::Unimplemented) - } - - /// Returns process information. - #[cfg(feature = "lldb")] - fn process_info(&self) -> Result { - Err(Error::Unimplemented) - } -} - -fn compute_checksum_incremental(bytes: &[u8], init: u8) -> u8 { - bytes.iter().fold(init, |sum, &b| sum.wrapping_add(b)) -} - -#[derive(Debug)] -enum HostIOResult { - Ok, // close, unlink, setfs - Error(HostErrno), // error result for any operation - Integer(u64), // open, pwrite - Data(Vec), // pread, readlink - Stat(HostStat), // fstat -} - -#[derive(Debug)] -enum Response<'a> { - Empty, - Ok, - Error(u8), - String(Cow<'a, str>), - Output(String), - Bytes(Vec), - BytesOrEof(Vec, bool), - CurrentThread(Option), - ProcessType(ProcessType), - Stopped(StopReason), - SearchResult(Option), - VContFeatures(Cow<'static, [VContFeature]>), - ThreadList(Vec), - HostIOResult(HostIOResult), - SymbolName(String), -} - -impl<'a, T> From> for Response<'a> -where - Response<'a>: From, -{ - fn from(result: Result) -> Self { - match result { - Result::Ok(val) => val.into(), - Result::Err(Error::Error(val)) => Response::Error(val), - Result::Err(Error::Unimplemented) => Response::Empty, - } - } -} - -impl<'a, T> From> for HostIOResult -where - HostIOResult: From, -{ - fn from(result: Result) -> Self { - match result { - Result::Ok(val) => val.into(), - Result::Err(errno) => HostIOResult::Error(errno), - } - } -} - -impl From<()> for HostIOResult { - fn from(_: ()) -> Self { - HostIOResult::Ok - } -} - -impl From for HostIOResult { - fn from(i: u64) -> Self { - HostIOResult::Integer(i) - } -} - -impl From> for HostIOResult { - fn from(data: Vec) -> Self { - HostIOResult::Data(data) - } -} - -impl From for HostIOResult { - fn from(stat: HostStat) -> Self { - HostIOResult::Stat(stat) - } -} - -impl<'a, T> From> for Response<'a> -where - HostIOResult: From, -{ - fn from(result: IOResult) -> Self { - match result { - Result::Ok(val) => Response::HostIOResult(val.into()), - // Indicates the operation wasn't supported. - Result::Err(_) => Response::Empty, - } - } -} - -impl<'a> From<()> for Response<'a> { - fn from(_: ()) -> Self { - Response::Ok - } -} - -impl<'a> From> for Response<'a> { - fn from(response: Vec) -> Self { - Response::Bytes(response) - } -} - -impl<'a> From<(Vec, bool)> for Response<'a> { - fn from((data, eof): (Vec, bool)) -> Self { - Response::BytesOrEof(data, eof) - } -} - -impl<'a> From> for Response<'a> { - fn from(response: Option) -> Self { - Response::CurrentThread(response) - } -} - -// This seems a bit specific -- what if some other handler method -// wants to return an Option? -impl<'a> From> for Response<'a> { - fn from(response: Option) -> Self { - Response::SearchResult(response) - } -} - -impl<'a> From for Response<'a> { - fn from(process_type: ProcessType) -> Self { - Response::ProcessType(process_type) - } -} - -impl<'a> From for Response<'a> { - fn from(reason: StopReason) -> Self { - Response::Stopped(reason) - } -} - -impl<'a> From for Response<'a> { - fn from(reason: String) -> Self { - Response::String(Cow::Owned(reason) as Cow<'_, str>) - } -} - -impl<'a> From> for Response<'a> { - fn from(features: Cow<'static, [VContFeature]>) -> Self { - Response::VContFeatures(features) - } -} - -impl<'a> From> for Response<'a> { - fn from(threads: Vec) -> Self { - Response::ThreadList(threads) - } -} - -impl<'a> From for Response<'a> { - fn from(response: SymbolLookupResponse) -> Self { - match response { - SymbolLookupResponse::Ok => Response::Ok, - SymbolLookupResponse::Symbol(n) => Response::SymbolName(n), - } - } -} - -impl<'a> From for Response<'a> { - fn from(result: HostIOResult) -> Self { - Response::HostIOResult(result) - } -} - -// A writer which sends a single packet. -struct PacketWriter<'a, W> -where - W: Write, -{ - writer: &'a mut W, - checksum: u8, -} - -impl<'a, W> PacketWriter<'a, W> -where - W: Write, -{ - fn new(writer: &'a mut W) -> PacketWriter<'a, W> { - PacketWriter { writer, checksum: 0 } - } - - fn finish(&mut self) -> io::Result<()> { - write!(self.writer, "#{:02x}", self.checksum)?; - self.writer.flush()?; - self.checksum = 0; - Ok(()) - } -} - -impl<'a, W> Write for PacketWriter<'a, W> -where - W: Write, -{ - fn write(&mut self, buf: &[u8]) -> io::Result { - let count = self.writer.write(buf)?; - self.checksum = compute_checksum_incremental(&buf[0..count], self.checksum); - Ok(count) - } - - fn flush(&mut self) -> io::Result<()> { - self.writer.flush() - } -} - -fn write_thread_id(writer: &mut W, thread_id: ThreadId) -> io::Result<()> -where - W: Write, -{ - write!(writer, "p")?; - match thread_id.pid { - Id::All => write!(writer, "-1"), - Id::Any => write!(writer, "0"), - Id::Id(num) => write!(writer, "{:x}", num), - }?; - write!(writer, ".")?; - match thread_id.tid { - Id::All => write!(writer, "-1"), - Id::Any => write!(writer, "0"), - Id::Id(num) => write!(writer, "{:x}", num), - } -} - -impl From for Vec { - fn from(stat: HostStat) -> Self { - let mut v = vec![]; - // XXX: this can technically fail, and we shouldn't be ignoring it. - write_stat(&mut v, stat).unwrap(); - v - } -} - -fn write_hex_data(writer: &mut W, data: &[u8]) -> io::Result<()> -where - W: Write, -{ - for b in data { - write!(writer, "{:02x}", b)?; - } - Ok(()) -} - -fn write_binary_data(writer: &mut W, data: &[u8]) -> io::Result<()> -where - W: Write, -{ - // Modern GDB way of transmitting bytes: Send it raw, but with } as - // escape character. See - // https://sourceware.org/gdb/onlinedocs/gdb/Overview.html#Binary-Data - let mut remaining = data; - loop { - let unescaped = min( - memchr::memchr3(b'#', b'$', b'}', remaining).unwrap_or(remaining.len()), - memchr::memchr(b'*', remaining).unwrap_or(remaining.len()), - ); - writer.write_all(&remaining[..unescaped])?; - - remaining = &remaining[unescaped..]; - - // We only stop when... - match remaining.first() { - // ... a character needs to be escaped - Some(byte) => writer.write_all(&[b'}', byte ^ 0x20])?, - // ... we reach EOF - None => break, - } - - remaining = &remaining[1..]; - } - Ok(()) -} - -fn write_response(response: Response<'_>, writer: &mut W) -> io::Result<()> -where - W: Write, -{ - trace!("Response: {:?}", response); - write!(writer, "$")?; - - let mut writer = PacketWriter::new(writer); - match response { - Response::Ok => { - write!(writer, "OK")?; - } - Response::Empty => {} - Response::Error(val) => { - write!(writer, "E{:02x}", val)?; - } - Response::String(s) => { - write!(writer, "{}", s)?; - } - Response::Output(s) => { - write!(writer, "O")?; - for byte in s.as_bytes() { - write!(writer, "{:02x}", byte)?; - } - } - Response::Bytes(bytes) => { - for byte in bytes { - write!(writer, "{:02x}", byte)?; - } - } - Response::BytesOrEof(bytes, eof) => { - write!(writer, "{}", if eof { "l" } else { "m" })?; - write_binary_data(&mut writer, &bytes)?; - } - Response::CurrentThread(tid) => { - // This is incorrect if multiprocess hasn't yet been enabled. - match tid { - None => write!(writer, "OK")?, - Some(thread_id) => { - write!(writer, "QC")?; - write_thread_id(&mut writer, thread_id)?; - } - }; - } - Response::ProcessType(process_type) => { - match process_type { - ProcessType::Attached => write!(writer, "1")?, - ProcessType::Created => write!(writer, "0")?, - }; - } - Response::SearchResult(maybe_addr) => match maybe_addr { - Some(addr) => write!(writer, "1,{:x}", addr)?, - None => write!(writer, "0")?, - }, - Response::Stopped(stop_reason) => { - match stop_reason { - StopReason::Signal(signo) => write!(writer, "S{:02x}", signo)?, - StopReason::Exited(pid, status) => { - // Non-multi-process gdb only accepts 2 hex digits - // for the status. - write!(writer, "W{:02x};process:{:x}", status, pid)?; - } - StopReason::ExitedWithSignal(pid, status) => { - // Non-multi-process gdb only accepts 2 hex digits - // for the status. - write!(writer, "X{:x};process:{:x}", status, pid)?; - } - StopReason::ThreadExited(thread_id, status) => { - write!(writer, "w{:x};", status)?; - write_thread_id(&mut writer, thread_id)?; - } - StopReason::NoMoreThreads => write!(writer, "N")?, - } - } - Response::VContFeatures(features) => { - write!(writer, "vCont")?; - for &feature in &*features { - write!(writer, ";{}", feature as u8 as char)?; - } - } - Response::ThreadList(threads) => { - if threads.is_empty() { - write!(writer, "l")?; - } else { - write!(writer, "m")?; - for (i, &id) in threads.iter().enumerate() { - // Write separator - if i != 0 { - write!(writer, ",")?; - } - write_thread_id(&mut writer, id)?; - } - } - } - Response::SymbolName(name) => { - write!(writer, "qSymbol:")?; - write_hex_data(&mut writer, name.as_bytes())?; - } - Response::HostIOResult(result) => match result { - HostIOResult::Ok => write!(writer, "F0")?, - HostIOResult::Error(errno) => { - write!(writer, "F-1,{:x}", errno as u32)?; - } - HostIOResult::Integer(i) => write!(writer, "F{:x}", i)?, - HostIOResult::Data(v) => { - write!(writer, "F{:x};", v.len())?; - write_binary_data(&mut writer, &v)?; - } - HostIOResult::Stat(stat) => { - let data = >>::into(stat); - write!(writer, "F{:x};", data.len())?; - write_binary_data(&mut writer, &data[..])? - } - }, - } - - writer.finish() -} - -fn handle_supported_features<'a, H>(handler: &H, _features: &[GDBFeatureSupported<'a>]) -> Response<'static> -where - H: Handler, -{ - let mut features = vec![ - format!("PacketSize={:x}", MAX_PACKET_SIZE), - "QStartNoAckMode+".to_string(), - "multiprocess+".to_string(), - "QDisableRandomization+".to_string(), - "QCatchSyscalls+".to_string(), - "QPassSignals+".to_string(), - "QProgramSignals+".to_string(), - ]; - let mut new_features = handler.query_supported_features(); - features.append(&mut new_features); - Response::String(Cow::Owned(features.join(";")) as Cow<'_, str>) -} - -/// Handle a single packet `data` with `handler` and write a response to `writer`. -fn handle_packet(data: &[u8], handler: &H, writer: &mut W) -> io::Result -where - H: Handler, - W: Write, -{ - debug!("Command: {}", String::from_utf8_lossy(data)); - let mut no_ack_mode = false; - let response = if let Done(_, command) = command(data) { - match command { - // We unconditionally support extended mode. - Command::EnableExtendedMode => Response::Ok, - Command::TargetHaltReason => handler.halt_reason().into(), - Command::ReadGeneralRegisters => handler.read_general_registers().into(), - Command::WriteGeneralRegisters(bytes) => handler.write_general_registers(&bytes[..]).into(), - Command::Kill(None) => { - // The k packet requires no response, so purposely - // ignore the result. - drop(handler.kill(None)); - Response::Empty - } - Command::Kill(pid) => handler.kill(pid).into(), - Command::Reset => Response::Empty, - Command::ReadRegister(regno) => handler.read_register(regno).into(), - Command::WriteRegister(regno, bytes) => handler.write_register(regno, &bytes[..]).into(), - Command::ReadMemory(region) => handler.read_memory(region).into(), - Command::WriteMemory(region, bytes) => { - // The docs don't really say what to do if the given - // length disagrees with the number of bytes sent, so - // just error if they disagree. - if region.length as usize != bytes.len() { - Response::Error(1) - } else { - handler.write_memory(region.address, &bytes[..]).into() - } - } - Command::SetCurrentThread(f, thread_id) => handler.set_current_thread(f, thread_id).into(), - Command::Detach(pid) => handler.detach(pid).into(), - #[cfg(feature = "all_stop")] - Command::Continue => handler.process_continue().into(), - #[cfg(feature = "all_stop")] - Command::Step => handler.process_step().into(), - - Command::Query(Query::Attached(pid)) => handler.attached(pid).into(), - Command::Query(Query::CurrentThread) => handler.current_thread().into(), - Command::Query(Query::Invoke(cmd)) => match handler.invoke(&cmd[..]) { - Result::Ok(val) => { - if val.is_empty() { - Response::Ok - } else { - Response::Output(val) - } - } - Result::Err(Error::Error(val)) => Response::Error(val), - Result::Err(Error::Unimplemented) => Response::Empty, - }, - Command::Query(Query::SearchMemory { address, length, bytes }) => { - handler.search_memory(address, length, &bytes[..]).into() - } - Command::Query(Query::SupportedFeatures(features)) => handle_supported_features(handler, &features), - Command::Query(Query::StartNoAckMode) => { - no_ack_mode = true; - Response::Ok - } - Command::Query(Query::AddressRandomization(randomize)) => { - handler.set_address_randomization(randomize).into() - } - Command::Query(Query::CatchSyscalls(calls)) => handler.catch_syscalls(calls).into(), - Command::Query(Query::PassSignals(signals)) => handler.set_pass_signals(signals).into(), - Command::Query(Query::ProgramSignals(signals)) => handler.set_program_signals(signals).into(), - Command::Query(Query::ThreadInfo(thread_info)) => handler.thread_info(thread_info).into(), - Command::Query(Query::ThreadList(reset)) => handler.thread_list(reset).into(), - Command::Query(Query::ReadBytes { object, annex, offset, length }) => { - handler.read_bytes(object, annex, offset, length).into() - } - #[cfg(feature = "lldb")] - Command::Query(Query::RegisterInfo(reg)) => handler.register_info(reg).into(), - #[cfg(feature = "lldb")] - Command::Query(Query::ProcessInfo) => handler.process_info().into(), - Command::Query(Query::Symbol(sym_value, sym_name)) => handler.process_symbol(&sym_value, &sym_name).into(), - Command::PingThread(thread_id) => handler.ping_thread(thread_id).into(), - // Empty means "not implemented". - Command::CtrlC => Response::Empty, - - // Unknown v commands are required to give an empty - // response. - Command::UnknownVCommand => Response::Empty, - - Command::InsertSoftwareBreakpoint(bp) => handler.insert_software_breakpoint(bp).into(), - Command::InsertHardwareBreakpoint(bp) => handler.insert_hardware_breakpoint(bp).into(), - Command::InsertWriteWatchpoint(wp) => handler.insert_write_watchpoint(wp).into(), - Command::InsertReadWatchpoint(wp) => handler.insert_read_watchpoint(wp).into(), - Command::InsertAccessWatchpoint(wp) => handler.insert_access_watchpoint(wp).into(), - Command::RemoveSoftwareBreakpoint(bp) => handler.remove_software_breakpoint(bp).into(), - Command::RemoveHardwareBreakpoint(bp) => handler.remove_hardware_breakpoint(bp).into(), - Command::RemoveWriteWatchpoint(wp) => handler.remove_write_watchpoint(wp).into(), - Command::RemoveReadWatchpoint(wp) => handler.remove_read_watchpoint(wp).into(), - Command::RemoveAccessWatchpoint(wp) => handler.remove_access_watchpoint(wp).into(), - Command::VContSupported => handler.query_supported_vcont().into(), - Command::VCont(list) => handler.vcont(list).into(), - Command::HostOpen(filename, mode, flags) => handler - .fs() - .and_then(|fs| { - fs.host_open( - filename, - HostOpenFlags::from_bits_truncate(mode as u32), - HostMode::from_bits_truncate(flags as u32), - ) - }) - .into(), - Command::HostClose(fd) => handler.fs().and_then(|fs| fs.host_close(fd)).into(), - Command::HostPRead(fd, count, offset) => { - handler.fs().and_then(|fs| fs.host_pread(fd, count, offset)).into() - } - Command::HostPWrite(fd, offset, data) => { - handler.fs().and_then(|fs| fs.host_pwrite(fd, offset, data)).into() - } - Command::HostFStat(fd) => handler.fs().and_then(|fs| fs.host_fstat(fd)).into(), - Command::HostUnlink(filename) => handler.fs().and_then(|fs| fs.host_unlink(filename)).into(), - Command::HostReadlink(filename) => handler.fs().and_then(|fs| fs.host_readlink(filename)).into(), - Command::HostSetFS(pid) => handler.fs().and_then(|fs| fs.host_setfs(pid)).into(), - } - } else { - Response::Empty - }; - write_response(response, writer)?; - Ok(no_ack_mode) -} - -fn offset(from: &[u8], to: &[u8]) -> usize { - let fst = from.as_ptr(); - let snd = to.as_ptr(); - - snd as usize - fst as usize -} - -fn run_parser(buf: &[u8]) -> Option<(usize, Packet)> { - if let Done(rest, packet) = packet_or_response(buf) { - Some((offset(buf, rest), packet)) - } else { - None - } -} - -/// Read gdbserver packets from `reader` and call methods on `handler` to handle them and write -/// responses to `writer`. -pub fn process_packets_from(mut reader: R, mut writer: W, handler: H) -where - R: Read, - W: Write, - H: Handler, -{ - let mut buf = vec![0; MAX_PACKET_SIZE]; - let mut endbuf = 0; - let mut ack_mode = true; - loop { - match reader.read(&mut buf[endbuf..]) { - Ok(n) if n > 0 => endbuf += n, - _ => break, - } - - let mut parsed = 0; - while let Some((len, packet)) = run_parser(&buf[parsed..endbuf]) { - if let Packet::Data(ref data, ref _checksum) = packet { - // Write an ACK - if ack_mode && writer.write_all(&b"+"[..]).is_err() { - // TODO: propagate errors to caller? - return; - } - - let no_ack_mode = handle_packet(&data, &handler, &mut writer).unwrap_or(false); - if no_ack_mode { - ack_mode = false; - } - } - parsed += len; - } - - buf.copy_within(parsed..endbuf, 0); - endbuf -= parsed; - } -} - -#[test] -fn test_compute_checksum() { - assert_eq!(compute_checksum_incremental(&b""[..], 0), 0); - assert_eq!(compute_checksum_incremental(&b"qSupported:multiprocess+;xmlRegisters=i386;qRelocInsn+"[..], 0), 0xb5); -} - -#[test] -fn test_checksum() { - assert_eq!(checksum(&b"00"[..]), Done(&b""[..], 0)); - assert_eq!(checksum(&b"a1"[..]), Done(&b""[..], 0xa1)); - assert_eq!(checksum(&b"1d"[..]), Done(&b""[..], 0x1d)); - assert_eq!(checksum(&b"ff"[..]), Done(&b""[..], 0xff)); -} - -#[test] -fn test_packet() { - use nom::Needed; - assert_eq!(packet(&b"$#00"[..]), Done(&b""[..], (b""[..].to_vec(), 0))); - assert_eq!(packet(&b"$xyz#00"[..]), Done(&b""[..], (b"xyz"[..].to_vec(), 0))); - assert_eq!(packet(&b"$a#a1"[..]), Done(&b""[..], (b"a"[..].to_vec(), 0xa1))); - assert_eq!(packet(&b"$foo#ffxyz"[..]), Done(&b"xyz"[..], (b"foo"[..].to_vec(), 0xff))); - assert_eq!( - packet(&b"$qSupported:multiprocess+;xmlRegisters=i386;qRelocInsn+#b5"[..]), - Done(&b""[..], (b"qSupported:multiprocess+;xmlRegisters=i386;qRelocInsn+"[..].to_vec(), 0xb5)) - ); - assert_eq!(packet(&b"$"[..]), Incomplete(Needed::Size(2))); - assert_eq!(packet(&b"$#"[..]), Incomplete(Needed::Size(4))); - assert_eq!(packet(&b"$xyz"[..]), Incomplete(Needed::Size(5))); - assert_eq!(packet(&b"$xyz#"[..]), Incomplete(Needed::Size(7))); - assert_eq!(packet(&b"$xyz#a"[..]), Incomplete(Needed::Size(7))); -} - -#[test] -fn test_packet_or_response() { - assert_eq!(packet_or_response(&b"$#00"[..]), Done(&b""[..], Packet::Data(b""[..].to_vec(), 0))); - assert_eq!(packet_or_response(&b"+"[..]), Done(&b""[..], Packet::Ack)); - assert_eq!(packet_or_response(&b"-"[..]), Done(&b""[..], Packet::Nack)); -} - -#[test] -fn test_gdbfeaturesupported() { - assert_eq!( - gdbfeaturesupported(&b"multiprocess+"[..]), - Done(&b""[..], GDBFeatureSupported(Known::Yes(GDBFeature::multiprocess), FeatureSupported::Yes)) - ); - assert_eq!( - gdbfeaturesupported(&b"xmlRegisters=i386"[..]), - Done(&b""[..], GDBFeatureSupported(Known::Yes(GDBFeature::xmlRegisters), FeatureSupported::Value("i386"))) - ); - assert_eq!( - gdbfeaturesupported(&b"qRelocInsn-"[..]), - Done(&b""[..], GDBFeatureSupported(Known::Yes(GDBFeature::qRelocInsn), FeatureSupported::No)) - ); - assert_eq!( - gdbfeaturesupported(&b"vfork-events+"[..]), - Done(&b""[..], GDBFeatureSupported(Known::Yes(GDBFeature::vfork_events), FeatureSupported::Yes)) - ); - assert_eq!( - gdbfeaturesupported(&b"vfork-events-"[..]), - Done(&b""[..], GDBFeatureSupported(Known::Yes(GDBFeature::vfork_events), FeatureSupported::No)) - ); - assert_eq!( - gdbfeaturesupported(&b"unknown-feature+"[..]), - Done(&b""[..], GDBFeatureSupported(Known::No("unknown-feature"), FeatureSupported::Yes)) - ); - assert_eq!( - gdbfeaturesupported(&b"unknown-feature-"[..]), - Done(&b""[..], GDBFeatureSupported(Known::No("unknown-feature"), FeatureSupported::No)) - ); -} - -#[test] -fn test_gdbfeature() { - assert_eq!(gdbfeature(&b"multiprocess"[..]), Done(&b""[..], Known::Yes(GDBFeature::multiprocess))); - assert_eq!(gdbfeature(&b"fork-events"[..]), Done(&b""[..], Known::Yes(GDBFeature::fork_events))); - assert_eq!(gdbfeature(&b"some-unknown-feature"[..]), Done(&b""[..], Known::No("some-unknown-feature"))); -} - -#[test] -fn test_query() { - // From a gdbserve packet capture. - let b = concat!( - "qSupported:multiprocess+;swbreak+;hwbreak+;qRelocInsn+;fork-events+;", - "vfork-events+;exec-events+;vContSupported+;QThreadEvents+;no-resumed+;", - "xmlRegisters=i386" - ); - assert_eq!( - query(b.as_bytes()), - Done( - &b""[..], - Query::SupportedFeatures(vec![ - GDBFeatureSupported(Known::Yes(GDBFeature::multiprocess), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::swbreak), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::hwbreak), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::qRelocInsn), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::fork_events), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::vfork_events), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::exec_events), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::vContSupported), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::QThreadEvents), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::no_resumed), FeatureSupported::Yes), - GDBFeatureSupported(Known::Yes(GDBFeature::xmlRegisters), FeatureSupported::Value("i386")), - ]) - ) - ); -} - -#[test] -fn test_hex_value() { - assert_eq!(hex_value(&b""[..]), Incomplete(Needed::Size(1))); - assert_eq!(hex_value(&b","[..]), Error(nom::ErrorKind::TakeWhile1)); - assert_eq!(hex_value(&b"a"[..]), Done(&b""[..], 0xa)); - assert_eq!(hex_value(&b"10,"[..]), Done(&b","[..], 0x10)); - assert_eq!(hex_value(&b"ff"[..]), Done(&b""[..], 0xff)); -} - -#[test] -fn test_parse_thread_id_element() { - assert_eq!(parse_thread_id_element(&b"0"[..]), Done(&b""[..], Id::Any)); - assert_eq!(parse_thread_id_element(&b"-1"[..]), Done(&b""[..], Id::All)); - assert_eq!(parse_thread_id_element(&b"23"[..]), Done(&b""[..], Id::Id(0x23))); -} - -#[test] -fn test_parse_thread_id() { - assert_eq!(parse_thread_id(&b"0"[..]), Done(&b""[..], ThreadId { pid: Id::Any, tid: Id::Any })); - assert_eq!(parse_thread_id(&b"-1"[..]), Done(&b""[..], ThreadId { pid: Id::All, tid: Id::Any })); - assert_eq!(parse_thread_id(&b"23"[..]), Done(&b""[..], ThreadId { pid: Id::Id(0x23), tid: Id::Any })); - - assert_eq!(parse_thread_id(&b"p23"[..]), Done(&b""[..], ThreadId { pid: Id::Id(0x23), tid: Id::All })); - - assert_eq!(parse_thread_id(&b"p0.0"[..]), Done(&b""[..], ThreadId { pid: Id::Any, tid: Id::Any })); - assert_eq!(parse_thread_id(&b"p-1.23"[..]), Done(&b""[..], ThreadId { pid: Id::All, tid: Id::Id(0x23) })); - assert_eq!(parse_thread_id(&b"pff.23"[..]), Done(&b""[..], ThreadId { pid: Id::Id(0xff), tid: Id::Id(0x23) })); -} - -#[test] -fn test_parse_v_commands() { - assert_eq!(v_command(&b"vKill;33"[..]), Done(&b""[..], Command::Kill(Some(0x33)))); - assert_eq!(v_command(&b"vCtrlC"[..]), Done(&b""[..], Command::CtrlC)); - assert_eq!(v_command(&b"vMustReplyEmpty"[..]), Done(&b""[..], Command::UnknownVCommand)); - - assert_eq!(v_command(&b"vCont?"[..]), Done(&b""[..], Command::VContSupported)); - assert_eq!(v_command(&b"vCont"[..]), Done(&b""[..], Command::VCont(Vec::new()))); - assert_eq!(v_command(&b"vCont;c"[..]), Done(&b""[..], Command::VCont(vec![(VCont::Continue, None)]))); - assert_eq!( - v_command(&b"vCont;r1,2:p34.56;SAD:-1;c"[..]), - Done( - &b""[..], - Command::VCont(vec![ - (VCont::RangeStep(1..2), Some(ThreadId { pid: Id::Id(0x34), tid: Id::Id(0x56) })), - (VCont::StepWithSignal(0xAD), Some(ThreadId { pid: Id::All, tid: Id::Any })), - (VCont::Continue, None) - ]) - ) - ); - - assert_eq!( - v_command(&b"vFile:open:2f766d6c696e757a,0,0"[..]), - Done(&b""[..], Command::HostOpen(vec!(47, 118, 109, 108, 105, 110, 117, 122), 0, 0)) - ); - assert_eq!(v_command(&b"vFile:close:85"[..]), Done(&b""[..], Command::HostClose(0x85))); - assert_eq!(v_command(&b"vFile:pread:5,96,327"[..]), Done(&b""[..], Command::HostPRead(5, 0x96, 0x327))); - assert_eq!(v_command(&b"vFile:pwrite:6,83,\x00"[..]), Done(&b""[..], Command::HostPWrite(6, 0x83, vec![0]))); - assert_eq!(v_command(&b"vFile:pwrite:6,83,\x7d\x5d"[..]), Done(&b""[..], Command::HostPWrite(6, 0x83, vec![0x7d]))); - assert_eq!(v_command(&b"vFile:fstat:32"[..]), Done(&b""[..], Command::HostFStat(0x32))); - assert_eq!( - v_command(&b"vFile:unlink:2f766d6c696e757a"[..]), - Done(&b""[..], Command::HostUnlink(vec!(47, 118, 109, 108, 105, 110, 117, 122))) - ); - assert_eq!( - v_command(&b"vFile:readlink:2f766d6c696e757a"[..]), - Done(&b""[..], Command::HostReadlink(vec!(47, 118, 109, 108, 105, 110, 117, 122))) - ); - assert_eq!(v_command(&b"vFile:setfs:0"[..]), Done(&b""[..], Command::HostSetFS(0))); - assert_eq!(v_command(&b"vFile:fdopen:0"[..]), Done(&b""[..], Command::UnknownVCommand)); -} - -#[test] -fn test_parse_d_packets() { - assert_eq!(parse_d_packet(&b"D"[..]), Done(&b""[..], None)); - assert_eq!(parse_d_packet(&b"D;f0"[..]), Done(&b""[..], Some(240))); -} - -#[test] -fn test_parse_write_memory() { - assert_eq!(write_memory(&b"Mf0,3:ff0102"[..]), Done(&b""[..], (240, 3, vec!(255, 1, 2)))); -} - -#[test] -fn test_parse_write_memory_binary() { - assert_eq!(write_memory_binary(&b"Xf0,1: "[..]), Done(&b""[..], (240, 1, vec!(0x20)))); - assert_eq!(write_memory_binary(&b"X90,10:}\x5d"[..]), Done(&b""[..], (144, 16, vec!(0x7d)))); - assert_eq!(write_memory_binary(&b"X5,100:}\x5d}\x03"[..]), Done(&b""[..], (5, 256, vec!(0x7d, 0x23)))); - assert_eq!(write_memory_binary(&b"Xff,2:}\x04\x9a"[..]), Done(&b""[..], (255, 2, vec!(0x24, 0x9a)))); - assert_eq!(write_memory_binary(&b"Xff,2:\xce}\x0a\x9a"[..]), Done(&b""[..], (255, 2, vec!(0xce, 0x2a, 0x9a)))); -} - -#[test] -fn test_parse_qrcmd() { - assert_eq!(query(&b"qRcmd,736f6d657468696e67"[..]), Done(&b""[..], Query::Invoke(b"something".to_vec()))); -} - -#[test] -fn test_parse_randomization() { - assert_eq!(query(&b"QDisableRandomization:0"[..]), Done(&b""[..], Query::AddressRandomization(true))); - assert_eq!(query(&b"QDisableRandomization:1"[..]), Done(&b""[..], Query::AddressRandomization(false))); -} - -#[test] -fn test_parse_syscalls() { - assert_eq!(query(&b"QCatchSyscalls:0"[..]), Done(&b""[..], Query::CatchSyscalls(None))); - assert_eq!(query(&b"QCatchSyscalls:1"[..]), Done(&b""[..], Query::CatchSyscalls(Some(vec!())))); - assert_eq!(query(&b"QCatchSyscalls:1;0;1;ff"[..]), Done(&b""[..], Query::CatchSyscalls(Some(vec!(0, 1, 255))))); -} - -#[test] -fn test_parse_signals() { - assert_eq!(query(&b"QPassSignals:"[..]), Done(&b""[..], Query::PassSignals(vec!()))); - assert_eq!(query(&b"QPassSignals:0"[..]), Done(&b""[..], Query::PassSignals(vec!(0)))); - assert_eq!(query(&b"QPassSignals:1;2;ff"[..]), Done(&b""[..], Query::PassSignals(vec!(1, 2, 255)))); - assert_eq!(query(&b"QProgramSignals:0"[..]), Done(&b""[..], Query::ProgramSignals(vec!(0)))); - assert_eq!(query(&b"QProgramSignals:1;2;ff"[..]), Done(&b""[..], Query::ProgramSignals(vec!(1, 2, 255)))); -} - -#[test] -fn test_thread_info() { - assert_eq!( - query(&b"qThreadExtraInfo,ffff"[..]), - Done(&b""[..], Query::ThreadInfo(ThreadId { pid: Id::Id(65535), tid: Id::Any })) - ); -} - -#[test] -fn test_thread_list() { - assert_eq!(query(&b"qfThreadInfo"[..]), Done(&b""[..], Query::ThreadList(true))); - assert_eq!(query(&b"qsThreadInfo"[..]), Done(&b""[..], Query::ThreadList(false))); -} - -#[test] -fn test_parse_write_register() { - assert_eq!(write_register(&b"Pff=1020"[..]), Done(&b""[..], (255, vec!(16, 32)))); -} - -#[test] -fn test_parse_write_general_registers() { - assert_eq!(write_general_registers(&b"G0001020304"[..]), Done(&b""[..], vec!(0, 1, 2, 3, 4))); -} - -#[test] -fn test_write_response() { - fn write_one(input: Response<'_>) -> io::Result { - let mut result = Vec::new(); - write_response(input, &mut result)?; - Ok(String::from_utf8(result).unwrap()) - } - - assert_eq!(write_one(Response::Empty).unwrap(), "$#00"); - assert_eq!(write_one(Response::Ok).unwrap(), "$OK#9a"); - assert_eq!(write_one(Response::Error(1)).unwrap(), "$E01#a6"); - - assert_eq!( - write_one(Response::CurrentThread(Some(ThreadId { pid: Id::Id(255), tid: Id::Id(1) }))).unwrap(), - "$QCpff.1#2f" - ); - assert_eq!( - write_one(Response::ThreadList(vec!( - ThreadId { pid: Id::Id(123), tid: Id::Id(123) }, - ThreadId { pid: Id::Id(456), tid: Id::Any }, - ))) - .unwrap(), - "$mp7b.7b,p1c8.0#03" - ); - assert_eq!(write_one(Response::ThreadList(vec!())).unwrap(), "$l#6c"); - assert_eq!( - write_one(Response::BytesOrEof(Vec::from(&b"{Hello * World} #yee $999.99"[..]), false)).unwrap(), - "$m{Hello }\n World}] }\x03yee }\x04999.99#54" - ); - assert_eq!( - write_one(Response::BytesOrEof(Vec::from(&b"does not need to be escaped"[..]), true)).unwrap(), - "$ldoes not need to be escaped#23" - ); -} - -#[cfg(test)] -macro_rules! bytecode { - ($elem:expr; $n:expr) => (Bytecode { bytecode: vec![$elem; $n] }); - ($($x:expr),*) => (Bytecode { bytecode: vec!($($x),*) }) -} - -#[test] -fn test_breakpoints() { - assert_eq!( - parse_z_packet(&b"Z0,1ff,0"[..]), - Done(&b""[..], Command::InsertSoftwareBreakpoint(Breakpoint::new(0x1ff, 0, None, None))) - ); - assert_eq!( - parse_z_packet(&b"z0,1fff,0"[..]), - Done(&b""[..], Command::RemoveSoftwareBreakpoint(Breakpoint::new(0x1fff, 0, None, None))) - ); - assert_eq!( - parse_z_packet(&b"Z1,ae,0"[..]), - Done(&b""[..], Command::InsertHardwareBreakpoint(Breakpoint::new(0xae, 0, None, None))) - ); - assert_eq!( - parse_z_packet(&b"z1,aec,0"[..]), - Done(&b""[..], Command::RemoveHardwareBreakpoint(Breakpoint::new(0xaec, 0, None, None))) - ); - assert_eq!( - parse_z_packet(&b"Z2,4cc,2"[..]), - Done(&b""[..], Command::InsertWriteWatchpoint(Watchpoint::new(0x4cc, 2))) - ); - assert_eq!( - parse_z_packet(&b"z2,4ccf,4"[..]), - Done(&b""[..], Command::RemoveWriteWatchpoint(Watchpoint::new(0x4ccf, 4))) - ); - assert_eq!( - parse_z_packet(&b"Z3,7777,4"[..]), - Done(&b""[..], Command::InsertReadWatchpoint(Watchpoint::new(0x7777, 4))) - ); - assert_eq!( - parse_z_packet(&b"z3,77778,8"[..]), - Done(&b""[..], Command::RemoveReadWatchpoint(Watchpoint::new(0x77778, 8))) - ); - assert_eq!( - parse_z_packet(&b"Z4,7777,10"[..]), - Done(&b""[..], Command::InsertAccessWatchpoint(Watchpoint::new(0x7777, 16))) - ); - assert_eq!( - parse_z_packet(&b"z4,77778,20"[..]), - Done(&b""[..], Command::RemoveAccessWatchpoint(Watchpoint::new(0x77778, 32))) - ); - - assert_eq!( - parse_z_packet(&b"Z0,1ff,2;X1,0"[..]), - Done( - &b""[..], - Command::InsertSoftwareBreakpoint(Breakpoint::new(0x1ff, 2, Some(vec!(bytecode!('0' as u8))), None)) - ) - ); - assert_eq!( - parse_z_packet(&b"Z1,1ff,2;X1,0"[..]), - Done( - &b""[..], - Command::InsertHardwareBreakpoint(Breakpoint::new(0x1ff, 2, Some(vec!(bytecode!('0' as u8))), None)) - ) - ); - - assert_eq!( - parse_z_packet(&b"Z0,1ff,2;cmdsX1,z"[..]), - Done( - &b""[..], - Command::InsertSoftwareBreakpoint(Breakpoint::new(0x1ff, 2, None, Some(vec!(bytecode!('z' as u8))))) - ) - ); - assert_eq!( - parse_z_packet(&b"Z1,1ff,2;cmdsX1,z"[..]), - Done( - &b""[..], - Command::InsertHardwareBreakpoint(Breakpoint::new(0x1ff, 2, None, Some(vec!(bytecode!('z' as u8))))) - ) - ); - - assert_eq!( - parse_z_packet(&b"Z0,1ff,2;X1,0;cmdsX1,a"[..]), - Done( - &b""[..], - Command::InsertSoftwareBreakpoint(Breakpoint::new( - 0x1ff, - 2, - Some(vec!(bytecode!('0' as u8))), - Some(vec!(bytecode!('a' as u8))) - )) - ) - ); - assert_eq!( - parse_z_packet(&b"Z1,1ff,2;X1,0;cmdsX1,a"[..]), - Done( - &b""[..], - Command::InsertHardwareBreakpoint(Breakpoint::new( - 0x1ff, - 2, - Some(vec!(bytecode!('0' as u8))), - Some(vec!(bytecode!('a' as u8))) - )) - ) - ); -} - -#[test] -fn test_cond_or_command_list() { - assert_eq!(parse_condition_list(&b";X1,a"[..]), Done(&b""[..], vec!(bytecode!('a' as u8)))); - assert_eq!(parse_condition_list(&b";X2,ab"[..]), Done(&b""[..], vec!(bytecode!('a' as u8, 'b' as u8)))); - assert_eq!( - parse_condition_list(&b";X1,zX1,y"[..]), - Done(&b""[..], vec!(bytecode!('z' as u8), bytecode!('y' as u8))) - ); - assert_eq!( - parse_condition_list(&b";X1,zX10,yyyyyyyyyyyyyyyy"[..]), - Done(&b""[..], vec!(bytecode!('z' as u8), bytecode!['y' as u8; 16])) - ); - - assert_eq!(parse_command_list(&b";cmdsX1,a"[..]), Done(&b""[..], vec!(bytecode!('a' as u8)))); - assert_eq!(parse_command_list(&b";cmdsX2,ab"[..]), Done(&b""[..], vec!(bytecode!('a' as u8, 'b' as u8)))); - assert_eq!( - parse_command_list(&b";cmdsX1,zX1,y"[..]), - Done(&b""[..], vec!(bytecode!('z' as u8), bytecode!('y' as u8))) - ); - assert_eq!( - parse_command_list(&b";cmdsX1,zX10,yyyyyyyyyyyyyyyy"[..]), - Done(&b""[..], vec!(bytecode!('z' as u8), bytecode!['y' as u8; 16])) - ); -} - -#[test] -fn test_qxfer() { - assert_eq!( - query(&b"qXfer:features:read:target.xml:0,1000"[..]), - Done( - &b""[..], - Query::ReadBytes { - object: String::from("features"), - annex: String::from("target.xml"), - offset: 0, - length: 4096, - } - ) - ); -} - -#[test] -fn test_write_binary_data() { - // Ordinary data, no escapes. - check(vec![1, 2, 3], vec![1, 2, 3]); - // Escape required at the beginning. - check(vec![0x7d, 2, 3], vec![0x7d, 0x5d, 2, 3]); - check(vec![0x23, 2, 3], vec![0x7d, 0x03, 2, 3]); - check(vec![0x24, 2, 3], vec![0x7d, 0x04, 2, 3]); - check(vec![0x2a, 2, 3], vec![0x7d, 0x0a, 2, 3]); - // Escape required at the end. - check(vec![8, 9, 0x7d], vec![8, 9, 0x7d, 0x5d]); - check(vec![8, 9, 0x23], vec![8, 9, 0x7d, 0x03]); - check(vec![8, 9, 0x24], vec![8, 9, 0x7d, 0x04]); - check(vec![8, 9, 0x2a], vec![8, 9, 0x7d, 0x0a]); - // Escape required in the middle. - check(vec![8, 9, 0x7d, 5, 6], vec![8, 9, 0x7d, 0x5d, 5, 6]); - check(vec![8, 9, 0x23, 5, 6], vec![8, 9, 0x7d, 0x03, 5, 6]); - check(vec![8, 9, 0x24, 5, 6], vec![8, 9, 0x7d, 0x04, 5, 6]); - check(vec![8, 9, 0x2a, 5, 6], vec![8, 9, 0x7d, 0x0a, 5, 6]); - - fn check(data: Vec, output: Vec) { - let mut v = vec![]; - write_binary_data(&mut v, &data).unwrap(); - assert_eq!(v, output); - } -} diff --git a/ckb-gdb-remote-protocol/src/libc_fs.rs b/ckb-gdb-remote-protocol/src/libc_fs.rs deleted file mode 100644 index 1709249..0000000 --- a/ckb-gdb-remote-protocol/src/libc_fs.rs +++ /dev/null @@ -1,236 +0,0 @@ -//! Filesystem APIs implemenation using libc - -// Thanks, clippy, but it makes the code cleaner so it's not redundant. -#![allow(clippy::redundant_closure_call)] - -use crate::fs::{FileSystem, HostErrno, HostMode, HostOpenFlags, HostStat, IOResult}; -use std::{convert::TryFrom, ffi::CString, mem::MaybeUninit}; - -macro_rules! map_flags { - ($inflags:ident: $intype:ident -> $resdefault:expr, $($inflag:ident => $outflag:expr,)*) => {{ - let mut flags = $resdefault; - - { - $(if $inflags & $intype::$inflag == $intype::$inflag { - flags |= $outflag; - })* - } - - flags - }}; -} - -impl HostErrno { - /// Map an errno from `libc` to a cross-platform GDB `HostErrno`. - pub fn from_libc(errno: libc::c_int) -> Self { - match errno { - libc::EPERM => Self::EPERM, - libc::ENOENT => Self::ENOENT, - libc::EINTR => Self::EINTR, - libc::EBADF => Self::EBADF, - libc::EACCES => Self::EACCES, - libc::EFAULT => Self::EFAULT, - libc::EBUSY => Self::EBUSY, - libc::EEXIST => Self::EEXIST, - libc::ENODEV => Self::ENODEV, - libc::ENOTDIR => Self::ENOTDIR, - libc::EISDIR => Self::EISDIR, - libc::EINVAL => Self::EINVAL, - libc::ENFILE => Self::ENFILE, - libc::EMFILE => Self::EMFILE, - libc::EFBIG => Self::EFBIG, - libc::ENOSPC => Self::ENOSPC, - libc::ESPIPE => Self::ESPIPE, - libc::EROFS => Self::EROFS, - libc::ENAMETOOLONG => Self::ENAMETOOLONG, - _ => Self::EUNKNOWN, - } - } -} - -impl HostMode { - /// Map a mode from `libc` to a cross-platform GDB `HostErrno`. - pub fn from_libc(mode: libc::mode_t) -> Self { - map_flags! { - mode: libc -> Self::empty(), - S_IFREG => Self::S_IFREG, - S_IFDIR => Self::S_IFDIR, - S_IRUSR => Self::S_IRUSR, - S_IWUSR => Self::S_IWUSR, - S_IXUSR => Self::S_IXUSR, - S_IRGRP => Self::S_IRGRP, - S_IWGRP => Self::S_IWGRP, - S_IXGRP => Self::S_IXGRP, - S_IROTH => Self::S_IROTH, - S_IWOTH => Self::S_IWOTH, - S_IXOTH => Self::S_IXOTH, - } - } - - /// Map a mode from a cross-platform GDB `HostErrno` to the native `libc` - /// type. - pub fn into_libc(self) -> libc::mode_t { - map_flags! { - self: Self -> 0, - S_IFREG => libc::S_IFREG, - S_IFDIR => libc::S_IFDIR, - S_IRUSR => libc::S_IRUSR, - S_IWUSR => libc::S_IWUSR, - S_IXUSR => libc::S_IXUSR, - S_IRGRP => libc::S_IRGRP, - S_IWGRP => libc::S_IWGRP, - S_IXGRP => libc::S_IXGRP, - S_IROTH => libc::S_IROTH, - S_IWOTH => libc::S_IWOTH, - S_IXOTH => libc::S_IXOTH, - } - } -} - -impl HostOpenFlags { - /// Map flags from `libc` to a cross-platform GDB `HostErrno`. - pub fn from_libc(flags: libc::c_int) -> Self { - map_flags! { - flags: libc -> Self::empty(), - // No O_RDONLY, it's zero and always set - O_WRONLY => Self::O_WRONLY, - O_RDWR => Self::O_RDWR, - O_APPEND => Self::O_APPEND, - O_CREAT => Self::O_CREAT, - O_TRUNC => Self::O_TRUNC, - O_EXCL => Self::O_EXCL, - } - } - - /// Map flags from a cross-platform GDB `HostErrno` to the native `libc` - /// type. - pub fn into_libc(self) -> libc::c_int { - let mut res = map_flags! { - self: HostOpenFlags -> 0, - O_WRONLY => libc::O_WRONLY, - O_RDWR => libc::O_RDWR, - O_APPEND => libc::O_APPEND, - O_CREAT => libc::O_CREAT, - O_TRUNC => libc::O_TRUNC, - O_EXCL => libc::O_EXCL, - }; - if !self.contains(Self::O_WRONLY) && !self.contains(Self::O_RDWR) { - res |= libc::O_RDONLY; - } - res - } -} - -/// A filesystem implementation that delegates all calls to libc. Basically, -/// this lets you use the operating system's notion of files, which is probably -/// what you want. -#[derive(Debug, Default)] -pub struct LibcFS { - /// don't initiate this struct outside of this crate, for future backwards - /// compatibility - _private: (), -} - -fn errno() -> HostErrno { - HostErrno::from_libc(unsafe { *libc::__errno_location() }) -} - -impl FileSystem for LibcFS { - fn host_open(&self, filename: Vec, flags: HostOpenFlags, mode: HostMode) -> IOResult { - Ok((|| { - let filename = CString::new(filename).map_err(|_| HostErrno::ENOENT)?; - - let fd: libc::c_int = unsafe { libc::open(filename.as_ptr(), flags.into_libc(), mode.into_libc()) }; - if fd >= 0 { - Ok(u64::from(fd as u32)) - } else { - Err(errno()) - } - })()) - } - fn host_close(&self, fd: u64) -> IOResult<()> { - Ok((|| { - if unsafe { libc::close(fd as libc::c_int) } == 0 { - Ok(()) - } else { - Err(errno()) - } - })()) - } - fn host_pread(&self, fd: u64, count: u64, offset: u64) -> IOResult> { - Ok((|| { - // Allocate `count` (converted to usize) bytes - let count = usize::try_from(count).unwrap_or(std::usize::MAX); - let mut buf: Vec = Vec::with_capacity(count); - - // Fill bytes as many as `read` bytes - let read: isize = unsafe { - libc::pread(fd as libc::c_int, buf.as_mut_ptr() as *mut libc::c_void, count, offset as libc::off_t) - }; - - if read >= 0 { - // Mark bytes up to `read` as initiated - unsafe { - buf.set_len(read as usize); - } - Ok(buf) - } else { - Err(errno()) - } - })()) - } - fn host_pwrite(&self, fd: u64, offset: u64, data: Vec) -> IOResult { - Ok((|| { - // Write data, as much as `written` bytes of data - let written: isize = unsafe { - libc::pwrite(fd as libc::c_int, data.as_ptr() as *const libc::c_void, data.len(), offset as libc::off_t) - }; - - if written >= 0 { - Ok(written as u64) - } else { - Err(errno()) - } - })()) - } - fn host_fstat(&self, fd: u64) -> IOResult { - Ok((|| { - let mut stat: MaybeUninit = MaybeUninit::uninit(); - - if unsafe { libc::fstat(fd as libc::c_int, stat.as_mut_ptr()) } == 0 { - let stat = unsafe { stat.assume_init() }; - Ok(HostStat { - // libc's st_dev is different than GDB's st_dev. - // st_dev in GDB is described by https://sourceware.org/gdb/onlinedocs/gdb/struct-stat.html#struct-stat: - // "A value of 0 represents a file, 1 the console." - // While libc's ID is more complex (see `man fstat`) - st_dev: 0, - - st_ino: stat.st_ino as _, - st_mode: HostMode::from_libc(stat.st_mode), - st_nlink: stat.st_nlink as _, - st_uid: stat.st_uid as _, - st_gid: stat.st_gid as _, - st_rdev: stat.st_rdev as _, - st_size: stat.st_size as _, - st_blksize: stat.st_blksize as _, - st_blocks: stat.st_blocks as _, - st_atime: stat.st_atime as _, - st_mtime: stat.st_mtime as _, - st_ctime: stat.st_ctime as _, - }) - } else { - Err(errno()) - } - })()) - } - fn host_unlink(&self, _filename: Vec) -> IOResult<()> { - Err(()) - } - fn host_readlink(&self, _filename: Vec) -> IOResult> { - Err(()) - } - fn host_setfs(&self, _pid: u64) -> IOResult<()> { - Err(()) - } -} diff --git a/ckb-gdb-remote-protocol/src/sigs.rs b/ckb-gdb-remote-protocol/src/sigs.rs deleted file mode 100644 index e2455d9..0000000 --- a/ckb-gdb-remote-protocol/src/sigs.rs +++ /dev/null @@ -1,230 +0,0 @@ -use num_derive::FromPrimitive; - -#[repr(u8)] -#[derive(FromPrimitive)] -#[allow(missing_docs)] -/// All signals that GDB define. These are cross-platform numbers. -// Obtained from binutils-gdb include/gdb/signals.def -pub enum Signal { - ZERO = 0, - SIGHUP = 1, - SIGINT = 2, - SIGQUIT = 3, - SIGILL = 4, - SIGTRAP = 5, - SIGABRT = 6, - SIGEMT = 7, - SIGFPE = 8, - SIGKILL = 9, - SIGBUS = 10, - SIGSEGV = 11, - SIGSYS = 12, - SIGPIPE = 13, - SIGALRM = 14, - SIGTERM = 15, - SIGURG = 16, - SIGSTOP = 17, - SIGTSTP = 18, - SIGCONT = 19, - SIGCHLD = 20, - SIGTTIN = 21, - SIGTTOU = 22, - SIGIO = 23, - SIGXCPU = 24, - SIGXFSZ = 25, - SIGVTALRM = 26, - SIGPROF = 27, - SIGWINCH = 28, - SIGLOST = 29, - SIGUSR1 = 30, - SIGUSR2 = 31, - SIGPWR = 32, - SIGPOLL = 33, - SIGWIND = 34, - SIGPHONE = 35, - SIGWAITING = 36, - SIGLWP = 37, - SIGDANGER = 38, - SIGGRANT = 39, - SIGRETRACT = 40, - SIGMSG = 41, - SIGSOUND = 42, - SIGSAK = 43, - SIGPRIO = 44, - SIG33 = 45, - SIG34 = 46, - SIG35 = 47, - SIG36 = 48, - SIG37 = 49, - SIG38 = 50, - SIG39 = 51, - SIG40 = 52, - SIG41 = 53, - SIG42 = 54, - SIG43 = 55, - SIG44 = 56, - SIG45 = 57, - SIG46 = 58, - SIG47 = 59, - SIG48 = 60, - SIG49 = 61, - SIG50 = 62, - SIG51 = 63, - SIG52 = 64, - SIG53 = 65, - SIG54 = 66, - SIG55 = 67, - SIG56 = 68, - SIG57 = 69, - SIG58 = 70, - SIG59 = 71, - SIG60 = 72, - SIG61 = 73, - SIG62 = 74, - SIG63 = 75, - SIGCANCEL = 76, - SIG32 = 77, - SIG64 = 78, - SIG65 = 79, - SIG66 = 80, - SIG67 = 81, - SIG68 = 82, - SIG69 = 83, - SIG70 = 84, - SIG71 = 85, - SIG72 = 86, - SIG73 = 87, - SIG74 = 88, - SIG75 = 89, - SIG76 = 90, - SIG77 = 91, - SIG78 = 92, - SIG79 = 93, - SIG80 = 94, - SIG81 = 95, - SIG82 = 96, - SIG83 = 97, - SIG84 = 98, - SIG85 = 99, - SIG86 = 100, - SIG87 = 101, - SIG88 = 102, - SIG89 = 103, - SIG90 = 104, - SIG91 = 105, - SIG92 = 106, - SIG93 = 107, - SIG94 = 108, - SIG95 = 109, - SIG96 = 110, - SIG97 = 111, - SIG98 = 112, - SIG99 = 113, - SIG100 = 114, - SIG101 = 115, - SIG102 = 116, - SIG103 = 117, - SIG104 = 118, - SIG105 = 119, - SIG106 = 120, - SIG107 = 121, - SIG108 = 122, - SIG109 = 123, - SIG110 = 124, - SIG111 = 125, - SIG112 = 126, - SIG113 = 127, - SIG114 = 128, - SIG115 = 129, - SIG116 = 130, - SIG117 = 131, - SIG118 = 132, - SIG119 = 133, - SIG120 = 134, - SIG121 = 135, - SIG122 = 136, - SIG123 = 137, - SIG124 = 138, - SIG125 = 139, - SIG126 = 140, - SIG127 = 141, -} - -impl Signal { - /// Convert platform-specific libc signal to cross-platfrom GDB signals - #[cfg(feature = "libc")] - pub fn from_libc(sig: libc::c_int) -> Option { - match sig { - libc::SIGHUP => Some(Self::SIGHUP), - libc::SIGINT => Some(Self::SIGINT), - libc::SIGQUIT => Some(Self::SIGQUIT), - libc::SIGILL => Some(Self::SIGILL), - libc::SIGTRAP => Some(Self::SIGTRAP), - libc::SIGABRT => Some(Self::SIGABRT), - libc::SIGFPE => Some(Self::SIGFPE), - libc::SIGKILL => Some(Self::SIGKILL), - libc::SIGBUS => Some(Self::SIGBUS), - libc::SIGSEGV => Some(Self::SIGSEGV), - libc::SIGSYS => Some(Self::SIGSYS), - libc::SIGPIPE => Some(Self::SIGPIPE), - libc::SIGALRM => Some(Self::SIGALRM), - libc::SIGTERM => Some(Self::SIGTERM), - libc::SIGURG => Some(Self::SIGURG), - libc::SIGSTOP => Some(Self::SIGSTOP), - libc::SIGTSTP => Some(Self::SIGTSTP), - libc::SIGCONT => Some(Self::SIGCONT), - libc::SIGCHLD => Some(Self::SIGCHLD), - libc::SIGTTIN => Some(Self::SIGTTIN), - libc::SIGTTOU => Some(Self::SIGTTOU), - libc::SIGIO => Some(Self::SIGIO), - libc::SIGXCPU => Some(Self::SIGXCPU), - libc::SIGXFSZ => Some(Self::SIGXFSZ), - libc::SIGVTALRM => Some(Self::SIGVTALRM), - libc::SIGPROF => Some(Self::SIGPROF), - libc::SIGWINCH => Some(Self::SIGWINCH), - libc::SIGUSR1 => Some(Self::SIGUSR1), - libc::SIGUSR2 => Some(Self::SIGUSR2), - libc::SIGPWR => Some(Self::SIGPWR), - // libc::SIGPOLL => Some(Self::SIGPOLL), - _ => None, - } - } - /// Convert cross-platfrom GDB signals to platform-specific libc signals - #[cfg(feature = "libc")] - pub fn into_libc(self) -> Option { - match self { - Self::SIGHUP => Some(libc::SIGHUP), - Self::SIGINT => Some(libc::SIGINT), - Self::SIGQUIT => Some(libc::SIGQUIT), - Self::SIGILL => Some(libc::SIGILL), - Self::SIGTRAP => Some(libc::SIGTRAP), - Self::SIGABRT => Some(libc::SIGABRT), - Self::SIGFPE => Some(libc::SIGFPE), - Self::SIGKILL => Some(libc::SIGKILL), - Self::SIGBUS => Some(libc::SIGBUS), - Self::SIGSEGV => Some(libc::SIGSEGV), - Self::SIGSYS => Some(libc::SIGSYS), - Self::SIGPIPE => Some(libc::SIGPIPE), - Self::SIGALRM => Some(libc::SIGALRM), - Self::SIGTERM => Some(libc::SIGTERM), - Self::SIGURG => Some(libc::SIGURG), - Self::SIGSTOP => Some(libc::SIGSTOP), - Self::SIGTSTP => Some(libc::SIGTSTP), - Self::SIGCONT => Some(libc::SIGCONT), - Self::SIGCHLD => Some(libc::SIGCHLD), - Self::SIGTTIN => Some(libc::SIGTTIN), - Self::SIGTTOU => Some(libc::SIGTTOU), - Self::SIGIO => Some(libc::SIGIO), - Self::SIGXCPU => Some(libc::SIGXCPU), - Self::SIGXFSZ => Some(libc::SIGXFSZ), - Self::SIGVTALRM => Some(libc::SIGVTALRM), - Self::SIGPROF => Some(libc::SIGPROF), - Self::SIGWINCH => Some(libc::SIGWINCH), - Self::SIGUSR1 => Some(libc::SIGUSR1), - Self::SIGUSR2 => Some(libc::SIGUSR2), - Self::SIGPWR => Some(libc::SIGPWR), - // Self::SIGPOLL => Some(libc::SIGPOLL), - _ => None, - } - } -} diff --git a/ckb-gdb-remote-protocol/tests/integration.rs b/ckb-gdb-remote-protocol/tests/integration.rs deleted file mode 100644 index 270b792..0000000 --- a/ckb-gdb-remote-protocol/tests/integration.rs +++ /dev/null @@ -1,116 +0,0 @@ -// GDB integration tests -// -// These tests run a server using `TestHandler` as the handler and then run gdb in batch mode, -// connect it to the server, feed it some commands, and exit. Tests can add assertions about the -// gdb process such as matching stdout / stderr by calling `assert` and using the APIs from -// assert-cli: https://docs.rs/assert_cli/ . -// -// The gdb executable to use is found from PATH. -// -// `gdb_test` configures logging using env_logger, so you can get log output from tests by running: -// RUST_LOG=gdb_remote_protocol=trace,integration=trace cargo test -- --nocapture - -#[macro_use] -extern crate log; - -use assert_cli::Assert; -use ckb_gdb_remote_protocol::{process_packets_from, Error, Handler, ProcessType, StopReason}; -use std::net::TcpListener; -use std::thread; - -struct TestHandler { - process_type: ProcessType, - stop_reason: StopReason, -} - -impl Default for TestHandler { - fn default() -> TestHandler { - TestHandler { process_type: ProcessType::Created, stop_reason: StopReason::Exited(23, 0) } - } -} - -impl Handler for TestHandler { - fn attached(&self, _pid: Option) -> Result { - Ok(self.process_type) - } - - fn halt_reason(&self) -> Result { - Ok(self.stop_reason) - } -} - -struct GDBTestBuilder { - assert: Assert, - handler: TestHandler, - listener: TcpListener, -} - -#[allow(unused)] -impl GDBTestBuilder { - /// Add `cmd` to the list of GDB commands to execute. - fn command(self, cmd: T) -> GDBTestBuilder - where - T: AsRef, - { - let GDBTestBuilder { assert, handler, listener } = self; - GDBTestBuilder { assert: assert.with_args(&["-ex", cmd.as_ref()]), handler, listener } - } - - /// Add assertions for the GDB process. `f` will receive an `Assert` that can - /// be used to add assertions and must return it. - fn assert(self, f: F) -> GDBTestBuilder - where - F: FnOnce(Assert) -> Assert, - { - let GDBTestBuilder { assert, handler, listener } = self; - let assert = f(assert); - GDBTestBuilder { assert, handler, listener } - } - - /// Change the behavior of the `TestHandler`. `f` will receive a `&mut TestHandler` argument - /// which can be changed as desired. - fn handler(self, f: F) -> GDBTestBuilder - where - F: FnOnce(&mut TestHandler), - { - let GDBTestBuilder { assert, mut handler, listener } = self; - f(&mut handler); - GDBTestBuilder { assert, handler, listener } - } - - /// Run the prepared test, panicing on failure. - fn execute(self) { - let GDBTestBuilder { assert, handler, listener } = self; - let assert = assert.with_args(&["-ex", "quit"]); - // Run the server on a background thread. - let handle = thread::spawn(move || { - let (stream, _) = listener.accept().expect("Listener's accept failed!"); - process_packets_from(stream.try_clone().expect("TCPStream::try_clone failed!"), stream, handler); - }); - debug!("Running GDB as {:?}", assert); - assert.unwrap(); - handle.join().expect("Failed to join server thread!"); - } -} - -/// Create a `GDBTestBuilder` and return it. -fn gdb_test() -> GDBTestBuilder { - drop(env_logger::init()); - // First, ensure that we have a GDB binary. - let gdb = which::which("gdb").expect("Couldn't locate gdb!"); - let gdb_s = gdb.to_string_lossy(); - // Next, create a TCP socket to listen on. - let listener = TcpListener::bind("0.0.0.0:0").expect("Failed to bind TCP listen socket!"); - let addr = listener.local_addr().expect("Failed to get listen socket address!"); - let remote_cmd = format!("target remote {}", addr); - let assert = Assert::command(&[&gdb_s, "-nx", "-batch", "-ex", &remote_cmd]); - let handler = Default::default(); - GDBTestBuilder { assert, handler, listener } -} - -#[test] -fn simple() { - // GDB will not do much with a process that has already exited, which is the default - // stop_reason. - gdb_test().assert(|a| a.stderr().contains("The target is not running")).execute() -} diff --git a/ckb-mock-tx-types/Cargo.toml b/ckb-mock-tx-types/Cargo.toml index 6f36e39..4eafa0e 100644 --- a/ckb-mock-tx-types/Cargo.toml +++ b/ckb-mock-tx-types/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "ckb-mock-tx-types" description = "CKB mock transaction types" -version = "0.117.0" +version = "0.118.0-rc1" license = "MIT" edition = "2021" authors = ["Nervos Core Dev "] @@ -9,7 +9,7 @@ authors = ["Nervos Core Dev "] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -ckb-types = "=0.117.0" -ckb-jsonrpc-types = "=0.117.0" -ckb-traits = "=0.117.0" +ckb-types = "=0.118.0-rc1" +ckb-jsonrpc-types = "=0.118.0-rc1" +ckb-traits = "=0.118.0-rc1" serde = { version = "1.0", features = ["derive"] } diff --git a/ckb-mock-tx-types/src/lib.rs b/ckb-mock-tx-types/src/lib.rs index 34ccdaf..1bd9d47 100644 --- a/ckb-mock-tx-types/src/lib.rs +++ b/ckb-mock-tx-types/src/lib.rs @@ -1,5 +1,7 @@ -// Originally modified from https://github.com/nervosnetwork/ckb-cli/blob/d6eceb3f9f108a17bcae0b1d760023e5da1e6e6a/ckb-sdk-types/src/transaction.rs -// Current version modified(just fix clippy) from https://github.com/nervosnetwork/ckb-standalone-debugger/blob/5c0490cb8279f7c7860c403b9f1773b65403e57a/src/transaction.rs +/// This Rust code provides a framework for working with mock transactions in a blockchain context, specifically for +/// the CKB (Nervos) blockchain. It defines various structs and methods for handling mock cell dependencies, inputs, +/// transactions, and resources. The code also includes serialization and deserialization capabilities for these mock +/// types, making it easier to work with mock data in a structured and consistent manner. use ckb_jsonrpc_types as json_types; use ckb_traits::{CellDataProvider, ExtensionProvider, HeaderProvider}; use ckb_types::{ @@ -16,6 +18,7 @@ use ckb_types::{ use serde::{Deserialize, Serialize}; use std::collections::HashMap; +/// Represents a cell dependency with its associated data and optional header. #[derive(Clone, Default)] pub struct MockCellDep { pub cell_dep: CellDep, @@ -24,6 +27,7 @@ pub struct MockCellDep { pub header: Option, } +/// Represents a transaction input with its associated data and optional header. #[derive(Clone, Default)] pub struct MockInput { pub input: CellInput, @@ -32,6 +36,7 @@ pub struct MockInput { pub header: Option, } +/// Aggregates multiple MockInput and MockCellDep instances, along with header dependencies and extensions. #[derive(Clone, Default)] pub struct MockInfo { pub inputs: Vec, @@ -40,7 +45,7 @@ pub struct MockInfo { pub extensions: Vec<(Byte32, Bytes)>, } -/// A wrapper transaction with mock inputs and deps +/// A wrapper transaction with mock inputs and deps. #[derive(Clone, Default)] pub struct MockTransaction { pub mock_info: MockInfo, @@ -48,6 +53,7 @@ pub struct MockTransaction { } impl MockTransaction { + /// Retrieve the input cell data for a given cell input. pub fn get_input_cell Result)>, String>>( &self, input: &CellInput, @@ -61,6 +67,7 @@ impl MockTransaction { live_cell_getter(input.previous_output()) } + /// Retrieve the cell dependency data for a given out point. pub fn get_dep_cell Result)>, String>>( &self, out_point: &OutPoint, @@ -74,6 +81,7 @@ impl MockTransaction { live_cell_getter(out_point.clone()) } + /// Retrieve the header for a given block hash. pub fn get_header Result, String>>( &self, block_hash: &H256, @@ -87,17 +95,19 @@ impl MockTransaction { header_getter(block_hash.clone()) } - /// Generate the core transaction + /// Generate the core transaction. pub fn core_transaction(&self) -> TransactionView { self.tx.clone().into_view() } } +/// The trait defines methods for loading headers and live cells. pub trait MockResourceLoader { fn get_header(&mut self, hash: H256) -> Result, String>; fn get_live_cell(&mut self, out_point: OutPoint) -> Result)>, String>; } +/// The struct holds the necessary cells, headers, and extensions for validating a transaction. #[derive(Clone)] pub struct Resource { required_cells: HashMap, @@ -106,25 +116,19 @@ pub struct Resource { } impl Resource { + /// Create a resource from a mock transaction. pub fn from_mock_tx(mock_tx: &MockTransaction) -> Result { - Self::from_both(mock_tx, DummyResourceLoader {}) + Self::from_both(mock_tx, &mut DummyResourceLoader {}) } + /// Create a resource from both mock transaction and a resource loader. #[allow(clippy::mutable_key_type)] - pub fn from_both(mock_tx: &MockTransaction, loader: L) -> Result { - Self::from_loader_and_block_extensions(mock_tx, loader, HashMap::default()) - } - - #[allow(clippy::mutable_key_type)] - pub fn from_loader_and_block_extensions( - mock_tx: &MockTransaction, - mut loader: L, - block_extensions: HashMap, - ) -> Result { + pub fn from_both(mock_tx: &MockTransaction, loader: &mut L) -> Result { let tx = mock_tx.core_transaction(); let mut required_cells = HashMap::default(); let mut required_headers = HashMap::default(); + // Process each input to gather required cells. for input in tx.inputs().into_iter() { let (output, data, header) = mock_tx .get_input_cell(&input, |out_point| loader.get_live_cell(out_point))? @@ -136,11 +140,12 @@ impl Resource { required_cells.insert(input.previous_output(), cell_meta); } + // Process each cell dependency to gather required cells. for cell_dep in tx.cell_deps().into_iter() { let (output, data, header) = mock_tx .get_dep_cell(&cell_dep.out_point(), |out_point| loader.get_live_cell(out_point))? .ok_or_else(|| format!("Can not get CellOutput by dep={}", cell_dep))?; - // Handle dep group + // Handle dep group. if cell_dep.dep_type() == DepType::DepGroup.into() { for sub_out_point in OutPointVec::from_slice(&data) .map_err(|err| format!("Parse dep group data error: {}", err))? @@ -164,6 +169,7 @@ impl Resource { required_cells.insert(cell_dep.out_point(), cell_meta); } + // Process each header dependency to gather required headers. for block_hash in tx.header_deps().into_iter() { let header = mock_tx .get_header(&block_hash.unpack(), |block_hash| loader.get_header(block_hash))? @@ -171,15 +177,16 @@ impl Resource { required_headers.insert(block_hash, header); } - let mut extensions: HashMap = + // Merge block extensions. + let block_extensions: HashMap = mock_tx.mock_info.extensions.iter().map(|(hash, data)| (hash.clone(), data.pack())).collect(); - extensions.extend(block_extensions); - Ok(Resource { required_cells, required_headers, block_extensions: extensions }) + Ok(Resource { required_cells, required_headers, block_extensions }) } + /// Build transaction info from a given header. fn build_transaction_info(header: Option) -> TransactionInfo { - // Only block hash might be used by script syscalls + // Only block hash might be used by script syscalls. TransactionInfo::new(0, EpochNumberWithFraction::new(0, 0, 1800), header.unwrap_or_default(), 0) } } @@ -228,6 +235,7 @@ pub struct ReprMockCellDep { pub data: json_types::JsonBytes, pub header: Option, } + #[derive(Clone, Serialize, Deserialize)] pub struct ReprMockInput { pub input: json_types::CellInput, @@ -235,6 +243,7 @@ pub struct ReprMockInput { pub data: json_types::JsonBytes, pub header: Option, } + #[derive(Clone, Serialize, Deserialize)] pub struct ReprMockInfo { pub inputs: Vec, @@ -243,6 +252,9 @@ pub struct ReprMockInfo { #[serde(default)] pub extensions: Vec<(H256, json_types::JsonBytes)>, } + +/// The structs and their implementations provide serialization and deserialization capabilities for mock cell +/// dependencies, inputs, and transactions. #[derive(Clone, Serialize, Deserialize)] pub struct ReprMockTransaction { pub mock_info: ReprMockInfo, @@ -259,6 +271,7 @@ impl From for ReprMockCellDep { } } } + impl From for MockCellDep { fn from(dep: ReprMockCellDep) -> MockCellDep { MockCellDep { @@ -280,6 +293,7 @@ impl From for ReprMockInput { } } } + impl From for MockInput { fn from(input: ReprMockInput) -> MockInput { MockInput { @@ -325,7 +339,7 @@ impl From for MockInfo { .header_deps .into_iter() .map(|json_header| { - // Keep the user given hash + // Keep the user given hash. let hash = json_header.hash.pack(); HeaderView::from(json_header).fake_hash(hash) }) @@ -340,12 +354,14 @@ impl From for ReprMockTransaction { ReprMockTransaction { mock_info: tx.mock_info.into(), tx: tx.tx.into() } } } + impl From for MockTransaction { fn from(tx: ReprMockTransaction) -> MockTransaction { MockTransaction { mock_info: tx.mock_info.into(), tx: tx.tx.into() } } } +/// Dummy resource loader used for testing purposes. pub struct DummyResourceLoader {} impl MockResourceLoader for DummyResourceLoader { diff --git a/ckb-vm-debug-utils/Cargo.toml b/ckb-vm-debug-utils/Cargo.toml index 634bc5b..0419188 100644 --- a/ckb-vm-debug-utils/Cargo.toml +++ b/ckb-vm-debug-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-vm-debug-utils" -version = "0.117.0" +version = "0.118.0-rc1" authors = ["Xuejie Xiao "] edition = "2021" description = "Utils for ckb-debugger" @@ -13,8 +13,7 @@ stdio = ["libc", "nix"] [dependencies] byteorder = "1" bytes = "1.0.0" -ckb-vm = "=0.24.9" -ckb-gdb-remote-protocol = { path = "../ckb-gdb-remote-protocol", version = "0.117.0" } +ckb-vm = "=0.24.12" libc = { version = "0.2.47", optional = true } log = "0.4.0" nix = { version = "0.26.2", optional = true } diff --git a/ckb-vm-debug-utils/examples/gdb_remote_protocol_debugger.rs b/ckb-vm-debug-utils/examples/gdb_remote_protocol_debugger.rs index 7786111..bfe4755 100644 --- a/ckb-vm-debug-utils/examples/gdb_remote_protocol_debugger.rs +++ b/ckb-vm-debug-utils/examples/gdb_remote_protocol_debugger.rs @@ -2,6 +2,7 @@ extern crate log; use bytes::Bytes; +use ckb_gdb_remote_protocol::process_packets_from; use ckb_vm::machine::VERSION2; use ckb_vm::{ DefaultCoreMachine, DefaultMachineBuilder, SparseMemory, SupportMachine, WXorXMemory, ISA_A, ISA_B, ISA_IMC, @@ -10,7 +11,6 @@ use ckb_vm::{ use ckb_vm_debug_utils::GdbHandler; #[cfg(feature = "stdio")] use ckb_vm_debug_utils::Stdio; -use ckb_gdb_remote_protocol::process_packets_from; use std::env; use std::fs::File; use std::io::Read; diff --git a/ckb-vm-debug-utils/src/gdbserver.rs b/ckb-vm-debug-utils/src/gdbserver.rs deleted file mode 100644 index 367ffc5..0000000 --- a/ckb-vm-debug-utils/src/gdbserver.rs +++ /dev/null @@ -1,276 +0,0 @@ -use byteorder::{ByteOrder, LittleEndian}; -use ckb_vm::{ - decoder::build_decoder, CoreMachine, DefaultCoreMachine, DefaultMachine, Error as CkbError, Memory, SupportMachine, - RISCV_GENERAL_REGISTER_NUMBER, -}; - -use ckb_gdb_remote_protocol::{ - Breakpoint, Error, Handler, MemoryRegion, ProcessType, StopReason, ThreadId, VCont, VContFeature, Watchpoint, -}; -use log::debug; -use std::borrow::Cow; -use std::cell::RefCell; - -fn show_warning(e: &CkbError) { - println!("Fatal error in ckb-vm occurred: {:?}. Press Ctrl+C to quit or use gdb to attach it.", e); - println!("Note: it doesn't mean any coding error in ckb-vm."); - println!("This session can't be re-used. It is paused for post-mortem.") -} - -fn format_register_value(v: u64) -> Vec { - let mut buf = [0u8; 8]; - LittleEndian::write_u64(&mut buf, v); - buf.to_vec() -} - -pub struct WatchPointStatus { - pub watchpoint: Watchpoint, - pub data: Vec, - pub has_data: bool, -} - -impl WatchPointStatus { - fn new(wp: Watchpoint) -> Self { - let mut data = Vec::::new(); - data.resize(wp.n_bytes as usize, 0); - WatchPointStatus { watchpoint: wp, data, has_data: false } - } - fn has_change(&mut self, handler: &H) -> Result { - let has_data = self.has_data; - - let mem = MemoryRegion { address: self.watchpoint.addr, length: self.watchpoint.n_bytes }; - let new_content = handler.read_memory(mem)?; - let result = if new_content == self.data { - Ok(false) - } else { - self.data = new_content; - Ok(true) - }; - self.has_data = true; - - if has_data { - result - } else { - Ok(false) - } - } -} - -pub struct GdbHandler> { - machine: RefCell>>, - breakpoints: RefCell>, - watchpoints: RefCell>, -} - -impl> GdbHandler { - fn at_breakpoint(&self) -> bool { - let pc = *self.machine.borrow().pc(); - self.breakpoints.borrow().iter().any(|b| b.addr == pc) - } - fn at_watchpoint(&self) -> Result { - let mut result = false; - for wp in self.watchpoints.borrow_mut().iter_mut() { - if wp.has_change(self)? { - result = true; - } - } - Ok(result) - } - - pub fn new(machine: DefaultMachine>) -> Self { - GdbHandler { - machine: RefCell::new(machine), - breakpoints: RefCell::new(vec![]), - watchpoints: RefCell::new(vec![]), - } - } -} - -impl> Handler for GdbHandler { - fn attached(&self, _pid: Option) -> Result { - Ok(ProcessType::Created) - } - - fn halt_reason(&self) -> Result { - // SIGINT - Ok(StopReason::Signal(2)) - } - - fn read_general_registers(&self) -> Result, Error> { - let registers: Vec> = - self.machine.borrow().registers().iter().map(|v| format_register_value(*v)).collect(); - Ok(registers.concat()) - } - - fn read_register(&self, register: u64) -> Result, Error> { - let register = register as usize; - if register < RISCV_GENERAL_REGISTER_NUMBER { - Ok(format_register_value(self.machine.borrow().registers()[register])) - } else if register == RISCV_GENERAL_REGISTER_NUMBER { - Ok(format_register_value(*self.machine.borrow().pc())) - } else { - Err(Error::Error(1)) - } - } - - fn write_register(&self, register: u64, contents: &[u8]) -> Result<(), Error> { - let mut buffer = [0u8; 8]; - if contents.len() > 8 { - error!("Register value too large!"); - return Err(Error::Error(2)); - } - buffer[0..contents.len()].copy_from_slice(contents); - let value = LittleEndian::read_u64(&buffer[..]); - let register = register as usize; - if register < RISCV_GENERAL_REGISTER_NUMBER { - self.machine.borrow_mut().set_register(register, value); - Ok(()) - } else if register == RISCV_GENERAL_REGISTER_NUMBER { - self.machine.borrow_mut().update_pc(value); - self.machine.borrow_mut().commit_pc(); - Ok(()) - } else { - Err(Error::Error(2)) - } - } - - fn read_memory(&self, region: MemoryRegion) -> Result, Error> { - let mut values = vec![]; - for address in region.address..(region.address + region.length) { - let value = self.machine.borrow_mut().memory_mut().load8(&address).map_err(|e| { - error!("Error reading memory address {:x}: {:?}", address, e); - Error::Error(3) - })?; - values.push(value as u8); - } - Ok(values) - } - - fn write_memory(&self, address: u64, bytes: &[u8]) -> Result<(), Error> { - self.machine.borrow_mut().memory_mut().store_bytes(address, bytes).map_err(|e| { - error!("Error writing memory address {:x}: {:?}", address, e); - Error::Error(4) - })?; - Ok(()) - } - - fn query_supported_vcont(&self) -> Result, Error> { - // Even though we won't support all of vCont features, gdb feature - // detection only work when we include all of them. The other solution - // is to use the plain old s or c, but the RSP parser we are using here - // doesn't support them yet. - Ok(Cow::from( - &[ - VContFeature::Continue, - VContFeature::ContinueWithSignal, - VContFeature::Step, - VContFeature::StepWithSignal, - VContFeature::Stop, - VContFeature::RangeStep, - ][..], - )) - } - - fn vcont(&self, request: Vec<(VCont, Option)>) -> Result { - let mut decoder = build_decoder::(self.machine.borrow().isa(), self.machine.borrow().version()); - let (vcont, _thread_id) = &request[0]; - match vcont { - VCont::Continue => { - if self.machine.borrow_mut().reset_signal() { - decoder.reset_instructions_cache() - } - let res = self.machine.borrow_mut().step(&mut decoder); - if res.is_err() { - show_warning(&res.err().unwrap()); - return Ok(StopReason::Signal(5)); - } - // at_watchpoint can't be in one expression with self.machine.borrow because - // it will borrow_mut `machine` inside - while (!self.at_breakpoint()) && self.machine.borrow().running() { - if self.at_watchpoint()? { - break; - } - if self.machine.borrow_mut().reset_signal() { - decoder.reset_instructions_cache() - } - let res = self.machine.borrow_mut().step(&mut decoder); - if res.is_err() { - show_warning(&res.err().unwrap()); - return Ok(StopReason::Signal(5)); - } - } - } - VCont::Step => { - if self.machine.borrow().running() { - if self.machine.borrow_mut().reset_signal() { - decoder.reset_instructions_cache() - } - let res = self.machine.borrow_mut().step(&mut decoder); - if res.is_err() { - show_warning(&res.err().unwrap()); - return Ok(StopReason::Signal(5)); - } - } - } - VCont::RangeStep(range) => { - if self.machine.borrow_mut().reset_signal() { - decoder.reset_instructions_cache() - } - let res = self.machine.borrow_mut().step(&mut decoder); - if res.is_err() { - show_warning(&res.err().unwrap()); - return Ok(StopReason::Signal(5)); - } - while self.machine.borrow().pc() >= &range.start - && self.machine.borrow().pc() < &range.end - && (!self.at_breakpoint()) - && self.machine.borrow().running() - { - if self.at_watchpoint()? { - break; - } - if self.machine.borrow_mut().reset_signal() { - decoder.reset_instructions_cache() - } - let res = self.machine.borrow_mut().step(&mut decoder); - if res.is_err() { - show_warning(&res.err().unwrap()); - return Ok(StopReason::Signal(5)); - } - } - } - v => { - debug!("Unspported vcont type: {:?}", v); - return Err(Error::Error(5)); - } - } - if self.machine.borrow().running() { - // SIGTRAP - Ok(StopReason::Signal(5)) - } else { - Ok(StopReason::Exited(0, self.machine.borrow().exit_code() as u8)) - } - } - - fn insert_software_breakpoint(&self, breakpoint: Breakpoint) -> Result<(), Error> { - self.breakpoints.borrow_mut().push(breakpoint); - Ok(()) - } - - fn remove_software_breakpoint(&self, breakpoint: Breakpoint) -> Result<(), Error> { - self.breakpoints.borrow_mut().retain(|b| b != &breakpoint); - Ok(()) - } - - fn insert_write_watchpoint(&self, watchpoint: Watchpoint) -> Result<(), Error> { - let wp = WatchPointStatus::new(watchpoint); - self.watchpoints.borrow_mut().push(wp); - debug!("insert watch point at {:x} with length {}", watchpoint.addr, watchpoint.n_bytes); - Ok(()) - } - fn remove_write_watchpoint(&self, wp: Watchpoint) -> Result<(), Error> { - self.watchpoints.borrow_mut().retain(|b| b.watchpoint.addr != wp.addr || b.watchpoint.n_bytes != wp.n_bytes); - debug!("remove watch point at {:x} with length {}", wp.addr, wp.n_bytes); - Ok(()) - } -} diff --git a/ckb-vm-debug-utils/src/lib.rs b/ckb-vm-debug-utils/src/lib.rs index 9f2aa23..803c0d1 100644 --- a/ckb-vm-debug-utils/src/lib.rs +++ b/ckb-vm-debug-utils/src/lib.rs @@ -1,14 +1,11 @@ -#[macro_use] extern crate log; mod elf_dumper; -mod gdbserver; mod gdbstub; #[cfg(feature = "stdio")] mod stdio; pub use crate::gdbstub::{GdbStubHandler, GdbStubHandlerEventLoop}; pub use elf_dumper::ElfDumper; -pub use gdbserver::GdbHandler; #[cfg(feature = "stdio")] pub use stdio::Stdio; diff --git a/ckb-vm-pprof-converter/Cargo.toml b/ckb-vm-pprof-converter/Cargo.toml index 58b09b2..7944188 100644 --- a/ckb-vm-pprof-converter/Cargo.toml +++ b/ckb-vm-pprof-converter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-vm-pprof-converter" -version = "0.117.0" +version = "0.118.0-rc1" edition = "2021" description = "Convert raw data generated by ckb-vm-pprof to proto format accepted by Google's pprof tool" license = "MIT" @@ -11,4 +11,4 @@ authors = ["Nervos Core Dev "] [dependencies] clap = { version = "4.0.27", features = ["cargo"] } protobuf = { version = "2.25.1", features = ["with-bytes", "with-serde"] } -ckb-vm-pprof-protos = { path = "../ckb-vm-pprof-protos", version = "0.117.0" } +ckb-vm-pprof-protos = { path = "../ckb-vm-pprof-protos", version = "0.118.0-rc1" } diff --git a/ckb-vm-pprof-protos/Cargo.toml b/ckb-vm-pprof-protos/Cargo.toml index 9c28157..abaccfa 100644 --- a/ckb-vm-pprof-protos/Cargo.toml +++ b/ckb-vm-pprof-protos/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-vm-pprof-protos" -version = "0.117.0" +version = "0.118.0-rc1" edition = "2021" description = "Crate for generating Rust definitions from pprof proto" license = "MIT" diff --git a/ckb-vm-pprof/Cargo.toml b/ckb-vm-pprof/Cargo.toml index d51eb46..8385660 100644 --- a/ckb-vm-pprof/Cargo.toml +++ b/ckb-vm-pprof/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-vm-pprof" -version = "0.117.0" +version = "0.118.0-rc1" authors = ["mohanson "] edition = "2021" description = "Statistical CKB script cycles consumption flame graph" @@ -9,5 +9,5 @@ license = "MIT" [dependencies] addr2line = "0.17.0" clap = "2.33" -ckb-vm = { version = "=0.24.9", features = ["pprof"] } +ckb-vm = { version = "= 0.24.12", default-features = false, features = ["pprof"] } goblin = "0.4" diff --git a/ckb-vm-signal-profiler/Cargo.toml b/ckb-vm-signal-profiler/Cargo.toml index 13eecda..1f115a4 100644 --- a/ckb-vm-signal-profiler/Cargo.toml +++ b/ckb-vm-signal-profiler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-vm-signal-profiler" -version = "0.117.0" +version = "0.118.0-rc1" edition = "2021" description = "Linux signal based profiler for ckb-vm, note this is profiling ckb-vm itself, not the programs running in ckb-vm" license = "MIT" @@ -13,9 +13,9 @@ env_logger = "0.9.0" [dependencies] addr2line = "0.17.0" -ckb-vm = { version = "=0.24.9", features = ["asm"] } +ckb-vm = { version = "= 0.24.12", default-features = false, features = ["asm"] } log = "0.4.16" nix = "0.23.1" lazy_static = "1.4.0" protobuf = { version = "2.25.1", features = ["with-bytes", "with-serde"] } -ckb-vm-pprof-protos = { path = "../ckb-vm-pprof-protos", version = "0.117.0" } +ckb-vm-pprof-protos = { path = "../ckb-vm-pprof-protos", version = "0.118.0-rc1" }